Category Archives: Storielle

Storie varie sul rutilante mondo dell’informatica

Modifiche – a volte NO!

knuth-c60

Un post che è anche un proposito per l’anno nuovo 😉 Ma non solo, anzi. E sì, scontato, tutte cose risapute 😳

Comincio con una storiella: un programmino, meno di mille righe di codice Python recentemente, occasionalmente, crashava misteriosamente. Un bug, uno dei tanti, ovviamente. Il guaio è che non era facile riprodurre il bug, io non ci sono riuscito mai.
Solo un appostamento prolungato (ruolo da agente segreto infiltrato con occhiali da sole, completo nero e barba finta sopra quella vera) ha consentito di stanare il colpevole, anzi due di loro. Recidivi come si vedrà tra breve.

Quando si scrive uno script per semplificare calcoli lunghi e tediosi spesso si fa con specifiche che non sono ottimali, anzi tutt’altro. La cosa migliore è vedere qualche caso tipico fatto a mano con l’utente che sa tutto. Ma a volte l’utente sa anche troppo: trova un caso simile non previsto in cui si può applicare lo script, a volte senza modifiche, o con il cambiamento di pochissime righe di codice (di solito comicianti con if cond == ...). Le modifiche possono essere sue o di altri, anche tosti.

Insomma io avevo il codice vecchio e in ogni caso non credo che potesse capitare con Linux. Ma non si può fare tutto, presto e bene… (inizio-cit.).
Vero che non c’era scritto nel manuale –anzi non c’è manuale– ma NO! se ti viene in mente un’estensione chiedi, possibilmente a chi il programma l’ha scritto. Se invece fai modifiche dillo –anche a me.
Ma –soprattutto– niente modifiche estemporanee, neanche se te le chiede teh boss dicendo che è urgente.
È come la storia della farfalla che sbatte le ali nell’Amazzonia…

Tutte cose risapute? Certo! ma continuano a capitare. Da ieri ci sono un paio di persone che hanno un’esperienza in più, anche da raccontare. Io invece non imparerò mai, ma lo racconto lo stesso qui :mrgreen:

Linux è semplice — ma … (storiella perso)

uis

Questa cit. di Dennis la conoscono tutti (o meglio tutti quelli OK) e forse è un pochino troppo estremista. Non c’è bisogno di essere un genio per apprezzare Linux (il figlio di Unix). Ho una mirabile dimostrazione così breve che può essere contenuta anche in questo post: me. QED.

A dire il vero se torno indietro nei ricordi (no, la macchina del tempo devo ancora finirla) ricordo (appunto) benissimo che UNIX (allora si scriveva così) era universalmente (salvo eccezioni) considerato troppo complesso. Ma è roba dello scorso millennio.

C’è una cosa però che può capitare (spero solo a me) che voglio raccontare perché mi è appena capitata. E per raccontarvela rimando a domani il post che stavo scrivendo su un argomento completamente diverso.

Mentre mi stavo organizzando mi è venuta un’idea di quelle che di solito sono –come dire– ma ogni tanto, chissà… probabilmente… forse…
L’idea è questa: per scrivere il testo di un post creo un file .txt (anche se non uso mai l’estensione, roba da Windoze) con lo stesso nome della directory (non uso mai il nome “cartella”) in cui metto immagini, snippets e quant’altro. È possibile automatizzare la creazione dello stream file? Così:

b0

Evidentemente sì, come da immagine qui sopra, il segreto è racchiuso nello script bash (semplicissimo) bln (da blog name):

#!/bin/bash
N=$(basename "$PWD")
gedit "$N"

Nota: le virgolette e la variabile sono necessarie per gestire il caso di spazi nel nome.

Ebbene sì –confesso– sono tutto arrossito per aver detto una cosa lapalissiana come questa.
Ma c’è un’autogiustificazione, che mi tranquillizza –anzi mica tanto.
Il problema è la memoria. Mia, non quella del ‘puter. Sono partito di qui:

b1

Quasi OK, peccato che il nome della dir sia assoluto, a me serve solo l’ultimo pezzo, quello dopo l’ultimo /.
Fermi lì! (avrei dovuto dirlo anche a me), lo so che ci sono sed, awk e altri tools ancora ma la semplicità di cui parla Ritchie…
Per esempio con Python sarebbe semplicissimo

b2

ma mica tiriamo in ballo Python, vero? tanto vale andare con awk.
Dev’esserci l’equivalente bash, ne sono più che sicuro.
E, pensa te, quello che cercavo era proprio basename!
Ma se devo raccontarla fino in fondo devo confessare che ho googlato

b3

Rinko? 👿
Dai alla fine ce l’ho fatta. Ma metti che fosse tipo che teh boss me lo avesse chiesto e rimanesse lì a guardare il monitor (e me). Secondo me non resisteva per 40 minuti. No 👿

:mrgreen:

Q: Ma davvero hai googlato quella roba lì?
A: Ahemmmm… sai per rendere intrigante il post… 😉

Perché i nomi delle variabili devono essere significativi

squirrelNon so se a voi capita mai di svegliarvi nel cuore della notte (le tre meno un quarto), senza un motivo particolare, niente brutti sogni, solo così. E non riuscire più a riaddormentarvi. E per giunta cominciare a lambiccare su un post di sessanta ore prima.
A me è successo questa notte e voglio devo raccontarlo a qualcuno. Tanto il blog lo leggono in pochi e dopo questo incipit diminuiranno ancora. Assay.

La storia è semplicissima, più semplice di come la ricordavo questa notte, questa:

s88

Sì, viene 12. Basta guardare le parentesi.
Anzi no, bisogna vederlo nella GUI, DrRacket:

debug

Uh! vediamo se ho capito per davvero: rinomino la x globale xg e quella locale xl, ottengo:

(define xg 2)
(let ((xl 3)
      (y (+ xg 2)))
  (* xl y))

sp

OK, così è chiaro (spero).
Ma mi resta un dubbio: è solo per rimarcare bene-bene la distinzione tra le variabili locali introdotte da let e quelle esterne o è una delle domande da fare all’esame allo studente rompipalle, dicendogli “l’abbiamo fatto anche a lezione, anzi c’è nel sillabario” (loro lo chiamano così).

ac
Quando ero piccolo agli esami di idraulica (tre se ricordo bene) andava di moda quello in figura (spoiler: Bernoulli, sempre lui).

Dubbio: chissà quanti punti ho perso con questo post? Ma posso ssmettere quando voglio. Probabilmente. Forse… 😳

:mrgreen:

Voglio diventare bravo come Joel

joelPrima di cominciare: questo è un post diversamente serioso, scritto mentre aspetto il boss che passa a prendermi per una intensa giornata in giro per Torino. Ma dipende da voi, dal vostro spirito (mood) del momento, che è poi quello che mi fa scrivere questa nota, dopo aver followato Joel su Twitter.

È decisamente facile, tutto in Python, tranquillo, sempre lineare logico e comprensibile. Vero che il codice (disponibile su Github) deve ancora essere ritoccato, piccole modifiche ma il grosso è fatto.

Joel d’ora in poi sarà uno dei miei modelli, forse anche il blog ne risentirà, in meglio.
Forse anch’io userò la REPL che usa lui, in genere io sono per la più semplice che c’è ma forse la specializzazione quando si supera (o si tende a raggiungere) un certo livello di post-niubbaggine è utile e remunerativa.

Insomma non voglio farla lunga, andate sul blog di Joel Grus, qui: Fizz Buzz in Tensorflow. Ah, non so se avete notato: quando merita i commenti arrivano, tanti 😀

Personalizzazioni, tools divertenti e ricordi

binaryUn post di quelli che vengono navigando il Web durante un viaggio lungo; devo avere anch’io il telefono che fa tutto, anche questo.
Comincio con una cosa che sul Pr1me (il mio primo ‘puter, un mini simile al PDP-11 ma completamente diverso) era semplicissimo, l’avevo attivato dopo un paio di settimane, tempo di arrivare lì leggendo il manuale.

Sto parlando di questo post: Making your command line more helpful and fun!
Anche se vi consiglio di non farlo, non funziona come dovrebbe. Ma ci sono i codici ANSI/VT100 per i colori.
Il sito di Sandra (ehi! su ComputerWold, roba di quando ero giovane!) è pieno di notizie, consigli e curiosità. Qualcuno usabile. Visto che si ho passato quasi un ora adesso provo.

Per esempio figlet:

p0
e finalemte

p1
Viene da qui, dove ne trovate altri, lollosi 😉
E che dire del countdown (anche questo è una variante di qualcosa di simile esistente su Pr1me, fatto dall’amico Giòrs, o era Ugo? o Dom? o chi?)
Una cosa che tutti i vecchi sanno: EZ conversions on Unix.

Il guaio è che sono troppo vecchio e so la risposta a What’s so special about 2147483648?

Era il fratello maggiore di un vero incubo, 32768:

p2
Ai miei tempi gli interi in Fortran IV (o 66) erano di 2 bytes, con un bit riservato per il segno e l’overflow era sempre in agguato. Il Pr1me (in realtà tutti) consentivano di usare gli interi di 4 bytes, cosa poi diventata di default con il Fortran 77. Comodo, allontanava (praticamente evitava) l’overflow. Ma dovevi fare attenzione ai Common quando modificavi codice esistente. Non ditemi che non sapete cos’è un common, dovete essere proprio giovani! 😀

Questo post è un side-effect di cosa sta macchinando Flavio, the MfM, prossimamente vedrete 😀

OK, torno alle cose serie –o seriose :mrgreen:

Calc, Gedit e Racket – memo per niubbi ubunteros come me

mandelOrmai ci sono abituato: ogni volta che c’è una nuova versione da installare sono sia eccitatato [che bello chissà le nuove novità nuove di pakka e quelle rinnovate] e presentivato [ma poi devo reinstallare tutta quella roba che nel tempo ho adottato e ne sono dipendente (atticto terminale (nel senso di perso (non nel senso di personale ma di perso propriamente detto)))].

Perché so benissimo che la grande maggioranza delle cose filano via lisce, manco conta di dirle, fatto. Ma c’è ogni volta qualcosa che richiede googlate, tentativi, e altro che io condisco con un crescendo di psicopatologismo e non-ce-la-posso-farismo. Mi vengono anche fastidiose eruzioni cutanee e disordini al sistema intestinale.

Capace che ne ho già anche parlato, anche su questo blog, ma la memoria sapete…

Allora lo ripeto qui, non so se serve ma ci provo.

Calc
Calc è la mia calcolatrice preferita, anzi l’unica. Non conviene seguire le indicazioni del sito (How to Install), c’è un modo molto più semplice:

sudo apt install apcalc

Ecco! il nome è apcalc, non calc! Lo ripeto qui chissà se…
Poi sì so che apt* è roba del passato, adesso c’è snap, ma nel panico di cui sopra; da domani mi adeguo, promesso; forse.

snap

OK, Calc, c’è 😀

Gedit
Gedit è cambiato; è sparita la toolbar, OK, poco male, ma manca (sembrerebbe) l’opzione per cambiare il caso (che sarebbe convertire i caratteri maiuscoli/minuscoli, un po’ quello che fa tr). Opzione sparita dal menu Modifica e non c’è da nessuna parte, nessun plugin. Poi disperatamente seleziono un pezzo di testo e, contrariamente a quello che faccio sempre uso il tasto destro del mouse per dire copia e miracolo (nel suo piccolo):

gedit

Ma dimmi te! Dubbio: magari era così anche prima, non lo saprò mai 😉
Lo scrivo qui perché di sicuro me lo dimentico, sapete la mia memoria…

Aggiornamento: medeoTL (rockz!) ha appena twittato, qui, una dritta che funziona, pratica, meglio di quella indicata da me. Quindi per cambiare MAIUSC|minusc per il testo selezionato ci sono le scorciatoie:

C-u converte in maiuscolo
C-l converte in minuscolo
C-~ inverte M/m

Dove C-u sta per Ctrl+u, come usano i saputi.
Nota aggiuntiva per quelli come me che dimenticano le cose: ~ è nascosto sulla tastiera italiana; si ottiene con AltGr+ì.

Racket
Qui tutto Ok, quasi, c’è la pagina Download Racket dove si può scaricare uno script di 120MB, da eseguire con sudo bash, anzi snap (prossimamente).
Ora la versione che ho scaricato e installato è quella per mamma Debian; funziona ma c’è anche quella per ‘buntu, anche se per una versione non recentissima, anzi (Precise Pangolin, 12.04). Anche questa nota potrebbe servire per il futuro chissà…

Aggiornamento: oggi, 29 aprile c’è la versione 6.5; sparita la distinzione tra Debian e Ubuntu, adesso l’indicazione è Linux 64 😀
Installazione velocissima 😀
Racket rockz! 😀

Ah, un’ultima nota: per gli screenshots uso —com’è già che si chiama…–, a sì: xfce4-screenshooter, da installare con sudo apt install; anzi snap.

Tutto questo perché adesso è prematuro parlarne ma

yy

Uh! yakkety, yakkety, yakkety Yak!

ott

Il 20 è giovedì, di solito l’installazione la faccio la domenica. Pre-panico per domenica 23 ottobre 2016. Quel giorno non ci sono per nessuno; non vi conviene. E mancano solo sei mesi, scarsi 😦

:mrgreen:

Occasione unica –anzi no– ma una cosa da fare

logoL’amico Marco Bruno mi manda un messaggio di quelli che sconvolgono la giornata. Intanto per il mal di gola (credo di avere la febbre oltre i regolamentari 37 °C) contavo di cazzeggiare ancora più del solito, ero anche finito su Facebook. Ecco la cronaca, yep! mi sono munito di regolare autorizzazione, nèh!

Nino, ma vuoi un Apollo? 53 €…
Segue il link questo: AGILENT HP APOLLO SERIES 400 COMPUTER A1421B *st H105
Non parla del monitor ma con quel prezzo non puoi pretendere. A proposito: e il trasporto? 58 € vers l’Italie.

Allora rispondo subito:
Ma dimmi te! poi però che ne fai? non interessa qualche museo?
adesso diffondo il messaggio, chissà…

Però, dice il Marco:
di ‘sta roba ce n’è a tonnellate, credo che quelli del MUPIN non comperino nulla che non sia a costo meno-di-zero (devi portargleilo là, insomma)

Beh, sì le macchine di oggi sono tutta un’altra cosa, buttate un occhio sul telefono e stupite: ma usavate davvero quella roba lì?
Per cui:
Prima o poi al MUPIN devo farci un salto.

Cui segue la risposta:
anch’io, devo dargli qualche tonnellata di roba, che non so dove mettere. C’è anche qualche bel pezzo, ma o lavoro, o gioco… non ho tempo di guardarci. Ho i primi portatili Compaq, un vero, completo, originale PC portatile IBM (8088,640k, due floppy LCD illeggibile), una (due) HP 9821A…

logo-hp
Un po’ di link, prima quelli per ambientarsi, l’Apollo series 400 nel museo di HP e la pagina della Wiki che dice tutto l’essenziale senza esagerare. Ma se volete la faccio più lunga, per esempio il mitico Bill Poduska, sì quello di Pr1me, ma dopo ha fatto altre cose anche più sostanziose; ed è tuttora pimpante, anzi probabilmente sono rimasto il solo a usare quel nick, dovrei adeguarmi e dire John William (Sr.).

logo-mupin
Il MuPIn, Museo Piemontese dell’informatica. Scoperto che c’è attraverso Marco ma di cui so ancora poco. Anzi niente (nada, zilch). Uh! è ancora in allestimento,

Il Museo non è ancora aperto al pubblico.
Venite a trovarci dalle: 21:00 alle 23:20
presso la sede dell’associazione
tutti i martedì sera (su prenotazione)

E –pensa te– vicinissimo, a Moncalieri in strada Carignano

strada
chissà quante volte ci sono passato davanti, da andarci assolutamente.
😀

RPN = notazione postfissa

m0Vinnie non è del tutto convinto dell’utilità della notazione polacca inversa, quella di solito indicata con RNP per reverse polish notation.
Si chiama polacca per via di chi l’ha proposta, provo a scrviere il suo nome, anzi per sicurezza copioncollo dalla Wiki, ecco –provo nèh!– Jan Łukasiewicz. Notata la L tagliata, chi usa Linux con la tastiera italiana riesce a ottenerla con Maiusc + Alt Gr + W, così Ł 😀 Al solito la scorciatoia è mnemonica, almeno per i polacchi, difatti Ł si legge come W, una storia lunga, del ‘700, che confonde anche i polacchi (mi è stato detto, nie mówię po polsku, nèh!). Ma la Ł è solo l’inizio il nome contiene coniene altre lettere problematiche, almeno per me. OK, sono andato fuori tema 🙄

Pensavo di dover scrivere io, anzi avevo cominciato con:

quando introduci un numero questo viene inserito in cima allo stack, quando inserisci un operatore questo esegue l’operazione recuperando il numero adatto di numeri in cima allo stack.

OK, la prima bozza, da correggere pesantemente, da riscrivere. Con uno o più esempi.
Poi però sono tornato in me e mi son chiesto perché non provare a googlare?
Ecco, un’idea vincente, ho trovato tutto quello che cercavo, scritta molto meglio di come avrei potuto fare io. Per cui prima di qualche rimembranza a cose dello scorso millennio (roba anni ’70) ecco un elenco di risorse:

  • RPN, in The Museum of HP Calculators. Semplice e chiaro; su HP tornerò a breve. Importante la prima parte “What is RPN?” e “Why Did/Does HP Use RPN?”; si potrebbe sostituire “HP” con “Juhan et al.” ma va beeene anche così.
  • interactive online RPN calculator, molto semplice ma ottimo per provare.
  • sullo stesso sito abbiamo nuovamente la spiegazione “What is Reverse Polish Notation?” più semplice di quella di HP.
  • e ancora, Infix to Postfix Convertor.
  • una calcolatrice RPN online, bella con visualizzazione dello stack: RPN Online Calculator, conviene usare i pulsanti, non la tastiera. Notare come la pagina intercetti tutti i tasti battuti, sembra che la tastiera non funzioni o che il browser sia in errore.
  • altra calcolatrice, versione semplice: RPN Calculator, nella stessa pagina c’è il link a lla nuova calcolatrice più potente, non RPN.
  • altra calcolatrice online, tutte le funzioni che uno s’immagina: JavaScript RPN Calculator.

Perché RPN? perché è molto più semplice, davvero. Io per dire, anche se non sono certo più sveglio della media ho capito tutto al volo (OK, a volte faccio come i preti, i politici, i venditori di auto usate; ma solo un pochino, quasi trascurabile). Ci sarebbe anche da raccontare che allora (cioè sempre quando ero giovane e quando i computer come li conosciamo oggi non esistevano ancora) HP era quasi come Apple oggi per gli Apple-fanboy. Non ricordo quale fosse la prima ma ecco il mito, l’11C:

11c

Costava parecchio sulle 120mila lire di allora ma è durata tantissimo. Un investimento azzeccatissimo. È anche stata l’ultima che ho usato. Non so se oggi hanno ancora senso, e se si usano come sono. Dal catalogo HP vedo che la HP 35s, RPN vale 70 €.

Molto economiche quelle più semplici (algebriche): HP 300s+ e HP 10s+.

In informatica la notazione RPN si trova spesso dove non te lo aspetti. Torno ai ricordi e cito il Forth, efficientissimo sulle piccolissime (come memoria) macchine di allora, anche se non semplicissimo: ha vinto il Basic.
Usatissimo, il Postscript, RPN a insaputa dei più.

Ma –come dire– da aspirante lisper mi viene da pensare che ecco.
:mrgreen:

Minix e dintorni

m-r-2Non so se a qualcuno interessa la storia dei ‘puters, io l’adoro. E ieri qualcuno twitta di questo post: Lessons Learned from 30 Years of MINIX.

Lunga lezione del prof Andrew Tanenbaum che racconta di quello che prima di essere un lavoro era una passione, uno dei suoi hobby nei ritagli di tempo. Anche se era una cosa utile: ricordo perfettamente che me ne parlavano i miei amici ancora studenti (quel genere di studenti che trovano il tempo anche per lavorare come manovali informatici invece di farla finita con la scuola (ma se pensano solo a studiare corrono il rischio di non uscirne più, almeno a quei tempi capitava). Io ero troppo vecchio e poi Unix (e altri OS) li avevo sulle macchine che usavo; Minix andava bene solo per scopi educativi, lo dice anche Tanenbaum.

tanenbaumIl prof riconosce tutti i meriti di tutti, correttissimo. Non ricordo dove ma Linus Torvalds (ha un carattere, come dire, a volte) da qualche parte non è stato così pacato. Ma sì, anche lui riconosce che senza Minix non avremmo avuto Linux. Il quale Linux mi ha fatto tornare a Unix che avevo abbandonato per il DOS (orrore!) e poi Windows (altro orrore!). Ora questo periodo micro$oftico è superato, raramente interagisco con quella roba; quasi mai, mi sto dimenticando quasi tutto. A dire il vero al posto di Linux ci potrebbe essere anche di meglio, GNU/Hurd, i vari sapori del Lisp. Vi ho già raccontato del figlio di un mio ex-collega che è seriamente coinvolto con quello che doveva diventare il successore di Unix secondo BellLabs?

Il prof Andrew Stuart “Andy” Tanenbaum (sometimes referred to by the handle ast) ormai è emerito, ha otto anni più di me, ma continua a raccomandarci Minix, bravo, rockz! 😀

t-tChissà se Minix viene usato, se avrà un futuro, come quello di Linux?
Che poi anche Linux, la lion share è quella di quelli con le finestre, ultimamente una sola e pure sghemba, davvero un lavoro fatto male, non a regola d’arte. Oppure quelli con la mela morsicata.
Ma tanto cambia tutto con i telefoni. E cambierà ancora, da scommetterci (se del caso posso citare Bohr).


Come dicevo adoro la storia, sempre via Twitter ecco un vecchio post: The Secret Origin of Windows.

Quando l’ho letto ho pensato che sarebbe stato divertente sentire qualcuno dei miei vecchi colleghi su cosa ricordano di come avevano vissuto il passaggio a Windows. Non ho avuto successo, anzi. Intanto la prima versione di Windows è la 3.0, subito seguita dalla 3.1 (i DLL se ricordo bene) e –soprattutto– dalla 3.11 (for Workgroup, la rete).

Una delle risposte –la migliore in assoluto– che ho ricevute è stata: “bei tempi quelli, il VAX, il VMS…”.
Beh, no, io non la penso così ma quelli seri allora erano quelli di Digital (DEC).

pr1me

Vi ho mai parlato del ‘puter di allora più bello di tutti?
No, aspetta, ancora meglio: adesso vi conto tutto del Lisp, parto da qui 😉

Il sabato sera si divertono così; e poi un ricordo con nostalgia

1500x500Twitter è il mio social-coso preferito. Per via che non trovo troppi post di quelli che ti fanno venire il TL;DR. Ma anche per altri motivi; per dirne uno trovi un sacco di gente interessante, nerds a cui vorrei assomigliare.
E da cosa nasce cosa per esempio un retweet di un cinguettio vecchio di mesi ha scatenato una discussione che purtroppo credo sia ormai persa in parte –è il destino dei classici, per esempio non disponiamo piu di tutti i manuali di Pitagora, Platone e Archimede. E tanti altri. E, a saperlo, sarebbe stato bene fornire risme scontate a Pierre de Fermat.

Comunque in questa domenica pomeriggio (OK, poi lo posto domani ma lo scrivo adesso) è ancora divertentissimo.
Notare che me l’ha segnalato un lisper (ce ne sono diversi) e entra in gioco anche Brendan: Turrible, turrible trolls these days 😛

Pare che tutto sia nato qui: 20 years ago today a programmer working for AOL…
Metti che ti mandano su un’isola deserta e puoi portare con te un solo tweet (potrebbe capitare, non è tanto probabile ma c’è la legge dei grandi numeri, quella che fa vincere qualcun altro alla lotteria) io sceglierei questo di phryk.

Anche perché da ragione a quanto diceva Umberto Eco. Ecco non condivido l’opinione di Eco riguardo Internet ma mi mancherà.
E poi, sì, Internet non è come sembra. Anzi.

eco-dams
Bologna, 3 marzo 1977. Umberto Eco partecipa a un’assemblea al Dams occupato. Preso da qui, copyright Enrico Scuro.

apoÈ stato il tormentone di questa notte: mi ricordo di quella volta che la prof ci aveva parlato della pubblicazione (finalmente!) in italiano di La svastica sul sole (1965, avevo 13 anni); per Eco è stato il prof di mate che aveva Apocalittici e integrati (1964) in tasca, o in borsa, e l’ha tirato fuori nell’intervallo; non ricordo l’anno ma questa volta ero più grande, comprato e letto subito.