Some of my projects started with files on a computer. Others ended up controlling something in my room.
I used Python to work with family photos, recognize faces, and organize images. With a Raspberry Pi, I also built a way for people to send messages to an LCD and to change the color and on/off state of the lights in my room.
These projects taught me how to connect software to things outside a normal app: photo metadata, a camera feed, and physical hardware.
Finding someone across years of photos
One idea was to take years of family photos, find pictures of one person, and put them in chronological order. I wanted to follow someone through the different stages of their life using photos already on my computer.
The PyFaceRec project has a program that compares faces in an input folder against reference photos of a known person. It uses InsightFace to create face embeddings and compares them with cosine similarity. When a match passes a threshold, it copies the image into an output folder.
That gave me a real use for face recognition. A folder of reference photos showed the program who to look for, and it searched other folders for likely matches.
The date-sorting script handled the next step. It read the original capture date from EXIF metadata, sorted the images that had it, and copied them into a numbered sequence. The capture date mattered because I wanted the photos in the order they were taken, not the order they happened to land on the computer.
The scripts had limits. The matcher compares only the first detected face in each image, and the sorting script skips any image without the expected date. They were useful experiments toward a personal photo archive, and they still need better handling for group photos and missing dates.
Recognizing faces through a webcam
The project also includes a live face-recognition program. It loads reference images from named profile folders, opens a webcam feed, finds faces, and compares them with the stored examples.
In the camera view, it draws a box around each face and labels it with a name when the match passes the threshold. Otherwise it shows "Unknown." There's also a keyboard shortcut that saves another snapshot into a profile folder.
The photo search and the webcam app used the same basic comparison idea in different settings. One worked through an archive. The other worked with live frames. Building both gave me experience with the files, reference data, and display logic around a recognition model.
Small photo utilities
I also wrote scripts for a Star Wars toy photo collection. One converted HEIC images to JPEG, recursively. Another used each folder's name to give its images consistent numbered filenames.
They were small programs, but they handled concrete jobs across a whole collection: finding files, converting formats, and applying a naming convention. They sit alongside the bigger photo project as examples of using code on media I already had.
Sending a message into my room
LCDFlask took things into physical hardware. A Raspberry Pi talked to an LCD, and people could send messages through a web page for the display to show.
The project also let visitors change the color of the lights in my room and turn them on or off. With port forwarding, someone with an internet connection could reach the interface from outside my home network.
That's a different kind of result from updating a file or a page. A click in a browser could change a physical device in my room. The web interface, the Pi, and the hardware were all part of one interaction.
The original hardware-control server isn't in the version of the repository I have now, so I'm describing this project from memory. The idea and the experience are still clear: I connected a remote person's browser to a display and lights around me.
A common thread
Across these projects, I used existing models and libraries, wrote the logic around them, and connected inputs to useful or entertaining results. A reference photo became a way to search an archive. A capture date became an ordering rule. A browser click became a message on an LCD.
They were different projects, but they all came down to the same thing: using software to do something with the files, devices, and surroundings I already had.