RSSAmplifier

Blog

Graham Stewart

graha.msRSS feed ↗29 posts

Latest posts

Converting Shrooly Light Levels into Lux

If you’re using a Shrooly mushroom growing device and trying to follow growing guides from online mycology resources, you’ve probably noticed they specify light requirements in lux while Shrooly only gives you LED brightness percentages. This post explains how to convert between the two based on actual measurements. The Problem Many mushroom growing resources specify light requirements…

Shrooly Mushroom Device Teardown

Introduction I recently (after a very long wait) received my Shrooly Mushroom Growing Device. It seems to work pretty well and produced a few crops of tasty mushrooms before failing with a “Water Board Comm. Fail” message. While Shrooly did offer to let me send the device back for repairs or replacement, I’m a bit wary of whether I’d ever see if again given that they still…

Year of the Dragon Celebration

Here’s a collection of images I took at the Asian Pacific Association of Longmont Lunar New Year celebration at Silver Creek High School in Longmont. Most of these are shot with slow shutter speeds where I move the camera to track the action. I find this technique works well to capture the energy of this kind of performance. Dragon Dance by Shaolin Hum Mei Kung Fu Association .…

Tunnelling with ZeroTier & EdgeRouter

Introduction This post serves as a personal reference and guide for setting up a tunnel and NAT configuration using ZeroTier and an EdgeRouter. The goal is to route certain machines from my home network through a virtual server in a different country. My set-up is a bit more complicated than is described here (using a VLAN and different wireless BSSID) but hopefully this simplified example will…

B2 Processing/Max/Syphon/Resolume Demo

Introduction I recently had the chance to build something in the Atlas B2 , a cool space that has multiple projectors, mocap, lights, and 40-speaker surround sound. I’d done a number of cool projects in p5.js for Cacheflowe’s Creative Code class, but since that only runs in a browser I’d be forced to figure out Processing instead. Fortunately I spent many years as a java devloper…

ESPHome Auto-Restart Script

Introduction Running various services at home can be a great convenience, but it’s incredibly frustrating when the network goes down and you’re not there to restart everything. I’ve considered using my Home Assistant instance to reboot my modem, but I’m uncertain about its effectiveness since it heavily relies on a stable internet connection. While there are commercial…

Using my Simple Cloudflare Comments plugin

Introduction I developed Simple Cloudflare Comments to fulfil the need I had for a lightweight, edge-hosted comments engine. It’s written in Typescript and runs on Cloudflare’s edge servers. At the moment it only supports Google for user authentication, but this could be extended. As an added bonus it automatically connects to webmention.io to collect webmentions from other sites Set…

Now with comments!

Introduction As part of a class assignment, I got a little bit of time to work on a code project of my choosing. I’d like to have comments on my site, but got frustrated at the crappy, javascript-heavy options. I also didn’t really want to pay $10/month for something that’s realistically not going to see a lot of use. My site is also a static site built in Hugo and there’s…

Seeed Studio 60GHz mmWave Sensor - Human Resting Breathing and Heartbeat Module Review

Introduction I recently bought a tiny 60GHz radar module to use in a project. This is a really neat little board that claims to be able to read breathing and heart rate data from a subject with 90% accuracy. It’s made by the Chinese firm Seeed Studio but it was in stock at DigiKey and shipped really qu

Analyzing Land Use Change

Land Use dataset This project uses the 10m Annual Land Use Land Cover (9-class) dataset which is a joint project between ESRI & Impact Observatory. I chose to use the version hosted on the Microsoft Planetary Computer because it’s very accessible to web users. The 10m Annual Land Use Survey is created by feeding ESA Sentinal-2 imagery into a Deep Neural Network run on Microsoft’s…

Using p5 shaders for post processing

Introduction p5 can be used for 3D graphics, although it makes much more sense to use something like three.js if you want to do any serious 3d browser development. Where WebGL really shines in p5, in my humble opinion, is for post-processing 2d sketches. Basic Starting Point Consider this simple 2d sketch of a spinning square: <div class

Introduction to Shaders in P5

Introduction Shaders are a powerful way to apply powerful logic to the individual pixels in a p5 sketch. We write them in the GLSL language (a form of C) then they are compiled and (generally) run on your graphics card. They are much faster than the same operation written in pure Javascript. My laptop has 16 CPU cores (and a javascript process typically only uses 1); however, it has 6,144 GPU…

Longmont

I&rsquo;ve lived in Longmont for many years. It&rsquo;s an interesting city that contains many contrasts in both architecture and culture. I love taking photos of the old brick buildings that are a holdover from a more industrial past.

An Audio-Adaptive Stereo Console

I didn&rsquo;t start out intending for this to be such a big project. It started out with an attempt to make a piece of furniture for our HiFi and ended up with a bunch of hardware and software design to make the backlight adjust based on the music. Here are individual blog posts for the different steps: Woodworking Construction Analog Audio Frontend Driving a LIFX Z-Strip based on Au

Gallery Opening at the Firehouse

Really excited to have three of my photographs included in the Long Range juried show at the Firehouse Art Center here in Longmont, alongside Veronica Love, Katherine Gibbons and John Fukuda. Artist members at the Firehouse are an integral part of our community: supporting events as volunteers, contributing to exhibitions, participating in pop ups, and attending social artist gathering

Long Range

These photos were selected for the Long Range juried show at the Firehouse Art Center. These photographs illustrate some of the long, private conversations I have with the sky while I take night drives around my home in Longmont. As a Scottish immigrant, I’m constantly awed by the generosity of the western sky. From picture postcard to abstraction—it flawlessly holds up its end of whatever…

Setting up a Worldwide Asset eXchange (WAX) test server using Docker on Linux

Introduction This tutorial walks you through the steps to set up a Worldwide Asset eXchange (WAX) test server, establish the WAX currency and transfer some into a test account. This was tested on Ubuntu 18.04 and takes advantage of the waxdev docker container for some of the tooling. Starting the server Start the local server (note this maps ~/wax to the /wax folder in the docker instance and…

Driving a Lifx Z-Strip based on Audio

Introduction I&rsquo;ve previously discussed building a Stereo Console that is backlit using a LIFX Z-Strip . We thought it&rsquo;d be cool if the backlight modulated in conjunction with the music we were listening to, so I built an Arduino to sample audio, perform an FFT and then produce a light pattern that roughly corresponds to the audio spectrum. Circuit I&rsquo;ve discussed the Front-End…

Audio Front-end for the ESP32

Introduction As part of a larger project, I wanted a way to capture the audio signal from our HiFi and sample it with an ESP32 Microcontroller. Our HiFi has a handy tape-dubbing output which I&rsquo;m unlikely to ever use for that purpose, but it&rsquo;s ideal for connecting the ESP to. Here&rsquo;s a sample of one channel of the audio signal: Sampling directly? My first thought was that I could…

Cleaning up Electricity Meter Data

Introduction I&rsquo;ve previously written about how I harvest the readings from my utility meters and put them into InfluxDB. This follow up post describes how I clean up that data using InfluxDB&rsquo;s Flux language into something more usable. Data Let&rsquo;s start by looking at the data. // This is where we select the data from from(bucket: 'meters') // Filter for the time window shown on the…

Monitoring Utility Meters

Introduction There are quite a few options for monitoring your whole house water or power usage, but i’m not thrilled about adding a bunch of extra hardware to my breaker panel. I’ve known for a while that the city reads my utility meters by driving by, but had assumed this radio technology was some kind of encrypted proprietary data that I couldn’t access. However it turns out most utility meters…

Setting up InfluxDB on Docker

Introduction Docker is a great lightweight container system for running applications on your home server. I run it on my Synology DS918 , which stores all our backups and runs most of the services for our home network. InfluxDB is a great lightweight time-series database that&rsquo;s ideal for monitoring other value-based systems. I feed all of our home automation data, the data I scrape from our…

Building a Stereo Console

Introduction We bought a record player and started collecting vinyl during the pandemic. We weren&rsquo;t able to find a well suited piece of furniture, so i set about making a console out of some scrap boards we had left over from another project. I didn&rsquo;t take any construction photos because I didn&rsquo;t expect it to work. Design Goals The console should be low and long It should fit…

Illuminated Picture Frame

Introduction We own a couple of 5 cell pieces of an animated film and we&rsquo;ve never had a good way to exhibit them, I made an illuminated frame that uses a couple of LED backlight modules. I used ESPHome to connect it to Home Assistant so it can easily be controlled like the rest of our lights. Bill of Materials I built a custom frame out of walnut using a small CNC machine, but you could…

The Brink of Winter

I&rsquo;ve always been drawn to transitions and boundaries between states, and that time when the weather changes and winter sets in is no exception. These photos were mostly taken around my home in Longmont and represent that time in November when the first hard frost sweeps across the landscape.

Autoscapes

I call these experimental images autoscapes. They are long exposures creating by moving car lights as they scan across the landscape.

Flat Lands

I grew up in the rolling hills and lush glens of Scotland and find myself drawn to Colorado&rsquo;s plains. The vast open spaces of these flat lands provide me with space to think and allow the creation of more abstract images. This series explores how the horizontal landscape is punctuated by the energy production that we all depend on.

(untitled)

(untitled)