---
title: Give this to your AI — Will Curran
description: Most posts here carry a short brief you can paste into an AI assistant. Here they all are, word for word, each linked back to the post it came from.
image: https://willcurran.com/hubfs/will-curran-brand/will-curran-og.png
---

[Skip to content](https://willcurran.com/blog/give-this-to-your-ai#main)

[Will Curran](https://willcurran.com/?hsLang=en)

[Home](https://willcurran.com/?hsLang=en) [Portfolio](https://willcurran.com/portfolio?hsLang=en) [Press](https://willcurran.com/media?hsLang=en) [Blog](https://willcurran.com/blog?hsLang=en) [Favorites](https://willcurran.com/favorites?hsLang=en) [Speaking](https://willcurran.com/speaking?hsLang=en) [Consulting](https://willcurran.com/consult?hsLang=en) 

[Hire Will](https://willcurran.com/hire?hsLang=en)

[All](https://willcurran.com/blog?hsLang=en) [Builds](https://willcurran.com/blog/tag/builds?hsLang=en) [Events](https://willcurran.com/blog/tag/events?hsLang=en) [Home](https://willcurran.com/blog/tag/home?hsLang=en) [Music](https://willcurran.com/blog/tag/music?hsLang=en)

Search the blog 

[Subscribe](https://willcurran.com/blog/subscribe?hsLang=en)

[Writing](https://willcurran.com/blog?hsLang=en) / Briefs

# Give this to your AI

Most posts here carry a short brief you can paste into an AI assistant. Here they all are, word for word, each linked back to the post it came from.

39 briefs · newest first

Music Oct 22, 2026

## [My Chat Bot Called a House Set Drum and Bass](https://willcurran.com/blog/chat-bot-called-a-house-set-drum-and-bass?hsLang=en)

Give this to your AIHelp me build a chat bot for my \[platform\] DJ streams that greets people correctly and talks about the set I am actually playing. Inputs: chat messages with badges, follow events, the stream's title and category, and a now-playing feed from \[DJ software\] that includes each track's genre. Build a "tonight" summary from the title and tracks played so far, and make every generated line describe tonight's music only from that summary and the current track. Any long-term knowledge about my catalogue is background and must never be described as tonight. Decide once per person per stream whether they are new, using follow status and mod, VIP or sub badges, and greet each person at most once per stream. Thank follows briefly with no stats. Put every message through one send step that removes duplicate @tags and strips emotes I have not allowed.

Home Oct 22, 2026

## [The Heat Rating That Decides a Desert Garage Mini-Split](https://willcurran.com/blog/desert-garage-mini-split-heat-rating?hsLang=en)

Give this to your AIHelp me shortlist ductless mini-splits for a space in \[climate\] where the air at the outdoor unit reaches about \[design temperature\] on the hottest days. For each candidate in \[list of models or brands\], find the manufacturer's own submittal or spec sheet for the exact indoor and outdoor model numbers, not a retailer listing or a comparison article. From each sheet, record the refrigerant, the rated outdoor cooling range, the rated cooling capacity at 95°F, and any cooling performance table by outdoor temperature. Drop every unit whose maximum cooling temperature is below my design temperature plus \[margin\]. Where a sheet has a performance table, show the capacity at my design temperature as a percentage of its 95°F value, and say whether those values are tested or simulated. Flag any rating that differs between two sources, and any product name that covers more than one refrigerant version. Give me the sheet link and the date you checked it for every number.

Events Oct 21, 2026

## [Walk the Room: What Live Events Taught Me About Checks That Lie](https://willcurran.com/blog/walk-the-room?hsLang=en)

Give this to your AIBefore you tell me anything is done, go through every check you ran and tell me what it would have said if the work were broken. If it would have passed anyway, throw it out and write one that would fail. Measure the running thing: the live page, the real output, the actual message that arrived. Then break it on purpose once and show me the check catching it. Only after that, tell me it is done.

Music Oct 20, 2026

## [When the Stream Got Stuck on Song 1: Seeing Layered Mixes](https://willcurran.com/blog/layered-mixes?hsLang=en)

Give this to your AIHelp me build a track-ID detector for a DJ who mixes by looping one track and layering more over it. Read the decks' network feed: for each deck, the loaded track, the channel fader position and whether it is looping. Keep a state machine per deck with the states cued, incoming, live, looping and out. Name a track once, only after it has been in the mix for 30 seconds straight. A newer track must never cancel a pending one, and a fader flash shorter than the confirm window must never post. Treat a looping deck as layered: list it beside the headline with a loop marker, never as the headline. Never decide a new song has arrived by waiting for the old one to leave. Logging must never block the event loop. Give the detector a heartbeat, and flag it when it goes quiet while the decks are still broadcasting. Build a shadow mode that records what it would post and reports that, not just "healthy". Keep the existing detector as a fallback that takes over when the new one loses the decks.

Home Oct 18, 2026

## [Movie Mode Means the Robot Vacuum Waits](https://willcurran.com/blog/movie-mode-vacuum?hsLang=en)

Give this to your AIHelp me build a "movie mode" guard for a robot vacuum in Home Assistant. Use a toggle helper for Movie Mode and a helper holding a queue of automation IDs. In every cleaning automation, make the first action a check: if Movie Mode is on, append this automation's ID to the queue (no duplicates), log it, and stop. Put this in the actions, not the conditions, so it shows in the trace. Add a second automation, triggered when Movie Mode turns on, when the vacuum starts cleaning or pauses, and every five minutes: if Movie Mode is on and the vacuum is cleaning or paused, dock it, and re-queue the originating automation if one started the clean. Add a third, triggered when Movie Mode has been off for two minutes plus a periodic backstop: remove the oldest ID first, then trigger that automation with its conditions enforced, and wait for the vacuum to sit docked before the next. Voice requests during a movie should get a spoken no, not a queue entry.

Home Oct 16, 2026

## [A Holiday Color Engine with a Calendar Computed to 2099](https://willcurran.com/blog/holiday-color-engine?hsLang=en)

Give this to your AIHelp me build a holiday color engine in Home Assistant for \[number\] color bulbs that can each be controlled on their own. Write a script that loops through a palette: every step, send each bulb its own color, offset by its position so the color moves along the row, with a fade or a quick chase depending on the look. The script must skip any bulb a motion override is holding, after the first frame, never turn on a bulb that is off, and stop when every bulb is off. Never target a hub group. Make the calendar a pure Jinja macro that returns tonight's look, with a priority order where the first match wins and a default look for ordinary nights. Compute fixed dates, US floating holidays and Easter in the macro. For \[list moving holidays\], write a Python script with ephem, convertdate and lunardate that generates tables through \[end year\], and test them against published dates before deploying. Before calling it done, test the failing state: with every bulb held, the script should send nothing.

Music Oct 8, 2026

## [How I Pick the Best Live Sets for a Playlist](https://willcurran.com/blog/best-live-sets-playlist?hsLang=en)

Give this to your AIHelp me build a "best of" playlist of \[artist\]'s full live sets and DJ mixes, 10 to 20 entries. Full sets and mixes only: no single tracks, album uploads, clips or fan compilations, and include the artist's own official mixes. From fan threads I paste in, tally the recommendations: a set's weighted score is the sum of upvotes on comments recommending it, each comment counted once per set, scores of 0 or 1 counted as 1 and negative scores as 0. Keep post-title scores in a separate column. Merge nicknames and night numbers for the same set into one entry, and show me the alias list. For each set, pick one version: official first, then broadcast, then a good audience recording, phone audio only if nothing else exists (flag it). Require full length, about 40 minutes or more for live recordings, and note one or two backups. Flag recency bias and balance eras. Order the final list as a journey, not a ranking. Report which entries have an official lossless release and where it is sold. Don't buy or download anything.

Home Sep 30, 2026

## [Party Mode: 49 Ramps Blocked, Zero During a Six-Hour Party](https://willcurran.com/blog/party-mode?hsLang=en)

Give this to your AIHelp me add a Party Mode to my Home Assistant lighting. First, list every automation that changes lights on motion or on a schedule, and show me where the evening and night behaviour actually lives (a scene, a schedule, or time conditions inside motion automations). Then propose: a toggle helper; an automation that applies each room's party scene when it turns on; one that re-applies the party scene on motion while it's on; a scheduled auto-off as a backstop; and a deactivate step. Add a "mode is not on" condition to the front of every motion automation, including daytime ones, worded so it passes if the helper is unavailable. Before any "turn off all lights" step, expand every light group and list the members, and flag anything that isn't a room light, such as smart plugs. Tell me which automations you would leave unsuppressed and why. Afterwards, give me a checklist to verify the first real run from the logbook.

Builds Sep 25, 2026

## [A Check That Can't Fail Is Worse Than None](https://willcurran.com/blog/a-check-that-cant-fail?hsLang=en)

Give this to your AIWrite a self-test for each check, monitor, canary or test you write for me. The self-test feeds the check a known-bad input and fails if the check doesn't refuse it. In the same run, it feeds a known-good input and requires a pass, so a broken harness can't make both cases look the same. Add a third case where the check can't read its input, and require a distinct error, never a zero and never a pass. Treat empty config, empty lists and skipped tests as failures unless I have declared them.

Builds Sep 20, 2026

## [Trivia Over LoRa: a game show on a slow, lossy radio mesh](https://willcurran.com/blog/trivia-over-lora?hsLang=en)

Give this to your AIBuild me a trivia bot for a LoRa mesh text channel. It reads messages and emoji reactions from a REST API on my mesh server and sends through the same API; it never talks to the radio directly. Python in Docker, minimal dependencies. Every outgoing message must fit 200 bytes counted in UTF-8; validate every question in the bank against that limit in a test, and send any link in a message of its own. Players answer by reacting 1 to 4 on the question; only a player's first reaction counts. Score 10 for a right answer, up to 5 more for speed, and 3 for first right; wrong answers score 0 but get one short reply that never reveals the answer. Keep at least 2 seconds between sends and no more than 6 a minute. Poll with an overlap, drop duplicates, ignore reactions after the window and anything older than 5 minutes after a restart. Stop a game after 3 rounds in a row with one or fewer players. Keep state outside the container with daily backups. Add a build check that fails on questions with more than one right answer.

Home Sep 18, 2026

## [The Veto That Never Retries](https://willcurran.com/blog/the-veto-that-never-retries?hsLang=en)

Give this to your AIReview my Home Assistant automations for latches. For each automation, list its triggers and its conditions. Flag every one where a trigger is an edge (a state change, or a state held "for" some time) and a condition can block the action, because if the condition clears later, nothing re-runs it. For each blocking condition, write a matching trigger that fires when that condition becomes true again, and make its threshold or duration match the condition's exactly. Where a room could be left in the wrong state for a long time, suggest a slow time-pattern backstop with a longer quiet window than the main trigger, so it doesn't override a light someone set by hand. Point out any guard that relies on a slow signal, like humidity after a shower, when a faster one exists, and suggest using the fast one as primary with the slow one as backup only when the fast one is unavailable. Make sure every guard allows the normal action when all of its sensors are unavailable. Then tell me how to test each guard in Developer Tools, including the case that originally failed.

Home Sep 17, 2026

## [A Switch That Feeds Smart Bulbs Is Not a Light](https://willcurran.com/blog/a-switch-that-feeds-smart-bulbs-is-not-a-light?hsLang=en)

Give this to your AIHelp me audit my smart home for power feeds that my system treats as lights. I use \[Home Assistant or your hub\]. Go through my device list and flag every wall switch, relay or smart plug that powers a smart bulb, LED strip, hub or repeater, and ask me about any you can't tell. For each one, show me every automation, scene and group that could switch it off, including groups that contain it as a member. Propose an exclusion for each, or a change to a non-light device type, and write a one-line "power feed, do not switch off" description for each device and automation. Then help me set my bulbs' power-on behavior to off or last state, with a checklist to re-verify it after a power cut. When we test, read the state back only after any other automation has had time to react, and check the bulbs themselves, not only the switch. Treat logbook entries with no context as unknown, never as proof that a person did it.

Music Sep 15, 2026

## [Getting Viewers onto My Drop List Without Leaving Twitch](https://willcurran.com/blog/drop-list-without-leaving-twitch?hsLang=en)

Give this to your AIHelp me let viewers join my \[list service\] list from a panel under my Twitch stream without leaving the page. Before anything else, help me set up a plain Twitch panel that links to my signup page, so viewers can join while the extension is in review. Then check my list service's embed snippet against Twitch's extension content rules; if it needs outside scripts or frames, design my own form instead. Build a panel extension with one responsive front end for desktop and mobile: a \[phone or email\] field, the consent wording my list service requires, and links to its terms and privacy policy. Put the list service's key in a small backend on \[hosting platform\], never in the extension zip, because Twitch serves that zip publicly. The backend should confirm each request came from my channel's extension, forward the signup, store no contact details, and never write them to a log. Give me a test plan that ends with one real signup end to end. Then walk me through Hosted Test and review, and remind me that until review passes, only accounts on my test list will see the panel.

Music Sep 13, 2026

## [A Healthy Container and a Blind DJ App](https://willcurran.com/blog/healthy-but-blind?hsLang=en)

Give this to your AIHelp me harden a now-playing pipeline for DJ streaming. A listener app reads my decks over their network feed and sends a track event to \[chat bot\], \[visuals software\] and \[library play counts\]. The listener only discovers decks at startup and can't reconnect, so it can go blind while its process looks fine. Build: (1) a last-detection timestamp the listener exposes on every track event; (2) a health check that fails only when the decks are broadcasting and that timestamp is older than \[N\] minutes, and passes when the rig is off; (3) a start gate that waits for a beacon from a real deck, ignoring devices that announce but don't serve data; (4) a watchdog that restarts the listener on a failed check, capped per hour; (5) delivery checks read at each consumer, never from the sender's log. Never test by sending a fake track while I'm live. In every probe script, capture the exit code of the command under test, not the last command in a pipe.

Music Sep 12, 2026

## [Let Guests Pick the Music Without Your Wi-Fi Password](https://willcurran.com/blog/guests-pick-the-music?hsLang=en)

Give this to your AIHelp me let guests add songs to my home speakers without sharing my Wi-Fi password or changing my network. My speakers are \[brand/model\] and I use \[streaming service and plan\]. First, check the service's current support pages for a group-queue feature like Spotify Jam: how guests join, whether they need to be on my network, and which plan each side needs, in person and remotely. List the host controls and what happens when the host leaves. Then explain what would happen if a guest connected to a speaker directly from their own account instead: does the speaker log out my account, and how do I get it back? Give me a quick test I can run with a second phone before anyone arrives.

Music Sep 11, 2026

## [One Set of Cameras, Two Uses: NDI in My DJ Studio](https://willcurran.com/blog/one-set-of-cameras-two-uses?hsLang=en)

Give this to your AIHelp me plan an NDI camera setup for a home DJ studio where the same cameras feed two computers: one running \[visuals software\] for effected looks, and one running \[streaming software\] for clean camera shots. My cameras are \[list cameras and outputs\], and my sound comes from \[mixer or audio path\]. For each piece, tell me whether it sends or receives full-bandwidth NDI, NDI|HX, or both, and flag any pair that won't talk. If I also want a program on \[screen\], recommend a decoder that handles full NDI. Give me a bring-up order that tests one link at a time, and before I declare any device dead, have me rule out the switch port and cable. For lip-sync, have me check the lag first; if it is noticeable, set each video buffer just above its measured jitter, then delay the audio to match the picture rather than cutting video buffers further. Remind me to enable the display's Game mode and to consider 60 fps. If I want a camera on my hands, compare a fixed overhead mount with a tracking camera.

Music Sep 10, 2026

## [One Calendar Drives My Twitch Schedule and Discord Events](https://willcurran.com/blog/one-calendar-twitch-discord-events?hsLang=en)

Give this to your AIHelp me build a one-way sync from one Google Calendar to my Twitch schedule and my Discord server's scheduled events. Google is the only source; edits on Twitch or Discord get overwritten. Before mapping recurrences, check Discord's current docs for which recurrence fields an app can't set (count and end were on that list when I built mine), and only turn a Google series into one recurring Discord event if Discord can express it and it never ends. Expand everything else into one-off events inside a rolling window, including any series with a cancelled occurrence, and remember that a series was expanded so it doesn't flip back. Keep a database of every event the sync created and never touch anything outside it. Default to dry run, stop if a pass would delete more than a few events, treat an empty calendar response as an error, and edit events in place. Optionally generate a cover image per event, cached so unchanged events cost nothing.

Home Sep 8, 2026

## [Three Answers I Found in the Home Assistant iOS App's Source](https://willcurran.com/blog/three-answers-in-the-ios-app-source?hsLang=en)

Give this to your AII am seeing \[describe the behaviour\] in \[open-source app\] version \[version\] on \[platform\]. Before I file a bug, help me find out from the source whether it is intended. Clone the public repository shallowly, plus any server or relay repository the feature passes through. Start from the exact text I see on screen, find its key in the strings files, and follow it to the code that decides the behaviour. For every claim, give me the file, the line and the commit or release tag it came from, and check the release tag that matches my version as well as the main branch. List the pull requests merged after my version that touch this code. Search open and closed issues for the symptom and quote only what maintainers actually wrote. Tell me whether this is a bug, intended behaviour, or already fixed in a later version, and if it is a bug, draft a short report that points at the exact lines.

Home Sep 5, 2026

## [20.9 GiB in 14 Days: One Integration Wrote 57% of the Rows](https://willcurran.com/blog/recorder-database-bloat?hsLang=en)

Give this to your AIHelp me find out what is filling my Home Assistant recorder database. I will give you the database size, my recorder keep-days setting, and my recorder config. First, work out the per-day growth and tell me whether the purge looks healthy. Then walk me through Developer Tools step by step: listen to state change events and entity registry update events for a minute each, and help me read the results to find the top writers and any integration that is churning device records. If I give you a copy of the database (taken with Home Assistant stopped, never the live file), write and run the queries yourself and give me rows per table, per entity and per event type as percentages. Before you suggest any exclude, check whether that entity has long-term statistics, and warn me that excluding it stops them. Rank fixes with the noisy source first and recorder filters last, and do not change anything until I say so.

Builds Aug 30, 2026

## ["Precise" Is Less Precise](https://willcurran.com/blog/precise-is-less-precise?hsLang=en)

Give this to your AIHelp me set Meshtastic position precision. I want my node on the public MQTT map at about \[distance\], and on my private channel I want \[full precision / a blur of about distance\]. Treat the channel precision and the map report precision as two separate settings. For the map report, only use values from 12 to 15, because current firmware swaps anything else (including 32 and 0) for 14. Work out the radius as half the box, 2^(31 − bits) × 0.0000001° × 111.32 km, and show me the table for 12 to 16. Tell me how to set each one with the official app or Python CLI, and how to confirm in the node log that my map report value wasn't replaced.

Builds Aug 29, 2026

## [Terrain Beats Floors](https://willcurran.com/blog/terrain-beats-floors?hsLang=en)

Give this to your AIHelp me rank candidate Meshtastic router sites in \[region\] from my list of \[sites\] with addresses. Step 1: get building heights from USGS 3DEP lidar (the public EPT data on AWS) using Python and laspy, clipped to OpenStreetMap footprints. Do not use a raw height percentile, because trees inflate it. Rasterise each footprint at 1.5 m, keep the max return per cell, and take the highest level supported by one connected patch covering at least 2% of the footprint. Add plausibility ceilings by building type. Step 2: from AWS terrain tiles, compute HAAT, a 36-direction horizon, and line of sight with Fresnel clearance at \[frequency\]. Step 3: score each site by what it adds to \[my mesh\], not by area covered, and flag any site with no existing router in sight. Clamp negative HAAT to zero. Put the weights in a separate tab and show me a link budget for the top hops. Also list any high ground near me that beats every roof.

Home Aug 28, 2026

## [What Broke When I Delegated the Contractors](https://willcurran.com/blog/delegating-the-contractors?hsLang=en)

Give this to your AIHelp me coordinate home contractors for \[jobs\]. Draft every outbound message for my approval; never send without my yes on that specific message. Track each job as one task in \[task app\] with a dated log of every contact, and close it only when I confirm the work is done. Contact each business at most once per day across all channels, then wait at least three business days, skipping weekends. Keep messages warm and short. Never claim or imply you are a person. We will decide up front how you identify yourself, and if anyone asks whether they're talking to an AI, say yes, plainly, every time. Respect a no: if a business says they don't want to deal with an AI, stop and hand it to me. Never escalate tone; if they go quiet after a few tries, draft a friendly goodbye. If they would rather talk to a person, thank them and tell me. Never share my budget. Confirm a message was delivered before logging "no response". Put a calendar hold on any date you ask for. When a job ends, remove every task, hold and follow-up for it.

Builds Aug 26, 2026

## [Hears Everything, Heard by No One](https://willcurran.com/blog/heard-by-no-one?hsLang=en)

Give this to your AIHelp me work out why my Meshtastic node at \[where it is mounted\] seems to transmit poorly while it still receives. First, help me pull its receive signal-to-noise for a few fixed neighbor nodes over the last \[number\] days and tell me whether it changed. Explain why flat receive clears the antenna, cable and connectors. Then help me use \[my region's community map or collector service\] to measure, per day and per packet, what share of my broadcasts any gateway that isn't mine heard, and tell me whether the change is a step or a slope. Give me a plan to send deliberate test messages and check who heard them. Finally, walk me through a two-setting transmit power test read at \[my second node\] in a fixed spot, and how to read the result: about the full difference means the amplifier responds and any loss is after it, and much less means the amplifier is stuck. Don't change anything on my node without telling me first.

Home Aug 22, 2026

## [Half a Light Curtain Said “Success” and Did Nothing](https://willcurran.com/blog/half-a-light-curtain?hsLang=en)

Give this to your AIHelp me move my Wi-Fi LED lights in Home Assistant to local control and prove each physical unit works. The lights are \[brand and model\], and I think I have \[number\] of them. First, help me check whether a product I think of as one fixture is actually several controllers, and make sure every controller appears as its own light. Check whether my current integration discovers devices only by multicast, and if it finds nothing without logging an error, help me find a local bridge that lets me address each device directly. Then give me a test plan: send one command at a time to each unit while I watch the lights, and compare each unit with an identical one that works. Treat a "success" reply or a reported "off" state as unconfirmed until I've seen the light change. If one unit acknowledges every command and never changes, help me write it down as a likely hardware fault and list the physical checks to do next.

Home Aug 18, 2026

## [Spray Foam Doesn't Pay for Itself on Power Alone](https://willcurran.com/blog/spray-foam-power-alone?hsLang=en)

Give this to your AIHelp me decide how to insulate and cool my garage in \[climate\]. It is \[size\] with \[describe walls, attic, door\]. Here is a summer of temperature readings from inside it: \[paste or summarize\]. Estimate the cooling load uninsulated and after insulation, and size a ductless mini-split for each case, adding margin for capacity loss at high outdoor temperatures. Only consider units rated to cool at or above my design outdoor temperature. Compare two insulation paths: blown-in on the ceiling with a door kit and air sealing, and spray foam at the roofline with the walls and door. For each, show the load cut, the unit size it allows, and simple payback on electricity alone. Then list the benefits payback leaves out, such as air sealing, unit runtime and protecting stored items, so I can weigh them myself. Recommend open or closed cell for my climate. Express results as ratios against the uninsulated case.

Builds Aug 7, 2026

## [Two Tiers for Local AI](https://willcurran.com/blog/two-tiers-local-ai?hsLang=en)

Give this to your AIHelp me plan a two-tier local AI setup. First, read my usage logs and report how my tokens split between new input, re-read context and output, and how my jobs split by difficulty. Then, for each model I'm considering, calculate KV cache size per token and at my longest real context, from the model's own config, and show how many of my long sessions fit beside the weights on the hardware I name. Propose a routing table: easy recurring jobs to a local resident model, high-stakes work to a hosted frontier model, long conversations to whichever tier holds the cache. List the numbers you could not find published, prefill speed first, and tell me how to measure each on rented hardware before I buy anything.

Builds Aug 3, 2026

## [Will Renaming My Node Every Hour Break the Mesh? The Airtime Math](https://willcurran.com/blog/node-rename-airtime-math?hsLang=en)

Give this to your AIHelp me decide whether a mesh node that renames itself with the live temperature is safe for a shared LoRa channel, and then build it. First, compute LoRa time on air for my preset (spreading factor, bandwidth, coding rate, preamble) and my node-info packet size, multiply by a relay factor I give you, and compare the added airtime per day against the node's normal node-info broadcasts and against one hourly text post. Then write a script that runs at most hourly, reads the temperature, rounds it to a whole degree, and renames the node only when the rounded name changes. Drop the number if the reading is older than 5 minutes or outside a sane range. Validate both names by UTF-8 byte length, not character count, and avoid emoji with a variation selector. Do not change the broadcast interval. Log every rename and every node restart, and tell me to watch the first few renames on the real device before leaving it running.

Builds Jul 31, 2026

## [The Radio That Lied About Dying](https://willcurran.com/blog/radio-that-lied-about-dying?hsLang=en)

Give this to your AIHelp me set up a Linux-based Meshtastic base station on \[Raspberry Pi model\] with \[LoRa board\], running the Linux Meshtastic daemon as a system service. Before the first start, show me how to turn transmit off in the saved config, and how to confirm it is off by reading it back. Have the service call the daemon directly, not through a wrapper script, so a crash reports as a failure. Keep the system log on disk. Set the node database limit well above the \[expected number\] of nodes my mesh will reach, and explain what happens when it fills. Check whether my node ID stays the same across restarts, and if it changes, show me how to pin it. If the radio ever seems dead, give me a read-only way to check that the radio chip answers before I blame the hardware. Finally, help me write a monitor that alerts when the newest received message stops getting newer, and a rule to re-check the transmit setting after every LoRa config change.

Builds Jul 30, 2026

## [An E-Ink Truck Dashboard That Admits When It Doesn't Know](https://willcurran.com/blog/eink-truck-dashboard?hsLang=en)

Give this to your AIBuild me a private TRMNL webhook plugin that shows my electric vehicle's charge, range, cabin temperature and any open doors or panels, fed from Home Assistant. Every field must be one of three things: a value, an explicit false, or null. Never coerce unknown or unavailable to 0. In the template, test with explicit nil, true and false comparisons, not a default filter. Null numbers render as a dash, null checks as an outlined question mark, and if closure data is missing the vehicle outline goes dashed. A real 0% charge still warns; a null never does. Because TRMNL skips unchanged payloads, include a coarse "minutes since last report" bucket so a dead feed changes the payload and shows a stale badge, and always print the date in the timestamp. Send everything through one queued script with a minimum gap g where floor(3600/g)+1 stays under the hourly webhook limit. Urgent changes queue; routine ones are dropped. Write tests that fail if missing data shows either a pass or a fail.

Music Jul 29, 2026

## [Every Wireless Turntable Is Late](https://willcurran.com/blog/every-wireless-turntable-is-late?hsLang=en)

Give this to your AIHelp me get records playing on my multiroom speaker system. My system is \[brand and models\], and my turntable is \[model, or "not chosen yet"\]. First, compare two paths: a wireless turntable (Bluetooth or UPnP/Wi-Fi) and a wired turntable plugged into the line input of one streaming amp that broadcasts to the others. For each, find the manufacturer's published latency or buffering notes and link them; don't guess numbers. Check whether my amp's line input needs a phono preamp, whether it can share that input with a group, and whether the group lead's own output is delayed to match the group. Tell me where any delay lands: at the turntable itself or only on the other speakers. If wireless still looks right for me, give me a free discovery test with a UPnP control-point app first. End with a parts list and setup steps, with no shopping links.

Home Jul 28, 2026

## [My Motion Sensor Gave Up Above 100°F](https://willcurran.com/blog/my-motion-sensor-gave-up-above-100f?hsLang=en)

Give this to your AIHelp me automate outdoor misters in \[automation system\] so they run only when a person is outside, in a climate where it gets above \[temperature\]. I have \[camera with person detection\], \[optional PIR motion sensor\] and \[switch or valve for the misters\]. First, explain why a PIR loses contrast when the background is near body temperature, and work out the temperature range where mine may be unreliable, using the manufacturer's minimum temperature difference. Then design three separate pieces: a start trigger that uses only camera person detection, an optional hold where motion can extend a run but never start one, and a hard cap that turns the misters off after \[minutes\] without a fresh person detection. Give me a test plan that runs in the hottest part of the day with the misters on.

Builds Jul 27, 2026

## [The Day the Home Server's SSD Died](https://willcurran.com/blog/home-server-ssd-died?hsLang=en)

Give this to your AIHelp me write a rebuild runbook for my Home Assistant box before I need one. First, look at my newest backup: list the largest files inside it with their sizes, and flag anything that isn't configuration, such as old database copies or git history. Check whether my backups are completing, not just being attempted, and propose an alert on backup age and on the size of the config folder and history database. Then find out how Home Assistant OS installs on my hardware, list what I need on hand to do it, and check the current OS release for open boot problems on my board, so I know which version to install. Write the steps in order: flash, first boot, one deliberate reboot, network settings, restore, then a verification list that starts with whatever fails silently.

Home Jul 25, 2026

## [With a BedJet, Cooling Comforters Are Wrong](https://willcurran.com/blog/bedjet-cooling-comforters-are-wrong?hsLang=en)

Give this to your AIHelp me choose a comforter. Before you recommend anything, ask me what is underneath it: my bed size, my sheets, any mattress topper, and whether I use an active system that blows air or circulates water under the covers. If I use an air-based system such as a BedJet, treat the comforter's job as holding that air in: recommend a midweight insert in a tight-weave cover such as sateen or twill, and steer me away from linen, gauze, waffle, jersey, low-thread-count percale and cool-touch shells, which let the air escape. Check the system maker's own bedding guidance and cite it. If I have no active system, give me the usual breathable, natural-fiber advice instead. For any product marketed as cooling, tell me what the mechanism is (fiber, weave, phase-change or cool-touch finish) and how long it lasts next to a warm body.

Home Jul 24, 2026

## [A Radar That Sees You Sitting Still](https://willcurran.com/blog/radar-that-sees-you-sitting-still?hsLang=en)

Give this to your AIHelp me set up an mmWave presence sensor in Home Assistant for \[room\], so \[devices\] turn on when someone enters, stay on while they sit still, and turn off soon after they leave. The sensor is \[model\], with \[list its radars and PIR\]. First, read the vendor's documentation end to end and tell me which outputs to use for on and off. Ask whether I care about one spot (like a desk) or where someone is in the room, then recommend a ceiling or wall mount and explain what that does to the tracking range. Help me plan the zones and exclusion zones, and list common false-trigger sources to mask, like fans, windows, doorways and fixed objects. Before writing any automation, have me log the raw target positions and zone states for a day, then pick off-delays from that data. If zones are mutually exclusive, make sure the off logic waits until all relevant zones are clear.

Events Jul 2, 2026

## [Taking an RV to a Festival That Bans Generators](https://willcurran.com/blog/rv-festival-generator-ban?hsLang=en)

Give this to your AII want to camp in an RV at \[event\], and I need to know whether I can run the air conditioner there. First, find the event's official rules on generators and on electrical hookups, and quote the page and the date you read it. List every camping option that includes power, with the amperage. Then do the energy math with my numbers: battery \[Ah\] at \[voltage\], solar \[watts\], A/C running draw \[watts\], and the hours a day I expect the compressor to run. Show your assumptions for usable depth of discharge, inverter efficiency and peak-sun hours. Tell me how many hours the battery runs the A/C, what the solar adds per day, and how much battery I would need to close the gap. Separate the small loads (fridge, lights, pump, fans, charging) from the A/C, so I can see what works without a hookup. Finish with the questions I should ask the organizer about the hookup itself.

Events Jul 1, 2026

## [We Brought a Weather Bot to a Festival. It Died on Day Three.](https://willcurran.com/blog/festival-weather-bot?hsLang=en)

Give this to your AIBuild me a weather bot for an off-grid LoRa mesh that runs on a small computer next to a mesh node. It reads its location from the node's GPS, falling back to a second GPS source when the node's fix is more than 30 minutes old. On a schedule a few minutes after the hour, it posts current conditions; each morning, a short forecast. It looks about six hours ahead and, if rain is coming, posts one plain instruction, debounced so it doesn't repeat. It posts a "forecast changed" message only when the high or low moves 8°F or more, gusts cross 20 mph, or the rain chance moves 30 points. Hazard warnings go to the main channel and the weather channel; the all-clear goes to the weather channel only. Resolve DNS over HTTPS for the bot's fetches, with 12-second connect timeouts and several spaced retries. Any function whose output is captured must log only to stderr. Add a watchdog that can power-cycle the node, with a cooldown so it can't loop.

Events Jun 29, 2026

## [When Each Electric Forest Tier Actually Sells Out](https://willcurran.com/blog/electric-forest-tier-sell-out-times?hsLang=en)

Give this to your AIHelp me plan festival lodging for a group using last year's sell-out data. I will paste three things: the festival's official presale schedule (tier names, open times, how long each tier stays open, and the per-account limit on passes and packages), a sell-out log from the last one or two on-sales with a timestamp for each item, and my group's list of people with their loyalty tier and what kind of lodging each wants. First, place every sell-out time inside the presale window it happened in, and tell me how many minutes in. Flag any item that sold out before a later tier opened. Then, for each lodging item my group wants, find the lowest tier that could still buy it, and tell me which person in my group should buy it given the purchase limits. Mark anything no one in the group can reach as a waitlist or resale long shot. Don't assume this year will match last year; tell me where the two years disagree.

Music Jun 3, 2026

## [A 24/7 Discord Radio That Throws a Release Party](https://willcurran.com/blog/discord-radio-release-party?hsLang=en)

Give this to your AIHelp me build a 24/7 radio for my Discord server using \[open-source Discord music bot\]. I want one bot to stay in a voice channel and rejoin on its own if it gets disconnected. Keep my source playlists newest first, using only mixes I have permission to play. Write a job that merges those playlists, removes duplicates, sorts by publish date with the newest first, and records an "updated at" time. In the bot, add a loop that checks that time every 30 seconds, reads the playlist only when it changes, compares it against a stored set of track IDs already queued, and puts new tracks at the front of the queue without stopping the track that is playing. Show the current track in the voice channel's status line. Finally, give me a health check that fails when the bot isn't connected in the channel, and one that fails when no new mix has arrived for longer than \[normal gap between releases\].

Music Apr 4, 2026

## [Beat-Synced Visuals for a Whole DJ Library](https://willcurran.com/blog/beat-synced-visuals?hsLang=en)

Give this to your AIHelp me build a tool that makes beat-synced visuals for each track in my DJ library. For each audio file: detect the tempo, beats and phrases (intro, build, drop, breakdown, outro), split stems for drums, bass, synths and vocals, and estimate mood. Group the phrases by type. For each phrase type, generate one keyframe image from a prompt built from genre and mood, then one image-to-video loop of 2 to 4 bars at the track's tempo. Loop each clip to fill every section of its type. After generation, add a brightness flash on every beat and a zoom pulse on every bar from the track's beat grid. Encode to DXV for Resolume, with one layer per deck and each clip linked to its track by title. Before generating anything, estimate the song's cost; enforce a per-song cap, and if the estimate is over it, step down to a cheaper video model. Log the cost of every call. Never poll a paid API to check the account balance.

[Will Curran](https://willcurran.com/?hsLang=en)

[LinkedIn — 29,339+ followers](https://www.linkedin.com/in/willcurran) [GitHub](https://github.com/rancur) [YouTube](https://www.youtube.com/channel/UCJgscc27l4fpkWx1SeK05xg/) [Spotify](https://open.spotify.com/user/rancur) [SoundCloud DJ mixes](https://www.soundcloud.com/thewillsee) [Twitch](https://www.twitch.tv/thewillsee) [Last.fm](https://www.last.fm/user/default) [Trakt — movies & TV](https://trakt.tv/users/willcurran) [Goodreads](https://www.goodreads.com/user/show/55302838-will-curran) [Will See Music](https://www.thewillsee.com) [Arizona Meshtastic](https://azmsh.net) [Electric Forest Meshtastic](https://efmesh.com)

© 2026 Will Curran — All rights reserved. [RSS](https://willcurran.com/blog/rss.xml?hsLang=en) [Back to top](https://willcurran.com/blog/give-this-to-your-ai#main)