photography

7 Posts
LunarNY2024-1006.JPG

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 …

G35C3172-HDR-Edit.JPG

Longmont

I’ve lived in Longmont for many years. It’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 …

photos.jpg

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 …

G35C9270-Edit.JPG

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 …

G35C8992-Edit-Edit.JPG

The Brink of Winter

I’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 …

G35C4303.JPG

Autoscapes

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

G35C3742-Edit.JPG

Flat Lands

I grew up in the rolling hills and lush glens of Scotland and find myself drawn to Colorado’s plains. The vast open spaces of these flat lands provide me with space to think and allow the …

home_automation

6 Posts
latency.png

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 …

routed_3d.png

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’m …

image-5.png

Cleaning up Electricity Meter Data

Introduction I’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 …

data.png

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 …

new_influx.png

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 …

frame_finished.jpeg

Illuminated Picture Frame

Introduction We own a couple of 5 cell pieces of an animated film and we’ve never had a good way to exhibit them, I made an illuminated frame that uses a couple of LED backlight modules. I used …

portfolios

5 Posts
G35C3172-HDR-Edit.JPG

Longmont

I’ve lived in Longmont for many years. It’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 …

G35C9270-Edit.JPG

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 …

G35C8992-Edit-Edit.JPG

The Brink of Winter

I’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 …

G35C4303.JPG

Autoscapes

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

G35C3742-Edit.JPG

Flat Lands

I grew up in the rolling hills and lush glens of Scotland and find myself drawn to Colorado’s plains. The vast open spaces of these flat lands provide me with space to think and allow the …

docker

4 Posts

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 …

image-5.png

Cleaning up Electricity Meter Data

Introduction I’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 …

data.png

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 …

new_influx.png

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 …

home

4 Posts
console.gif.webp

An Audio-Adaptive Stereo Console

I didn’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 …

stereo_back.png

Driving a Lifx Z-Strip based on Audio

Introduction I’ve previously discussed building a Stereo Console that is backlit using a LIFX Z-Strip. We thought it’d be cool if the backlight modulated in conjunction with the music we …

mockup.png

Building a Stereo Console

Introduction We bought a record player and started collecting vinyl during the pandemic. We weren’t able to find a well suited piece of furniture, so i set about making a console out of some …

frame_finished.jpeg

Illuminated Picture Frame

Introduction We own a couple of 5 cell pieces of an animated film and we’ve never had a good way to exhibit them, I made an illuminated frame that uses a couple of LED backlight modules. I used …

arduino

3 Posts
radarboard.jpg

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% …

stereo_back.png

Driving a Lifx Z-Strip based on Audio

Introduction I’ve previously discussed building a Stereo Console that is backlit using a LIFX Z-Strip. We thought it’d be cool if the backlight modulated in conjunction with the music we …

routed_3d.png

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’m …

graphics

3 Posts
header.webp

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 …

shader2.gif.webp

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 …

shader1.gif.webp

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 …

influxdb

3 Posts
image-5.png

Cleaning up Electricity Meter Data

Introduction I’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 …

data.png

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 …

new_influx.png

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 …

cad

2 Posts
mockup.png

Building a Stereo Console

Introduction We bought a record player and started collecting vinyl during the pandemic. We weren’t able to find a well suited piece of furniture, so i set about making a console out of some …

frame_finished.jpeg

Illuminated Picture Frame

Introduction We own a couple of 5 cell pieces of an animated film and we’ve never had a good way to exhibit them, I made an illuminated frame that uses a couple of LED backlight modules. I used …

cloudflare

2 Posts
publish.png

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 …

comments.png

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, …

creative-code

2 Posts
shader2.gif.webp

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 …

shader1.gif.webp

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 …

hardware

2 Posts
latency.png

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 …

radarboard.jpg

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% …

homepage

2 Posts
publish.png

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 …

comments.png

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, …

hugo

2 Posts
publish.png

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 …

comments.png

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, …

indieweb

2 Posts
publish.png

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 …

comments.png

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, …

p5

2 Posts
shader2.gif.webp

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 …

shader1.gif.webp

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 …

software

2 Posts
header.webp

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 …

sankey1.png

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 …

woodworking

2 Posts
mockup.png

Building a Stereo Console

Introduction We bought a record player and started collecting vinyl during the pandemic. We weren’t able to find a well suited piece of furniture, so i set about making a console out of some …

frame_finished.jpeg

Illuminated Picture Frame

Introduction We own a couple of 5 cell pieces of an animated film and we’ve never had a good way to exhibit them, I made an illuminated frame that uses a couple of LED backlight modules. I used …

3d_printing

1 Post
mockup.png

Building a Stereo Console

Introduction We bought a record player and started collecting vinyl during the pandemic. We weren’t able to find a well suited piece of furniture, so i set about making a console out of some …

atlas-institute

1 Post
header.webp

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 …

blockchain

1 Post

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 …

edgerouter

1 Post
zt.webp

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 …

electronics

1 Post
routed_3d.png

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’m …

gis

1 Post
sankey1.png

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 …

javascript

1 Post
sankey1.png

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 …

longmont

1 Post
LunarNY2024-1006.JPG

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 …

networking

1 Post
zt.webp

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 …

smarthome

1 Post
stereo_back.png

Driving a Lifx Z-Strip based on Audio

Introduction I’ve previously discussed building a Stereo Console that is backlit using a LIFX Z-Strip. We thought it’d be cool if the backlight modulated in conjunction with the music we …

wax

1 Post

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 …

zerotier

1 Post
zt.webp

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 …