domenica 28 febbraio 2016

Ma... ma è... ma è un CAMPER !!








Autore: lo sloveno Chapachuk su Eurobricks.

venerdì 26 febbraio 2016

Quaaaaanto?!? two grands ?


No, non lo compro. A parte il fatto che se ne vanno poi altri cinquecento euro di dazi doganali...

giovedì 25 febbraio 2016

Un LEGO Certified Store in Italia!

Cos'è un LEGO® Certified Store?

Un LEGO® Certified Store (LCS) non è di proprietà di The LEGO Group ed è gestito da una terza parte (Percassi in questo caso) dietro accordo con The LEGO Group stesso.

Un LEGO® Certified Store (LCS) è un negozio progettato da The LEGO Group, e replica esattamente il "look" e la "experience" di un LEGO Store ufficiale.

Tutti i mobili, la grafica e i complementi d'arredo sono progettati da The LEGO Group.

Un LEGO® Certified Store (LCS) offre i seguenti "servizi" che ispirano e sviluppano i "costruttori di domani" attraverso un creativo "gioco libero" e lo sviluppo della immaginazione:
  • Pick-a-Brick wall (PAB) – un "arredamento" customizzato con contenitori cilindrici riempiti con mattoncini ed elementi LEGO dai quali gli acquirenti/clienti possono scegliere e prelevare a mano quelli di cui hanno bisogno per costruire quello che hanno pensato o progettato.
  • Set LEGO già montati e circondati da un nastro a marchio LEGO (“Brand Ribbon”) lungo tutto il perimetro/attorno alla circonferenza del negozio per ispirare i fan LEGO.
  • “The Living Room”, un'area gioco interattiva che, posizionata al centro del negozio, darà ai bambini la sensazione e l'esperienza "hands-on, minds-on” (si potrebbe tradurre con "mani sui mattoncini - mente accesa") con i mattoncini LEGO.
  • Set LEGO esclusivi disponibili in contemporanea a Stati Uniti e Germania
(notizia da Mattonito)

mercoledì 24 febbraio 2016

Come godo!! SunFounder power in my hands!!

Ho comprato su Amazon un monitor SunFounder 7" TFT da accoppiare ad una Beagleboard.

Il monitor viene venduto "per Rasperry Pi bla bla bla", in realtà è un normalissimo monitor da sette pollici scarsi, utilizzabile da qualsiasi cosa abbia un'uscita HDMI o VGA.

Il monitor Asus 27" troneggia sul monitor Sunfounder 7"

È un monitor Sunfounder 1024x600 con diagonale da 173mm (6.8"), nonostante la copertina del manualino e della confezione dicano che è solo 800x480 (all'interno del manualino però nella pagina delle specifiche indicano come risoluzione fisica 1024x600, e l'ho verificata personalmente; non so se sono stato fortunato oppure se gli 800x480 siano stati già venduti tutti).

Va alimentato a 12 volt; nella confezione c'è un alimentatore 12V con spina adattatrice Bosch.

Viene riconosciuto dal PC Linux Ubuntu come un "Do Not Use RTK 32" (l'EDID riporta Monitor Name 32V3H-H6A Model 4c54 Serial Number 1 Year 2007: evidentemente una partita di chip riciclati da nove anni fa). In assenza di segnale compare la classica schermata blu "NO SIGNAL".

Ha due normali ingressi HDMI e VGA (disposti orizzontalmente e lontano dal bordo, cosa molto buona) più un cavo che fuoriesce dall'interno (non staccabile) collegabile ad un cavo adattatore AV (fornito in dotazione e addirittura con capsula col fusibile). Ha anche uno speaker piezoelettrico e nei menu OSD permette perfino di impostare la radio FM sugli 87-89 MHz, probabilmente usando il cavo integrato AV+alimentazione come antenna (la radio però non l'ho provata). È dotato perfino di un telecomando a infrarossi che replica i tasti fisici (va abilitato nell'OSD coi tasti fisici), e di una basetta.

Le due caratteristiche più brutte sono il cavo che fuoriesce dall'interno (non staccabile, a meno di rinunciare alla garanzia) e la scritta marchiata a fuoco "7 INCH HD TFT COLOR MONITOR".


I sei tasti fisici esterni sono:
- PC/AV: cambia modalità HDMI-AV1-AV2-VGA (verrà ricordata alla prossima accensione)
- rotazione: specchio orizzontale, sottosopra, sottosopra specchio, normale (evidentemente pensato per essere usato con le retrocamere)
- Menu, +, -: menu OSD per le impostazioni luminosità, contrasto, ecc.; il menu di default è in inglese, ma ha anche la lingua italiana con qualche accento sbagliato qua e là
- On/Off.

Alla pressione del tasto di accensione On/Off, ci mette circa un paio di secondi ad accendersi. Se viene tolta e poi ripristinata l'alimentazione, non si riaccende (occorre premere di nuovo On/Off).

Sia in modalità HDMI che VGA, dichiara varie risoluzioni video ma non la risoluzione nativa 1024x600 a 60 Hz (cioè 49 MHz pixel clock, 37.35 kHz orizzontale, 59.85 Hz verticale) o 75 Hz (con 62.5 MHz pixel clock). Per impostarlo correttamente da Linux occorre aggiungere un parametro command-line al kernel per indicare che l'uscita video utilizzata ha la risoluzione 1024x600 a 60 Hz sempre "enabled":
video=DVI-D-1:1024x600@60e

In alternativa - sempre da Linux - occorre smanettare col perfido "xrandr" di Xorg per attivarlo come monitor secondario (estensione del desktop) o in "mirroring" (sconsigliabile a causa dello stretching, tranne magari per i casi di foto/video full-screen); per esempio, sul notebook ho dovuto impostare dopo l'avvio di Xorg:
xrandr --newmode 1024x600 62.50 1024 1072 1176 1328 600 603 613 629 -hsync +vsync
xrandr --addmode HDMI-0 1024x600
xrandr --output HDMI-0 --mode 1024x600
(nota: sulla Beagleboard l'uscita DVI digitale passa sul connettore HDMI, per cui ho usato DVI-D-1; basta verificarlo col comando head /sys/class/drm/*/status mentre su altre macchine occorrerà usare qualcosa tipo HDMI-0, VGA-1, ecc.).

La risoluzione 1024x600 non è né carne né pesce: verticalmente è un pochino più ampia di un 16:9. Il pannello TFT è controllato da un chip RTD2660H, driver TTL per HDMI che adatta allo schermo (scaling/stretching) l'immagine che gli arriva da VGA/HDMI/AV, ma l'effetto è fastidioso se non è foto/video ma grafica/testo (infatti il prodotto è evidentemente pensato per essere collegato a una retrocamera da automobile).

Dal monitor non sono riuscito a ottenere audio dal canale HDMI, non so se l'audio sia supportato anche da HDMI o solo dagli ingressi AV.

La visuale, dichiarata di appena 70°, pare in realtà ancora più ridotta, e sulle immagini a colori forti si nota da vicino un po' di flickering (come retrocamera da auto andrà bene, come monitor per sviluppatori di software sarà una rogna).


Ovviamente l'ho smontato, infischiandomene della garanzia, per staccare l'orrendo cavo AV+alimentazione (connettore bianco in basso verso destra) ed avere attaccati al pannello solo il mio cavo HDMI e il cavetto di alimentazione. Per aprirlo basta svitare due viti sul retro (una delle quali è coperta dall'adesivo del sigillo di garanzia) e poi - con molta, molta attenzione - staccare il coperchio incastrato in una serie di fragili dentini e senza danneggiare i fragili connettori (specialmente quello del TFT). La plastica del case non è rigidissima e tende a piegarsi o addirittura a formare crepe.

Non ho provato, ma probabilmente è possibile tenerlo sempre acceso cortocircuitando il tasto di accensione.

Sulla board si vedono i fori per aggiungere un buzzer, un pannello touchscreen e un secondo speaker, ma è chiaro che il monitor è stato costruito in economia (mi preoccupa solo il jack di alimentazione 12 volt, quello nero in alto a destra, che in caso di strattoni potrebbe staccarsi).

mercoledì 17 febbraio 2016

Cosa significa essere "della vecchia scuola"

Un giovane app developer sveglio e brillante ed un burbero panciuto cinquantenne programmatore old-school stanno bevendo qualche drink al bar. Dopo qualche bicchierino di troppo, decidono di avviare un Potente Progetto sulla Sicurezza di Internet: scandire ogni mese tutti gli indirizzi IPv4 e tener nota degli host che rispondono al ping e che hanno aperta qualche porta FTP o Telnet, espandendo magari in futuro il software per supportare qualche altra porta.

Vediamo le differenze tra il giovane e pimpante skilled App Developer e il vecchio trippone programmatore rispetto a quattro punti importanti:
  1. come si fa;
  2. quale metodo è il più veloce;
  3. quale è il più estensibile (aggiungere altre porte);
  4. quale è il più costoso in termini di potenza di calcolo, memoria, disco.


1. Scelta del linguaggio di programmazione.

AppDeveloper: bisogna usare Python, facile da imparare, performante, facile da manutenere.

Trippone: per queste cose si lavora in C, veloce, performante, grosso modo facile da manutenere.


2. Scelta delle strutture dati.

AppDeveloper: eh, qui bisogna usare JSON (che oggi si usa dappertutto, è facile da leggere, e tutti lo sanno usare): ogni host sarà descritto da qualcosa del tipo:
{
 "ip": "123.45.67.89",
 "state": "up",
 "ports": {
  "20": "open",
  "21": "open",
  "23": "closed",
 }
}

Gli indirizzi IPv4 sono 2³², cioè circa 4,2 miliardi, di cui stimeremmo circa 300 milioni attivi. Sono sufficienti perciò 50-60 gigabyte di spazio su disco. Aggiungere altre porte è banale: basta qualche riga in più nel pacchetto JSON.

Trippone: lo stato è solo up/down (1 bit), le tre porte sono solo open/closed (1 bit ciascuna), per cui bastano quattro files che contengano un array di bit (4,2 miliardi di bit = 512Mb ciascuno = due gigabyte totali di spazio su disco). Aggiungere altre porte è banale: basta qualche file in più di 512 Mb.


3. Statistica mensile sugli host attivi e sulle porte open

AppDeveloper: ooh, qui facciamo Big Data! Posso scandire l'archivio con la tecnologia Hadoop, oppure indicizzare i documenti JSON aggiungendo un file indice di una decina di gigabyte. Per esempio conosco qualche libreria che...

Trippone: mi basta contare i bit uguali a 1 nel rispettivo file di 512Mb; può bastare una banalissima lookup-table del tipo: "quando vedi un byte 11010011 allora aggiungi 5 al conteggio". Praticamente è O(n) con una costante piccolissima.


4. Verifica di un singolo indirizzo IP

AppDeveloper: ehi, smart! qui mi basta fare una ricerca binaria nel file indice di una decina di gigabyte, ed estrarre il pezzetto JSON che ci interessa. Se la ricerca non trova nulla, allora l'host è down e non ha porte open.

Trippone: l'archivio indirizzi è sequenziale (512 Mb) per cui in O(1) si trova la posizione del bit in ognuno dei file e dal valore 0/1 si capisce up/down o open/closed.


5. Verifica di un gruppo di indirizzi IP (per esempio una subnet/24)

AppDeveloper: cool story, bro! mi basta scandire il file indice e fare pattern-matching con le regular expressions. Oppure fare 256 ricerche binarie sugli indirizzi di tutta la subnet (poiché infatti una subnet/24 corrisponde a 256 indirizzi).

Trippone: avendo mappato gli indirizzi IP consecutivamente, una subnet/24 consisterà di 256 bit consecutivi: basta calcolare l'indirizzo del primo e leggere i 256 bit (cioè 32 bytes) a partire da lì dal file corrispondente di 512 Mb. Praticamente O(1).


6. Conteggio del numero di host che hanno una determinata combinazione di porte open

AppDeveloper: oh, yeah, American Dream! questo è un lavoro Bìggh Dèta per la tecnologia Hadoop, bisogna scrivere un map/reduce, oppure si può fare aggiungendo un nuovo indice.

Trippone: è di nuovo un conteggio? basta scandire i quattro file 512 Mb confrontando i singoli bit con la combinazione richiesta. Complessità lineare: O(n) sul numero dei files.


7. Conteggio di quanti host sono stati attivi durante gli ultimi tre mesi

AppDeveloper: don't break my heart, babe! per ogni mese creiamo un'apposita directory con il database e gli indici; quindi estraiamo da ogni database una lista di host attivi, e quindi joiniamo e deduplichiamo le ultime tre liste.

Trippone: creeremo un'apposita directory per ogni mese; basterà fare un'operazione "OR" bit a bit del file binario host delle ultime tre directory, conteggiando i bit risultanti a 1. Complessità O(n) con costante molto piccola.


8. Conteggio di quanti host sono stati aggiornati questo mese (cioe da up a down o viceversa)

AppDeveloper: I'm a Belieber, Justin! è facile, anche se costosetto: basterà scandire l'archivio di questo mese, estrarre il JSON di ognuno dei circa 300 milioni di host rispetto al mese precedente e verificare up/down e down/up.

Trippone: basterà fare un'operazione "XOR" bit a bit del file binario host degli ultimi due mesi, conteggiando i bit risultanti a 1. Solita O(n) con costante molto piccola.


9. Conteggio di quanti host sono stati attivi in almeno x degli ultimi 12 mesi.

AppDeveloper: funny compilation, dude! l'operazione è lunghetta perché bisogna creare un nuovo database in cui inserire i campi "indirizzo" e "mesi attivi", e poi scandire uno per uno i dodici database precedenti per aggiornare i conteggi, ed infine conteggiare quelli in cui il campo "mesi attivi" è maggiore o uguale a x.

Trippone: creo in RAM un array di 4 miliardi di interi da 4 bit ciascuno (dunque mi occupa 2Gb RAM), leggo uno per uno gli ultimi 12 mesi aggiornando i contatori corrispondenti. Alla fine conto quanti sono maggiori o uguali a x. Se invece la RAM scarseggia, allora posso suddividere l'operazione in "fette" da 16Mb-256Mb e sommare infine i conteggi parziali. Alla fine della fiera, in entrambi i casi, la complessità è O(n) con costante molto piccola.


Indovinate perché il giovane e sveglio app developer se n'è andato via stizzito e imbufalito.

martedì 16 febbraio 2016

lunedì 15 febbraio 2016

Le insidie di Amazon Prime e della spedizione gratuita

Compro da Amazon circa 10-15 volte l'anno (sono cliente fin da quando aprì lo store italiano sei anni fa). I prezzi sono in genere ragionevoli e se in un ordine ci sono almeno 19€ [aggiornamento: da marzo 2016 è 29€] di prodotti "gestiti dalla logistica di Amazon", la spedizione è gratuita (utilissimo, visto che un acquisto qualsiasi in un e-shop italiano costa almeno 9-10 euro di spedizione). Inoltre è sempre stato abbastanza puntuale - quasi sempre la consegna era entro i 3-5 giorni lavorativi.

Il punto di forza di Amazon è infatti nella sua rete di spedizioni. I prodotti "venduti e spediti da Amazon" sono nei suoi magazzini merci, e perciò il loro sistema può elaborare il metodo più veloce ed economico per le consegne (in genere si tende a ritardare le consegne nella speranza di accorpare più consegne nella stessa zona, per non richiedere due viaggi al corriere quando poteva bastarne uno; per cui il paradosso è che quando ci sono parecchi ordini, le consegne sono più veloci).

Sul marketplace Amazon operano però anche venditori esterni che si avvalgono della logistica di Amazon ("venduto da Pinco Pallino, spedito da Amazon"), con un costo aggiuntivo per spedizione (a meno che non vengano accorpati a qualche ordine sopra i 19€ [aggiornamento: da marzo 2016 è 29€] che già gode di spedizione gratuita). Il costo aggiuntivo è dovuto al fatto che un corriere deve ritirare i colli e poi immetterli nella rete di spedizione di Amazon. Altri venditori esterni preferiscono spedire in proprio e usare Amazon solo come vetrina: sono quelli stufi di vendere su eBay (e perciò il costo di spedizione è inevitabile). In genere mi fido solo di articoli "venduti e spediti da Amazon".

Il 14 gennaio 2015 (notare: gennaio 2015), per una cosa urgente, accettai di iniziare il mese di prova gratuito di Amazon Prime (erano anni che mi compariva la proposta martellante), cioè l'offerta che accorcia i tempi di spedizione a 1-2-3 giorni (per gli ordini più semplici, addirittura consegna il giorno dopo), sempre con spedizione gratuita sopra i fatidici 19€ [aggiornamento: da marzo 2016 è 29€]. La spedizione fu supersonica: ordine inserito lunedì 13 dopo pranzo, consegna a casa la mattina del 14. A quanto pare la prima fase della spedizione comincia verso le 16:30 per gli ordini inseriti fino a quel momento, in modo che in nottata il vettore possa portare il pacco al centro di smistamento (ce n'è uno a una cinquantina di chilometri da casa mia), e in mattinata il pacco può essere magari già affidato al corriere che consegna a destinazione.

Al termine del mese di prova, salvo esplicito annullamento, l'abbonamento ad Amazon Prime era offerto a 9,99€ annui. Vista la performance di spedizione accettai di buon grado, e così trenta giorni dopo, il 13 febbraio 2015 (notare: febbraio 2015), mi addebitarono i 9,99€.

Foto 1
La consegna "il giorno dopo" purtroppo dipende non solo dalla movimentazione del magazzino, ma anche dalle esigenze dei corrieri. Se ordini un costosissimo disco SSD (pacchetto grande quanto un piccolo libro), ti arriva l'ultimo giorno utile; se ordini un grosso elettrodomestico da venti euro, probabilmente viene consegnato già il giorno dopo perché il corriere non vede l'ora di liberare spazio nel furgone. Bisogna abitare a Roma o Milano (o in un grosso condominio imbottito di fans di Amazon) per godersi veramente l'abbonamento Prime.

Un altro punto fastidioso è che con Prime le spedizioni non vengono accorpate, in modo da risparmiare un passaggio e consegnarle il più velocemente possibile. Col risultato che chi ordina tre carabattole potrebbe ricevere la merce in due o tre diverse consegne (tre diversi corrieri, magari nello stesso giorno, che devono sostare sotto casa tua per consegnare), come mi è già capitato più volte. La cosa è fastidiosa perché devi presidiare l'indirizzo di consegna anche durante le ore di pranzo e riposino pomeridiano (le consegne qui avvengono solitamente fra le 12:30 e le 16:30, anche se a volte sono avvenute alle 9:45 o alle 18:15), e magari anche nei giorni successivi in caso di ritardo di spedizione.

Poi c'è il fatto che i corrieri e i loro furgoni sono normali esseri umani su normali furgoni, per cui qualche consegna può... ritardare (vedi foto 1). La consegna "il giorno dopo" (o addirittura "in giornata" nei posti in cui la attiveranno), è essenziale non solo per indurre il cliente a pensare prima ad Amazon che al negoziante sotto casa, ma anche per poter vendere prodotti deperibili (come già avviene in altri paesi tra cui il Giappone: perfino frutta e verdura, la gente può fare la spesa su Amazon anziché al supermercato). Se per risparmiare pochi euro devo aspettare una settimana (5 giorni lavorativi) per la consegna, sono tentato di comprare nel negozio sotto casa.

Foto 2
Come dicevo sopra, l'abbonamento a Prime non mi ha dato i risultati sperati. Pochissime volte la consegna è stata davvero veloce. Secondo me pagare per aspettare 3 giorni anziché "da 3 a 5" non vale la pena. Per questo avevo deciso che a inizio febbraio 2016, verso la scadenza del dodicesimo mese di abbonamento, avrei disdetto l'abbonamento a Prime.

Doppia sorpresa: il 13 gennaio 2016 (notare: gennaio, anche se scadeva il 13 febbraio) Amazon Prime tenta di estrarmi 19,99€ dalla carta di debito scaduta (vedi foto 2: era una carta prepagata, non una carta di credito). Non solo il costo dell'abbonamento a Prime è più che raddoppiato (da 9,99 a 19,99: non ricordo che il primo anno i 9,99 fossero "offerta speciale"), ma Prime si è presentata all'incasso con un mese di anticipo. Praticamente avrei involontariamente "pagato" anche il mese "gratuito": 13 gennaio 2015 mese gratuito, 13 febbraio 2015 addebito di 9,99€, 13 gennaio 2016 addebito di 19,99€ per il periodo febbraio 2016 - febbraio 2017... ed il 13 gennaio 2017 ci sarebbe stato l'addebito del periodo successivo.

Per mia fortuna, la carta prepagata era scaduta, per cui il sito di Amazon si è limitato a martellarmi continuamente il banner sull'impossibilità di rinnovare il Prime per un altro anno (Prime non addebita automaticamente sulla carta di credito usata per gli acquisti).

Se per 9,99€ mi avevano già perso, figuratevi per 19,99€. E no, non mi interessa lo spazio gratuito sul cloud Amazon (perché mai dovrei mettere i miei file e le mie foto in un posto che non controllo io e che è disponibile solo con una connessione internet?) e non mi interessa nemmeno l'accesso agli acquisti compulsivi sulle offertissime che durano solo 30 minuti.

Non ritengo giustificati venti euro l'anno per accelerare le spedizioni. Inoltre non mi piace che la fretta di consegnare faccia spezzare le spedizioni in modo ridicolo: nell'ultimo caso, è stata fatta una spedizione a parte per una confezione di pile Grundig (foto in alto), costringendo il corriere ad una fermata per un pacchetto di neanche venti grammi e del valore di un euro e mezzo (il corriere è obbligato a consegnare personalmente anche se il pacchetto entrerebbe perfettamente nella cassetta delle lettere... Sarebbe bello poter dire ad Amazon "mettimi questo disco SSD nella cassetta delle lettere"). E no, purtroppo Prime non permette un'opzione "invia tutto in un'unica spedizione".

Infine, andando ad annullare l'iscrizione, scopro che l'addebito di 19,99€ sarebbe stato rimborsabile (sono onesti). Ovviamente nel mio caso non possono rimborsarmi soldi su una carta prepagata scaduta (così come non sono riusciti ad estrarli), per cui l'annullamento va finalmente a buon fine oggi 15 febbraio 2016 (nonostante il mio Prime sia già scaduto, lo considerano ancora attivo, cioè pagabile):

Foto 3

Stamattina ho inserito un nuovo ordine per un totale di tre articoli (uno da 8,99€ venduto e spedito da Amazon, e due di altri venditori ma spediti da Amazon). Se arrivano in tre o cinque giorni, non fa differenza. Finalmente mi compare la magica spunta del "raggruppa l'ordine nel minor numero di spedizioni possibile".

Scopro un'altra sorpresa: pur avendo annullato Prime, il metodo di spedizione di default è rimasto quello Rapido, cioè con sovrapprezzo di cinque euro (sovrapprezzo dovuto al fatto che non sono più abbonato a Prime). Se avessi cliccato su Ordina senza riflettere ogni voce, o peggio se avessi avuto attiva la possibilità degli ordini 1-Click, mi avrebbero "fatto" cinque euro in volata.

Ho dovuto esplicitamente scegliere la spedizione "normale" (ormai l'unica gratuita), pagando così solo 69,97€ (con spedizione gratuita). E il bello è che dopo aver inoltrato e confermato l'ordine, simulando un ordine successivo ho notato che c'era nuovamente la gabella dei cinque euro: gli articoli nel carrello venivano evidenziati come "Idoneo alla spedizione GRATUITA", occorrerà scegliere di nuovo "normale" la prossima volta, sperando di poterlo inserire come default per le spedizioni future.

In sintesi, le spedizioni Amazon Prime convengono solo in presenza entrambe le condizioni:
  1. l'indirizzo di spedizione è sempre presenziato dalle 9:30 alle 18:30 (il portiere del tuo condominio oppure la segretaria del tuo ufficio)
  2. la spesa di venti euro annui ti risulta accettabile per l'accorciamento dei tempi di spedizione.

mercoledì 10 febbraio 2016

Tecnologia obsoleta

Se capisci il significato di ognuna di queste icone, significa che sei diventato vecchio.
- floppy disk: chi li usa più?
- blocchetto appunti: chi lo usa mai?
- colori e pennello: chi li usa più?
- cassettone documenti: chi lo usa più?
- telefono con composizione a rotore: chi lo usa più?
- videocassetta a nastro: chi le usa più?
- schermo a tubo catodico: ne esistono ancora?
- compact disc: i vostri figli ne hanno mai usato uno?

lunedì 8 febbraio 2016

domenica 7 febbraio 2016

La tua vita: prima e dopo

Volevi un cucciolo? Anzi, due? La tua vita cambierà.


  • inutile far pulizie
  • i tuoi album fotografici saranno composti al 95% di foto dei tuoi animali domestici
  • non cenerai mai più da solo (e condividerai i tuoi pasti...)
  • dovrai avere molti più cavetti e prolunghe in casa
  • spenderai più tempo per i tuoi animali domestici che per te
  • la tua vita sociale sarà al 95% dedicata a loro
  • non avrai più niente di "completamente tuo"
  • e ti toccherà rifar di nuovo pulizie ma... è inutile
(fonte: facebook Taiwan, perché tutto il mondo è paese)


venerdì 5 febbraio 2016

Manjaro sucks


Manjaro sucks.

TL;DR: installed Manjaro 2015/12 KDE on my notebook,
some hours swearing, happily switched back to Kubuntu.

Installation "setup" script (text-mode) pretends to not to see certain errors: you will figure out later, when it won't boot. Examples: EFI boot setup did not work. Gummiboot appears to be absent. Pacman databases creation fails because network connection was silently ignored (my b43 "non-free driver" was ignored, the tg3 ethernet chipset failed to setup at first: had to manually rmmod/modprobe/ifconfig/route it). Funny, the btrfs aborted refusing to create a filesystem in a partition already btrfs-formatted (Manjaro "setup" didn't notice that I was repartitioning; even if wiped with dd if=/dev/zero the same-size partitions left the data there)After Grub issues, I switched to SysLinux and finally Manjaro boots.

Man, KDE5 Plasma sucks. Or, at least, it's the Manjaro version that sucks. After changing a number of desktop settings (theme, colors, and so on), the screen started flickering. Logout, login, same problem. Reboot. After a minute, same problem. Arrrrgh. Reinstall everything from zero. Modified fonts for Konsole and Yakuake: the "intense" colored text goofed like a drunk, UTF8 support was lacking, and yeah, only Terminus and Oxygen Mono fonts worked. Selected "en_US" language with "it_IT" date/money/collate support, and the control center and some widgets borked in an Itanglish chaos. And that ugly Kwallet, requiring me to type (again!) a password before it can connect wifi at login.

Octopi failed to update the system. Entered a command-line shell and started sudo pacman -Syu and got a weird bunch of write errors. The root directory was full: the 6400 Mb default suggested by the "setup" was barely sufficient to install the KDE without updates. Decided that reformatting everything was faster than btrfs partition resizing. The home directory in a separate partition only makes sense if you want to encrypt it.

Widgets, what a PITA. Some just don't work (quick share is missing a "plasmoid", input method silently ignores clicks); others are either buggy or amazingly amateurish (network monitor, thermal monitor, date/time... sir, why can't I have a "fri 5 feb 16:02:22" there?), other are too byzantine (audio volume, spectacle screenshot), most of them would work a little better if you double the height of the panel.

The flickering error appeared again. Man, it's time to switch back to Kubuntu.

giovedì 4 febbraio 2016

Perché Wayland è meglio di X11

Primo problema: il "window manager" è esterno al "server X11" (e i due devono comunicare tra loro): l'applicazione riempie di contenuto una finestra (inviando comandi di rendering al server); il server comunica le modifiche intervenute al "window manager", che comincia a lavorarci sopra...

Risultato: in alcuni casi, quando il Window Manager comanda di aggiornare il rendering a video, i frame escono sbagliati (verranno corretti al prossimo aggiornamento). E così, ridimensionando velocemente una finestra, restano pezzetti di "ombra" (perché è partita una richiesta parziale, aggiornata a diversi damage-events precedenti); pezzetti di "strisciate" della finesta, icone spostate, ecc. È un protocollo asincrono, per cui basterà aspettare che il compositor e il server abbiano finalmente modo di prendere fiato...

da una presentazione pdf

Secondo problema: il supporto delle caratteristiche legacy nate trent'anni fa, negli anni '80, quando il server X11 aveva a che fare con font esclusivamente bit-mapped, la scarsa memoria prevedeva un solo framebuffer video, e non c'erano tutte le considerazioni di sicurezza di oggi (per esempio un client grafico può leggere qualsiasi evento di input, diventando potenzialmente un keylogger). Per aggiungere un qualche supporto all'accelerazione grafica e alle uscite video, sul server X11 sono stati fatti pasticci immondi a suon di drivers e librerie.

La soluzione è Wayland:
  • compositor e server sono lo stesso processo, per cui zero-copy da uno all'altro, e ogni frame video viene disegnato alla perfezione
  • niente supporto di caratteristiche legacy che nessuno usa più
  • i client sono separati, anche al livello di input
  • tutto questo significa anche migliori performance e minor uso della memoria RAM.
Una installazione di Arch Linux con systemd e Wayland sul mio notebook, al termine del boot, col compositor Weston attivo su Wayland e una finestra di terminale nell'ambiente grafico e con rete wifi collegata, contava appena ventisei processi in esecuzione (e 96 mega di RAM occupati), contro i circa trecento processi e 400 megabyte di un comune Ubuntu con sessione X11 e Gnome.