22 Aug 2020
Apprendo da Brent Simmons, notando che parecchi altri hanno riportato la notizia, che Apple ha costretto Automattic/WordPress a includere una funzionalità di in-app-purchase per quanto riguarda i suoi domini direttamente dentro l’app di WordPress per iOS, applicazione che prima non vendeva nulla e ti lasciava semplicemente fare il tuo lavoro in una modalità molto molto poco intrusiva.
Personalmente lo trovo un ghiotto indelicato spudorato tentativo di Apple di attentare alla fetta di revenue di Automattic, che comunque ha un business basato su queste cose bello grosso. Ironicamente questa coltellata va a posizionarsi dopo due eventi clamorosi: i 2 trillion $ di Apple e il macello mediatico montato da Epic Games, di cui quasi la metà è posseduta da Tencent, che è cinese (ammicco ammicco), sbattuta fuori dall’App Store per aver aggirato il pagamento del “pizzo” sugli acquisti in-app implementando un gateway di pagamento proprio.
Questa ingerenza da parte di Apple non solo come stakeholder finanziario ma in fin dei conti arrivando a intervenire su decisioni di prodotto come la roadmap delle feature da implementare mi preoccupa non poco. Chiudendo come Brent stesso:
Related question: how is the PR hit to Apple worth it for the money they’ll make through these WordPress IAP sales? And: how is developer fear a good thing for the platform?
Edit – 23 agosto: Apple ha ritrattato, e Davide Di Pumpo mi ha lasciato un commento meraviglioso.
21 Aug 2020
Mentre me ne sto qui a respirare e rilassarmi in un comodo terrazzo vista mare a Punta Ala, che non posto per non farvi rodere troppo (heheh), ripenso a come sono andate le cose finora nell’ultimo anno e a uno degli eventi che mi hanno segnato nel profondo e che è passato, tutto sommato, troppo sotto silenzio. Sono infatti diventato committer presso la Apache Software Foundation, nello specifico sul progetto CouchDB che ormai è una delle mie fucine preferite in termini di buon codice e soprattutto buone idee.
È stato veramente un onore e soprattutto un privilegio inaspettato per me ricevere l’email di Joan Touzet, PMC member di CouchDB, che mi invitava a diventare committer del progetto dati i miei sforzi – soprattutto continui nel tempo – per quanto riguarda la suite di test d’integrazione. Non me l’aspettavo! Ed è veramente indice, almeno secondo la mia prospettiva, di quanto sia sana la fondazione Apache nel riconoscere il valore di contributi di qualsiasi tipo.
Ma che cosa fa un committer di preciso?
Il lavoro di un committer non è diverso da quello di un contributor individuale, l’unica differenza sta nel fatto che con i suoi contributi continuati nel tempo si è guadagnato il diritto di scrivere direttamente sulla codebase del progetto senza passare da meccaniche come i fork per aprire pull request o mandare patch agli autori del software stesso. Inoltre, può declinare, richiedere cambiamenti o approvare le patch degli altri contributor e votare quando vengono indette le votazioni, quindi aumenta esponenzialmente l’area di impatto che l’individuo ha con i suoi contributi sul progetto, a tutto tondo.
Join Apache, ovvero se ti interessa uscire fuori dalla comfort zone eccoti servito
La mia prima patch per un progetto Apache l’ho letteralmente scritta sul letto di una stanza d’albergo. La seconda mentre ero su un volo di linea. L’importante è trovare qualcosa per cui si ha un punto debole (che al tempo per me era Elixir) e scegliersi un progetto che supporti quella determinata pratica o quella determinata tecnologia. Io volevo approfondire Elixir usato in un contesto di produzione, e volevo farlo su un progetto:
- Che avesse valore;
- Che mi permettesse di uscire fuori dal seminato;
Direi che l’investimento mi ha ripagato, ho contribuito a un database e ho avuto l’opportunità grazie al mio coinvolgimento di farmi svariate chiacchiere col team di sviluppo, cosa che per una persona che normalmente fa web, API e cose del genere non è per niente da buttare.
Oltre questo, durante l’ultimo Microsoft Build ho avuto l’opportunità di parlare insieme a Piergiorgio di quanto sia emozionante lavorare per un’istituzione che rompe gli schemi della produzione tradizionale del software da così tanto tempo e in modo così dirompente :-)))
Iniziare è molto semplice: i passi di base sono descritti nel “Getting Started”, anche se per me si riduce tutto al trovare il giusto spazio attraverso la directory dei progetti, che è filtrabile per linguaggio. Ci troverete senza dubbio qualcosa di superfico, altrimenti potete scrivermi a [email protected] per avere indizi su qualcosa di semplice da pescare su CouchDB, o servirvi per conto vostro sui miei repository preferiti, quello di CouchDB e quello di Fauxton, la UI web :-D
11 Aug 2020
Tempo fa ho fatto una revisione dei software per il management delle credenziali e ho deciso di passare da Enpass a Bitwarden. Uno dei motivi per cui non ho valutato 1Password come un sostituto potenziale è stata soprattutto la mancanza di una vera applicazione per Linux, oltre il fatto che avevo la possibilità di adottare un software il cui stack fosse completamente open source.
Open source a parte però ho visto in questi giorni che è disponibile una prima versione, limitata nelle feature ma non nell’animo, di 1Password per Linux, scritta “from scratch” e che ha una caratteristica importante: il frontend è fatto completamente con componenti React (quindi JavaScript), mentre il backend dell’applicazione è scritto per intero in Rust, uno dei linguaggi che sono più contento di aver approfondito negli anni, anche se per la maggior parte ho scritto di Elixir 😅
Una lista di feature direttamente dall’annuncio originale:
- Simple and secure installs using apt and dnf packager managers 📦
- Automatic Dark Mode selection based on your GTK theme 🌓
- Open network locations (FTP, SSH, SMB) 🌍
- Tiling window manager support and descriptive window titles 🏠
- Unlock with your Linux user account, including biometrics ☝️
- System tray icon for staying unlocked while closed 📌
- X11 clipboard integration and clearing ✂️
- Keyboard shortcuts ⌨️
- Data export ✈️
- Unlock multiple accounts with different passwords 🔐
- Create collections to organize data across accounts and vaults 🎯
Insomma, mi dispiace che tutto questo non sia open source perché vorrei veramente tanto sapere come hanno fatto gli sviluppatori a infilare una UI JavaScript dentro un’applicazione desktop Rust, che tipo di runtime hanno usato e che tipo di problemi hanno incontrato. Però tanti complimenti per le tecnologie scelte :-)
23 Jul 2020
Proprio ieri scrollando pigramente Facebook sono capitato su un post bizzarro, un post di una vecchia pagina a cui avevo messo like credo un decennio fa, anno più anno meno. Ha catturato la mia attenzione perché ai miei occhi è sembrata quasi un’attività paranormale, e invece approfondendo e aprendo un altro paio di tab ho verificato che fosse reale.
Felipe è tornato :-)
Sono un suo affezionato lettore dei tempi che furono, questo stesso blog ha preso tanto in prestito dal suo stile e dal tono con cui spiegava le cose. Personalmente non sarei lo stesso blogger senza la sua influenza, quindi credo sia giusto far sapere ai lettori di queste pagine che potreste trovare altro ottimo materiale presso pollycoke.wordpress.com.
Dopo un paio di post di riscaldamento Felipe è tornato a darci qualcosa di serio da leggere. Personalmente mi fa veramente piacere a livelli disumani rileggerlo. Non so se durerà, quanto durerà, ma questo far capolino di nuovo da una finestra che credevo sbarrata mi ha paradossalmente dato motivo per aggiornare il mio, di blog, e mi ha ricordato di quando Linux era davvero qualcosa di diverso.
Non sono mai stato più vicino all’idea di tornare a dedicarmi a pollycoke, non immaginate quanto mi piaccia farlo, ma francamente non so come potrei mai conciliare una vita pienamente funzionale con quella che so essere una passione in grado di monopolizzare tutto il mio tempo.
E caro Felipe, tu non sai quanto mi ritrovi nelle tue parole :-) alla fine io ho scelto la via diametralmente opposta e di mestiere ho cominciato a fare lo sviluppatore :-D
03 Jul 2020
È un sacco di tempo che non scrivo, principalmente perché più che scrivere prosa in queste settimane ho scritto codice. Tra le cosette che sono uscite fuori, il mio orgoglio principale è AllaCarta, una piccola applicazione che mi sono divertito a prototipare visto il proliferare di soluzioni di menù “contactless”, con QR code e URL univoco, che sono spuntate come margherite all’affacciarsi della fase 2 di questa pandemia che ci ha visti cambiare le abitudini e il modo di fruire di oggetti, posti e rapporti.
Insomma, un po’ per gioco, un po’ per mettere alla prova le mie abilità, mi sono messo a programmare un giocattolino che ho battezzato subito AllaCarta, con l’obiettivo di rendere facile la vita al ristoratore di turno che vuole offrire un servizio senza svenarsi – dato che comunque dando un occhio ai servizi che esistevano già mi ero fatto l’idea che fossero grossomodo tutti a pagamento.
tl;dr
Ho scritto un prototipo, come già specificato, di un prodottino per menù digitali. L’ho scritto tutto in Elixir per quanto riguarda il backend, e usando React e alcune cosette meravigliose per quanto riguarda il frontend. Il suo nome è AllaCarta, e quando ho tempo mi diverto a metterci qualche feature carina. Volete sapere cosa ho fatto e come l’ho fatto? Leggete oltre ;-)
Come ho creato AllaCarta
Scrivi codice di qua, scrivi codice di là, aggiungi una libreria per l’autenticazione e via dicendo, alla fine entro un paio di settimane avevo qualcosa di funzionante in mano che rispettasse l’idea di MVP che avevo in mente: “come utente desidero registrarmi, e come utente desidero creare/modificare il menù del mio ristorante da una dashboard potendolo poi visualizzare”. Avevo scritto il backend in Elixir usando Phoenix, e per il frontend mi sono ingegnato in due modi: la dashboard di modifica del ristorante l’ho scritta usando JavaScript e React, mentre per la visualizzazione del menù del ristorante ho voluto dare priorità alle performance per cui sono tornato a qualcosa di naif e velocissimo: un bel po’ di server side rendering (coi template e tutto il resto).
Ho scelto una color palette ben precisa, ho scritto il sito (su questo penso che farò un post a parte perché credo di essermi inventato un bel barbatrucco), dopodiché ho mostrato fiero il mio lavoro ad Agnese per evitare l’effetto “ogni scarrafone è bello a mamma sua” – e allo stesso tempo farmi validare l’MVP da qualcuno che ha le competenze professionali per farlo.
Il feedback più o meno è stato “è tutto da rifare”; ho fatto coaching tecnico per anni a decine di team, e indovinate chi è caduto vittima dell’amore per la propria idea e per la propria execution? Proprio il sottoscritto.
Ho provato ad andare un pochino avanti sulla traccia che avevo, ma è diventato chiaro abbastanza presto mentre continuavo a scrivere codice che non avevo idea di come continuare perché mi ero infilato in un vicolo cieco: il mio frontend aveva un enorme problema di consistenza, e io stavo faticando ad ammetterlo.
Dopo il “non ci siamo” di Agnese che aveva già fatto un primo giro e una call di qualche quarto d’ora in cui Francesco mi ha espresso tante perplessità sulla UI, ho dovuto fare i conti con me stesso: cavolo, proprio io che faccio il frontend di lavoro ho cannato l’implementazione del frontend del mio prodottino?
Ho deciso così di riscrivere il frontend di AllaCarta iterando sul codice che avevo già scritto (tanto fortunatamente fa poche cose :-D), cambiando design system di origine, ridisegnando le parti più importanti della UI e cambiando il template della visualizzazione del menù del singolo ristorante con qualcosa di più fresco. Piano piano ci sono arrivato, e ho concepito quella che più o meno è la versione attuale di quella pagina. Effettivamente piaceva di più anche a me, e quando mi sono presentato da Agnese per una nuova product review stavolta l’esito è stato tutt’altro che un pollice verso. Ero tornato “on track”.
Ho colto l’occasione per aggiungere anche le interazioni drag and drop alla dashboard, e a quel punto ho mandato il tutto in produzione. A ridisegnare tutto ci ho messo più o meno una settimana, più un’altra settimana di bugfix e piccoli miglioramenti incrementali: in circa un mese ho messo su un MVP molto minimale di un prodotto con un free tier, per vedere che succede. E non potrei essere più soddisfatto di così.
E adesso?
Adesso vediamo! Intanto se conoscete ristoratori, barman o altri appartenenti a questa categoria consigliate e fate consigliare AllaCarta. Sto radunando un po’ di feedback, potete sempre scrivere a [email protected] per qualsiasi tipo di impressione o di richiesta di supporto. Probabilmente nei prossimi giorni scriverò ancora sulla tecnologia che sta dietro il prodotto :-)