domenica 30 dicembre 2018

Righa

E la maestrina ha corretto con la penna rossa.


"Mario Panta COLLAN C/MAre Ti Ha Messo in RIGHA."

mercoledì 26 dicembre 2018

Mandatory "my Rust 2018" post

I first heard about Rust on August 2014. I gave a serious try in late 2016 when Rust 1.13 was released. By early 2017 I built an in-car diagnostic system, 100% Rust code including my OBD and graphics libraries, still working today.

It's been a while I have Rust in production on company servers. Lucky me, I didn't have to bother learning tokio, because mpsc was just perfect for every scenario. Also, I don't like to waste my time on "next releases may break compatibility" things.

I used to have a daily fight with the Borrow Checker. Sometimes it won, sometimes I won. When Rust 2018 was released, I had two fights in the same day. I won twice. That is, I am getting more and more familiar with Rust. And NLL is a boon.

Rust is providing me value. I really hope those developers get paid because they definitely deserve it.

Rust switching to edition = "2018" was flawless. Every project I cargo fix'ed had no issues.

I'm so addicted to the combination of rustup/cargo (and clippy and fmt and helpful error messages) I just can't imagine how I was able to write any software before.

What do I wish for "Rust 2019"? I only need people stop whining about "my crate only works with nightly Rust". Rust 2018 Edition is mature. If your crate requires more than a single unsafe or demands a nightly, then you are the problem.

martedì 25 dicembre 2018

Scorci




domenica 23 dicembre 2018

Il C++ sempre più assurdo

Per lo standard 2020 del C++ ("C++20") hanno aggiunto nientemeno che... i Range!
Proprio ad imitazione di tutti gli altri linguaggi che già li hanno (Rust, Ruby, ecc.). Ormai il C++ soffre di complesso d'inferiorità e la steering committee del C++ arranca nel voler imitare le feature altrui, inventando sintassi sempre più caotiche e squinternate.

E pensare che le due idee di base del C++ (classi ed ereditarietà) bastavano e avanzavano, poiché coprono il 99% delle necessità. Tutte le altre feature inventate dagli anni '90 ad oggi (eccezioni, polimorfismo, namespace, allocatori, ecc.) e ancor più la libreria standard (a cominciare da cin cout cerr) è stato un immane, gigantesco, mostruoso pasticcio. Se uno vuol farsi venire i crampi al fegato ed un quadruplo esaurimento nervoso, cominci ad imparare a utilizzare il "C++20" dicendo: "questo è il futuro, si capisce".


Nota: un linguaggio di programmazione deve permetterti di scrivere senza diventare scemo un software che funzioni senza imprevisti e che il tuo codice sorgente a distanza di tempo sia comprensibile a chi intende fare correzioni o modifiche.

giovedì 20 dicembre 2018

Come godo!! Pipo power in my hands!

Mi sono fatto un regalo di Natale: un Pipo X8-Pro, da usare come server casalingo aggiuntivo.

Tecnologia vecchia (è uscito nel 2015) ma è piccolo quanto basta (i vari X9, X10, ecc. hanno schermi più grandi e più memoria, ma anche ventole di raffreddamento) ed economico. Caratteristiche base:
  • processore Intel Atom x5-Z8350 a 1.44 GHz (64 bit, dual core, 4 threads), chipset Cherry Trail, fanless (senza ventole)
  • touchscreen 7" (150x95mm) a risoluzione 1280x800 multitouch 5 dita con "tastone touch Windows"
  • 2 Gb RAM DDR3 1066, 32 Gb MMC flash (29.4 Gib), entrambi non espandibili
  • slot microSD (comicamente posto sottosopra)
  • quattro porte USB (tre 2.0 e una 3.0)
  • altre interfacce: ethernet, wifi+antenna, HDMI-out, jack 3.5mm cuffie, bluetooth, tasti volume up/down e power off, due mini-speaker, tasto di reset accessibile solo con uno spillo.
C'era preinstallato Android 5.1 e la possibilità al boot di installare Windows 10. Nella confezione ci sono soltanto:
  • Pipo X8
  • alimentatore 5V 3A
Ho installato Ubuntu Server 18.04 LTS, senza ambiente grafico, da pen-drive USB ed ethernet, eliminando tutte le partizioni Android e Windows che consumavano inutilmente una marea di gigabyte.

Dopo aver installato Ubuntu e un po' di ammennicoli, restano 23 giga effettivamente liberi. Funziona tutto tranne:
  • la scheda audio. È una intel_sst_acpi 808622A8:00 supportata solo a partire dal kernel 4.18, ma anche installando il 4.18 occorre aggiungere qualcos'altro per attivare mixer e canali e non ci sono riuscito (ma tanto deve funzionare da server); in compenso l'audio sulla porta HDMI funziona;
  • il modulo bluetooth. È un merdoso rtl8723bs di quelli che si pilotano attraverso una porta seriale a 115200 (ttyS4) e richiede dei firmware aggiuntivi e un programmino di inizializzazione a parte da lanciare prima del servizio BlueZ;
  • il modulo wifi, dello stesso rtl8723bs, comincia a funzionare solo dopo aver completato l'installazione (che contiene il  firmware wifi tra i pacchetti restricted extras);
  • lo slot microSD non supporta le SDXC da 64 Gb e superiori ("errore 110"), ma solo le vecchie memory card fino a 32 Gb;
  • il sensore di orientamento (portrait/landscape) non viene proprio riconosciuto;
  • non c'è modo di regolare l'intensità della luminosità (pwm_setup_backlight [i915]), che dall'accensione resta sempre fissata al massimo.
Alcuni limiti tecnici:
  • la porta ethernet on-board dipende dal chipset DM9621A (sul bus USB) ed è solo 10/100 Mbit;
  • il touchscreen è sensibile su tutto lo schermo tranne 9 pixel sui bordi orizzontali e 12 sui bordi verticali;
  • il tasto power, benché leggibile da software al pari di volume up/down... fa lanciare lo shutdown del sistema; peccato, sarebbe stato comodissimo avere un tasto hardware in più;
  • il kernel Linux "vede" anche altre periferiche (porte seriali, tasto Home, ecc.) ma non è hardware fisicamente collegato.
Ovviamente non ho resistito alla tentazione di aprirlo per vedere com'era ingegnerizzato. Per essere 100% designed in China & made in China pare abbastanza ben fatto. Eccolo aperto (da sotto, dove c'era il coperchio metallico inferiore): in senso orario, da sinistra:
  • sulla sinistra: batteria memoria tampone, interfaccetta touchscreen e relative "piattine" tenute in sede da con nastro adesivo giallognolo
  • in alto verso destra: board con due porte USB e chipset wifi
  • al centro, la motherboard: il lato connettori (sotto) è praticamente spoglio, mentre tutta la circuiteria (SMD) è coperta dalla grossa aletta di raffreddamento, che disperde sul coperchio metallico (non visibile nella foto):

Sì, concettualmente è come una Beagleboard/Raspberry, ma con processore Intel anziché ARM. Anche la sudcoreana Hardkernel ha tirato fuori una board Intel con caratteristiche più moderne, l'Odroid H2.

sabato 15 dicembre 2018

Piccole vittorie personali

Dopo un po' di smanettamento con le apposite librerie finalmente riesco a fare il rendering di un font Truetype (TTF) con calcolo della bounding box consegnando i pixel non necessariamente allo schermo. Però per fare la foto occorreva uno schermo...


Bisognerebbe prendere a pedate chi ha inventato lo standard: doveva essere un vecchio docente universitario che non aveva mai scritto una riga di codice. Per la serie: uffico complicazioni affari semplici. Immagino la vita da girone dantesco di tutti i programmatori di Microsoft e altre aziende, che fin dai tempi di Windows 3.1 hanno dovuto fare letteralmente salti mortali per produrre risultati decenti a velocità ragionevoli e consumo di memoria accettabile.

p.s.:  anche lo standard UTF-8 passerà alla storia dell'imbecillità grazie al supporto di alfabeti vulcaniani e emerite cagate dello stesso genere (più le lettere ripetute: prima aggiungono N, Z, Q, R per i matematici, e poi tre versioni dopo dicono: perché non tutto l'alfabeto? quello americano, s'intende - e compaiono di qua i buchi e in un'altra pagina le lettere: ed è il caos per fare l'ordinamento...)

giovedì 13 dicembre 2018

Ultimi selvaggi acquisti

Come godo!! Da sinistra a destra:
  • quattro interruttori anti-vandalo Alpha Elettronica 330-066-5-N1 con led blu
  • due interruttori anti-vandalo Alpha Elettronica 330-062-1 
  • un interruttore a chiave Zadi

domenica 9 dicembre 2018

sabato 8 dicembre 2018

venerdì 7 dicembre 2018

Fauna & flora



Nido anonimo sull'albero di mandarini
Sarà stato cinque centimetri di diametro

giovedì 6 dicembre 2018

Souvenir dal CeBIT '98

A quanto pare, per scarsità di visitatori, l'edizione 2018 del CeBIT di Hannover non si farà.






mercoledì 5 dicembre 2018

Blue Chip DataRadio WinTuner

Scheda per ricezione Teletext/Televideo (da segnale TV analogico 625 linee) basata su ricevitore Philips e memory controller SAA5249P, su slot PC ISA 8 bit, con uscita di un singolo bit (da far decifrare a software), venduta dalla Sinesis alla megaditta nella seconda metà degli anni '80. Il progetto interno fu però accantonato perché la sede della megaditta a piazza Vittorio aveva una pessima ricezione TV.


Oltre all'ingresso antenna TV c'è un connettore DB-9 Cannon femmina e, sulla sinistra in alto, un header da 8 pin.

martedì 4 dicembre 2018

O-hoo!! I' che configurazione!

Ripristinato e riequipaggiato megapotente server Ubuntu 10.04.4:
  • CPU: Pentium-S a 166 MHz
  • RAM: 256 Mb PC 133 (occupando entrambi i banchi)
  • HDD primario: Quantum Fireball A35, 20.5 Gb UDMA/66
  • HDD storage: Quantum Fireball APL, 30 Gb UDMA/100
  • FDD primario: 5.25" 1.2 Mb
  • FDD secondario: 3.5" 1.44 Mb
  • DVD/RW 24x
  • VGA AGP
  • USB: due porte USB 1.1
  • BIOS: Award Modular Bios 4.51PG (1999)
  • tastiera: Unidata Cherry Brand XT-AT compatibile (comprata nel 1989)
Caso notevole: una delle RAM dava problemi ma Ubuntu 10.04 riusciva comunque a fare il boot con appena 128 Mb RAM e 192 Mb di swap.

Per entrare ho dovuto esplicitamente chiedere al client ssh di usare il buon vecchio HMAC-SHA1 che i nuovi ssh non supportano più (ssh -m hmac-sha1 utente@catorcio).

lunedì 3 dicembre 2018

domenica 2 dicembre 2018

Microsoft Surface Pro 2: Unboxing again!

A dicembre 2013 ho comprato un portentoso Microsoft Surface Pro 2, nell'indovinatissima configurazione Core i5 4200U, 8 Gb RAM, 256 Gb SSD, un vero cavallo di battaglia.

Dopo esattamente cinque anni di lavoro (l'ho usato principalmente per lavorare, specialmente in movimento), festeggio con un lussuoso nuovo video di unboxing:


Purtroppo dopo cinque anni non è più in piena forma:
  • la porta USB 3.0 è schiattata, cioè non ha energia elettrica. Posso risolvere collegando un hub USB 3.0 iniettandovi corrente dalla 5V dell'alimentatore originale (stessa massa);
  • la batteria si è gonfiata sollevando parte dello schermo (l'ha scollato). Ha comunque ancora una buona ora abbondante di autonomia;
Altri difettucci (tutto sommato prevedibili, dopo tanti anni di gloriose battaglie):
  • la vernice su alcuni bordi si è grattata via;
  • la ventolina (che si sente solo d'estate e solo quando la CPU va a palla) è un pochino più rumorosa a causa di polvere e peli impossibili da togliere;
  • la Type Cover 2 (tastiera-cover retroilluminata) ha una bolla d'aria e qualche scoloritura;
  • i cinque pin del connettore alimentazione sono un po' più sprofondati, ma finora non danno problemi;
  • il kick-stand posteriore, a due posizioni, appare più morbido di quando era nuovo ma è ancora operativo.
Le cose che ho usato di meno:
  • le Lifecam anteriore e posteriore, entrambe da 1.2Mp 720p: in totale avranno scattato 4-5 foto e un solo video di prova, e qualche videochiamata Skype;
  • giroscopio/accelerometro/magnetometro: è vero che sono andato parecchio in giro, ma non l'ho praticamente mai utilizzato come navigatore GPS;
  • ho usato spesso la stylus Wacom per disegnare, raramente come alternativa al mouse, ma in tante occasioni è rimasta a casa perché il touchpad della TypeCover 2 bastava e avanzava;
  • accelerometri e giroscopio servivano solo per cambiare modalità portrait/landscape (e raramente ho avuto bisogno del modo portrait);
  • doppio microfono, solo per qualche videochiamata Skype; ugualmente gli speakers Dolby Digital Plus, poco usati perché lavoro in silenzio (o con le cuffie)
Le cose che ho usato di più:
  • touchscreen ClearType Full HD, ovviamente! sebbene per lunghi periodi, grazie alla DisplayPort, ho usato un display 27";
  • 2x2 MIMO WiFi, ma raramente viste punte di più di 3,5 Mb/sec di throughput a causa degli Access Point Ciofeca™;
  • bluetooth 4.0, usato soprattutto per mouse, tastiera, e per pilotare i trenini LEGO e gli NXT;
  • lo slot MicroSDXC, praticamente l'unico card reader che ho a disposizione!
  • il kickstand, usato quasi sempre all'inclinazione 55° e raramente a quella 22°.
TL;DR: quasi 1500 euro regalati alla Microsoft, per una media di 300 euro l'anno, ma ne è valsa la pena: infatti ruggisce ancora come un fringuello!