martes, 31 de diciembre de 2030

10 consejos para pintar

Este no es un blog donde habrá miles de cosas. Precisamente el interés que puede tener es el de haber reducido a sólo diez cortos capítulos un curso relativamente avanzado de pintura.
No obstante sí se actualiza con frecuencia con el contenido de apoyo a mis clases, que se publican en el foro de este blog, abierto a todos.

No pretendo ser en ningún caso autoritario, yo no tengo el crédito necesario para eso, si algo en el curso suena así debe de ser sólo por querer expresar mi convencimiento, y pido disculpas.

Si crees que hay algo que no se puede englobar en uno de esos diez capítulos, deja un comentario. Prometo contestar intentando justificar, si eso es possible, por qué creo que puede ser incluido en uno u otro. Tal vez animemos a otros a dar también su opinión.

Ya hay algunas ampliaciones concretas de aspectos que me parecía interesante destacar. Pero sin olvidar que este blog es sobre los diez puntos del curso:

Dibujo
Forma
Color
Valor
Diseño
Ver
Técnicas
Pincelada
Concepto
Estilo

miércoles, 2 de abril de 2025

Tecno chismes

How to get the IP address of hotspot client

cmb.py

#!/usr/bin/env python3

# Thanks to

# Rui Santos & Sara Santos - Random Nerd Tutorials

# and Anthony - stackoverflow

# for the ideas

import sys

import requests

import subprocess

import time

# Wi-Fi credentials

ssid = 'YOUR-SSID'

password = 'YOUR-PASSWORD'

# Your phone number in international format (including the + sign)

phone_number = 'YOUR-PHONE-NUMBER'

# Your callmebot API key

api_key = 'YOUR-API-KEY'

# Wi-Fi functions

def what_wifi():

    process = subprocess.run(['nmcli', '-t', '-f', 'ACTIVE,SSID', 'dev', 'wifi'], stdout=subprocess.PIPE)

    if process.returncode == 0:

        wifis = process.stdout.decode('utf-8').strip().splitlines()

        for wifi in wifis:

            if  "yes" in wifi:

                return(wifi.split(':')[1])

    else:

        return ''

def is_connected_to(ssid: str):

    return what_wifi() == ssid

def scan_wifi():

    process = subprocess.run(['nmcli', '-t', '-f', 'SSID,SECURITY,SIGNAL', 'dev', 'wifi'], stdout=subprocess.PIPE)

    if process.returncode == 0:

        return process.stdout.decode('utf-8').strip().split('\n')

    else:

        return []

def is_wifi_available(ssid: str):

    return ssid in [x.split(':')[0] for x in scan_wifi()]

def connect_to(ssid: str, password: str):

    if not is_wifi_available(ssid):

#        print(ssid, ": not available")

        return False

    subprocess.call(['nmcli', 'd', 'wifi', 'connect', ssid, 'password', password])

    return is_connected_to(ssid)

def connect_to_saved(ssid: str):

    if not is_wifi_available(ssid):

#        print(ssid, ": not available")

        return False

    subprocess.call(['nmcli', 'c', 'up', ssid])

    return is_connected_to(ssid)


def send_message(phone_number, api_key, message):

    # Set the URL

    url = f'https://api.callmebot.com/whatsapp.php?phone={phone_number}&text={message}&apikey={api_key}'

    # Make the request

    response = requests.get(url)

    # check if it was successful

    if (response.status_code == 200):

        print('Success!', flush=True)

    else:

        print('Error: ')

        print(response.text, flush=True)

def get_IP():

    wifi_IP = subprocess.check_output(['hostname', '-I'], encoding="utf-8")

    if wifi_IP is not None:

        return(wifi_IP)

    return("No IP")

try:

    while True:

        if is_connected_to(ssid):

            print("conectado a "+ssid, flush=True)

            time.sleep(180)

        elif is_wifi_available(ssid):

            print(ssid+" disponible", flush=True)

            if connect_to_saved(ssid):

                print("enviar IP", flush=True)

                message = get_IP()

                print(message, flush=True)

                send_message(phone_number, api_key, message)

            else:

                print("No se ha conectado", flush=True)

                time.sleep(60)

        else:

            time.sleep(180)

except Exception as e:

    print('Error:', e)


cmb.sh


#!/bin/bash

echo "cmb starts:"

python3 cmb.py

echo $?

echo ":cmb.piExit "


cmb.service


[Unit]

Description=Run cmb.sh script on Boot with Retry

After=network.target

[Service]

WorkingDirectory=/home/pi/work

ExecStart=/home/pi/work/cmb.sh

StandardOutput=append:/home/pi/work/cmb.out

StandardError=append:/home/pi/work/cmb.err

Restart=always

User=root

[Install]

WantedBy=multi-user.target


Enable your service


1.

Create your service file. (cmb.service)

2.

Copy it to /etc/systemd/system:

sudo cp cmb.service /etc/systemd/system/

3.

Update systemd’s internal data:

sudo systemctl daemon-reload

4.

Enable your service

sudo systemctl enable cmb

5.

Start it

sudo systemctl start cmb


How to register your phone with CallMeBot


https://www.callmebot.com/blog/free-api-whatsapp-messages/


miércoles, 27 de noviembre de 2024

Crónica de dos exposiciones

La de Durand-Ruel en la sala Recoletos, muy breve: los muy famosos son muy famosos por algo.

La del premio de otoño de AEDA en Sanchinarro. Me atrevería a decir que el premio es más una muestra de agradecimiento que de admiración. Las exposiciones de pintura, salvo muy felices excepciones, nos resultan tan aburridas que cualquier esfuerzo por salir del pozo de indiferencia en que nos encontramos se recompensa, a lo mejor merecidamente, sin ninguna otra consideración. Teniendo en cuenta siempre que la pintura basura promedio es seguramente más relevante que nuestra mejor crítica designándola como tal, la obra premiada, técnicamente regular, no se puede destacar tampoco como especialmente original. Ni la idea del cuadro dentro del cuadro ni la disociación entre el tema y el motivo son nuevas, sin embargo si preguntáramos al jurado por las razones del premio, sin duda la originalidad sería la primera. Y, para mí, la única que les divirtió.

Había alguna pequeña obra magistralmente ejecutada, si no digna de desbancar a los premiados sí de recibir alguna mención. Conviene recordar que la calidad está siempre de moda. Nos quejamos de que la pintura no se vende. Si la obra premiada hubiera estado inmersa en un mar de obras de calidad similar a las dos o tres destacables, puede que hubiera seguido teniendo alguna mención como un jocoso agradecimiento, pero todas las demás nos habrían ayudado a mantener el interés por la pintura y, con algo de suerte, a despertar en alguien el deseo de rodearse de algunas de esas obras de arte que, lejos de aburrirle, le han hecho pasar un rato enriquecedor.