10 novembre 2024

Python: API Client con JWT

 Vorrei attaccarmi ad un servizio web che offre una API per fare cose, e conosco un po' di Python.

Le istruzioni dell'API dicono che posso collegarmi in maniera sicura utilizzando JWT e chiavi RSA.

Dove cominciare?

Chiavi crittografiche

scambio di chiavi:
L'articolo in inglese spiega bene con le immagini a colori, meglio dell'articolo italiano che è più orientato alla matematica.

In realtà la API in questione non usa lo scambio DH, ma RSA

generazione coppia di chiavi RSA:

Su Windows un modo semplice e grafico viene fornito dal tool PuttyGen (https://www.putty.org/)

Python

Esempio JWT: 
  • https://github.com/auth0-blog/jwts-in-python
libreria per JWT: pip install pyjwt

Sommando le cose...

 per autenticarsi usiamo
1. credenziali, user+pwd
2. eventualmente una API key, disponibile dal sito, per utenti con credenziali,
3. chiavi RSA.

con questi pezzi, ad ogni richiesta dobbiamo confezionare un JWT da accompagnare alla richiesta, per dimostrare che siamo proprio noi  

Fonti e ulteriori approfondimenti

  • https://auth0.com/blog/how-to-handle-jwt-in-python/

Appunti digitali - Obsidian e Fossil

Condivido un paio di progetti di cui sono venuto a conoscenza recentemente nella mia ricerca di sistemi di pubblicazione di appunti digitali e/o siti statici per la raccolta di informazioni.

Ovviamente, se state leggendo questo blog, sapete che sto usando (2024) Blogger di Google.

In ufficio ho usato, internamente, OneNote di Microsoft, che trovo uno dei migliori programmi mai prodotti da questa azienda. OneNote richiede di installare una App, utilizza un formato proprietario, per un periodo non era disponibile per Mac, e richiede una licenza per poter scrivere.

Ho cercato di sostituire OneNote con BookStackApp, che è gratuito e self-hosted, multilingue, e semplice anche per i meno tecnici. Purtroppo ha un limite sul meccanismo di autenticazione che lo rende un po' inflessibile. La configurazione di Apache con reverse proxy non è banale.

Da quasi dieci anni, per un progetto di pubblicazione di libri digitali, (un sito statico, molto statico :-)) utilizzo GitHub Pages + Jekyll, che è robusto, personalizzabile e abbastanza semplice da gestire, anche se non mi sono mai addentrato nel basso livello tecnico.

Obsidian

Un collega mi ha mostrato la sua tecnica per prendere appunti dei corsi di ingegneria, utilizzando Obsidian + plugin per LaTeX. La sua dimostrazione mi ha lasciato a bocca aperta: vedere serie di Fourier, matrici, integrali, vettori e formule matematiche scritte in frazioni di secondo usando markdown + scorciatoie da tastiera è stato impressionante. Il prodotto finale, esportato in PDF, era degno di un libro di testo.

Obsidian offre l'opzione di pubblicare un proprio sito di appunti a 8 €/mese sui loro sistemi, criptato. Niente male, sarà una delle opzioni che prenderò in considerazione, vista la quantità di plugin e stili grafici disponibili.

Fossil

Altra opzione, proposta da LeonardVanDerbilt su Reddit, è Fossil, un sistema di gestione della configurazione di sistema, che comprende un wiki, oltre a sistemi di versionamento, gestione progetto, e molto altro. Da provare!

26 ottobre 2024

Imposta sul reddito: semplice o equa?

Tasse semplici 

Le tasse, secondo il filosofo ed economista Adam Smith, devono essere semplici, efficaci e soprattutto produrre un entrata che sia maggiore dei costi per la riscossione.

E' con questo spirito che nell'anno 1974 in Italia è stata abolita la tassa sul cane. Veniva pagata su iniziativa del proprietario, la pagavano in pochi, era impopolare e ritenuta iniqua, ma soprattutto i costi di registrazione, riscossione e di applicazione superavano di gran lunga le entrate.

E' con questo spirito che la tassa sulla televisione è entrata nelle bollette della corrente elettrica. Per avere la televisione ci vuole un impianto elettrico. Se hai una casa con impianto elettrico, in 99%  dei casi avrai anche una televisione, e quindi ti faccio pagare. 



Le tasse semplici sono quelle ritenute in maniera più o meno automatica alla fonte, come l'IVA e la tassa sullo stipendio del dipendente (IRPEF). Le tasse sui profitti aziendali sono più difficili da calcolare, riscuotere e tracciare.

Tasse eque

Il problema con questo metodo è che la percezione del tassatore è assai diversa dal sentimento del soggetto tassato. Come è naturale comprendere e evidente a tutti, il ricavo è ben diverso dal guadagno. Se la mia azienda ha venduto per 1 milione, ma ne ho spesi 900.000, lo stato non mi deve chiedere conto del milione, ma dei 100.000 che mi sono rimasti a fine esercizio.

Lo stesso principio vale per le entrate del singolo. Se guadagno 100 K all'anno, ma per mantenere il mio stile di vita ne spendo 90.000, mi si storce il naso a pensare che lo stato mi tassa sui 100 K. 

Per questo motivo è stato introdotto il concetto di 'detrazione' e 'deduzione'.

E' qui che casca l'asino.

Infatti, se per detrarre e dedurre, devo spendere decine di ore del mio anno fiscale, e fare conti complicatissimi, che coinvolgono franchigie (soglia minima non deducibile), tetti (soglia massima oltre il quale non deducibile) e percentuali, e dimostrare in più modi la spesa effettiva, e dimostrare che l'ho fatta per un motivo che le regole accettano come giustificato, e in cambio avere una deduzione percentualmente bassa rispetto all'esborso, allora la tassa non è più né semplice, né efficace.

Sento dire: "mi conveniva pagare in nero", o "è più il tempo perso, che il ricavo".

Quando lo Stato ogni anno cambia le regole, ti impone l'onere della correttezza e attribuisce l'intenzionalità nell'errore, e per ogni errore ti penalizza in maniera sproporzionata, il sentimento comune è che c'è avversità,  astio e tracotanza da parte dello Stato verso il contribuente. In questi anni, a testimonianza di questo disagio, hanno avuto luogo diversi episodi di espressione di malcontento dei commercialisti, oberati da normativa in continuo cambiamento, regole poco chiare, e la sensazione di trovarsi tra l'incudine e il martello dell'Agenzia delle Entrate e del contribuente (giustamente) esasperato.

Tasse semplici ed eque

Se lo Stato ha una politica economica di stampo consumista, e misura il successo economico con il PIL, ogni transazione già tassata (ad esempio tramite l'IVA) e versata ad un soggetto nazionale dovrebbe essere automaticamente deducibile

Più spendo, più gira l'economia e aumenta il PIL e più lo stato è contento e ricava tasse. 

A maggior ragione, se le mie spese sono 'obbligate', tipo mutuo, affitto, assicurazione, spese scolastiche, manutenzione della casa, viaggio per lavoro, spese bancarie, medicinali, ecc. ecc. Queste spese dovrebbero essere dedotte automaticamente, al 100% e senza impegno del contribuente.

Non sarei felice di essere tassato sui miei ricavi, i mei risparmi, quello che mi rimane a fine anno, ma me ne faccio una ragione, soprattutto se la tassazione è chiara, semplicemente computabile e progressiva. Potrei fare più semplicemente i conti, tra risparmiare e spendere, e valutare in che misura preferisco godermi l'oggi ed essere pronto per il domani. 

Sono sicuro che non sto dicendo una novità. Sono sicuro anche di aver semplificato troppo. 

Mi mancano i riferimenti bibliografici per approfondire questo tema. 

Cosa dovrei leggere secondo voi?

16 febbraio 2024

Stewart Brand & Whole Earth Catalog

 Prendo spunto da un articolo del Guardian letto recentemente che ha colmato un importante lacuna culturale nella mia formazione di informatico. Me lo appunto per non perdere la bussola.

https://www.theguardian.com/books/2013/may/05/stewart-brand-whole-earth-catalog

Si tratta di una intervista e mini biografia di uno di quei personaggi che, diversamente dalla maggior parte di noi, lasciano sul pianeta un impatto da Asteroide, e riporta alla mia mente il riverito Direttore nonche Relatore e nume ispiratore di tanti informatici come me, il mitico Gianni degli Antoni.  

A voi

Stewart Brand

di cui potete leggere una biografia più oggettiva su Wikipedia.

Stewart Brand



Mi limito a tradurre e citare alcune porzioni dell'articolo dedicato a Stewart e a ricordare la sua brillante carriera di futurologo e autore di una serie di libri che hanno avuto un impatto fortissimo sullo sviluppo della tecnologia e in particolare dell'informatica e sull'orientamento di tanti giovani talenti con cui è venuto a contatto. Un grazie sentito all'autrice Carole Cadwalladr.

Brand aveva un talento smisurato per essere al posto giusto al momento giusto. 

Nel 1968, casualmente, fu presente a quell'evento mirabolante che in futuro venne etichettato come 'la madre di tutte le demo'. Douglas Englebart sbalordì un migliaio dei più avanzati informatici al mondo dimostrando il primo 'mouse', la prima teleconferenza, il primo editor di testo e l'anteprima dell'informatica interattiva. Non era proprio casualità: Stewart era un tecnico delle riprese e un consulente per la presentazione.

 ... 1968 – Brand just happened to be at what came to be known as the "mother of all demos" when the world first saw what computers could do.


Nello stesso anno avviò la pubblicazione del 

Whole Earth Catalog

Il libro ha meritato una pagina dedicata su Wikipedia. Pubblicato tra il 1968 e il 1971 viene definito da Steve Jobs come 'una delle bibbie della mia generazione'.


Brand dice che il suo mito era Buckminster Fuller 

A sua volta fu un modello di ispirazione per Steve Jobs, che nel suo storico discorso del 2005 all'inaugurazione dell'anno accademico di Stanford, cita Brand e il suo Catalogo.

Bibliografia


Fred Turner, associate professor of communication at Stanford, Turner's 2006 book, From Counterculture to Cyberculture: Stewart Brand, the Whole Earth Network and the Rise of Digital Utopianism,

John Markoff, who wrote What the Dormouse Said: How the Sixties Counterculture Shaped the Personal Computer Industry, says, simply: "Stewart was the first one to get it. He was the first person to understand cyberspace. He was the one who coined the term personal computer. And he influenced an entire generation, including an entire generation of technologists."

Asset Monitoring IOT Database Open Source: indagine 2024

Supponiamo di voler partire con un progetto di monitoraggio IOT, e che nel 2024 qualcuno abbia già messo la propria esperienza a disposizione della collettività.

Devo scrivere da zero il database delle misure?
Devo gestire tutta la parte anagrafica?
Devo inventarmi tutta la parte di web-app, magari anche reattiva, in modo che posso vedere i grafici sia dal PC che dallo smartphone?

Requisiti di massima

  1. Orientato al monitoraggio 'lento' (frequenza oraria o minore) di oggetti statici
  2. Open Source
  3. Interrogazioni SQL con finalità di reportistica quasi metrica/contabile (es. smart meter)
  4. Longevità del progetto: >=10 anni
  5. semplicità di configurazione misure derivate/calcolate, (es bar in pascal, o °C a °F, da corrente e tensione ricavare la potenza)
  6. possibilità di esportazione dati via API
  7. gerarchia/albero delle risorse monitorate (es. città/quartiere/isolato/palazzo/casa/sensore)

Nice to Have

  1. storicizzazione con compressione, tipo RRD Tool
  2. gestione utenti/accessi personalizzata (es. admin legge e scrive tutto, tecnico o utente finale legge solo il suo)
Vediamo cosa mi propone GitHub se cerco IOT e Database...

IOTDB

https://github.com/apache/iotdb?tab=readme-ov-file#main-features

 IoTDB supports high-frequency data writing with millions of measurement points and millisecond-level query response speed. The efficient data processing capability allows users to obtain the required data quickly and accurately. 

GRIDDB

https://griddb.net/en/

https://github.com/griddb/docs-en/blob/master/manuals/GridDB_FeaturesReference.md

in-memory data
architecture — along with superb
parallel processing and minimal
overhead — grants benchmark-
shattering performance

OPENREMOTE

https://github.com/openremote/openremote
https://github.com/openremote/openremote/wiki/User-Guide%3A-Assets%2C-Agents-and-Attributes

TDENGINE

https://docs.tdengine.com/concept/

https://tdengine.com/high-performance/

The TDengine industrial data platform includes a high performance, cloud native time series database that enables efficient ingestion, processing, and monitoring of petabytes of data per day, generated by billions of sensors and data collectors. Thanks to its data model that takes full advantage of the characteristics of time-series dataTDengine delivers more than ten times the performance of general-purpose platforms while requiring only one-fifth the storage space.

THINGSBOARD

https://github.com/thingsboard/thingsboard

https://thingsboard.io/docs/user-guide/entities-and-relations/

molto promettente per Asset Monitoring, consente la scrittura di regole per organizzare gli oggetti monitorati rispetto ai dispositivi di misura e altre entità come gli utenti.

ThingsBoard back-end is written in Java, but we also have some micro-services based on Node.js. ThingsBoard front-end is a SPA based on Angular 9 framework.