<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Stargap]]></title><description><![CDATA[Stargap]]></description><link>https://stargap.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 03 Nov 2026 07:18:15 GMT</lastBuildDate><atom:link href="https://stargap.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The receipt is saved. Can you actually find it?]]></title><description><![CDATA[A receipt photo can be perfectly readable and still be hard to find six months later. The useful test is retrieval: leave the record, search for the item…]]></description><link>https://stargap.hashnode.dev/the-receipt-is-saved-can-you-actually-find-it</link><guid isPermaLink="true">https://stargap.hashnode.dev/the-receipt-is-saved-can-you-actually-find-it</guid><dc:creator><![CDATA[Stargap]]></dc:creator><pubDate>Fri, 16 Oct 2026 07:14:30 GMT</pubDate><content:encoded><![CDATA[<p>A receipt photo can be perfectly readable and still be hard to find six months later. The useful test is retrieval: leave the record, search for the item, and reopen the document.</p>
<p>Here is a small StoreProof demonstration from Stargap, using a fictional purchase labelled DEMO DATA: Echo One Headphones, Demo Store, $89. The purchase date is October 15, 2026, and the example return deadline is October 29. These dates are sample data, not a retailer policy.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6acec7c7e618fe6b253ed17e/cd72785e-a9b0-42cd-b93a-226d12ddd29e.png" alt="StoreProof demo purchase record" style="display:block;margin:0 auto" />

<p>The receipt was attached to the purchase record. The extracted merchant and amount needed correction before the record was saved. That review matters: a neat form is not proof that OCR read everything correctly.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6acec7c7e618fe6b253ed17e/e26e4066-d06b-4443-9ba0-210d3d11aa7e.png" alt="Readable demo receipt" style="display:block;margin:0 auto" />

<p>The final check was to leave the record, search for Echo One, open the matching purchase, then open the readable receipt. The screenshots show the record, receipt preview and search result.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6acec7c7e618fe6b253ed17e/92a2eec2-e46e-487a-9b78-d4f02990ce9c.png" alt="StoreProof search result" style="display:block;margin:0 auto" />

<p>You can apply the same test to a folder-and-calendar system. If you can find the right document and deadline without knowing the receipt's filename, the system is doing its job. StoreProof keeps them attached to one purchase: <a href="https://storeproof.one/iod">https://storeproof.one/iod</a></p>
]]></content:encoded></item><item><title><![CDATA[Why an MQTT value can go from 22 back to 21 after reconnecting]]></title><description><![CDATA[A subscriber receives 22. Reconnect it, and 21 appears again. Before changing a sensor or a dashboard, check which value the broker retained. In a local…]]></description><link>https://stargap.hashnode.dev/why-an-mqtt-value-can-go-from-22-back-to-21-after-reconnecting</link><guid isPermaLink="true">https://stargap.hashnode.dev/why-an-mqtt-value-can-go-from-22-back-to-21-after-reconnecting</guid><category><![CDATA[mqtt]]></category><dc:creator><![CDATA[Stargap]]></dc:creator><pubDate>Wed, 14 Oct 2026 19:59:18 GMT</pubDate><content:encoded><![CDATA[<p>A subscriber receives 22. Reconnect it, and 21 appears again. Before changing a sensor or a dashboard, check which value the broker retained.</p>
<p>In a local test with Mosquitto and AirMQTT in an iPhone simulator, the message history was 21, 22, 21. Here is the small test behind it. Use a separate topic on a broker you control, with your usual authentication and TLS settings. BROKER means that broker's reachable hostname.</p>
<p>Connect a subscriber first. Publish 21 with retain:</p>
<p><code>mosquitto_pub -h BROKER -t stargap/demo/retained -m 21 -r</code></p>
<p>Now publish 22 without retain:</p>
<p><code>mosquitto_pub -h BROKER -t stargap/demo/retained -m 22</code></p>
<p>The connected subscriber receives 22. Start a fresh subscription, with default retained-message delivery, and it receives 21. The non-retained update did not replace the retained value. Keep persistent-session replay and other publishers out of this small test.</p>
<p>AirMQTT automatically subscribed to # in this test. The topic tab on its screen filtered the history; it was not a separate subscription setting. An independent Mosquitto subscriber also returned <code>1 stargap/demo/retained 21</code>, where 1 was the retain flag.</p>
<p>When finished, clear only this demo topic:</p>
<p><code>mosquitto_pub -h BROKER -t stargap/demo/retained -n -r</code></p>
<p>We're Stargap, the publisher of AirMQTT. It was the visual subscriber here; another MQTT client can reproduce the same protocol behavior. Apple and Android versions: <a href="https://airmqtt.one/iod">https://airmqtt.one/iod</a></p>
<p>Command reference: <a href="https://mosquitto.org/man/mosquitto_pub-1.html">https://mosquitto.org/man/mosquitto_pub-1.html</a></p>
]]></content:encoded></item><item><title><![CDATA[A weekly app portfolio review that ends with a decision, not five open tabs]]></title><description><![CDATA[You check RevenueCat. Then Stripe. Then the task list. Twenty minutes later, you know the numbers but still haven't decided what to work on. For a small…]]></description><link>https://stargap.hashnode.dev/a-weekly-app-portfolio-review-that-ends-with-a-decision-not-five-open-tabs</link><guid isPermaLink="true">https://stargap.hashnode.dev/a-weekly-app-portfolio-review-that-ends-with-a-decision-not-five-open-tabs</guid><category><![CDATA[Productivity]]></category><category><![CDATA[SaaS]]></category><dc:creator><![CDATA[Stargap]]></dc:creator><pubDate>Wed, 14 Oct 2026 00:16:52 GMT</pubDate><content:encoded><![CDATA[<p>You check RevenueCat. Then Stripe. Then the task list. Twenty minutes later, you know the numbers but still haven't decided what to work on.</p>
<p>For a small app portfolio, a weekly review needs to join two things: what changed, and what happens next. A spreadsheet is enough to start. Use one row per project and these five fields:</p>
<p><strong>Project.</strong> Keep each product separate. A growing app can hide a quiet one in the portfolio total.</p>
<p><strong>Revenue period.</strong> Record which period and source the figure comes from. A monthly recurring figure and last week's receipts answer different questions. Don't label them as the same number.</p>
<p><strong>Open task.</strong> Pick a concrete task, not "improve marketing". "Replace the first store screenshot" or "check why onboarding exits rose" gives you something you can actually do.</p>
<p><strong>Upcoming date.</strong> Put the domain renewal or another relevant deadline beside the project. It is easy to miss when it lives in a separate list.</p>
<p><strong>Next action.</strong> Decide what changes before the next review. If there is no action, write "leave it alone this week" rather than reopening the same question tomorrow.</p>
<p>The important part is the connection. If the next task has nothing to do with the figures or the deadline you just reviewed, the dashboard hasn't helped you prioritise yet.</p>
<p>A useful closing question is: "What did this review change?" If the answer is nothing, either the projects need no intervention or the review was just another way to check the numbers. Both are worth recognising.</p>
<p>qdBox is a Stargap app for keeping revenue, tasks, links and domain reminders with each project. It brings in RevenueCat and Stripe figures so the project review doesn't require rebuilding the same overview each time. It runs on iPhone, iPad and Mac, with OS 26 or later.</p>
<p>Screens and downloads: <a href="https://qdbox.one/iod">https://qdbox.one/iod</a></p>
<p>The app is optional. The part worth keeping is a review that leaves you with a decision, not a collection of tabs.</p>
]]></content:encoded></item></channel></rss>