This blog showcases the progress of my idea to create an augmented reality Sudoku solver using technology that enables us to solve puzzles in our browser rather than with dedicated apps. I have developed an AR Sudoku solver with a simple image processing pipeline. It identifies and extracts Sudoku puzzles from pictures, recognizes each cell's numbers, solves the puzzle, and renders the solution on top of the original image. This process is accomplished by converting the image to greyscale, conducting thresholding, OCR-processing, and puzzle-solving. I've also done parallel image location and extraction. It's a technical journey that's achieved some high-quality,...
I've successfully used addressable WS2811 LED strings and an ESP-CAM board to create an adjustable lighting system. The best part is that the image processing code can be duplicated in JavaScript which allows you to use a plain dev board to drive the LEDs instead of needing a camera on your ESP32 board. If you want to replicate this project, you'll need your own ESP32 dev board and some addressable LEDs. After figuring out the location of each LED in 2D space, it's easy to map from each LED's x and y location onto a pattern you want to show...
After putting in some work, I've successfully figured out how to create a real grunt plugin. I've discovered that a node module is essentially a node application with a package.json, and with this understanding, setting up became simple. My new plugin can be found at the given link and has straightforward usage. Once installed, the plugin may be activated in your Gruntfile. The plugin's full mechanisms can be found at the mentioned link or at the git project page.
Exploring node.js and its associated tools, I've been intrigued by Grunt, dubbed as 'The JavaScript Task Runner'. Amid building a project, I wanted to integrate Liquibase - a useful database schema management tool we used in developing Vollow.me. Despite the lack of a Grunt plugin or a Node module for Liquibase, I've managed to get it operational with Grunt using grunt-shell. The next step is to package Liquibase into a formal Grunt task and streamline database settings loading.