<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://truesignal.live/blog/feed.xml" rel="self" type="application/atom+xml" /><link href="https://truesignal.live/" rel="alternate" type="text/html" /><updated>2026-05-09T20:41:31+00:00</updated><id>https://truesignal.live/blog/feed.xml</id><title type="html">TrueSignal</title><subtitle>Real-time connection quality monitoring. Your bars lie. This doesn&apos;t.</subtitle><author><name>Dave Schwind</name></author><entry><title type="html">A Use for Capture Sessions I Didn’t See Coming</title><link href="https://truesignal.live/blog/a-use-for-capture-sessions-i-didnt-see-coming/" rel="alternate" type="text/html" title="A Use for Capture Sessions I Didn’t See Coming" /><published>2026-05-09T00:00:00+00:00</published><updated>2026-05-09T00:00:00+00:00</updated><id>https://truesignal.live/blog/a-use-for-capture-sessions-i-didnt-see-coming</id><content type="html" xml:base="https://truesignal.live/blog/a-use-for-capture-sessions-i-didnt-see-coming/"><![CDATA[<p><em>I built Capture Sessions for one specific job. Last week, mid-meeting, I accidentally found another…and it changed how I think about my own app.</em></p>

<hr />

<p>Folks!</p>

<p>The best part of building TrueSignal — by a long way — is hearing how people actually use it. The folks doing real work, in real places, with real connections that misbehave in real ways.</p>

<p>And sometimes, the user with the new story is <em>me</em>.</p>

<h2 id="the-moment">The moment</h2>

<p>Last week, I was on a work call. <em>The</em> kind of work call. The other person’s voice kept going garbled-clear-garbled. I kept saying “say that again?” Their video would freeze and unfreeze. And of course…the question that anyone who’s worked from home for any meaningful stretch knows by heart:</p>

<p><strong>Is it me? Is it them? Is it the call platform?</strong></p>

<p>Then (I’m not making this up) the lightbulb went off mid-sentence.</p>

<blockquote>
  <p><em>Wait. I built an app for this.</em></p>
</blockquote>

<p>I opened TrueSignal, tapped Pro, tapped Capture Sessions, picked 30 minutes, hit start, and went back to the call.</p>

<p>What I had for the rest of that meeting was something I genuinely didn’t expect to find useful in real time: <strong>a live, scrolling, second-by-second visual of my own connection, sitting right there, with the median ping number ticking along beneath it.</strong></p>

<p>Every time the call hiccupped, I could glance at the chart. Was there a red candle that lined up with the freeze? Was the median ping climbing? Or was the chart green and steady — meaning the problem was <em>somewhere other than my connection</em>?</p>

<p>Spoiler: the chart was green. <em>It wasn’t me.</em> It rarely is, but now I had actual proof, in real time, that I could act on instead of guess at.</p>

<h2 id="the-use-case-i-didnt-build-for">The use case I didn’t build for</h2>

<p>Quick context for anyone new here: Capture Sessions is the headline Pro feature in <a href="/blog/capture-sessions-and-how-truesignal-3-0-came-to-be/">TrueSignal 3.0</a>. It’s a foreground-locked recording of your connection quality, exportable as a PDF you can hand to your ISP. The pitch is “ISP-grade defensible artifact” — <em>after-the-fact</em> evidence for a fight you’re trying to win.</p>

<p>That’s still the headline use, and it’s still the one that justifies the feature.</p>

<p>But during a 30-minute meeting where you’re <em>actively</em> trying to figure out where the breakdown is…that scrolling chart, with the median ping right there, is <em>also</em> a real-time diagnostic. <strong>You don’t even need to export anything.</strong> You don’t need to save it. You just need to look at it when something feels off, and the chart tells you what’s going on.</p>

<p>It’s the same feature. Just used differently.</p>

<p>You commit to a window (because that’s what Capture Sessions does — locked duration, no fishing). You hit start. And then for the rest of that window, you have an honest, second-by-second record of your connection in your hand, glanceable any time. If you decide later you want to send the PDF to your ISP, great. If you don’t, that’s also great. <em>The chart did its job either way.</em></p>

<h2 id="why-this-matters-briefly">Why this matters (briefly)</h2>

<p>There’s a thing that happens when you build something specifically for one job and then watch users (including yourself!) find a second one. It tells you the underlying primitive is right.</p>

<p><em>Capture Sessions isn’t really an ISP-evidence feature.</em> It’s an honest, time-bound record of your connection that can be used in whatever way is most useful to you. “ISP evidence” is one use. “Mid-meeting check” is another. There are probably others I haven’t thought of yet.</p>

<p>That last sentence, by the way, is where I always end up. Every time I’ve thought I knew exactly how a TrueSignal feature would get used, a user has shown me a use I didn’t expect. Every. Single. Time. (I’m pretty sure that’s a sign I should keep listening!)</p>

<h2 id="try-it-on-your-next-bad-meeting">Try it on your next bad meeting</h2>

<p>If you’ve got Pro, try this the next time you’re on a call where things are misbehaving:</p>

<ul>
  <li>Hit Pro → Capture Sessions</li>
  <li>Pick a duration that covers your meeting (30 minutes is a great default)</li>
  <li>Hit start</li>
  <li>Go back to your call</li>
  <li>Glance at the chart whenever something feels off</li>
</ul>

<p>You don’t have to save it. You don’t have to export anything. <strong>You just have to be able to look at the chart and know.</strong> That’s the whole pitch.</p>

<p>And if it turns out the problem really <em>is</em> on your side? Now you have the evidence to do something about it, including (you guessed it) firing off a PDF to your ISP.</p>

<h2 id="closing-the-loop">Closing the loop</h2>

<p>Thank you, as always, for being part of this. The fact that real people are out there using TrueSignal — in their homes, on their commutes, on calls with their bosses — is genuinely the best part of building it.</p>

<p>If you’ve found a use for Capture Sessions (or any part of the app) that I haven’t thought of, <em>please</em> send me a note. I read every one. The last few times I’ve learned something fundamental about my own app, it’s been from a user telling me how they actually use it. <strong>Keep doing that.</strong> It makes the app better for everyone.</p>

<p>There’s a 3.1 in progress, and there’s something <em>really</em> fun cooking in it. More on that another day!</p>]]></content><author><name>Dave Schwind</name></author><summary type="html"><![CDATA[I built Capture Sessions for one specific job. Last week, mid-meeting, I accidentally found another.]]></summary></entry><entry><title type="html">Capture Sessions, and How TrueSignal 3.0 Came to Be</title><link href="https://truesignal.live/blog/capture-sessions-and-how-truesignal-3-0-came-to-be/" rel="alternate" type="text/html" title="Capture Sessions, and How TrueSignal 3.0 Came to Be" /><published>2026-05-03T00:00:00+00:00</published><updated>2026-05-03T00:00:00+00:00</updated><id>https://truesignal.live/blog/capture-sessions-and-how-truesignal-3-0-came-to-be</id><content type="html" xml:base="https://truesignal.live/blog/capture-sessions-and-how-truesignal-3-0-came-to-be/"><![CDATA[<p><em>Or: what happens when “I want to prove this to my ISP” turns into the headline feature of a 3.0 release.</em></p>

<hr />

<p>One of the best parts of building TrueSignal has been hearing from folks who actually <em>use</em> it. Folks doing real things, in real places, with real connections that <em>actually misbehave in real ways</em> — not the kind of misbehavior the bars at the top of your phone are good at telling you about.</p>

<p>And, almost universally, the same question kept coming back:</p>

<p><strong>“How do I prove this to my ISP?”</strong></p>

<p>That’s the question that launched TrueSignal 3.0. And specifically, that’s the question that became Capture Sessions…the headline (and coolest!) addition since the app launched.</p>

<p><strong>TL/DR:</strong> TrueSignal 3.0 is live. The big new thing is Capture Sessions — a Pro feature that lets you record a witnessed timeline of your connection quality and export it as a PDF you can hand to your ISP. There’s a cleaner Monitor screen, a reorganized Pro hub, and a pile of polish fixes. If you just want to grab the update, hit the App Store or Google Play and skip the rest of this post (no hard feelings!). If you want the build story, keep going.</p>

<hr />

<h2 id="the-problem-with-we-dont-see-anything-wrong-on-our-end">The problem with “we don’t see anything wrong on our end”</h2>

<p>Anyone who’s ever called their ISP knows this line. <em>We don’t see anything wrong on our end.</em></p>

<p>Sometimes it’s true! Sometimes the issue <em>is</em> on your end (did you pay your bill??). But often enough, it isn’t. Often the problem is somewhere between you and the ISP’s monitoring gear…which means <em>they</em> don’t see it, but you live with it every day. Calls drop. Streams stutter. That all-hands meeting freezes at the worst possible moment.</p>

<p>The ugly truth is that ISPs aren’t malicious here. They genuinely don’t see it. Their monitoring runs at the head-end and shows their gear is up. They’re not lying when they tell you everything looks good on their end…but everything <em>also</em> looks bad on yours, and there’s no shared language for that conversation.</p>

<p>Capture Sessions is an attempt at building that shared language.</p>

<h2 id="what-capture-sessions-actually-does">What Capture Sessions actually does</h2>

<p>You pick a server (or just use the default). You pick a duration — anywhere from 1 to 60 minutes. You hit start. TrueSignal pings the server every 2 seconds and renders a candlestick chart of your connection quality, second by second, scrolling right to left like a trading terminal. Green candles when things improved compared to the last bucket. Red when they got worse. The recording is locked once you start it — you can stop early or pause, but you can’t extend (more on why in a moment).</p>

<p>When you’re done, you save the recording. You give it a name and an optional note (“Zoom call dropping during 1pm meeting”). And then — this is the part that matters — you can export it as a PDF.</p>

<p>The PDF is what I keep calling the <strong>artifact</strong>. It’s got TrueSignal letterhead. It’s got the chart. It’s got a methodology disclosure (ping rate, bucket size, sample count, pauses). It’s got an executive summary in plain English. It’s got an ISP talking-points section. It’s got a full timestamped timeline table at the end.</p>

<p>It’s a piece of paper (or a file) you can attach to a support ticket and watch the conversation change.</p>

<h2 id="the-interesting-design-decisions">The interesting design decisions</h2>

<p>A few choices in Capture Sessions probably deserve explaining, because they were <em>not</em> the default thing to build.</p>

<h3 id="locked-duration">Locked duration</h3>

<p>Once a recording starts, you can’t extend it. You can stop early. You can pause (and the pauses are visible on the chart — more on that in a second). But if you started a 15-minute recording and at minute 14 your connection finally has its bad moment, you can’t tack on another 15 minutes to “get a better one.”</p>

<p>This was a deliberate philosophical choice. <strong>The artifact has to be defensible.</strong> If users could keep recording until they got the result they wanted, the resulting PDF would mean less. By locking duration up front, every Capture Session represents a fair witness — <em>this is what happened during the window you committed to, no fishing</em>.</p>

<h3 id="honest-gaps">Honest gaps</h3>

<p>iOS does <em>not</em> let backgrounded apps reliably ping things on a schedule. This is a hard platform constraint and there’s no clean way around it. We tried. Many times. If you switch apps during a recording, TrueSignal’s ping engine hard-stops. We don’t fake samples to fill the gap. We don’t pretend nothing happened.</p>

<p>Instead, we render the gap <em>on the chart</em> as a visible band, document it in the metadata (“Pauses: 1, 23 seconds total”), and call it out in the PDF export. <strong>The honest version of the data IS the data</strong>. If your ISP looks at a Capture Session export and sees a 23-second pause, that’s part of the story…not a flaw to hide.</p>

<p>(I’ll be honest…some part of me wanted to smooth the values if there was a small interruption. It would <em>look</em> prettier. It would <em>feel</em> more complete. But it would also be a small lie, and the entire pitch of TrueSignal is that it doesn’t lie to you. So…no smoothing for Capture Sessions!)</p>

<h3 id="locked-methodology">Locked methodology</h3>

<p>Ping rate is fixed at 2 seconds. Bucket size is fixed at 6 seconds. You can’t tune either of these. Users get to pick the duration and the server. Everything else is locked.</p>

<p>This one took me a while to commit to. The customization-loving developer in me wanted to expose every knob. But every knob exposed is a knob someone could turn to game the result, and the artifact stops being defensible the moment someone could ask “but what if you’d set the ping rate higher?” Locked methodology means every Capture Session in the world produced by TrueSignal 3.0 uses the <em>same</em> settings. Statistical consistency across captures matters more than per-capture flexibility.</p>

<p>(There’s a metaphor here about how the most useful tools constrain you. I’ll spare you the philosophy and just say: lock the methodology, ship the feature.)</p>

<h3 id="helpful-hints">Helpful hints</h3>

<p>To get the most accurate reading, you need to stay in one location and avoid using the phone for other things. Remember, your connection can vary not just by your external factors, but also by what’s happening inside your phone. So, when you’re doing a test, it’s best to keep the phone steady, don’t walk around with it (you’ll get different readings in different locations) and resist the urge to use TikTok!</p>

<h3 id="its-not-just-about-the-isp">It’s not just about the ISP</h3>

<p>Proving something to your ISP was the use case for Capture Sessions, but just like anything, the way it’s <em>actually</em> used can vary immensely. To be honest, I’ve gone to various locations in my home and property just to see what the connection is like. For example, I have a large metal outbuilding and I’ve never figured out exactly what my connection is like out there, between being on the edge of my WiFi and the metal of the outbuilding. Capture Sessions is really fantastic for getting a granular diagnosis of what’s going on.</p>

<p>Long story short…if you downloaded the app, purchased Pro, you may be as nerdy as me about this stuff. Or, just super curious. Either way, I’m sure you’ll find ways to use this function, and the app overall, that I haven’t thought about. If you’ve figured out something really neat, or maybe you’ve thought “wow, I wonder if the app could do…” please drop me a note! I love hearing from users!</p>

<h2 id="the-other-30-stuff">The other 3.0 stuff</h2>

<p>Capture Sessions is my favorite function of the app thus far, so I’m a bit excited about it. But 3.0 also includes:</p>

<p>A <strong>cleaner Monitor screen.</strong> Same status dot, same metrics, more breathing room. The QoE card is gone (its information lived elsewhere already). The interval selector buttons are gone (Connection Sentinel handles that automatically and better). The result is a Monitor screen that does one thing — <em>show you whether your connection is good right now</em> — and gets out of the way. I wanted to get back to the basic “am I connected or not” question. What someone gets for free is exactly that: “am I connected?” They are welcome to, and encouraged, to dig into the Pro functions, but for a basic “am I connected?” this does it in as clean and simple a manner as possible.</p>

<p>A <strong>reorganized Pro hub.</strong> Connection Log is its own first-class destination now, not buried inside other screens. Pro features have icons that aren’t borrowed from Ionicons, the cartoon-looking icons that are seemingly everywhere. My icons are custom SVG, designed to feel like TrueSignal rather than feel like everyone else’s app.</p>

<p><strong>Polish fixes throughout.</strong> Some you’ll feel even if you don’t notice them. Some you’ll never notice and that’s fine, because the only people who would notice are the people who’d be annoyed if I didn’t fix them. (I noticed.)</p>

<h2 id="whats-not-in-30-yet">What’s not in 3.0 (yet)</h2>

<p>A few things on the cutting room floor for now, since we’re being honest:</p>

<p><strong>Cloud sync of Capture Sessions.</strong> Recordings live on-device. This is partly a privacy thing (TrueSignal doesn’t have a backend, by design — see <a href="/blog/why-truesignal-doesnt-know-where-you-are/">the privacy post</a>) and partly a “let me get v1 out the door” thing. We can revisit if folks want it.</p>

<p><strong>Screenshot detection.</strong> Taking a screenshot during a recording can briefly inflate measured latency by 50-100ms because of how iOS prioritizes the JS thread during capture. The fix is a small native module to flag affected samples, and it’s on the list. Not in 3.0. (I’ll write that one up as its own post — it’s a fun rabbit hole.)</p>

<p><strong>Android parity.</strong> 3.0 is iOS first. Android catches up shortly…the same code is there but the build pipeline takes a little longer. Maybe next week? I can’t control Google’s review process, or even make predictions on the timeline. But…don’t worry, Android friends! I haven’t forgotten about you!</p>

<h2 id="the-thing-im-asking-for">The thing I’m asking for</h2>

<p>If you’ve made it this far…thank you. Genuinely. The fact that anyone reads these posts at all is one of the consistently <em>coolest</em> things about doing this.</p>

<p>Try Capture Sessions. Run a recording. Export the PDF. Send it to your ISP, or just send it to yourself for a record. Tell me what works and what doesn’t. <strong>TrueSignal Pro is less than a single (small) cup of coffee</strong> and Capture Sessions is the new headline reason to have it.</p>

<p>And then — please — send feedback. What works? What’s confusing? What did you wish the PDF had on it? Where would you use a longer recording window? Is 60 minutes too short? Should we add a 4-hour mode for the truly patient?</p>

<p>How does it work for you?</p>

<p>I read everything. The folks in California, in Queensland, in Iceland, and in places I haven’t heard from yet — your stories are the reason this app exists, and the reason it’ll keep getting better.</p>

<p>There’s something <em>really</em> cool in the works for 3.1 too…but more on that another day.</p>

<p>Dave</p>]]></content><author><name>Dave Schwind</name></author><summary type="html"><![CDATA[What happens when 'I want to prove this to my ISP' turns into the headline feature of a 3.0 release.]]></summary></entry><entry><title type="html">Why TrueSignal Doesn’t Know Where You Are</title><link href="https://truesignal.live/blog/why-truesignal-doesnt-know-where-you-are/" rel="alternate" type="text/html" title="Why TrueSignal Doesn’t Know Where You Are" /><published>2026-04-26T00:00:00+00:00</published><updated>2026-04-26T00:00:00+00:00</updated><id>https://truesignal.live/blog/why-truesignal-doesnt-know-where-you-are</id><content type="html" xml:base="https://truesignal.live/blog/why-truesignal-doesnt-know-where-you-are/"><![CDATA[<p>One of the coolest things about developing this app is hearing from people all over the world who use it. I went to bed last night after hearing about it being used to diagnose home network issues in Iceland and I got an email this morning from a guy in Queensland, Australia, with some very valid questions.</p>

<p>This fellow is a real estate photographer. Lifetime Pro user. He spends his days driving from property to property, shooting interiors and exteriors and drone aerials, and then trying to dump 200+ RAW files to the cloud before his next appointment. He needs a solid connection.</p>

<p>His feedback was simple. Could TrueSignal show him a colored map of where signal strength was good around him? That way, when an upload was failing in one driveway, he could glance at the app and drive to the nearest known-good spot.</p>

<p>This is great feedback and something I’d LOVE to incorporate. But…alas…it’s also one TrueSignal <em>cannot</em> do. By design.</p>

<h2 id="the-early-decision-that-shaped-everything">The early decision that shaped everything</h2>

<p>Early in TrueSignal’s design, I had to make a call: should the app know where you are?</p>

<p>There are two camps of users out there…and the camps don’t overlap much.</p>

<p><strong>Camp One</strong> wants location services ON. They want maps, heatmaps, “remember the Wi-Fi at this coffee shop,” “tell me if I’m near a known-good signal location.” That’s a real, valid set of needs.</p>

<p><strong>Camp Two</strong> wants their phone to mind its own business. No tracking. No location pings sent to anyone. No “we’ll only use your location to improve your experience” boilerplate that they’ve learned to roll their eyes at. They want a tool that does its job and doesn’t phone home. (Did you read the recent news story from March 2026 about a French Navy sailor revealing the position of an aircraft carrier — the Charles de Gaulle, no less — by uploading his workout to a fitness app? TrueSignal prevents this, by design.)</p>

<p>Both camps are right, but want and need different things from a connection-quality app.</p>

<p>But you can’t really build for both at once. The minute the app knows where you are, the privacy story is gone…even if YOU never abuse the data, even if I never look at it, even if it’s never sent off the device. The promise of “this app does not know where you are” is binary. It’s either true or it isn’t.</p>

<p>I picked Camp Two.</p>

<h2 id="what-privacy-first-actually-means-here">What “privacy-first” actually means here</h2>

<p>A lot of apps say “privacy-first” and then quietly ask for your location, your contacts, push notification analytics, an account with your e-mail, and a Facebook login button “for convenience.” TrueSignal’s version is shorter:</p>

<ul>
  <li><strong>No GPS.</strong> The app does not request location permissions. Not on iOS, not on Android. Ever.</li>
  <li><strong>No account.</strong> There’s no signup, no login, no “create your TrueSignal profile.” Open the app and it just runs.</li>
  <li><strong>You pick the target.</strong> When TrueSignal pings something to measure your connection, you pick what it pings…whether that’s a public server, your own home/work server (highly recommended for those who want or need full control), or a target your IT team specifies.</li>
  <li><strong>No third-party tracking.</strong> Purchase verification goes through RevenueCat (which is unavoidable for in-app purchases), and that’s the only outside service the app talks to (and even they don’t get actionable data, save for purchase info).</li>
</ul>

<p>The result is that TrueSignal doesn’t know your name. Doesn’t know where you are. Doesn’t know which networks you’ve connected to. It <em>can’t</em>. That’s the design.</p>

<h2 id="the-cost-is-real">The cost is real</h2>

<p>For the folks in Camp One (Team “Location is Okay”)…I get it.</p>

<p>There’s a long list of really cool features I can’t add because of how TrueSignal is built. A heatmap of where you’ve had good signal? Needs location data. A map of “blackspots” near you? Needs location data. (Side note for the Australians and Brits in the audience: “blackspot” is the local term for what Americans call “dead zones.” Australia’s federal government even has an entire Mobile Black Spot Program funding new towers in underserved areas. Genuinely better word, in my opinion!) “Remember this Wi-Fi network and let me know when we’re back in range”? Needs location data.</p>

<p>The folks who want those features are not wrong. They have a real workflow problem – as important as dependable network connection is to TrueSignal.</p>

<h2 id="whats-coming">What’s coming</h2>

<p>I hate not having an answer to a nagging question (I’ve written a few books just because I wanted an answer to a couple of questions!). A few weeks ago, I started designing a sister app. One whose design center is the <em>other</em> camp (I see you, Team Camp One!)</p>

<p>Still privacy-respecting in the sense that your data stays on your device. But location-aware in the sense that it can do all the things TrueSignal won’t. A personal coverage map. A way to find good signal nearby. Tools for the user who needs to upload from variable places and doesn’t want to keep guessing.</p>

<p>It’s NOT “TrueSignal with location turned on.” It’s a different product, with a different design center, for a different user.</p>

<p>I’m not announcing the new app today. (Still in design, and I don’t want to over-promise on a release date I haven’t earned yet.) But I wanted to put it on the record: if you’re in Camp One…the camp that wants the location-aware version…I hear you. I’m working on it. And I’d love to hear from you when it’s ready.</p>

<h2 id="in-the-meantime">In the meantime</h2>

<p>TrueSignal is going to keep doing what TrueSignal does. Tell you whether your connection is actually working RIGHT NOW…and not phone home about anything else while it’s at it. The privacy aspect of TrueSignal isn’t an accident – it’s by design.</p>

<p>If you’re a TrueSignal user reading this: thank you. Your support means the world to me. If you haven’t downloaded TrueSignal, please do. Check it out. Try the Pro version – it literally costs less than a single (small) cup of coffee. Send me feedback. How does it work for you? Where are you using it? Are there ways it can improve? I love to hear user stories and I love to get feedback.</p>

<p>If you’re someone who needs the <em>other</em> thing: stay tuned. There’s something really cool in progress!</p>

<p>Dave</p>]]></content><author><name>Dave Schwind</name></author><summary type="html"><![CDATA[An email from a user this morning prompted some reflection on the privacy decisions baked into TrueSignal...and what's coming next.]]></summary></entry></feed>