<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: skymiller1509-blip</title>
    <description>The latest articles on DEV Community by skymiller1509-blip (@skymiller1509blip).</description>
    <link>https://dev.to/skymiller1509blip</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4239105%2Fd7a78d0f-f006-4ab0-b1e7-5f389c7f5303.png</url>
      <title>DEV Community: skymiller1509-blip</title>
      <link>https://dev.to/skymiller1509blip</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/skymiller1509blip"/>
    <language>en</language>
    <item>
      <title>Pulse Postcards: send your heartbeat to someone you love</title>
      <dc:creator>skymiller1509-blip</dc:creator>
      <pubDate>Wed, 11 Nov 2026 12:56:55 +0000</pubDate>
      <link>https://dev.to/skymiller1509blip/pulse-postcards-send-your-heartbeat-to-someone-you-love-2430</link>
      <guid>https://dev.to/skymiller1509blip/pulse-postcards-send-your-heartbeat-to-someone-you-love-2430</guid>
      <description>&lt;p&gt;What I built&lt;/p&gt;

&lt;p&gt;Pulse Postcards turns a 20-second heartbeat reading into a gift.&lt;/p&gt;

&lt;p&gt;The sender opens the app, reads a short consent screen in plain words, and looks at the camera for about 20 seconds. The Presage SmartSpectra SDK reads their pulse on the phone. The sender adds a photo and a short message. The app saves the postcard.&lt;/p&gt;

&lt;p&gt;When the person they love opens it, the photo softly glows and thumps in time with the sender's real heartbeat, beat for beat.&lt;/p&gt;

&lt;p&gt;It is a small, warm use of a serious technology: not a chart, not a diagnosis, just "this is how my heart beat when I thought of you."&lt;/p&gt;

&lt;p&gt;How it works&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Android app (Kotlin) using the Presage SmartSpectra SDK (com.presagetech:smartspectra 3.5.0).&lt;/li&gt;
&lt;li&gt;Capture uses the front camera and cardio metrics only. The app records the span of pulse readings over about 20 seconds, then stops itself.&lt;/li&gt;
&lt;li&gt;Playback does not play a generic beat. It replays the sender's measured pulse series: each segment of the recording sets its own beat interval (60 / BPM), with continuous phase, so the glow speeds up and slows down exactly as the sender's heart did.&lt;/li&gt;
&lt;li&gt;The pulse timing logic is covered by unit tests (6/6 passing). One of those tests caught a real beat-restart bug during the build.&lt;/li&gt;
&lt;li&gt;The app never invents numbers. If it cannot get a reading in good light after about 45 seconds, it says so plainly and asks the sender to check the light and hold still.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/skymiller1509-blip/pulse-postcards" rel="noopener noreferrer"&gt;https://github.com/skymiller1509-blip/pulse-postcards&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo video: &lt;a href="https://youtube.com/shorts/9PwnT6Uo9CE" rel="noopener noreferrer"&gt;https://youtube.com/shorts/9PwnT6Uo9CE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Setup: clone the repo, open in Android Studio, build, and install on an Android phone (Android 9 or later). On first launch the app asks for consent, then for your own free Presage API key, which it stores only on the device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consent and Data Handling&lt;/p&gt;

&lt;p&gt;This section matters, so here it is in plain words.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app shows a consent screen first, every time it is set up, before the camera ever opens. No consent, no camera.&lt;/li&gt;
&lt;li&gt;The camera is used only during a reading, for about 20 seconds, and only to measure pulse.&lt;/li&gt;
&lt;li&gt;No video is ever saved, stored, or sent anywhere. A postcard contains only the pulse numbers, plus the photo and message the sender chooses.&lt;/li&gt;
&lt;li&gt;Everything stays on the sender's device. Postcards are stored in the app's private storage on that phone.&lt;/li&gt;
&lt;li&gt;The Presage API key is entered by the user and stored in the app's private storage on the device. It is never in the code or the repository.&lt;/li&gt;
&lt;li&gt;SmartSpectra SDK telemetry is disabled in code (enableTelemetry = false), so the app sends no session summaries or device diagnostics.&lt;/li&gt;
&lt;li&gt;Pulse Postcards is not a medical device. It does not diagnose, treat, or monitor any condition, and it makes no health claims. It is a way to send a moment to someone you love.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I learned&lt;/p&gt;

&lt;p&gt;A heartbeat is personal data, even when it is just a number. Building this taught me to design the consent and the data handling first, and the delight second, and that the delight is bigger when the person sending their heartbeat knows exactly what happens to it.&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>showdev</category>
      <category>presagechallenge</category>
    </item>
  </channel>
</rss>
