Painting again

Posted on March 20, 2023

It has been a long winter. A pretty nice winter. Though a winter where things are dark outside and I really want to take naps. When it is dark after work, I find it hard to paint. The time is there, but I just don’t quite have the right lighting to make painting comfortable. I already struggle with making things a little to grey or washed out. Trying to mix colors in half light isn’t the best way to combat that.

I want to pick up some LED photo studio lights. Ones where I can control the color temperature. If I am feeling adventurous I might pick up the full RGB ones to set an entire rainbow of colors.

What Midjourney V5 Thinks I Look Like

Posted on March 16, 2023

Images generated with the prompt hispanic male 5’7″ brown hair 50 years old and 180lbs, full body –v 5 –ar 2:3

Waveshare E-paper Display for Pico

Posted on March 15, 2023

Here is the same thing but for the Waveshare e-paper display for pico. This version (B) also displays red.

import time
import board
import busio
import digitalio
import requests
import adafruit_apds9960.apds9960
import adafruit_matrixportal.network
import adafruit_matrixportal.matrix
import adafruit_matrixportal_imageload
import adafruit_matrixportal_imagedisplay
import adafruit_pixel_shader
import adafruit_fancyled.adafruit_fancyled as fancy

# Set up the I2C bus for the APDS9960 gesture sensor
i2c = busio.I2C(board.SCL, board.SDA)

# Initialize the gesture sensor
gesture_sensor = adafruit_apds9960.apds9960.APDS9960(i2c)

# Initialize the MatrixPortal network and matrix
matrixportal_network = adafruit_matrixportal.network.MatrixPortalNetwork()
matrixportal_matrix = adafruit_matrixportal.matrix.Matrix()

# Initialize the E-Ink display
display = adafruit_matrixportal_imagedisplay.EPD_Display(
    busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO),
    cs=digitalio.DigitalInOut(board.CE0),
    dc=digitalio.DigitalInOut(board.D27),
    busy=digitalio.DigitalInOut(board.D17),
)

# Set up the pixel shader for dithering
shader = adafruit_pixel_shader.PixelShader(
    width=display.width, height=display.height, brightness=1.0
)

# Set up the color palette for dithering
palette = [
    fancy.CRGB(255, 255, 255),  # white
    fancy.CRGB(255, 0, 0),  # red
    fancy.CRGB(0, 0, 0),  # black
]

# Set up the image display object
image_display = adafruit_matrixportal_imagedisplay.ImageDisplay(
    display,

Pico Display Pack

Posted on March 15, 2023

Here is a little code that will hopefully pull images from the internet and display on the screen every 10 minutes.

import time
import busio
import digitalio
import adafruit_requests as requests
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
import adafruit_esp32spi
import adafruit_imageload
import adafruit_display_text.label
import adafruit_fancyled.adafruit_fancyled as fancy
import adafruit_ili9341

# Set up the ESP32SPI interface and pins
esp32_cs = digitalio.DigitalInOut(board.GP17)
esp32_ready = digitalio.DigitalInOut(board.GP16)
esp32_reset = digitalio.DigitalInOut(board.GP20)
spi = busio.SPI(board.GP18, board.GP19, board.GP16)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)

# Set up the socket for HTTP requests
socket.set_interface(esp)
requests.set_socket(socket, esp)

# Set up the Pico Display Pack
display_bus = busio.SPI(board.GP10, MOSI=board.GP11, SCK=board.GP12)
display_cs = board.GP13
display_dc = board.GP14
display_reset = board.GP15
display = adafruit_ili9341.ILI9341(display_bus, cs=display_cs, dc=display_dc, rst=display_reset)

# Set up the font for the label
font = bitmap_font.load_font("/fonts/Arial-12.bdf")
font.load_glyphs(b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890- ()')

# Set up the timer to pull a new image every 10 minutes
last_update = time.monotonic()

while True:
    # Pull a new image every 10 minutes
    if time.monotonic() - last_update >= 600:
        try:
            # Get the image from picsum.photos
            image_url = "https://picsum.photos/240/135"
            response = requests.get(image_url)
            image_file = response.content
            image = adafruit_imageload.load(image_file, bitmap=displayio.Bitmap, palette=displayio.Palette)
            
            # Display the image on the Pico Display Pack
            display.show(image)
            
            # Create a label with the time the image was pulled and display it on the Pico Display Pack
            label = adafruit_display_text.label.Label(font, text="Updated at {}".format(time.strftime("%H:%M:%S")))
            label.x = 20
            label.y = 20
            display.show(label)
            
            # Reset the timer
            last_update = time.monotonic()
        except Exception as e:
            print("Error: ", e)
    
    # Wait for button press to exit
    if not button.value:
        break

Pico Inky Pack Image Display

Posted on March 15, 2023

This bit of code displays a random image pulled from the internet on the screen of a Pico Inky Pack.

import board
import busio
import digitalio
import adafruit_requests as requests
import adafruit_inky
from adafruit_imageload import load_image, dither

# Set up the Inky display and buttons
inky_display = adafruit_inky.AutoDisplay()
button = digitalio.DigitalInOut(board.BUTTON_A)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP

# Set up the SPI bus and pins
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
cs_pin = digitalio.DigitalInOut(board.CE0)
dc_pin = digitalio.DigitalInOut(board.D22)
reset_pin = digitalio.DigitalInOut(board.D27)

# Initialize the Inky display
inky = adafruit_inky.InkyPHAT(spi, cs_pin, dc_pin, reset_pin, rotation=180)

# Get the image from picsum.photos
image_url = "https://picsum.photos/g/296/128"
response = requests.get(image_url)
image_file = response.content
image, palette = load_image(image_file)

# Dither the image
dither.dither_bitmask(image, bitmap=image)

# Display the dithered image on the Inky display
inky_display.display(inky, image)

# Wait for button press to exit
while button.value:
    pass

MagTag Online Image

Posted on March 15, 2023

Here is a bit of code that pulls a random image from the internet and displays it on a MagTag screen.

import board
import displayio
import adafruit_imageload
import adafruit_requests as requests
import adafruit_magtag.magtag as magtag
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
from adafruit_imageload import dither


# Set up the MagTag display and buttons
magtag = magtag.MagTag()

# Get the image from picsum.photos
image_url = "https://picsum.photos/g/296/128"
response = requests.get(image_url)
image_file = response.content
image, palette = adafruit_imageload.load(image_file, bitmap=displayio.Bitmap, palette=displayio.Palette)

# Dither the image
dither.dither_bitmask(image, bitmap=displayio.Bitmap)

# Create a new display group and show the image on the screen
group = displayio.Group()
tile_grid = displayio.TileGrid(image, pixel_shader=palette)
group.append(tile_grid)
magtag.display.show(group)

# Wait for button press to exit
while not magtag.peripherals.button_a:
    pass

Taking back my life

Posted on March 6, 2023

It seems that I spend about 7 hours on average looking at my phone each day. At least 2 hours of that is social media. Another two hours of that would be YouTube most of the time. It irritates me that there are other things that I could be spending my time on.

I used to be a bit better, but since Covid, my life has been mainly naps and checking to see what is going on in the world through the phone. I don’t call people. I just watch.

Right now, I am writing this blog entry in a desperate attempt to keep myself from browsing the internet. Instead of sucking things in from other people, at least I can spew random things out to the handful of people who accidentally follow me.

Ooof. I need to get a rubber band and put it on my wrist. Every time is feel the need to calm myself or escape my situation with social media I need to snap that thing to make myself aware. It is just such a natural reflex these days.

I am also considering trying not to lay down during the day. Covid really helped make that a constant go-to for calming and self care. Maybe I just need to transform it into a seated meditation or a stretching practice. I just had to restrain myself from laying down this morning. It is 7 a.m. and I just finished eating my breakfast. Since I have about 45 minutes before I have to go to work, I figured it would be a good time to nap. I still don’t quite have what I am going to wear ready and I have plenty of dishes to drop in the dishwasher. Let’s do a five minute meditation.

Accessory Dwelling Unit

Posted on March 1, 2023

Here is some advice from ChatGPT about setting up an accessory dwelling unit on my property.

Yes, there are several strategies you can use to make managing an accessory dwelling unit (ADU) on your property easier:

  1. Design the ADU with a separate entrance: This will allow you to access the ADU without having to go through your own home, making it easier to manage and maintain the unit.
  2. Install separate utilities: It’s important to ensure that the ADU has its own utility meters and separate electrical, gas, and water lines. This will make it easier to track usage and billing, and prevent any disputes with tenants over utility expenses.
  3. Choose low-maintenance materials: When building an ADU, choose materials that are durable and require minimal maintenance, such as vinyl siding or metal roofing. This will reduce the need for frequent repairs and upkeep.
  4. Consider hiring a property management company: If you don’t want to manage the ADU yourself, consider hiring a property management company to handle tenant screening, lease agreements, rent collection, and maintenance requests. This will ensure that the unit is properly managed and taken care of, while freeing up your time for other tasks.
  5. Follow local zoning and building codes: Make sure you follow all local zoning and building codes when constructing the ADU. This will ensure that the unit is legal and up to code, and will help prevent any issues with tenants or authorities down the road.

By following these strategies, you can build an ADU that is easy to manage and maintain, and provides a comfortable living space for tenants.

Notes:
Permit information

Setting up a proper business

Posted on January 31, 2023

Looks like I need to think about setting up a business for myself. While I have done small freelance things in the past, there is a chance that there will be changes ahead. Really need to figure out the proper way to arrange my assets and income in a way that is safe and manageable. Let’s ask ChatGPT what sort of business I should open up.

Given your circumstances and goals, an LLC, or limited liability company, would be a good option for your art business. An LLC provides personal liability protection for its owners, known as members, and offers the flexibility of being taxed as a partnership, sole proprietorship, or corporation, depending on the number of members and tax election made by the members.

As for the potential impact on your retirement benefits, it would depend on the specifics of your retirement plan and how the income from your art business is structured and taxed. It’s advisable to consult with a financial advisor and/or tax professional to assess the potential impact and make informed decisions about your retirement benefits.

Additionally, it’s important to note that there may be other business structures that could better suit your needs, such as a sole proprietorship or partnership, and it’s recommended that you seek the advice of a business attorney to fully understand the benefits and drawbacks of each structure before making a decision.

ChatGPT

Shed

Posted on January 22, 2023

Thinking about building a bit of a shed. Simple construction. Something that I can build myself. It is primarily a learning experience. I may build it on skids so that it can be moved. Just a bed of gravel at the base. Which would mean that I would have to insulate the floor.