Picks synced frame
Junior engineers have side projects of creating components, mid level work through applying design patterns, but when one gets to architect, they need problems that allow them to explore creating systems and platforms. Let's take a look at a set of systems used to explore some architectural concepts.
Aspects a synced frame explores
Stateless architecture
Logged in state provides users with a JWT which connects a user to their data in the database. The state is managed in the database so that the same user can be logged into multiple devices/sessions and configure the smart photo sets that can be seen and even synced if the same set is selected.
Task based queuing for parallel processing
It's great to have a smart picture frame, but you need pictures. Most people already were uploading all their pictures to some provider, be it Instagram, Facebook, Apple, Google or their own hosted photo solution/NAS.
We worked on an import process to scan someone's pictures and import the meta data into the picks server. While the images remained in the source location, the meta data allowed us to pull images in.
What if the server crashes while importing 10,000 images? We need a way to query the data source for albums/folders and queue up those to query for items as separate tasks. Then each image import needed to be separate so we can ensure each photo is imported. This allows resuming import processes and also scaling horizontally to process task lists in parallel.
Synced data across multiple sessions
When we worked on the synced frame, the options from Google and Amazon were not very great for viewing images. There were no smart sets of images or filters and there was no way to have multiple frames show the same image. This allowed us to leverage web sockets to sync an action on one frame back to the server to update the database and then update any of the synced instances.
UI frameworks
It's common to create the TODO list application to go a step beyond `hello world`, but often that's not enough to dig in deeper to how frameworks enable applications to work. By creating APIs for data access it allowed us to create Angular and React versions of the same experience (and others like Vue, Svelte, etc as they became available).
Touch display hardware
Having a smart picture experience in a browser is great, but everyone has tabs full of applications and may not have extra desktop space for large images. Connecting a multi touch display to a Raspberry Pi allows a picture frame to sit on a table, power a display as digital signage.
Recent lab experimentation (since 2020)
Lab descriptions and details currently not available online, please reach out to discuss.