Category Archives: Ok panico!

Il mio 2016

ho
Per il blog il mio 2016 è stato vario e abbondante, come il rancio (questa i ggiovani non la capiscono, che se la facciano spiegare dai seniors) anche se non sempre ottimo. Ma ce l’ho messa tutta.

Continua la luna di miele con i Lisps, specialmente Racket. Ma deve cedere il passo a cose più urgenti –sono sempre in ritardo– e anche il SICP andrà per le lunghe. A proposito soffro di una constatazione di inferiorità: il mio codice è sempre più pasticciato degli über-nerds che sbircio e finisco sempre per postare le loro soluzioni per gli esercizi 😳

Rust è un limnguaggio che promette bene, un mio amico –ex collega– ha cominciato a usarlo anche se dice che non è ancora maturo; e purtroppo non posta (e non ho il coraggio per fare la spia è grosso così, anzi di più). Lo stesso vale per Go, anzi quello si usa, anche se io l’ho trascurato.

Ho trascurato tutto il lato Web, tools html vari, CSS, JavaScript &co. Anche se è un settore caldo, si è rifugiato lì anche un mio giovane collaboratore (ormai ex). Ah Java, il linguaggio più usato; che non mi piace.

Ho scoperto un nuovo linguaggio, promettente, Coconut. Gli ho dedicato diversi post ma adesso è messo in stand-by, per le sue particolarità.
Produce codice Python (sia 2- che 3.x) del quale amplia e semplifica mirabilmente la sintassi. Però 1) è diverso da Python, un nuovo linguaggio da assimilare e 2) il file .py che produce è complesso, non editabile dagli umani. Per cui potrebbe servire per produrre packages ma anche questi da considerare aggiornabili solo con Coconut. Chissà se in futuro…

Mi sono dedicato principalmente a un altro, Octave. Octave è il clone free di MatLab, piace molto agli ings. Sono partito per far vedere a un giovane promettente come si fa e poi la cosa è andata avanti per più di 100 post. Nel frattempo gli allievi mi avevano lasciato indietro 😀 Di molto. Il linguaggio fa tante cose, in genere quel che serve è un sub-set, com’è stato nel nostro caso. Bello poi che si possa usare interattivamente o in modo misto all’interno del suo ambiente. Il suo parente proprietario MatLab, mi dicono che è molto più bello ma costa caro. Per fortuna gli script di MatLab sono utilizzabili, quasi completamente senza modifiche, almeno per cose non ultra-specialistiche.

Con le stesse persone ho collaborato (ma dal blog si vede poco) alla riscrittura di utilities Fortran in linguaggi più attuali, principalmente Python. Il Fortran non lo conosce più nessuno e poi il codice vecchio (anche quello scritto da me) oggi non sarebbe accettabile, nemmeno da principianti. Come esempio posso citare poemi per il trattamento delle matrici, roba per le quali Octave ha le funzioni pronte, e anche più sicure.

Superati anche gli script che avevo scritto con Gnuplot anni fa per grafici, principalmente diagrammi. Sostituiti anche questi da Octave. E pensare che sono la stessa cosa con una sintassi diversa per chiamare le stesse API.

Poi ci sono le varie ed eventuali, per esempio gli esercizi con bash, awk, sed e tools vari di sistema.
Però c’è qui una nota tutt’altro che positiva, anzi due: tanti continuano a usare Windows (10 ma anche 7 (e 8)) e tanti lavorano per il Web, con un occhio di riguardo al mobile. Io invece sono Linux e vecchio. E come Knuth non ha la mail io non ho il telefono 😦

Inoltre i blog stanno morendo (cit. ormai storica), le visite sono diminuite 2014: 71000, 2015: 62000, 2016: 57000), pochissimi i commenti. Ma insisto, è il mio passatempo preferito. Per adesso SICP con Racket, un po’ di Python (ci sarebbe NumPy da affrontare) e forse –più avanti– un linguaggio funzionale.

2016

Il 2017? Chissà… :mrgreen:

Buone beste – tanti auguri!!!

spaghettivity
questo post partecipa all’indagine sul mysteryousassay errore che non lascia salvare la bozza — chissà… :mrgreen:

Emoji come se piovesse; basta chiedere

sg2

OK, non so se serve –anzi mooolto probabilmente no: ❎  ❌  🚫  ◼  🙅  ⏰  🅱, nope: 🙅  ✋  🚫  👐  ❌  😂  👋.

Ma l’idea c’è e poi mi serve per provare il nuovo editor di WordPress. Nuovo si fa per dire, è nuovo per me che sono rimasto ancora al vecchio.

Allora il programma eseguibile da terminale è emoj, dovuto a sindresorhus, che è anche una tweetstar 🔝
Trovate tutto qui; l’unica avvertenza è che se dovete installare (come me) npm dovete farlo come root, quindi con sudo, nèh!

Poi funziona, p.es.:

ej

Siccome sto provando l’editor aggiungo uno script, senza senso, solo per vedere come viene.

#!/bin/bash
if [ $# -eq 0 ]; then
    echo Ciao $USER!
else
    echo Ciao $1!
fi

Funziona? l’editor intendo 🙅

:mrgreen:

Javascript – Strumenti di lavoro

Anzitutto una piccola parentesi per quei pochissimi che non hanno mai provato ad eseguire javascript. Gli strumenti minimi necessari sono un browser ed un editor di testi. Personalemente uso un paio di browser come eredità dei tempi andati quando i due browser maggiori (Internet Explorer e Firefox) si guardavano in cagnesco e quando meno te lo aspettavi un codice perfetto su uno dei due, inaspettatemente, sull’altro aveva effetti fantasiosi. Ora i due non possono più chiamarsi “maggiori” perché superati dall’ultimo arrivato Chrome di Google e, per fortuna, sembra che hanno messo fine alle ostilità allineandosi quasi perfettamente allo standard della W3C, rendendo inutili i vecchi script per il riconoscimento del browser.

Qual è il migliore editor di testi? Ovvio, quello che conoscete meglio. Io uso Textpad da troppi anni e la voglia di imparare nuove cose si è molto affievolita. Un editor molto diffuso ed apprezzato e gratuito, cosa che non guasta mai, è Notepad++.

Un accenno a Brackets, un editor open source per diversi linguaggi (HTML, CSS e JavaScript) su cui l’Adobe sta lavorando e dalle caratteristiche interessanti (completamento automatico del codice HTML e CSS, suggerimenti e chi più ne ha più ne metta). Io l’ho provato prima con un js estremamente grosso (più di 50000 righe di codice) e Brackets non riesce a portare a termine il caricamento. Poi ho provato js più accettabili e al termine del caricamento vengono segnalati errori incomprensibili; segno di un’immaturità del programma. Vedremo in futuro se manterrà le promesse.

Accanto agli editor tradizionali vi sono anche ambienti di sviluppo integrati, come Eclipse e Visual Studio che, con un apposito plugin, permettono di gestire javascript. Entrambi sono gratuiti.

Con il normale editor di testi bisogna, anzitutto, scrivere uno scheletro di pagina HTML:

<!DOCTYPE html>
<html>
<head>
<head>
<body>
< script>

// qui va messo il codice javascript

</script>
</body>
</html>

(Nota: è stato aggiunto uno spazio dopo il segno di minore e prima di script solo per motivi “tipografici”, altrimenti WordPress avrebbe cancellato tutto il tag)
Il codice precedente è perfetto per l’HTML5. Con l’HTML4 la prima riga era un mezzo papier e anche nel tag script bisognava specificare il tipo di script (type=”text/javascript”), che ora non è obbligatorio, o anche, nelle versioni più vecchie, il linguaggio (language=”JavaScript”, attualmente obsoleto). Il linguaggio poteva essere diverso, forse nelle speranze di coloro che hanno ideato l’html. In questo momento probabilmente il javascript è diventato il linguaggio “per eccellenza”, indispensabile se si vuole fare pagine web non troppo banali.

Per la mia pigrizia, poiché non voglio passare la vita a scrivere cose inutili, utilizzo anche Dreamweaver, che è un editor HTML per Windows e per Apple. Infatti tutta quella roba là sopra viene scritta automaticamente appena si crea la pagina web. Poi, per eseguire il codice, si preme il tasto F12 con cui viene richiamato il browser di default.

In mancanaza di Dreamweaver (che costa un pacco di soldi) o di altro strumento ci arrangiamo come possiamo. Scriviamo quindi il primo facilissimo script (Kernighan & Ritchie insegnano):

alert(“Hello world!”);

 

e lo mettiamo là, al posto dei puntini, all’interno del tag script:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
< script>
alert(“Hello world”);
</script>
</body>
</html>

Poi salviamo il tutto con il nome, ad esempio, Hello.htm (o quello che vi pare, basta che il nome del file abbia estensione HTM o HTML). Magari cerchiamo di salvare il file in una certella facilmente raggiungibile, così non ci dobbiamo rovinare la giornata per ritrovare dove abbiamo salvato il nostro lavoro. Anche il desktop va bene (provvisoriamente, perché è proprio brutto vedere il desktop pieno di tutte quelle icone, di solito inutili, che non sappiamo nemmeno da dove scappano fuori). Infine clicchiamo due volte sull’icona di Hello.htm e… voilà… ecco apparire una finestrella (popup modale) con scritto l’ormai usuale saluto.

Non succede niente? Evidentemente si è verificato un qualche errore di battitura.
Già, ma quale? Dobbiamo fare una ricerca da certosini, misurare la lunghezza della virgola per essere sicuri di non averla confusa col punto? Per fortuna i browser hanno i loro bravi strumenti di debugger. In particolare la Console. Con Firefox si apre il menù Strumenti -> Sviluppo web -> Console web e troveremo l’indicazione della prima istruzione che il browser non riesce ad interpretare. Con Internet Explorer si accede alla Console con premendo il tasto F12. Anche con Chrome si può accedere alla Console tramite menù (More Tools -> Javascript Console). A questo punto dobbiamo solo correggere il sorgente e riprovare.

Maurizio.

Sei, compleanno OKp

OKp6Sembra ieri, tutto è cominciato da qui: Il perché di un nome.
Anzi no, ne è passato di tempo, sono cambiate tante cose, altre cambieranno ancora, sapete l’evoluzione, che non è detto vada sempre nella giusta direzione (notata la rima?).
Per esempio niente più (o molto meno) dei linguaggi visti nel passato, ma ce ne sono di nuovi in lista d’attesa. Poi io mi sono re-innamorato del Lisp, adesso uso una delle ultime (OK, penultime) varianti Racket (cioè Scheme). E c’è SICP 😀
Ma i post più visti sono, da sempre, quelli della rassegna domenicale visto nel Web; sono anche i più facili da compilare, mi basta riportare titolo e URL di (quasi) tutto quello che leggo 😀

Da sempre si sente dire che i blog stanno morendo, vero per qualcuno che seguivo e amavo, ma Ok, panico per adesso ne sembra immune. Per fortuna perché altrimenti non saprei cosa fare tutto il giorno 😀
Qui potrei aggiungere pettegolezzi su che linguaggio usano i miei amici, sul fatto che a volte mi coinvolgono (anche con –orrore– Java). La tendenza è specializzarsi, un solo linguaggio (Python o Java o Matlab); l’aggiunta di un secondo solo in casi particolari. Ma c’è anche il foglio di calcolo, tipo Excel (anche se non sembra roba complicatissima).
E poi il Web per dispositivi mobili, CSS, JavaScript in tutte le sue varianti (più numerose di quelle del Lisp) e peggio ancora. Ecco il mobile (non ho il telefono) è quello per cui mi rendo conto che sono superato, proprio come dice John.

OKp6-2
Ma oggi è festa, tanti auguri a Ok, panico!

For he’s a jolly good fellow, for he’s a jolly good fellow
For han er en af vor egne (pause), en rigtig guttermand
Buvons à sa santé, Buvons à sa santé
Perché è un bravo ragazzo, perché è un bravo ragazzo
Ele é um bom companheiro (pause), ninguém pode negar!

Porque es un chico excelente, porque es un chico excelente
I nitko to nemre poreč’ i nitko to nemre poreč’.

Uhmmm… forse ho fatto un po’ di confusione 😳

Diversificare, non solo Rust

Robitex mi ha dato un’ottima dritta quando mi ha detto “considera Rust, rockz!“. In parte lo sospettavo (da tempo) ma l’avevo messo tra i linguaggi promettenti ma troppo giovani, da aspettare che maturino e se poi mantengono le promesse …
La stessa cosa era capitata con Go e prima ancora con Python e prima ancora con Lua. Con questi ultimi due a dirla tutta li ho conosciuti perché “c’è da continuare questa cosa, è scritta in Python|Lua, roba nuova di pakka, semplice, moderna [up-to-date], sexy”. Lo era davvero e con Python con ho più smesso, anzi sono un evangelista nel mio piccolo contro le eresie di Basic e C#. Lua da noi si usa molto meno, ha alcune cose notevoli, purtroppo non si può fare tutto quello che si vorrebbe.
Recentemente amici ex colleghi mi hanno detto che Rust probabilmente non lo userò mai per davvero. Forse hanno ragione. Anche perché sono vecchio.
Questi miei contatti usano Java per le cose importanti (è più semplice che farle con il C++, dicono) e HTML con vagonate di JavaScript (e CSS e –chissà se si può dire?– PHP). Io –sono vecchio– da quel settore mi chiamo fuori, niente mobile, non ho nemmeno il telefono, se Knuth può fare a meno della mail io posso sopravvivere senza smartphone.
C’è anche ci usa cose molto particolare, tipo Matlab, non free, anzi molto oneroso, c’è chi usa codice proprietario (Delphi, Visual Studio in vari sapori), c’è chi fa tutto con il foglio di calcolo (tipo Excel), roba che non fa parte dei miei interessi.

Anzi –notizia da à la une come dicono i cugini– recentemente sto tornando sempre più al terminale, come quando ho iniziato (allora c’era solo quello). Proprio oggi una meraviglia:
meteoVista su Twitter. Uh! c’è chi abbandona Twitter 😦 cosa succede 🙄

Sento la nostalgia di Racket, l’ho un po’ abbandonato perché trafficando con Rust e Python poi fatico a ritornare a pensare in termini funzionali, lo so che è una cattiva abitudine mia ma devo rassegnarmi.
Però forse trovo il modo per affrontare davvero per bene il SICPme lo sono detto tante volte, chissà se questa è la volta che per davvero il proposito diventa realtà 😉

Ovviamente anche questo senza l’assillo di usarlo poi. Ma chissà, prendi Go, il mio ex-capo A.F. dopo mesi di “uh, uhmmm…” l’ha adottato (e mi dice di buttare Rust e tornare a cose serie, p.es. Go) 😀

:mrgreen:

Aggiornamento per Visto nel Web

mms0I post di gran lunga più popolari del blog sono quelli della telenovela “Visto nel Web“.
Sono anche facili da compilare, ci metto dentro quasi tutto quello che vedo, spesso non leggendo con l’attenzione che sarebbe necessaria (vale a dire “lo faccio poi”, cioè “mai”). E pensare che a volte non basta leggere, bisogna studiare, provare, rifare… OK, manca il tempo.
Recentemente Nicola Losito, kOoLiNuS, commenta:

ma ci vuole un mese per leggere tutte le risorse linkate

e

[una] maggiore “classificazione” dei link sarebbe più comoda per noi che leggiamo

Ha ragione. Allora, anche se attualmente questi post vengono compilati quasi automaticamente credo sia doveroso aggiungere le categorie.

Quello a cui sto pensando è di ottenere (con un minimo incremento di lavoro da parte mia) qualcosa come:

C++11 threads, affinity and hyperthreading
#:linguaggi
::: Eli Bendersky

ReactOS, il ritorno di Windows Xp, o forse no…
#:sistemi operativi
::: Socialandtech

Silicon Valley braces itself for a fall: ‘There’ll be a lot of blood’
#:economia
::: the Guardian

Si tratta in altri termini di introdurre gli hashtags. Siccome cito spesso Twitter adotto una sintassi mia, #: invece del semplice #.
Non dovrebbe essere troppo difficile, anzi basta costruire un dizionario per lo script Python che legge il file delle categorie così formato:

#:bug : bug
#:eco : economia
#:ditte : ditte
#:fro : frodi
#:func : programmazione funzionale
#:fut : previsioni per il futuro
#:gos : gossip, pettegolezzi
#:hard : hardware
#:inno : innoazioni
#:intn : internet
#:lang : linguaggi di programmazione
#:lisp : lisp e derivati
#:news : novità
#os : sistemi operativi
#:sic : sicurezza
#:spam : spam
#:spy : spionaggio
#:web : web

e inserisce le stringhe richieste nel file html.
Il lavoro principale è creare questa lista, benvenuti i suggerimenti; ogni voce potrà averne zero o più.
Tutto questo è fin d’ora messo tra le cose da fare, urgenti ma non urgentissimissime. E ho il file categ aperto, da riempire 🙄 😀

:mrgreen:

2016

Buon anno!

gnu
Sarà meglio di quello appena finito, lo sento, forse 😉
Anche perché:

Christiam Huertas

Christiam Huertas

E poi –pensa te!– forse riparte una cosa ferma dal 2008, prima ancora del blog 😀 chissà se ci sarà da parlarne anche qui.
Ho visto nei bilanci di fine-anno che blog che seguo e ammiro sono spesso più piccoli di questo. Ma quel che conta è la qualità dei contenuti (che devo migliorare). Un grosso handicap è la lingua, ragazzi studiate l’inglese! (cit.?).

Conto di continuare con l’evoluzione del Lisp, i lispers sono affascinanti, per esempio i propositi per l’anno nuovo di Rainer 😀

I racketeers sono attivi come al solito: uno e due.

Ma c’è anche altro, per esempio:

jdc
Sì, copiato. Qui.

:mrgreen:

Considerazioni sul blog

agg

Ci sono un po’ di cose che devo dire anche se sono cose difficili, almeno per me che non sono tanto bravo a spiegarmi.
Sono pensate mie ma spesso derivanti da quanto mi viene detto, a volte nei commenti, più spesso in privato o da altre parti.
Queste note le sto scrivendo a pezzettini, un po’ per volta. Poi correggo, scancello (e le dimensioni del file diminuiscono invece che crescere). Chissà come diventerà alla fine, quando (e se) sarà postato.

Intanto comincio con the lion share (come si dice dalle mie parti): la telenovela domenicale “Visto nel Web“.
Quelli sono i post più seguiti, di gran lunga. E continuano a essere visitati il lunedì e il martedì.
Ma non è che mi soddisfino, anzi mi piacciono molto poco, per una serie di motivi:

  • riporto un po’ tutto quello che potrebbe essere interessante, ma senza approfondire;
  • riporto anche cose che mi vengono suggerite, anche non legate ai miei interessi;
  • i miei interessi sono particolari er almeno due motivi: 1. sono vecchio; e 2. ultimamente sono alle prese con lo studio di Racket (giunto via Lisp); cosa che (giustamente) non interessa nessuno (tranne me).

C’è poi un ulteriore motivo di insoddisfazione, legato anche a quanto dirò successivamente. Se le notizie non vengono consumate subito cadono nel dimenticatoio, esattamente come i tweets e quanto detto nei vari social-cosi. Mi è capitato di cercare roba che sapevo di aver segnalato e trovarla (non sempre) solo con tempo e dopo parecchi tentativi.
Sto pensando di mettere (uno o più) tag a ogni segnalazione, presto proverò (uhmmm –nota per me– è vecchia!) — No, aspetta altra idea da lavorarci su 😉

Inoltre certi post meriterebbero un approfondimento, valutarli, provare quello che dicono, smontarli per vedere come sono fatti dentro. Per esempio quando cito il manuale di un linguaggio di programmazione bisognerebbe provare sia il linguaggio che il manuale. Ma l’operazione richiederebbe parecchio tempo  e energie, cosa che non ho. Che fare? non segnalare niente? o cosa?

Io sono vecchio, non più coinvolto nel mondo del lavoro (se non marginalmente e per cose prive d’interesse) e privo di curiosità per vaste aree giudicate sexy, come il mobile, il web, il C++ (di questo dopo).
Sono anche fuori dal mondo Windows. Quasi. Anzi no, in realtà sono in contatto con diversi windowsiani. Anzi, tra chi frequento Linux è usato pochissimo, quasi niente o in misura trascurabile. Anche il Mac è quasi sconosciuto, qualche ricco lo usa per scrivere documenti, la versione moderna della macchina per scrivere (allora era Olivetti, meccanica, ma sto parlando di 30-40 anni fa). Mentre per il pacchetto Office ormai si trova spesso LibreOffice (documenti salvati in vario modo, anche in funzione dell’ambiente) per parecchie cose si è invece strettamente legati a soluzione proprietarie (p.es. per il CAD, principalmente AutoCAD ma non è l’unico). Anche per la programmazione c’è una via diversa dal mondo Linux. C’è chi usa VisualStudio (anche C# di cui si parla poco e io non ne parlo mai), chi Delphi (ne conosco un paio di quelli bravi, non mi hanno mai detto perché di quella scelta) e poi c’è MatLab usatissimo in certi settori. Di questo esiste un clone free, Octave, ma si dice non all’altezza dell’originale. MatLab è parecchio costoso e i suoi utenti considerano segreto tutto quello che si fa con esso (per cui risulta difficile verificare la compatibilità con Octave cui accennavo).
Non so se è colpa mia ma Python non è –in genere– apprezzato. Gli si preferiscono alternative, molto quotato Java.
Tempo fa ho pasticciato adattando software antico scritto in Fortran ma non credo si usi ancora, nessuno più che lo conosce. In quei casi avevo usato GnuPlot per visualizzare diagrammi e grafici, altro prodotto che piace poco (è un altro linguaggio da imparare).

Il mio interesse per Racket viene in cascata all’idea di approfondire il Lisp (Common Lisp) che avevo visto anticamente ma mai in modo serio. Bello, completamente diverso da quello che si usa correntemente (viviamo in un mondo dominato dai discendenti del C). Con il Lisp ho conosciuto gente molto interessante, Peter Seibel e Rainer Joswig tanto per fare un paio di nomi. È però difficile, grosso e non aggiornato. Qualcuno mi ha parlato di Racket (forse partendo da Scheme, purtroppo non ricordo chi) ed è stato amore a prima vista.
Ecco, di Racket prendo appunti e pubblico un post quasi quotidianamente; copio. Ogni tanto faccio esercizi miei ripassando ma non li metto mai in bella, rimandando a quando non sarò più così niubbo. Uno di questi esercizi pubblicato recentemente ha scatenato commenti con soluzioni migliori della mia; ho detto che ci sarebbe stato un seguito, chissà…
Dalle statistiche del blog risulta che i post più visti, oltre a quelli di Cisto nel Web sono quelli sul C++. Peccato (per me) perché ho smesso di occuparmene da parecchio tempo. E poi ci sono già tante risorse online. E poi è usabile anche per cose piccole? O non sarebbe meglio usare Python, Ruby, Lua e simili, script facilmente modificabili al volo?

Ci sono anche nuovi linguaggi che –mi dicono– promettono bene: Go, Rust e Nim (già Nimrod). Dei primi due conosco chi li usa e ne parla bene.
Poi ci sono i linguaggi funzionali: Clojure evoluzione del Lisp che usa la Java Virtual Machine, Haskell diverso e matematico e tutta una sfilza (di francesi), tra i quali OCaml. Manca il tempo. E poi con Python si hanno tutte le librerie che uno s’immagina e altre ancora.

Devo fare qualcosa, mica posso restare con la rassegna settimanale e Racket. E cominciare a fare qualcosa di mio anche con Racket. prossimamente, forse :mrgreen: