Posts

Using an e-ink digital badge as a Mood Display as an aid in dealing with the neurodivergent

Image
Simon Painter built a visual communication tool to help neurodivergent children express their emotional state using the Pimoroni Badger2040 e-ink display. This assistive technology allows children to easily indicate and communicate their current emotional state through a combination of text and images. The low power single purpose device serves as an emotional communication aid, helping children who may struggle to express their feelings verbally. I didn't build this. I'm posting it because it is a great example of how "making things" can help people. Video of the device Creating your own Badger 2040 mood device Acquire a Micropython-compatible device like the Pimoroni Badger2040 . Load the Badger Micropython firmware for the Badger pimoroni-badger2040-v0.0.5-Micropython.uf2 Clone or download the files from this MoodBadger GitHub repository Copy the files to the Badger 2040 E-ink badge probably using mpremote Press reset on the Badger.  Mood should show on ...

Add sensors and output to your PC using the Pico 2040 with custom firmware Desktop Python and Blinka

Image
Extend your PC into the microcontroller sensor and control realm with Desktop Python Adafruit Blinka and an RP2040 Pico running U2IF firmware. This setup gives you access to the microcontroller component libraries without writing code on the microcontroller itself. No code-download-run cycle is required! Normally, when you want to run some motors, read some sensors, or talk to some small displays, attach those elements to a microcontroller running your custom software. Adafruit has made it so that their libraries work with a couple of non-programmable port expanders.  You run standard Python on your PC using their libraries.  The Adafruit Blinka software has embedded drivers for boards that present the correct USB HID interfaces.  Two examples are the MCP2221A and FTDI breakout expander boards. There is open-source U2IF Pico 2040 firmware that turns an RP2040 into an appliance that can be talked to as a HID device.  You can use the same Adafruit Blinka software to ta...

System Complexity with various types of contract and subscription types.

Image
Consumers often want to change to auto-renewing contracts or subscriptions in the middle of a  subscription or contract period. Automating these modifications varies in complexity taking into account the dollar amounts of the services, customer expectations, regulatory requirements, business cycles, or legacy processing overhead like paper billing. This presentation walks through a variety of ways of handling intra-period modifications. Video on YouTube These images were used in the Video They exist here for review Monthly with cancellation at renewal This is the simplest of subscriptions.  The contract is simple.  Cancellations happen at the end of the subscription period, usually monthly.  There might be rate adjustments if you change the plan in the middle of the month but some services just ignore that or only upgrade at renewal.  Simple prepay with changes at renewal This plan's payment cycle and subscription length are the same.  Changes happen...

NVIDIA Broadcast fix for - No available cameras - Restarting the windows service

Image
NVIDIA Broadcast, on Windows, uses your GPU to improve your PC's audio and video streams for recordings, meetings, or other purposes.  NVIDIA Broadcast sits between your Microphone/Camera and the audio/video capture component of whatever proam you are using.  I described here how NVIDIA Broadcast can use the GPU to make it look like you are always looking at your camera  when recording. NVIDIA Broadcast sometimes can't get access to your microphone or camera when they are already being used  by some other program.  Recently, I had a different problem where NVIDIA Broadcast couldn't get access to my Brio Camera, even though no other program was currently using the problem. I stopped and restarted my NVIDIA and Logitech tools to no avail. It turns out one of the NVIDIA Windows services needed to be restarted.  There was a problem with the instance of the service that was running. Restarting the service it fixed the problem. The best video I found is this...

Ordering pages in a coding challenge scrambled my preconceived notion about "natural ordering"

Image
We have a notion that there is a natural order of things.  I'm talking about ordering, and sorting, by convention as a mental aid or for product reasons.  Everyone is familiar with ordering products by weight, pieces by size, and names by alphabetical order.  We are so used to some types of ordering that it seems like the natural way when there is nothing natural about it. A common example is the "order of assembly", the order of parts installed onto the device.  The reason for the order on the direction sheet may not be immediately obvious.  The order takes into account the ease of assembly or the reliability of putting it in at that point in the cycle. This caused me to waste over an hour during a recent programming challenge while implementing an arbitrary set of ordering rules. Eventually, I realized that the notion of order is arbitrary and that I could change the standard to fit my problem space.  Let's go to the programming challenge. An example from...

Leveraging Brev SSH credentials to plug local tools into Brev managed instances

Image
Brev authentication and 'brev shell' create credentials we can use with other tools, like NVIDIA AI Workbench, to let them SSH into Brev instances. This is useful for those needing something beyond the canned models or provided Jupyter Notebooks YouTube short description of the SSH credentials and host info Revision History Created 2024/11 Fixed NVIDIA capitalization 2025/07

The Brev GPU/CPU marketplace topology that can be seen by users

Image
A quick explanation of the pieces of Brev visible to external users and how they fit together.  YouTube: A simplified view of the Brev GPU marketplace that are touched by users Revision History Created 2024/11

Start to finish running NVIDIA AI Workbench project in cloud GPUs with Brev

Image
 I wanted to run an ML project in a bigger environment than I have in my homelab.  I don't have any cloud accounts but I can rent GPU capacity via the Brev GPU/CPU marketplace. I just needed to get it there. The project itself is fully containerized and available on git as an AI Workbench project.  This means I just needed to install the AI Workbench server code on a Brev-rented GPU instance and then attach to that server over the provided network tunnel.  My local AI Workbench can then manage and run my project remotely from my MacBook. All the steps Some of these steps will be automated in future NVIDIA AI workbench releases.  Use this diagram to follow along in the video. Video Revision History Created 2024/11 Fixed NVIDIA capitalization 2025/08

Build Test Adapt Check - When will I know if it works

Image
Starting with a good foundation puts us in a position to step into a build/test/check/adapt iteration loop that drives an expanding and improving product or experience. The key is to figure out how to measure success from the customer, organization, regulatory or privacy, and other non-functional requirements perspectives. We want to optimize the Build - Test - Adapt - Check  cycle in order to make good changes with a short cycle time. Hopefully, I'll add the content of this talk in the future.  Until then you have the diagram and the video. Video Here is the video where I go over the diagram. Revision History Created 2024 11

Walking through the NVIDIA AI Workbench's Kaggle competition kernel example project

Image
The NVIDIA AI Workbench team has created a prototypical workspace for those wanting to participate in Kaggle competitions while running on their own hardware.  NVIDIA created a workbench project,  NVIDIA Competition Kernel on GitHub , that integrates Kaggle's GPU container images along with Jupyter Notebooks that interface with Kaggle. The Kaggle images are the same ones they use in their data scientist environment. The project is configured to participate in the continuous, training, Digits competition where you train a model to recognize handwritten numerical digits. NVIDIA created the project in a way that can be used in other competitions of the same class.  Three Notebooks Downloads the Training and Submission data Creates a model and trains the model using the training data. The notebook tunes the model against the training data. Then, it evaluates the Test data to generate what it thinks are the matches. The matches are written to a file. Uploads the CSV file conta...