Book review: Category Theory for Programmers

This is a case where the title is honest and almost summarise the content of the book. Category theory is a particular branch of mathematics that you might have used extensively every day without knowing its existence. If you are pretty good in SQL and databases, you already digested the set theory. Likewise, category theory can be applied in many parts of programming and computer science.

Functional programming is one of those and after you conquered the imperative and object-oriented paradigm, you might want to access to this new world.

It's better to have some good fundamentals and this book is all about teaching you category theory using Haskell, pretty illustrations and a very dirigible maths notation. Sometimes concepts are explained with code first and then formalised.

Continua la lettura…

Back again

Truu

Well, I haven't published any new post in a while but I didn't stop learning and reading books. I usually bother my friends in chat by posting links to articles I find interesting, then we chat for few minutes about that specific topic and I miss an opportunity to write what could be a nice blog entry. I won't promise I am going to write every week, but I am sure I will comment articles I find on the internet or even review books.

The blog has been updated to Nikola 8 with a fancy new theme and gorgeous fonts, I still prefer this platform because is very well maintained and have all the feature I might need to post my content.

There are no cookies to accept or even an analytic system to check daily visits. This is a plain, in some kind old style, website. Feel free to send me an email, my cats can't wait.

Un pupetto!

Backup semplici e automatici di spazi ftp con python e wget

In questi giorni ho avuto il compito di creare un piccolo sistema di backup per una serie di siti web caricati su server senza servizio di backup e con il solo accesso ftp per i file. Naturalmente non potevo risolvere eseguendo la copia a mano di ogni singolo sito, è qualcosa che porta via molto tempo ed è noioso, quindi ho realizzato un piccolo script Python che si appoggia a wget per automatizzare il tutto.

Visto che parliamo di backup semplici, non sono coinvolti programmi per registrare le differenze ai file o cose simili. Mi limito solamente a creare una directory per ogni dominio e riversare il contenuto del sito in un file compresso opportunamente nominato secondo la data corrente. Ovviamente non è un approccio molto efficiente ma svolge bene il suo lavoro.

Giusto per non farmi mancare nulla, a fine processo, spedisco una mail con i log per essere informato riguardo eventuali errori.

Continua la lettura…

Diffida da chi utilizza il "blocco note" per programmare

Ricordo quando ero piccino e mi confrontavo con gente che ritenevo più esperta di me (gente che lavorava, non coetanei), a volte sentivo l'espressione uso il blocco note per programmare. Nel sentire quelle parole, avendo in mente le limitazioni del programma, pensavo "è un grande!" perché dopotutto riusciva a cavarsela con strumenti inzuficienti (cit).

Col tempo mi resi conto che no, non si poteva lavorare davvero con una cosa simile, è davvero troppo limitato quel programma. È quasi un insulto ai 35 anni di carriera di emacs e vi, senza parlare di tutte le soluzioni come eclipse e $tuo_editor_preferito.

Leggendo il codice al monitor devi avere qualche tipo di sintassi evidenziata. Devi perché è più facile orientarsi e gettare lo sguardo dove serve, con una lunga riga di testo nero magari perdi anche qualche diottria.

Lavorando con i codici sorgente hai inoltre bisogno di aprire più file contemporaneamente, cosa fai col blocco note? Ti riempi la taskbar di sessioni notepad.exe?

Come ti comporti se devi lavorare con file di grandi dimensioni? Apri Microsoft Word perché blocco note va in crash? Anche se riesci ad aprirlo, come navighi nel testo? Ricordiamo che parliamo di una schermata fitta senza sintassi evidenziata, dove se muovi la scrollbar di un pixel passi avanti di 30 schermate...

Con un editor vero hai delle scorciatoie da tastiera per muoverti avanti e indietro in modo granulare; per riga, parola o paragrafo. Se durante la navigazione trovi un carattere strano non fai altro che selezionare la codifica file corretta, non devi accontentarti.

Preferisco l'ingenuità del ragazzo che installa 4GB di visual studio per fare i compitini, e poi non sa dove mettere mano nei menu, piuttosto dello sborone che va in giro a millantare la sua pseudo-professionalità attraverso l'uso del blocco note.

Non spariamo cazzate, col blocco note non puoi fare nulla che non sia leggere un readme e modificare qualche file di configurazione. Magari alla fine della fiera non lo usi nemmeno il blocco note, è solo che vuoi stupire gli altri. Ma puoi fregare solo quello che è alle prime armi, il professionista ti manda a quel paese.

Diffidate da colui che dice e sopratutto si vanta di usare il blocco note, costui è un incompetente.

La mia sui libri di testo in ibooks

Non mi interesso dei prodotti Apple, ma devo dire la mia su ibooks e della possibilità di comprare anche libri di testo al prezzo massimo di 15$. A quella cifra non ti danno solo qualche versione del PDF del testo, l'idea è quello di arricchire il libro con animazioni, video e quiz interattivi. Questo unito al prezzo molto basso per un libro della categoria rende tutto molto appetibile in apparenza, ma vediamo i pro e i contro per uno studente medio.

Prima barriera: devi avere un ipad. Un ipad costa soldi, tanti soldi anche se di seconda mano. Solitamente per quella cifra uno studente prende un computer portatile più che decente, e non stiamo ad elencarne i vantaggi sopra un tablet.

Continua la lettura…

Appunti sullo scanrip

All’università circolano molte fotocopie tra libri e appunti, c’è molto materiale che viene fotocopiato diverse volte. Non è insolito avere a che fare con fotocopie poco leggibili, anche in grandi volumi, su cui bisogna spendere molte ore di studio.

Come se non bastasse, in facoltà abbiamo una copisteria privata che si occupa di raccogliere tutte le dispense dei professori per poi vendere le copie agli studenti. Invece di affidare a terzi questo volume di materiale, si potrebbe creare una sezione sul sito web dell’università dedicata al download di tale materiale. Invece sei costretto a mobilitarti, recarti in facoltà, prendere il turno per prenotare le fotocopie e attendere che le stampino. In realtà c’è una sorta di sezione download per i corsi, ma quasi nessun professore la utilizza, ma questa è un’altra storia.

Continua la lettura…

Model M e Trackball, l'accoppiata vincente

Quando i miei polsi iniziarono a far male, realizzai che era il momento di rivisitare la mia postura e di controllare l’accoppiata mouse/tastiera. Dopo essermi documentato sulla posizione della sedia e delle braccia davanti al computer, mi sono ritrovato su una pagina che spiegava i difetti del mouse come periferica. Tra questi spiccava lo sforzo e la coordinazione richiesti per il movimento del cursore, è necessario l’uso di gran parte dei tendini del braccio e questo unito alla cattiva postura ed un uso intensivo porta a dolori.

Trovato un capo d’accusa al mio mouse provvedo a documentarmi sulle alternative, scoprendo la varietà di questo settore. Esistono periferiche di ogni tipo e per ogni compito: manopole adatte a chi lavora nel campo 3D, penne per chi disegna, touchpad, stick stravaganti ed infine trackball. Vidi che queste ultime potevano fare al caso mio.

Continua la lettura…

Familiarità con EMACS

Più volte ho avviato EMACS senza volerlo in passato, a causa della associazione di alcuni file di testo nella mia Linux Box. Si presentava con la sua interfaccia cupa e poco amichevole, niente a che vedere con le normali grafiche dei più comuni text editor. Questo programma è nato negli anni 70, mentre alla radio davano i primi successi dei Queen e i computer erano costosissime macchinette per pochi eletti.

EMACS è diviso in due parti, il cuore scritto in C e l'interprete in linguaggio LIPS. In LIPS è costruito tutto il resto del programma, questa è la chiave della sua versatilità. È completamente votato alla completa personalizzazione in ogni suo aspetto; tutto è in funzione di comandi attivabili con la tastiera, ma non tramite shortcut a cui possiamo essere abituati, come CTRL+S, EMACS ha una sua dialettica e un suo modo di impartire ordini. Per salvare un file dovete, ad esempio, premte CTRL+X e dopo CTRL+S. Vi pare inutilmente complicato? Può darsi, ma dopo ci si fa abitudine e potreste anche personalizzare quel comando.

Continua la lettura…

Uno che si chiama Django

Esistono vari metodi per scrivere un sito web dinamico in Python; si va dal classico script CGI all'etensione mod_python per Apache, passando per svariati framework, numerosi ambienti che seguono filosofie differenti tra loro. Uno di questi è Django, sistema che usa il paradigma MVT con idee come quella del DRY.

Questo concetto MVT mi sembrò ridondante a primo impatto; per una persona abituata a scrivere da zero codice PHP e HTML, salvarlo in un unico file e poi vederlo immediatamente eseguito dal web server, tutta questa separazione sembrava una dispersione di tempo e lavoro.

Continua la lettura…

Problemi dei testi didattici

Nei corsi girano per anni, nelle mani degli studenti, testi semplicemente scritti male, che non riportano le soluzioni agli esercizi oppure hanno risultati errati o fuori posto...I professori leggono i libri che consigliano agli alunni? Non hanno dubbi quando vengono sapere che le soluzioni agli esercizi sono errati? Non dubitano sulla qualità del testo? Che problemi hanno questi testi?

Prima di tutto sono scritti malissimo, e non è la mia limitata capacità mentale a causarmi disagi ma il testo redatto malissimo. Quando ho il testo di fronte la prima cosa che cerco di fare è spezzettare i vari paragrafi, usare le sottolineature per evidenziare i concetti più importanti, dividere ed aggiungere titoli secondari al testo. Tutto questo lavoro, questo metodo di affrontare il testo, è atto a catalizzare e organizzare quella massa informa (ed apparentemente senza fine) di caratteri che mi si presenta di fronte. Più il testo è complesso ed articolato, più è richiesto il mio lavoro di intervento. Il migliori testi sono quelli che richiedono al minimo il mio intervento.

Continua la lettura…