<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Charlie Gerard's Blog RSS Feed]]></title><description><![CDATA[Collection of side projects, conference talks and blog posts experimenting with frontend technologies and human-computer interaction]]></description><link>https://charliegerard.dev</link><generator>GatsbyJS</generator><lastBuildDate>Sun, 07 Jun 2026 18:31:45 GMT</lastBuildDate><item><title><![CDATA[Demystifying machine learning via Bluetooth with Arduino]]></title><description><![CDATA[The first time I experimented with TensorFlow.js for micro-controllers, I got really excited about the fact that a machine learning model was transferred via bluetooth to my Arduino. In this post, I am going to explain how it works.]]></description><link>https://charliegerard.dev/blog/demystifying-machine-learning-bluetooth-arduino/</link><guid isPermaLink="true">https://charliegerard.dev/blog/demystifying-machine-learning-bluetooth-arduino/</guid><pubDate>Mon, 31 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building an aircraft radar system in JavaScript]]></title><description><![CDATA[A few years ago, I came across an awesome talk by Thomas Watson in which he talks about how he built AirplaneJS, a web app that picks up ADS-B radio signals from airplanes and plots them in real time on a map in the browser. I had no idea this was possible in JavaScript so I started looking into it.]]></description><link>https://charliegerard.dev/blog/aircraft-radar-system-rtl-sdr-web-usb/</link><guid isPermaLink="true">https://charliegerard.dev/blog/aircraft-radar-system-rtl-sdr-web-usb/</guid><pubDate>Mon, 29 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Gaining remote access to a computer with a reverse shell attack in Node.js]]></title><description><![CDATA[I recently learnt what a reverse shell is and got excited to experiment running this kind of attack via a Node.js module. This post will go through my thought process and the different options I tried.]]></description><link>https://charliegerard.dev/blog/reverse-shell-node-js/</link><guid isPermaLink="true">https://charliegerard.dev/blog/reverse-shell-node-js/</guid><pubDate>Tue, 28 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating low poly 3D scenes with Spline]]></title><description><![CDATA[Quick overview of Spline, a 3D design tool for web experiences and how I spent a few hours creating a low-poly scene.]]></description><link>https://charliegerard.dev/blog/low-poly-scenes-spline/</link><guid isPermaLink="true">https://charliegerard.dev/blog/low-poly-scenes-spline/</guid><pubDate>Wed, 27 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building UIs in Figma with hand movements]]></title><description><![CDATA[I've played around with hand detection using TensorFlow.js in the past but since they released the ability to detect multiple hands, I've wanted to explore building UIs with hand movements.]]></description><link>https://charliegerard.dev/blog/hand-control-ui-figma-plugin/</link><guid isPermaLink="true">https://charliegerard.dev/blog/hand-control-ui-figma-plugin/</guid><pubDate>Thu, 20 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Hacking cars in JavaScript (Running replay attacks in the browser with the HackRF)]]></title><link>https://charliegerard.dev/blog/replay-attacks-javascript-hackrf/</link><guid isPermaLink="true">https://charliegerard.dev/blog/replay-attacks-javascript-hackrf/</guid><pubDate>Mon, 16 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating a Github action to detect toxic comments using TensorFlow.js]]></title><description><![CDATA[Over the weekend, I spent a few hours building a Github action to automatically detect potentially toxic comments and PR reviews.]]></description><link>https://charliegerard.dev/blog/github-action-toxic-comments/</link><guid isPermaLink="true">https://charliegerard.dev/blog/github-action-toxic-comments/</guid><pubDate>Sun, 16 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Stealing credentials via polymorphic Chrome Extension]]></title><description><![CDATA[A few days ago, I came across new research explaining a novel cybersecurity attack via polymorphic Chrome Extension and decided to spend some time recreating it]]></description><link>https://charliegerard.dev/blog/polymorphic-chrome-extension-attack/</link><guid isPermaLink="true">https://charliegerard.dev/blog/polymorphic-chrome-extension-attack/</guid><pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Toggle dark/light mode by clapping your hands]]></title><description><![CDATA[A few days ago, we released dark mode in beta. While we're still iterating on it, I built a Chrome extension to easily toggle it by clapping my hands.]]></description><link>https://charliegerard.dev/blog/toggle-dark-mode-clapping-hands-chrome-extension/</link><guid isPermaLink="true">https://charliegerard.dev/blog/toggle-dark-mode-clapping-hands-chrome-extension/</guid><pubDate>Wed, 14 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[From Wi-Fi to Li-Fi, sending data via light using Arduino and JavaScript]]></title><description><![CDATA[Different parts of the electromagnetic spectrum can be used to transmit information. Using visible light, data can be encoded and transmitted using a technology called Li-Fi which aims at using your existing lights for wireless communication.]]></description><link>https://charliegerard.dev/blog/lifi-sending-data-light/</link><guid isPermaLink="true">https://charliegerard.dev/blog/lifi-sending-data-light/</guid><pubDate>Mon, 13 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Gesture-based payments]]></title><description><![CDATA[Recently, I've been experimenting with gesture control and researched how this technology could be used as a payment method.]]></description><link>https://charliegerard.dev/blog/gesture-based-payments/</link><guid isPermaLink="true">https://charliegerard.dev/blog/gesture-based-payments/</guid><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Control UIs using wireless earbuds and on-face interactions]]></title><description><![CDATA[A few weeks ago, I stumbled upon a very cool research project around using the acoustic signature of gestures to create new interactions with interfaces and decided to implement a prototype version of it in JavaScript.]]></description><link>https://charliegerard.dev/blog/control-uis-using-wireless-earbuds-and-on-face-interactions/</link><guid isPermaLink="true">https://charliegerard.dev/blog/control-uis-using-wireless-earbuds-and-on-face-interactions/</guid><pubDate>Sun, 10 Sep 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Motion-controlled Street Fighter with the Bangle.js watch and WebAI]]></title><description><![CDATA[A few weeks ago, I attended the WebAI summit and got a Bangle.js watch so I worked on updating my Air Street Fighter prototype to use it.]]></description><link>https://charliegerard.dev/blog/street-fighter-banglejs-webai/</link><guid isPermaLink="true">https://charliegerard.dev/blog/street-fighter-banglejs-webai/</guid><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Speeding up Storybook locally by running filtered stories 🚀]]></title><description><![CDATA[Working on a big monorepo means that developing with Storybook can become painfully slow. A small change can drastically speed it up!]]></description><link>https://charliegerard.dev/blog/speeding-up-storybook-locally/</link><guid isPermaLink="true">https://charliegerard.dev/blog/speeding-up-storybook-locally/</guid><pubDate>Thu, 08 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Cybersecurity attacks using Deno]]></title><description><![CDATA[When I'm sharing what I learn about cybersecurity in open-source, a reaction I've seen people have is to mention Deno as a tool that will fix the problem. The risk of supply-chain attacks still exist and I wrote this post to show how it can be done.]]></description><link>https://charliegerard.dev/blog/cybersecurity-attacks-deno/</link><guid isPermaLink="true">https://charliegerard.dev/blog/cybersecurity-attacks-deno/</guid><pubDate>Wed, 07 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Voltage, current and resistance in electrical circuits]]></title><description><![CDATA[Some notes from reading chapter 4 of the book 'How computers really work'.]]></description><link>https://charliegerard.dev/blog/voltage-electrical-circuit/</link><guid isPermaLink="true">https://charliegerard.dev/blog/voltage-electrical-circuit/</guid><pubDate>Mon, 07 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Yeah, nah... I'm not ok]]></title><description><![CDATA[If you've been following my work, you may be used to seeing weird JavaScript projects exploring HCI, but this post won't be about that.]]></description><link>https://charliegerard.dev/blog/yeah-nah-not-ok/</link><guid isPermaLink="true">https://charliegerard.dev/blog/yeah-nah-not-ok/</guid><pubDate>Tue, 07 Jul 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ultrasonic payments]]></title><description><![CDATA[Experimenting with ultrasonic data transmission in JavaScript as a  payment method.]]></description><link>https://charliegerard.dev/blog/ultrasonic-payments/</link><guid isPermaLink="true">https://charliegerard.dev/blog/ultrasonic-payments/</guid><pubDate>Mon, 06 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Predicting indoor location using machine learning and wifi information]]></title><description><![CDATA[After trying out a Python project called whereami, I spent some time trying to replicate it in JavaScript.]]></description><link>https://charliegerard.dev/blog/predicting-indoor-location/</link><guid isPermaLink="true">https://charliegerard.dev/blog/predicting-indoor-location/</guid><pubDate>Sat, 06 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Running a ransomware attack in a Node.js module]]></title><description><![CDATA[A couple of weeks ago, I experimented with creating a small ransomware script, and looked into how to run it in a Node.js module. This post is a write-up explaining how I went about it.]]></description><link>https://charliegerard.dev/blog/ransomware-script-node-module/</link><guid isPermaLink="true">https://charliegerard.dev/blog/ransomware-script-node-module/</guid><pubDate>Thu, 05 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Setting up a RaspberryPi without monitor and keyboard]]></title><description><![CDATA[For a long time, I thought a keyboard and monitor were needed to do the initial setup of a RaspberryPi. However, I recently learnt that you can do this using only another computer!]]></description><link>https://charliegerard.dev/blog/setting-up-raspberry-pi-without-monitor-or-keyboard/</link><guid isPermaLink="true">https://charliegerard.dev/blog/setting-up-raspberry-pi-without-monitor-or-keyboard/</guid><pubDate>Mon, 05 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Setting up a reverse shell with Vultr]]></title><description><![CDATA[I used Vultr recently and struggled to create a reverse shell so this post is gathering the steps that worked]]></description><link>https://charliegerard.dev/blog/reverse-shell-vultr/</link><guid isPermaLink="true">https://charliegerard.dev/blog/reverse-shell-vultr/</guid><pubDate>Sun, 04 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Notes from competing in my first CTF]]></title><description><![CDATA[Last weekend, I competed in the National Cyber League (NCL), my first cybersecurity CTF. I wrote down notes about the tools I used in the challenges and wanted to share in case anyone is curious to know how CTFs work.]]></description><link>https://charliegerard.dev/blog/competing-cybersecurity-ctf-ncl/</link><guid isPermaLink="true">https://charliegerard.dev/blog/competing-cybersecurity-ctf-ncl/</guid><pubDate>Tue, 04 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making an interactive digital frame with head-tracking using Three.js and TensorFlow.js]]></title><description><![CDATA[Over the past few weeks, I've been working on a new side project to replicate a visual effect called 'head-coupled perspective' to make interactive art with head tracking, using Three.js and TensorFlow.js.]]></description><link>https://charliegerard.dev/blog/interactive-frame-head-tracking/</link><guid isPermaLink="true">https://charliegerard.dev/blog/interactive-frame-head-tracking/</guid><pubDate>Sun, 01 Aug 2021 00:00:00 GMT</pubDate></item></channel></rss>