After lots of tinkering, I've managed to improve the speed of writing to the SD Card of my ESP32-TV considerably, but it's still not as fast as I'd like. The Arduino 'readRaw' and 'writeRaw' functions were the culprits, they can only write one sector at a time! After bypassing this and using IDF functions, writing speed improved by 70%. I also experimented with writing to the SD Card in the background, which ironically yielded even better results. However, it's still slower than I'd like, so I've got a crazy new plan: using a cheap IC (GL823) for SD card interfacing...
09 October 2023
An intriguing issue appeared in the esp32-tv project that deals with speeding up JPEG file decoding using SIMD (Single Instruction Multiple Data) instructions, showing immense performance boost. However, there were some notable differences in speed when it comes to drawing the images versus simply decoding them. The problem was found to be with the DMA drawing mechanism and the way the new fast library decodes the image all at once. But despite this hiccup, by overlapped decoding and displaying process, a high frame rate can still be achieved. Joined me in this dissecting process and my initial tests showing approximately...
30 September 2023
After some quality time with my ESP32 microcontroller, I've developed a version of the TinyTV and learned a lot about video and audio streaming along the way. Using Python and Wi-Fi technology, I was able to set up the streaming server with audio data, video frames, and metadata. I've can also explored the picture quality challenges of uncompressed image data and learned about MJPEG frames. Together with JPEGDEC for depth decoding, I've managed to effectively use ESP32's dual cores to achieve an inspiring 28 frames per second. Discussing audio sync, storage options and the intricacies of container file formats for...
26 September 2023
I've had some commenters point out the issue with the slow display updates in my recent Arduino Nano ESP32 video. It turns out, the software SPI of the Adafruit_ST7789 library was the culprit. Lo and behold, the solution is simple - using the hardware SPI constructor of the library. Apparently, this isn't well documented, so I wrote some code to serve as reference for myself and others who might run into the same snags. Trust me, the difference in speed is absolutely bonkers. Check out the video to see the magic in action.
31 August 2023
In this post, I strongly discourage anyone who's thinking of starting a YouTube channel due to the immense amount of commitment and work it requires, in return for almost nothing. Despite my own success as a YouTuber, I argue that it's not at all as fun and glamorous as it seems; with the harsh reality being hours spent on editing videos, trying to appeal to the YouTube algorithm, and the discouraging attention your videos receive. Yet I also share the little joys and proud moments I experience from my channel, and how it has helped me grow and connect with...
02 August 2023
In a thrilling DIY endeavour, I attempted to build the most minimalist ESP32 dev board possible. Diving deep into the schematic of the ESP32 S3 WROOM module, I chopped out the non-essentials and whittled our needs down to bare bones. The experiment saw me juggling USB data lines and voltage regulators, waving goodbye to an array of capacitors and connectors and boldly embracing the simplicity of direct connections. Despite a few hitches, the miniature Frankenboard came alive, proving that sometimes less is more...at least in the world of microcontrollers.
27 July 2023
In my latest wireless charging experiments, I got my hands on a set of wireless charging PCBs and dove into testing different voltage inputs and their efficiency levels. It was interesting to realise that the 5V input managed to provide a decent efficiency of 73%, while 12V input struggled and heated the receiver board excessively. With the perks and limits of this setup explored, I took a whirl at creating a wireless Pi Doom machine. It worked like a charm! However, I quickly noticed the need to split charging and boost board into two different modules - a project to...
12 July 2023
In this blog, I was dealing with a conundrum on how to reduce the power consumption of my cool magic mirror that was always on, always drawing power. I considered options such as a PIR (Passive Infra Red) sensor and a doppler radar microwave motion sensor. The latter worked brilliantly except for a few too many false positives. Things got technologically fancy when I introduced a camera for motion detection and face recognition, even recognizing who is in front of the mirror! However, while it was fascinating, it upped the power consumption which was against our original goal. After combining...
26 June 2023
Social media outrage is often fueled by out-of-context statements and its ripple effects can alter stock prices and reputations permanently. A recent example was a drop in Wickes' share price due to #boycotwickes trending on Twitter. Many times, outrage is based on misinterpreted quotes like the recent one from a Wickes' employee. Digging deeper, however, revealed a less sinister motive behind their opinion. Regrettably, folks are now making a living out of creating outrage on social media, and the amplification by influential personalities like Elon Musk doesn't help. In the end, nothing seems credible as it often aligns with existing...
16 June 2023
Faced with free time in Cambridge, I decided to visit the Center of Computing History. It's a bit quirky and tucked away in an industrial park, but worth finding. Right in the entrance, you'll see the Megaprocessor, a 16-bit processor that's programmed to play Tetris. But the highlight for me was seeing the prototype ZX Spectrum, the computer that sparked my interest in tech. Though they didn't have a working Spectrum, I got a kick out of programming on a ZX81 and playing with a BBC Micro. They've even got a room full of consoles and the first ever Apple...
15 June 2023
Now having been two weeks since the release of my Chess plugin on the ChatGPT plugin store, I've decided to share some preliminary stats & thoughts. Initially achieving a day high of 1,800 games, we unfortunately experienced a user drop-off while the plugin was temporarily unverified. The plugin's return saw fewer users, likely due to an influx of new plugins. Despite this, I'm enthusiastic to see an average of 10 moves per game, with many players managing to beat the AI. The operating costs are minimal, mostly carried by storing secrets on AWS Secrets Manager. There's room for improvement such...
29 May 2023
Over time, I've realized that my blog's front page looked a tad dull due to the absence of header images for some of the older posts. Hence, I decided to put AI-powered image generation platforms, DALL-E 2 and Midjourney, to the test. While DALL-E 2 offered some promising results, Midjourney stole the show with aesthetically pleasing images, despite the lack of API support and strict rules against automation. Despite these limitations, I managed to generate and download quality images from Midjourney, revamping my blog's appearance and learning a lot in the process.
27 May 2023
In this blog post, I detail how I've made significant improvements to my long-time blog by integrating advanced AI tools. Using OpenAI's ChatGPT, I've successfully automated the tagging of my articles and generating precise summaries for each, enhancing my blog's navigability and readability. I also discuss how I used AI to generate related content, making my blog more engaging and interconnected. To top it off, I hint at an upcoming feature: AI-created images to beautify my blog posts!
23 May 2023
We've seen two major shifts in technology trends with websites and mobile apps - now there's a third one rearing its head. OpenAI's ChatGPT with plugins is on the cards and you better be ready for it. In the midst of fumbling for answers to whether we need these plugins or not, let me reassure you that it's not too complex. Far from requiring a squad of specialist developers, all you need to know is how to make an API to create a plugin for ChatGPT. Yes, there are potential pitfalls around security and data protection, but with the right...
21 May 2023
In another thrilling adventure with ChatGPT, I endeavored to integrate it with a Raspberry Pi, effectively turning it into my own personal light switch. My custom ChatGPT plugin, sporting just two endpoints, could revolutionize how we handle APIs, as it managed to control five different lights with simplicity and style. With a dash of YAML magic, ChatGPT managed to deduce the entire process, paving the way for future smart home projects. Big or small, the potential applications are endless and might even lead to computers communicating in human language!
14 May 2023
In a fun-filled deep dive into a Philip's Hue Color light bulb, I disassembled, analyzed, and ultimately restored it to working order. Over the course of the hack, I dismantled the bulb’s interior, from the aluminum PCB to the tiny ICs on the logic board, gave a detailed breakdown of their functions and even reverse engineered the signals controlling the colors. Most of the colors worked out pretty well, except for the dodgy yellow. Also, I tried running the hacked bulb setup with my old Moonlamp project. It was a great challenge and an exciting journey!
04 May 2023
Exploring the capabilities of ChatGPT, particularly GPT-4, I exposed a shortcoming regarding the model's ability to remember or store information it has 'thought' about during a dialogue sequence. Probing deeper, I developed an experimental system named ChatGPT Memory to input detailed information into the system like 'dreams', 'goals', 'inner dialogue' and more. While this method doesn't make the AI truly sentient, it definitely pushes the envelope and leads to interesting outputs. Although there are limitations, especially when handling more complex tasks, the enhancements present an exciting prospect for future iterations of the model.
12 April 2023
In this post, I explore the usefulness of GitHub badges to easily represent the status of a GitHub project. I discuss their importance in attracting people to your project and provide a step-by-step guide on how to add these badges to your Arduino projects using GitHub actions. Lastly, I recommend setting things up so that only successful pull requests can be merged to maintain the integrity of the project.
31 March 2023