Blog

Latest Posts

  • The APRS Bots Are Winning

    I’ve got a VHF/UHF transceiver radio in my garage running an APRS Internet gateway. It would transmit over the radio occasionally, usually just my own periodic beacons or the rare relay of someone else’s message from the Internet.

  • Home Energy Economics: Optimizing Tesla Powerwalls for NEM 3.0

    California’s NEM 3.0 changed the math for home solar. Under the old rules, the grid acted as a giant 1:1 battery. You overproduced during the day, pushed power to PG&E, and pulled it back at night for roughly the same price.

  • Getting Meshtastic Telemetry into InfluxDB with Node-RED

    I run a small Meshtastic mesh network out of Benicia, CA. Five nodes, a mix of fixed and mobile hardware, with the gateway publishing packets to an MQTT broker on my NAS. I wanted the telemetry - battery levels, signal quality, GPS positions, environmental sensors - flowing into InfluxDB and visualized in Grafana. This post covers how I built the pipeline and the specific problems I hit along the way.

  • Getting Plex Hardware Transcoding Working on the Ugreen DXP4800 Pro

    I picked up a Ugreen DXP4800 Pro NAS earlier this year. It’s a 4-bay unit with an Intel Core i3-1315U, 10GbE + 2.5GbE LAN, and dual M.2 NVMe SSD slots. I upgraded the RAM to 2x8GB DDR5-5600 SO-DIMMs (replacing the stock single stick) for 16GB total. The i3-1315U is a chip more commonly found in laptops than NAS enclosures, which turns out to matter a lot when you want to run Plex Media Server.

  • The Ring Smart Doorbell API

    Background

    The Ring smart doorbell does far more than your ordinary wired doorbell; it’s able to deliver audio & video recordings in real-time over a WiFi link connected to the Internet. When your doorbell is pressed or motion is detected, the doorbell automatically begins streaming video to the Ring servers. Ring will send a push notification to your phone and archive the video, where it can be downloaded or viewed through the Ring website or app.

  • Building and Using the Flink Kinesis Streaming Connector

    What is Kinesis?

    Kinesis is a hosted service from Amazon Web Services that offers the ability to publish & consume durable streams of high-volume data. There’s no limit to the number of sources that feed a Kinesis stream, making Kinesis a convenient ingestion point for a data processing pipeline.

  • First Impressions of Complex Event Processing in Apache Flink

    I’ve been using Apache Flink to perform streaming aggregations for real-time alerting across several attributes. It’s a phenomal stream-processing engine with an easy-to-use API, simple switching between local and cluster job execution, and great support for job checkpointing to simplify recovery when systems fail.

  • Creating Minimal Docker Images for Go Apps with Wercker

    For years I’ve been using CircleCI to do the typical CI things: building a project, running tests, packaging & uploading artifacts, and even deploying. Lately I’ve noticed a lot of reliability and performance issues with CircleCI and figured it was time to explore the CI landscape. I used Wercker one year ago to build some Bitbucket-hosted projects that were written in Java. Wercker performed wonderfully, was (and still is) free, and supports both Github and Bitbucket.

  • First Post

    I’ve maintained a personal website of some sort since 1994. Recently I’ve been kept very busy, professionally and otherwise, so performing upkeep on a blog is low on my list of priorities. Enter… Github Pages. I can write my posts in Markdown, and all security & scalability issues are handled by Github.

Posts