Alessio Biancalana Grab The Blaster di Alessio Biancalana

Costruendo la nuova home page del New York Times

Il New York Times mi affascina sempre tantissimo, data l’avanguardia che propone nei processi di progettazione del software e nel design. In questo articolo, come hanno progettato la nuova home page trattando anche i feedback dei lettori.

Rebrand per Firefox: due parole sui (forse) nuovi loghi ✍️

Firefox logo design system 1 e 2

Qualche giorno fa mi ha colpito una cosa che ho visto passarmi sotto gli occhi: si tratta delle nuove icone che il team di design di Firefox (ovviamente di Mozilla) sta pensando per le nuove versioni. Avevamo avuto un redesign anche per il recente aggiornamento dell’interfaccia, ma è stato solo un piccolo ridare forma all’icona del volpone che tutti amiamo, mentre con questo aggiornamento abbiamo qualcosa di più corposo.

Viene definito a monte infatti il Firefox brand, ovvero una intera famiglia di prodotti di cui alcuni esemplari già visibili a noi mortali come Firefox Focus, il browser dedicato alla privacy. In base ai due design system proposti e in base al logo che rappresenta il brand principale, poi tutto il resto viene di conseguenza.

Firefox main logos

Come sempre la procedura non può essere influenzata dall’esterno, ma dato che Mozilla ha adottato una strategia di open design già da prima di Quantum1, chiunque di noi può vederne ogni passo anche solo per trasparenza e per (in)formazione. Chissà come andrà a finire e che icone avremo sui nostri desktop tra qualche mese.

Intanto un paio di note a margine:

  • Adoro sia la masterbrand icon del System 1 che quella del System 2;
  • Le icone per i browser del System 1 sono più giocose e meno formali, le seconde sicuramente più professionali;
  • Forse per il resto il System 2 mi convince di più.

E voi? Eh? Oh.

  1. Il progetto che ha portato una serie di miglioramenti sopra (la nuova fiammante UI) e sotto il cofano (integrazione di Servo almeno per il rendering del CSS). Per più dettagli vi linko direttamente Wikipedia

The Big Elixir – ovvero New Orleans, aspettami che arrivo 🚀

Avete presente quei regali che arrivano inaspettati? Tipo quando non è il tuo compleanno, non è Natale, non è nessuna ricorrenza particolare. Eppure qualcuno che ti ama decide di metterti al corrente, ricordarti, stamparti su carta bollata quanto ti vuole bene.

The Big Elixir - 8th/9th November at New Orleans

Pochissime settimane fa è successo a me (si, proprio a me), quando Agnese, la mia ragazza1, ha fatto qualcosa di totalmente inaspettato: nella mia mail ho visto atterrare una lettera dall’oggetto che recitava “Your The Big Elixir Ticket”, e quando le ho chiesto spiegazioni – perché a dire il vero mi aveva accennato qualcosa – la sua risposta è stata solo “buon compleanno in anticipo”. Ho pianto2.

Tutto questo per dire cosa? Beh, che sono felice come un bambino in un negozio di caramelle, che New Orleans aspettami che arrivo, che la mia fidanzata è un vulcano di figaggine perché è riuscita a incastrare il nostro viaggio negli Stati Uniti con una conferenza che le avevo detto che mi sarebbe piaciuto vedere (regalandomi pure il biglietto). E così posso dirlo: per The Big Elixir, a New Orleans, l’8 e il 9 Novembre, ci sarò anch’io grazie a lei.

The Big Elixir è una conferenza completamente dedicata ad Elixir (come dice il nome stesso), dove saranno presenti tra gli speaker:

Già solo quando ho visto questi tre nomi ho cominciato a saltare come una molla. Non mi sembra vero di avere l’opportunità di parlare con loro dal vivo per chiedergli da quali concetti hanno preso maggiormente ispirazione, quali difficoltà hanno incontrato, e com’è magari lavorare con Elixir ogni giorno (soprattutto riguardo le rotture di, ehm, bolas).

Aspettatevi novità direttamente da New Orleans quando sarà Novembre. Stay tuned, state tonnati 😎

dottorblaster |> the_big_elixir()

P.S.: I owe many thanks to Joe Ellis and the team behind The Big Elixir for allowing my girlfriend to better organize our trip giving her details and help when needed. You were awesome and you really made our day/week/year!

  1. Che è bionda e ama ribadirlo, però ama imparare cose nuove e si sta leggendo tutta la mia mini-serie “Elixir per idioti”. 

  2. Davvero. Non è figurativo. 

MacBook con USB-C, morta-C-tua 🔪

iPhone attacco caricabatteria

Da qualche mese mi è arrivato il computer aziendale nuovo. Voi mi direte, beh, che novità è mai questa? E invece io vi dirò che non solo è un evento non banale perché mica è così scontato che un’azienda dia ai dipendenti l’equipaggiamento, ma tutto questo è ancora più pregno di significato perché il mio laptop aziendale è un MacBook Pro di nuova generazione (per intenderci, quelli colorati Space Gray). Oltre al colore bellissimo e a tutte le considerazioni estetiche che possiamo fare in libertà, questo MacBook mi ha permesso di provare su strada la scelta di Apple di sostituire l’attacco MagSafe con uno slot USB Type-C a cui ovviamente è associato un nuovo tipo di caricabatteria.

Qualche settimana fa dall’alto del mio metro e settanta quasi metro e ottanta mi sono guardato (lo so che non si dice) il mio laptop e il mio caricabatteria e ho deciso di stilare una lista dei pregi e dei difetti di questo nuovo caricabatteria USB-C.

Questi i pregi:

  • È comodo avere un caricabatteria USB-C in più. Avendo anche uno smartphone Android con attacco USB-C (il mio caro Nexus 6P), posso ricaricarci sia il computer che il cellulare.

E basta.

Veniamo ai difetti:

  • Ancora un altro tipo di alimentatore? Ormai comincio a credere che Apple abbia una politica di obsolescenza programmata specifica per gli alimentatori, una cosa sadica per cui se ti si rompe l’alimentatore del tuo MacBook di quasi dieci anni fa ormai sei nelle piste e ti conviene votarti a Satana (o Santana, dipende se hai bisogno anche di un assolo) e prostituirti per comprare direttamente un portatile nuovo1. Perché ricordiamo che nei vecchi MacBook c’era un MagSafe, che è stato poi cambiato in favore di un altro attacco. E ora abbiamo questo bellissimo connettore USB-C, così diverso da quello che c’era prima che viene quasi da chiedere ad Apple se si sta divertendo.
  • Non vorrei mai inciampare in un cavo teso attaccato al mio nuovo MacBook – perché mentre con i modelli precedenti ho sempre potuto fare il casino che volevo, tanto l’alimentatore in caso di inciampo si staccava da solo preservando il portatile da cadute fortunosamente accidentali e il sottoscritto da bestemmie assolutamente intenzionali, con questo mi porto appresso tutto, e le profanità che prima erano solo paventate hanno una probabilità elevatissima di tramutarsi in realtà.
  • Ammazza che mazza! I cavi USB-C sono mastodontici in spessore rispetto a quelli usati nei MagSafe, il che significa che mentre prima potevamo flettere il nostro cavo di alimentazione (con i rischi che ne derivavano), in questa veste abbiamo un cavo assolutamente più rigido e “importante” come dimensioni. Non è niente di che, ma giacché siamo lamentosi tutto fa brodo.
  • Come corollario del punto precedente abbiamo questo: avete presente le bellissime e piccolissime staffe a L che uscivano dal caricabatteria e ci permettevano di arrotolare il cavo? Una trovata di design eccezionale, secondo me, che con questo modello è andata a farsi benedire. Le staffe sono state eliminate, costringendoci a piegare nei modi più fantasiosi il cavo che è troppo spesso per essere arrotolato in quel modo.
  • In coda a tutto questo, un difetto fondamentale: se voglio caricare il computer e attaccare un paio di monitor esterni o qualche altro tipo di periferica2 sono condannato a comprare uno di quegli adattatori maledetti che infatti sono stato costretto a prendere, perché è letteralmente impossibile pensare di usare un computer con questa concezione alle spalle senza un adattatore che ci aiuti a rendere compatibile tutto quello che abbiamo avuto finora con un futuro dove tutto quello che abbiamo costruito è diventato obsoleto in nome di una miniaturizzazione che onestamente lascia il tempo che trova. Ma questa sono convinto che sia una storia da raccontare un’altra volta3, come scrisse Michael Ende.

Ti stai solo lamentando

Certo. È vero. Ed è anche vero che in realtà ci sono delle cose positive di Apple che adotta l’USB-C insieme ad altri produttori. Io però sono convinto che questi tratti positivi non siano per niente inerenti l’esperienza utente, che viene solo martirizzata in nome di un ideale di innovazione che finora ha prodotto solo mostri. Allo stesso tempo, guardo gli altri produttori e mi chiedo se veramente quello che abbiamo intenzione di fare è spingerci così tanto a comprare attrezzi che hanno così disperatamente bisogno di altri attrezzi non appena usciti dalla scatola – attrezzi che non abbiamo, e che siamo condannati a comprare subito pena non poter usare più niente del nostro “vecchio repertorio” di penne USB e cavi di rete (per dire).

Apple pensa solo al futuro? Può essere, ma io per trasferire un film da computer all’altro ho dovuto aspettare due giorni per rientrare in possesso del mio adattatore. E questo è il presente.

  1. Prima che qualcuno di voi sapientoni me lo dica nei commenti, io lo so che alimentatori anche di vecchia generazione si comprano sull’Apple Store online. Ma a parte costare un botto, ho sempre il timore ancestrale di scontrarmi con quello che ogni nerd teme e che infesta ogni suo incubo: l’esaurimento scorte quando hai bisogno di un ricambio. 

  2. Periferica, che termine vecchio. Però mi rievoca bei ricordi, ricordi di un’informatica che a conti fatti non esiste quasi più. 

  3. Volete uno spoiler? Ho ancora il mio vecchio MacBook, continuo a usarlo come laptop personale ed è il computer (specie in questo periodo) tra i miei che uso di più. 

Elixir per idioti /6, sua maestà il pattern matching

Visto che nell’ultimo episodio abbiamo parlato di pipe operator, con cui cominciamo ad affrontare sul serio l’espressività di un linguaggio funzionale, andiamo a parare sull’ultimo ostacolo che ci separa dall’avere ogni base per cominciare a praticare il nostro Elixir-jutsu in maniera efficace. Sto parlando della feature che ogni linguaggio funzionale porta con sé, da Erlang a Scala al nostro Elixir, ovvero il pattern matching.

È più facile a farsi che a dirsi (o spiegarsi), ma ci proverò lo stesso con qualche parola astrusa: Elixir possiede la capacità di lasciarci definire più “clause”, ovvero funzioni o altri tipi di espressioni, per poi decidere lui stesso quale definizione tra quelle che abbiamo scritto si applica in maniera più vicina all’input che viene dall’esterno. Ripeto: possiamo definire più casi in base a molteplici input, e il runtime provvede ad identificare la forma più vicina di volta in volta all’input fornito per poi comportarsi di conseguenza. Ma a questo punto facciamo prima a vedere un esempio pratico. Un modulo può avere più di una definizione della stessa funzione in base all’input:

iex(1)> defmodule SalutePeople do
...(1)>   def hello("Alessio") do
...(1)>     IO.puts("Hello Alessio")
...(1)>   end
...(1)>
...(1)>   def hello("Agnese") do
...(1)>     IO.puts("Hello my love")
...(1)>   end
...(1)>
...(1)>   def hello(_anyone) do
...(1)>     IO.puts("Who the fuck are you?")
...(1)>   end
...(1)> end
{:module, SalutePeople,
 <<70, 79, 82, 49, 0, 0, 5, 28, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 147,
   0, 0, 0, 15, 19, 69, 108, 105, 120, 105, 114, 46, 83, 97, 108, 117, 116, 101,
   80, 101, 111, 112, 108, 101, 8, 95, 95, ...>>, {:hello, 1}}

Definendo un modulo così, cosa otteniamo? Otteniamo una funzione hello che si comporta diversamente di fronte a me, alla mia ragazza, o davanti a chiunque altro.

iex(2)> SalutePeople.hello("Alessio")
Hello Alessio
:ok
iex(3)> SalutePeople.hello("Agnese")
Hello my love
:ok
iex(4)> SalutePeople.hello("Chiunque altro")
Who the fuck are you?
:ok
iex(5)>

Il pattern matching ci permette di specificare in maniera performante ed efficace come i nostri programmi si devono comportare in base a diversi input. Possiamo usare questa caratteristica non solo nelle firme delle funzioni (le firme sono quella sintassi def tiziocaio(argomento) do ... end) ma anche nei nostri case statement. Normalmente, in linguaggi come JavaScript o Ruby, gli swith case non sono altro che delle maniere leggermente più tollerabili (e dipende anche dai casi) di scrivere una scala a pioli di if else. Nei linguaggi come Elixir abbiamo il pattern matching come arma definitiva per renderli molto più potenti. Prendo il primo esempio che mi capita a tiro dal manuale di Elixir:

iex> case {1, 2, 3} do
...>   {4, 5, 6} ->
...>     "This clause won't match"
...>   {1, x, 3} ->
...>     "This clause will match and bind x to 2 in this clause"
...>   _ ->
...>     "This clause would match any value"
...> end
"This clause will match and bind x to 2 in this clause"

In pratica rispetto a differenti pattern, il runtime come abbiamo già detto è in grado di riconoscere quello che si avvicina di più al caso corrente. In caso di mancato riconoscimento di un pattern, viene applicata la soluzione più generica, che in un case statement viene indicata con l’underscore come possiamo vedere dall’esempio.

Vai alla parte 5