Guidare una Panda Cross

Tra Ottobre e Novembre 2024 ho guidato per 788km, consumando 225 litri di benzina, con una velocità media di 41,2 km/h con un consumo medio di 11,8 km per litro.

Per tre quarti del tempo ho viaggiato a velocità inferiori a 50 km/h:

Il consumo effettivo alle basse velocità è assai maggiore rispetto ai dati strombazzati della casa madre:

La sesta marcia è una opzione di cui si potrebbe tranquillamente fare a meno. L’ho usata in qualche lunga discesa in autostrada, giusto perché sapevo che stavo registrando:

Tutto ciò è stato registrato con un ODB2 collegato ad Android:

L’app Torque permette di registrare e scaricare i dati in formato .csv, per poterli poi elaborare con Excel o Power BI.

Questi sono i campi che io raccolgo:

Device Time
  G(x)
  G(y)
 G(z)
  G(calibrated)
  Fuel Remaining (Calculated from vehicle profile)(%)
Kilometers Per Litre(Instant)(kpl)
Kilometers Per Litre(Long Term Average)(kpl)
Litres Per 100 Kilometer(Long Term Average)(l/100km)
Fuel flow rate/minute(cc/min)
Engine RPM(rpm)
Throttle Position(Manifold)(%)
Barometric pressure (from vehicle)(psi)
Intake Manifold Pressure(psi)
Air Fuel Ratio(Measured)(:1)
Torque(Nm)
Engine kW (At the wheels)(kW)
Intake Air Temperature(°C)
Engine Coolant Temperature(°C)
Speed (OBD)(km/h)

pi-hole

Ho aggiornato pi-hole sulla mia rete di casa, e già che c’ero sono andato a vedere come lavora. Ecco il numero di richieste bloccate durante 24 ore:

Non è statisticamente rilevante, ma nella mia rete casalinga, circa un terzo del traffico è pubblicità o spionaggio commerciale.

Coding: pensieri sparsi

Lettura : Scrittura = Uso del computer : Programmazione

Si impara a leggere e a scrivere da piccoli, perché è il momento in cui si impara con maggiore facilità, per sempre.

Tutti imparano a scrivere, anche se pochi diventeranno scrittori.

Non ha senso imparare a leggere senza imparare a scrivere.

In quasi tutti i mestieri del mondo, tranne forse i più umili, è necessario saper scrivere. La stessa cosa vale oggi: non c’è professione qualificata che non richieda almeno la conoscenza delle basi della programmazione

Anche un foglio di Excel è un programma (input -> algoritmo -> output) in linguaggio funzionale.

Tempo fa, a una platea di programmatori di tutte le età, ho chiesto: “Chi di voi ha scritto il suo primo programma prima dei 14 anni?” Hanno alzato la mano quasi tutti.

Cosa si impara con il coding

Si impara prima di tutto a porsi dei problemi, e poi a risolverli.

Si impara a ragionare con metodo, senza rinunciare alla intuizione.

Si impara a essere creativi e fantasiosi.

Si impara a ragionare in una lingua straniera.

Si impara a riciclare le soluzioni altrui adattandole al proprio caso.

Si impara a non arrendersi davanti alle difficoltà.

(post in progress)

micro:bit apertura con password

Per azionare il motore che apre la porta, occorre inserire la password pre-impostata (AABAA) premendo i bottoni A e B del micro:bit. Per confermare la password occorre premere contemporaneamente i bottoni A + B. Se la password è giusta, compare il segno di spunta e la porta si apre; altrimenti compare una X ed è possibile riprovare.

Quando compare il segno di spunta, è possibile inserire una nuova password premendo i bottoni A e B, confermando l’inserimento premendo contemporaneamente A + B. La nuova password viene visualizzata una volta prima di diventare attiva.

Per chiudere la porta, occorre premere insieme A + B senza inserire password.

Ovviamente, ogni volta che si riaccende il micro:bit si riparte dalla password pre-impostata.

Il codice in Python:

def on_button_pressed_a():
    global tentativo, nuovapassword
    if stato == "inserimento":
        tentativo = "" + tentativo + "A"
    else:
        nuovapassword = "" + nuovapassword + "A"
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_ab():
    global nuovapassword, stato, tentativo, password
    if stato == "inserimento":
        if tentativo == password:
            basic.show_icon(IconNames.YES)
            pins.servo_write_pin(AnalogPin.P0, 90)
            nuovapassword = ""
            stato = "modifica"
        else:
            basic.show_icon(IconNames.NO)
            stato = "inserimento"
            pins.servo_write_pin(AnalogPin.P0, 0)
        basic.pause(500)
        basic.clear_screen()
        tentativo = ""
    else:
        password = nuovapassword
        basic.show_string("" + (password))
        stato = "inserimento"
input.on_button_pressed(Button.AB, on_button_pressed_ab)

def on_button_pressed_b():
    global tentativo, nuovapassword
    if stato == "inserimento":
        tentativo = "" + tentativo + "B"
    else:
        nuovapassword = "" + nuovapassword + "B"
input.on_button_pressed(Button.B, on_button_pressed_b)

nuovapassword = ""
stato = ""
tentativo = ""
password = ""
password = "AABAA"
tentativo = ""
stato = "inserimento"
nuovapassword = ""
pins.servo_write_pin(AnalogPin.P0, 0)

Errori nella condivisione dei dati

Quali sono gli errori commessi dagli analisti quando distribuiscono il loro lavoro ai colleghi?

Risponde Ken Gross, Chief Data Scientist presso The Chartis Group:

Tutte le analisi cercano di rispondere a precise domande o gruppi di domande. Nel distribuire i risultati ai colleghi, gli analisti spesso dimenticano di specificare chiaramente quale era la domanda che ha guidato la loro analisi. Gli analisti dovrebbero sempre specificare chiaramente, prima dei risultati, a quali domande si sta cercando di rispondere.

Inoltre, il processo di analisi è spesso iterativo, dove un primo gruppo di domande porta a nuove o più precise domande. Nel presentare i risultati, gli analisti dovrebbero incoraggiare gli interessati a combinarli con le loro conoscenze ed esperienze, per fare in modo che il processo iterativo diventi anche collaborativo

(da distinct values)