<?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: Super Funicular</title>
    <description>The latest articles on DEV Community by Super Funicular (@superfunicular).</description>
    <link>https://dev.to/superfunicular</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3905292%2F0eab2966-f7d2-41d0-983d-d240a6caa5d4.jpg</url>
      <title>DEV Community: Super Funicular</title>
      <link>https://dev.to/superfunicular</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/superfunicular"/>
    <language>en</language>
    <item>
      <title>Texas Just Opened a Privacy Investigation Into Meta's AI Glasses — and It Raises a Question Every Camera App Has to Answer</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Fri, 22 May 2026 08:05:41 +0000</pubDate>
      <link>https://dev.to/superfunicular/texas-just-opened-a-privacy-investigation-into-metas-ai-glasses-and-it-raises-a-question-every-4f3k</link>
      <guid>https://dev.to/superfunicular/texas-just-opened-a-privacy-investigation-into-metas-ai-glasses-and-it-raises-a-question-every-4f3k</guid>
      <description>&lt;p&gt;On May 20, 2026, Texas Attorney General Ken Paxton &lt;a href="https://texasattorneygeneral.gov/news/releases/attorney-general-ken-paxton-launches-investigation-meta-glasses-protect-texans-privacy-unlawful" rel="noopener noreferrer"&gt;opened a formal investigation&lt;/a&gt; into Meta's AI Glasses — the Ray-Ban and Oakley camera-equipped eyewear — over how the device records, processes, and stores facial geometry and ambient video. Two days earlier, the &lt;a href="https://www.aclu.org/press-releases/aclu-and-75-organizations-sound-alarm-on-metas-plans-to-add-facial-recognition-technology-to-ray-ban-and-oakley-eyeglasses" rel="noopener noreferrer"&gt;ACLU and 75 civil-liberties organizations&lt;/a&gt; sent Meta an open letter warning that the company's reported plan to ship facial recognition on the same glasses would "create serious risks for abuse victims, immigrants, LGBTQ+ people, protesters, [and] workers." The Texas AG's office described the central concern as the device's documented "always enabled" mode, in which the glasses continuously process video for Meta's AI products — with a recording-indicator LED that is "easily hidden" and "not active during the always-enabled mode."&lt;/p&gt;

&lt;p&gt;This isn't a niche policy story. It's the second time in less than two years Texas has taken Meta to court over the same underlying issue: capturing biometric data from people who never consented. The &lt;a href="https://www.cbsnews.com/texas/news/meta-glasses-texas-investigation-5-20-2026/" rel="noopener noreferrer"&gt;previous round ended in 2024&lt;/a&gt; with a $1.4 billion settlement.&lt;/p&gt;

&lt;p&gt;If you build, ship, or even use a camera-bearing piece of consumer technology, this is a moment to look at your own surface area and ask the question Paxton is asking Meta: &lt;strong&gt;where does the video go, who can see it, and did anyone agree to that?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is a watershed and not a one-off
&lt;/h2&gt;

&lt;p&gt;The legal text matters less than the precedent. A state AG just declared that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An "always enabled" recording mode, by itself, is a regulatable consumer-protection issue when the LED indicator isn't reliably visible.&lt;/li&gt;
&lt;li&gt;Cloud-side processing of ambient video — even when framed as "AI features" — falls inside biometric-privacy law if facial geometry is derivable from it.&lt;/li&gt;
&lt;li&gt;The 2024 Meta settlement was not a one-time event; future biometric capture is on the table again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last point is the structural shift. Until this week, the operating assumption inside most consumer-hardware roadmaps was that a 2024-style consent banner and a small LED indicator were enough. Texas just signaled that they aren't, at least when the device is wearable and the camera is on by default.&lt;/p&gt;

&lt;p&gt;A wearable camera is not a unique animal. The question is whether the same logic applies to camera apps, dash cams, smart doorbells, and any other "always on" recording product. There is no obvious reason it wouldn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture question every recording product now has to answer
&lt;/h2&gt;

&lt;p&gt;The Texas filing is really a stress-test of three architectural choices that any product with a camera can be measured against:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Is recording opt-in per session, or always-on by default?&lt;/strong&gt;&lt;br&gt;
Meta's vulnerability here is "always enabled." The opposite end of the spectrum is "the user explicitly starts each recording, and there is a persistent on-screen indicator that the camera is active." The latter is the model a regulator can defend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Where does the footage live — locally, in a vendor cloud, or fed into a model?&lt;/strong&gt;&lt;br&gt;
Cloud storage of camera footage isn't illegal. But it inverts the burden of proof. Once the footage is in your vendor's cloud, the vendor has to demonstrate it isn't being used for anything the user didn't consent to. Locally-stored footage carries no such burden — the user holds the only copy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Is biometric inference happening, and if so, where?&lt;/strong&gt;&lt;br&gt;
On-device biometric inference (Face Unlock, Apple's Vision Pro hand-tracking) is broadly tolerated. Off-device biometric inference of &lt;em&gt;third parties captured in your camera frame&lt;/em&gt; is the actual line Texas is drawing. If your product processes video in a remote system, you need an affirmative answer for what is and isn't being inferred from each frame, and what's being retained.&lt;/p&gt;

&lt;p&gt;These three questions — Opt-in or always-on? Local or cloud? Inference on-device or off? — now form the baseline a state AG appears willing to enforce.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like in a phone-based camera
&lt;/h2&gt;

&lt;p&gt;We build &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt;, an Android app that turns the phone you already own into a security/monitoring camera. The architectural choices we made years ago map directly onto the three questions above, and they look very different from the Meta Glasses model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No always-on mode.&lt;/strong&gt; The user opens the app and starts the recording. The app does not auto-record, does not auto-start at boot, and does not capture anything unless the user has explicitly initiated a session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-only storage.&lt;/strong&gt; Recorded video is written to the phone's internal storage. There is no cloud upload, no off-device backup, and no vendor server holding a copy. We have no copy of your footage. We can't have one — the architecture doesn't support it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No account, no tracking.&lt;/strong&gt; The app does not require a Google or Meta or Super Funicular account. There's no sign-in screen. There's no analytics SDK shipping ambient telemetry. There's no advertising ID being attached to recordings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Live streaming is user-initiated.&lt;/strong&gt; If you want to stream to YouTube Live, you set it up yourself, using your own YouTube account and your own RTMP key. The stream goes from your phone directly to YouTube. We're not in the middle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen-off recording is intentional, not covert.&lt;/strong&gt; Recording continues when the screen is off because that's a battery and stealth-of-the-phone-itself feature (the &lt;em&gt;phone&lt;/em&gt; looks idle to anyone glancing at it). The camera LED on the phone behaves the way Android requires.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The point isn't that we're better than Meta. The point is that the Texas filing makes "where does the video go" a question consumers can now expect to ask, and a product that can answer it crisply is in a different category from one that can't.&lt;/p&gt;

&lt;h2&gt;
  
  
  What developers should take from this
&lt;/h2&gt;

&lt;p&gt;If you build anything that captures video, audio, or biometric-derivable data, three things are worth doing this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your default state.&lt;/strong&gt; Is recording opt-in or always-on? If always-on, what's the affirmative justification, and is the user indicator reliable and unconcealable?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit your storage boundary.&lt;/strong&gt; Trace one frame of recorded video through your system. Where does it go, how long does it live, who has access, and what models touch it?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit your inference surface.&lt;/strong&gt; What is your product &lt;em&gt;deriving&lt;/em&gt; from camera input that the user didn't explicitly ask you to derive? Whatever that list is, decide whether it survives the question "what if the Texas AG asks."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Meta Glasses investigation will take months to play out, and the legal outcome isn't the interesting part. The interesting part is that the architectural questions are now public. Camera products that can answer them honestly are going to find that the conversation has shifted in their favor.&lt;/p&gt;




&lt;p&gt;If you want to see what a "no cloud, no account, no tracking" Android camera looks like in practice, &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; is the one we ship. Source on our positioning and how we think about privacy lives at &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;superfunicular.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>android</category>
      <category>security</category>
      <category>news</category>
    </item>
    <item>
      <title>YouTube Live Now Streams Horizontal + Vertical at the Same Time — How an Old Android Phone Becomes a 24/7 Dual-Format Camera</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Wed, 20 May 2026 15:44:52 +0000</pubDate>
      <link>https://dev.to/superfunicular/youtube-live-now-streams-horizontal-vertical-at-the-same-time-how-an-old-android-phone-becomes-3a80</link>
      <guid>https://dev.to/superfunicular/youtube-live-now-streams-horizontal-vertical-at-the-same-time-how-an-old-android-phone-becomes-3a80</guid>
      <description>&lt;p&gt;YouTube quietly shipped one of the biggest livestreaming changes in years this May: creators can now go live in &lt;strong&gt;horizontal and vertical formats simultaneously&lt;/strong&gt;, from a single source, with a unified chat. The portrait version is auto-cropped from the center of your horizontal feed and routed straight into the Shorts surface, while the landscape version stays on your main channel. (&lt;a href="https://support.google.com/youtube/answer/13822251" rel="noopener noreferrer"&gt;YouTube Help — vertical live streams&lt;/a&gt;, &lt;a href="https://streamlabs.com/content-hub/post/how-to-multistream-youtube-vertical-horizontal" rel="noopener noreferrer"&gt;Streamlabs guide&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;If you've ever tried to reach both the traditional YouTube audience and the Shorts feed at the same time, you know the old answer involved running two encoders, a multistream relay, or paid software like Meld Studio or Restream. That tax is gone. For developers building anything that pushes RTMP into YouTube, this is a meaningful shift — and for anyone using a phone as a camera, it changes what your hardware can do.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changed
&lt;/h2&gt;

&lt;p&gt;Before this update, a YouTube Live stream was either landscape &lt;strong&gt;or&lt;/strong&gt; portrait. If you wanted both, you ran two parallel streams, paid for a multistream service, or stitched together a Studio-side workflow that re-encoded the feed.&lt;/p&gt;

&lt;p&gt;Now, when you set up a live event in YouTube's live control room, you can enable dual output. YouTube takes your single RTMP ingest, displays it as your normal horizontal stream on the channel page, and &lt;strong&gt;auto-generates a vertical crop&lt;/strong&gt; that appears in the YouTube Shorts feed. Both feeds share a single chat, a single concurrency count, and a single set of analytics.&lt;/p&gt;

&lt;p&gt;There are some caveats worth knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The vertical crop is &lt;strong&gt;center-weighted&lt;/strong&gt;. Anything important (faces, text, key motion) needs to live in the middle ~9:16 column of your horizontal frame, or it'll fall off the Shorts version.&lt;/li&gt;
&lt;li&gt;The Shorts surface still has its own discovery rules — you don't bypass them by running dual format. You just stop having to re-upload clips.&lt;/li&gt;
&lt;li&gt;YouTube will additionally identify "key moments" from your live stream and turn them into ready-to-share Shorts after the broadcast ends, which compounds the reach effect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The net result: one stream, two distribution surfaces, zero additional encoder load on your end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for mobile streamers
&lt;/h2&gt;

&lt;p&gt;For desktop streamers running OBS on a beefy machine, this is a nice convenience. For &lt;strong&gt;mobile streamers&lt;/strong&gt; — anyone using a phone as the camera — it's a bigger deal, because mobile RTMP encoders have historically been the weakest link in a multi-format workflow.&lt;/p&gt;

&lt;p&gt;A phone has limited thermal headroom. Asking it to encode two video streams at different aspect ratios simultaneously is the kind of thing that turns a livestream into a slideshow after twenty minutes. The new YouTube workflow moves the second encode (the vertical crop) &lt;strong&gt;server-side&lt;/strong&gt;, which means the phone only has to encode one stream. The Shorts version comes for free.&lt;/p&gt;

&lt;p&gt;That has a specific consequence: a single phone, plugged in and pointed at something interesting, can now feed two YouTube audiences continuously. A backyard bird feeder. A workshop bench. A puppy. A storefront. A 24-hour ambient stream. The hardware doesn't have to change. The streaming app doesn't even have to know about the vertical format — YouTube handles the crop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The friction this removes
&lt;/h2&gt;

&lt;p&gt;To appreciate the change, look at what the multi-format workflow used to require:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A phone running a mobile encoder (Larix, Streamlabs Mobile, or similar)&lt;/li&gt;
&lt;li&gt;A way to RTMP into something that could split and re-encode (Restream, Meld Studio, a self-hosted nginx-rtmp)&lt;/li&gt;
&lt;li&gt;Two YouTube destinations configured, one landscape and one portrait&lt;/li&gt;
&lt;li&gt;Aspect-ratio handling on the encoder side, with all the cropping math&lt;/li&gt;
&lt;li&gt;Two chats to monitor, two analytics dashboards, two thumbnails&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's a real setup. It's the kind of thing that takes a weekend to wire up and another weekend to debug. The new YouTube path collapses it to: configure one stream, check one box.&lt;/p&gt;

&lt;p&gt;For indie developers building tools in this space, the implication is clear — the hard differentiator is no longer "do you support multistream?" It's "are you a reliable single-ingest RTMP source that runs unattended for days?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Where a phone-as-camera setup fits in
&lt;/h2&gt;

&lt;p&gt;This is the angle that pulled me into writing this piece. I build &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; — an Android app that turns a phone into a camera that records and live-streams &lt;strong&gt;with the screen off&lt;/strong&gt;, locally, with no cloud account required. It has built-in YouTube Live support, so you can point a phone at something, lock the screen, and have it streaming for as long as the battery (or a USB cable) lasts.&lt;/p&gt;

&lt;p&gt;The dual-format YouTube update changes what that workflow is good for. A few weeks ago, a phone-as-camera setup got you one audience: people who happened to find your horizontal stream. Today, the same setup — same phone, same RTMP key, same lock-screen behavior — also feeds the Shorts surface. The discovery profile of an always-on stream just doubled, and the encoder load did not.&lt;/p&gt;

&lt;p&gt;That's a real product change that doesn't require any code on the app side. The thing that matters is &lt;strong&gt;reliability of the single ingest&lt;/strong&gt;: does the phone keep streaming through screen-off, network blips, and the inevitable Android Doze-mode tantrums? If yes, the new YouTube workflow is free upside.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical setup (under five minutes)
&lt;/h2&gt;

&lt;p&gt;If you want to try this with a phone you already own:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Background Camera RemoteStream from &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In the app, create a YouTube Live stream and paste the RTMP key. The app supports both screen-off recording and direct YouTube Live ingest, so you don't need a separate encoder.&lt;/li&gt;
&lt;li&gt;In YouTube's live control room (on a desktop browser, ahead of time), enable dual horizontal + vertical output for the same live event.&lt;/li&gt;
&lt;li&gt;Frame your shot &lt;strong&gt;center-weighted&lt;/strong&gt; — assume a vertical 9:16 column down the middle is what Shorts viewers will see.&lt;/li&gt;
&lt;li&gt;Lock the phone. The stream keeps running with the screen off; YouTube does the rest.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You now have one phone serving two YouTube surfaces continuously, with no second device, no laptop, and no monthly subscription to a multistream service.&lt;/p&gt;

&lt;h2&gt;
  
  
  The privacy footnote
&lt;/h2&gt;

&lt;p&gt;One thing I keep coming back to with this whole category: most "phone as camera" apps in 2026 push your feed through their own cloud as a default. That's how they monetize, and it's why the Play Store reviews for the big-name competitors are full of complaints about subscriptions, account requirements, and "why is my camera asking for my email."&lt;/p&gt;

&lt;p&gt;Background Camera RemoteStream stores everything &lt;strong&gt;locally on the device&lt;/strong&gt;. No cloud account. No remote server in the loop unless you explicitly point it at YouTube Live (or another RTMP endpoint you control). No tracking, no telemetry, no off-device storage. The new YouTube dual-format feature works regardless, because the only thing leaving the device is the RTMP stream &lt;strong&gt;you&lt;/strong&gt; configured.&lt;/p&gt;

&lt;p&gt;If you're building anything that touches camera + privacy + livestreaming, the takeaway is: the user-side trust posture matters more than ever. YouTube just made the distribution side easier. The hard problem now is whether users trust the camera in their hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;YouTube's dual-format livestreaming is one of those updates that sounds like a feature footnote and is actually a structural change. It removes a friction point that has been gating phone-as-camera setups from reaching the Shorts audience for years. The hardware you already own can now do more, without changing.&lt;/p&gt;

&lt;p&gt;If you want to try the phone-as-camera side of this workflow, &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream is on Google Play&lt;/a&gt;. More about the project at &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;superfunicular.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;YouTube Help: &lt;a href="https://support.google.com/youtube/answer/13822251" rel="noopener noreferrer"&gt;Watch &amp;amp; interact with vertical live streams&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Streamlabs: &lt;a href="https://streamlabs.com/content-hub/post/how-to-multistream-youtube-vertical-horizontal" rel="noopener noreferrer"&gt;How to multistream vertical and horizontal on YouTube&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Meld Studio: &lt;a href="https://meldstudio.co/blog/how-to-stream-to-youtube-youtube-shorts-at-the-same-time-horizontal-vertical-in-meld-studio/" rel="noopener noreferrer"&gt;Stream to YouTube + Shorts simultaneously&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SocialBee: &lt;a href="https://socialbee.com/blog/youtube-updates/" rel="noopener noreferrer"&gt;May 2026 YouTube updates&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>android</category>
      <category>youtube</category>
      <category>livestreaming</category>
      <category>privacy</category>
    </item>
    <item>
      <title>The Cloud-Bill Theory of Free Camera Apps: Why Some Are Local-Only and Some Have to Sell Your Data</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Wed, 20 May 2026 15:43:56 +0000</pubDate>
      <link>https://dev.to/superfunicular/the-cloud-bill-theory-of-free-camera-apps-why-some-are-local-only-and-some-have-to-sell-your-data-32io</link>
      <guid>https://dev.to/superfunicular/the-cloud-bill-theory-of-free-camera-apps-why-some-are-local-only-and-some-have-to-sell-your-data-32io</guid>
      <description>&lt;p&gt;There are two kinds of free Android camera apps and they don't look alike under the hood. One kind runs a cloud relay — every frame your camera captures uploads to a server, sits there, and waits for the viewing-phone to pull it down. The other kind keeps every frame on the phone and serves it to your viewing device over local Wi-Fi only. Both can be free to the user. Only one of them has a built-in structural reason to monetize your data.&lt;/p&gt;

&lt;p&gt;I want to walk through why that is, because it isn't a "good vendor / bad vendor" story. It's a recurring-cost story. The architecture forces the business model.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cloud bill is real
&lt;/h2&gt;

&lt;p&gt;Run the numbers for a hypothetical free cloud-backed camera app with 100,000 daily active users, each recording for a few hours a day. 720p H.264 video runs roughly 1 Mbps. A user recording 3 hours per day at 1 Mbps uploads ~1.4 GB/day. Inbound bandwidth at AWS list price is around $0.01–0.02 per GB (S3 PUT pricing is similar order-of-magnitude). At 100k DAUs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bandwidth:&lt;/strong&gt; 100k × 1.4 GB = 140 TB/day inbound. ~$1,400–$2,800/day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; even at 7-day retention, you're holding ~1 PB. S3 Standard at $0.023/GB/month is roughly $700k/year for the cold copy alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Egress&lt;/strong&gt; (when viewing-phone pulls the stream): same order of magnitude as inbound, sometimes higher.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So this hypothetical app has a baseline cloud bill of roughly $1–2 million per year per 100k DAUs &lt;em&gt;before&lt;/em&gt; any of the actual product engineering. That bill scales linearly with usage. It does not go to zero on quiet days. It does not get cheaper as the company grows — it gets &lt;em&gt;more&lt;/em&gt; expensive.&lt;/p&gt;

&lt;p&gt;Someone has to pay that bill. There are four candidates: the user, an advertiser, a data buyer, or the developer's own savings until those savings run out.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four ways to pay it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. The user pays directly.&lt;/strong&gt; Subscription model — AlfredCamera Premium, Nest, Ring, the cloud-backed paid tier of Reolink. This is the cleanest version. The vendor's incentive is to keep churn low, which means treating users well. The price the user pays for honesty is the price of the subscription, which is real money over time. AlfredCamera's free-tier squeeze in 2026 — from unlimited cameras down to a 2-camera/24-hour-retention cap — was exactly this dynamic visible from the outside. The cloud bill grew; somebody had to cover it; the company decided to move that burden onto paid users instead of onto data buyers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. An advertiser pays.&lt;/strong&gt; The vendor sells display ads inside the app. This is honest &lt;em&gt;if disclosed&lt;/em&gt; — the user sees the ads, they know the deal. The complication is that the ad-tech stack is opaque. Even a well-intentioned vendor using Google AdMob is, in practice, leaking device identifiers, rough location, and install-graph signals to the ad broker. The vendor isn't selling your data on purpose; the SDK is doing it as a side effect of asking for an ad to display. Trust depends on whether the vendor knows that and whether they care.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. A data buyer pays.&lt;/strong&gt; The vendor's value isn't the camera app itself — it's the user telemetry harvested by the app. Sold to data brokers (LiveRamp, Acxiom, Epsilon, the long tail of GPS-data marketplaces) and to enterprise customers shopping for "mobile device intent signals." The signals that buyers pay for are well known: precise location, install graph, network identity, device fingerprint, foreground app dwell time, and (for cameras specifically) ambient audio metadata, scene classification, time-of-day usage patterns. The privacy policy clause that authorizes this in the marketplace is almost always some variant of "We may share aggregate data with our partners to improve our service." The "may" does heavy lifting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The developer pays from savings.&lt;/strong&gt; This is what happens between launch and one of the three above. It is not sustainable. Every cloud-backed free app eventually picks one of (1), (2), or (3) — there are no other options.&lt;/p&gt;

&lt;p&gt;If the app you're using has been free for several years, the cloud bill has been paid by someone, and you can usually read the privacy policy and figure out which one. It's almost always (2) or (3), and they often shade into each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes if there's no cloud bill
&lt;/h2&gt;

&lt;p&gt;Now consider the alternative architecture: the camera-phone runs an embedded HTTP server (or RTSP server, or WebRTC peer) over local Wi-Fi. The viewing device opens a browser tab and connects directly to the camera-phone over LAN. No frame ever leaves the network. Storage is on the camera-phone's flash. Bandwidth is whatever your home router can already do for free.&lt;/p&gt;

&lt;p&gt;What does this architecture cost the developer to operate, per active user, per day?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The developer doesn't pay any per-user cost because there's no per-user resource being consumed on their side. The user's own hardware and the user's own bandwidth do all the work. The developer's only ongoing cost is the Play Store hosting fee (effectively zero), occasional infrastructure for crash reporting and update delivery, and engineering time for maintenance.&lt;/p&gt;

&lt;p&gt;The structural property of this architecture is &lt;strong&gt;the developer has no incentive to monetize the user's data, because there's no recurring bill that has to be paid.&lt;/strong&gt; The free tier can stay free forever. Optional paid features (one-time purchases for advanced functionality) can fund maintenance without needing to find a buyer for telemetry.&lt;/p&gt;

&lt;p&gt;This is the architectural property that makes "local-only" apps trustworthy as a category, not as a vendor. It's not that the developer is necessarily a saint. It's that the structural incentive to monetize your data isn't there.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to tell which camp an app lives in, in two minutes
&lt;/h2&gt;

&lt;p&gt;Settings → Network &amp;amp; internet → Data usage → [the camera app].&lt;/p&gt;

&lt;p&gt;A local-only app, running 24/7 with the camera active the whole time, should consume &lt;strong&gt;under 50 MB of cellular/Wi-Fi data per day&lt;/strong&gt; — and most of that is just OS background pings, not the camera itself. The video frames stay on the phone; only the embedded-server LAN traffic uses Wi-Fi (which doesn't count as data on this counter because it never hits your home router's WAN port).&lt;/p&gt;

&lt;p&gt;A cloud-backed app, running the same way, will consume &lt;strong&gt;between 1 GB and 8 GB per day&lt;/strong&gt;, because every frame uploads. Even at 720p with aggressive compression, the bandwidth bill is real and the counter shows it.&lt;/p&gt;

&lt;p&gt;Megabytes don't lie. The data-usage view is the single most diagnostic check you can do on whether your video is staying home or going on a trip.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I ship
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; — Android, free, no account. It's in the no-cloud-bill camp.&lt;/p&gt;

&lt;p&gt;The trust model is structural, not promissory. The architecture is the privacy policy: every frame your camera captures sits on your phone's flash storage. To view the live feed, you open any browser tab on any device on the same Wi-Fi — there's an embedded HTTP server on the camera-phone serving MJPEG frames over LAN. The viewer device doesn't need to install anything. No account, no signup, no cloud relay. We don't ask for Location, Contacts, Accessibility, Phone, or SMS permissions because the architecture doesn't need them.&lt;/p&gt;

&lt;p&gt;The optional paid feature is YouTube Live streaming, which uses your YouTube channel directly — Super Funicular LLC is not in the middle of the stream. It's a one-time Pro purchase, not a subscription, because we don't have a recurring server cost we're trying to amortize.&lt;/p&gt;

&lt;p&gt;The honest tradeoffs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No motion alerts&lt;/strong&gt; — we don't run an ML inference pipeline because that's where most data leaks happen. If motion alerts are non-negotiable, &lt;a href="https://alfredcamera.com" rel="noopener noreferrer"&gt;AlfredCamera Premium&lt;/a&gt; charges $5.99/month and pays its cloud bill honorably. Worth the money if you need the feature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No two-way audio&lt;/strong&gt; — same reason. Cloud relay is the easiest implementation; we don't have one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LAN-bound by default for off-site viewing&lt;/strong&gt; — to watch from outside the home, either set up a VPN to your home network (Tailscale and WireGuard both work fine) or use the YouTube Live Pro option.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If those tradeoffs are acceptable, the free tier stays free forever. If they're not, the apps that pay their cloud bill with subscriptions are the honest second-choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few other apps in the same architectural camp
&lt;/h2&gt;

&lt;p&gt;For comparison purposes, these all live in the no-cloud-bill camp and they're all worth knowing about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IP Webcam&lt;/strong&gt; (Pavel Khlebovich) — the long-running gold standard since 2011. Free. Less polished UI; same architectural soundness. The two-app comparison most people end up doing is IP Webcam vs Background Camera RemoteStream — full breakdown: &lt;a href="https://dev.to/superfunicular/best-free-security-camera-apps-for-android-in-2026-2mdi"&gt;Best Free Security Camera Apps for Android (2026)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Haven&lt;/strong&gt; (Guardian Project) — open-source tripwire/perimeter detection. Different use case (entry detection, not continuous monitoring), but same trust model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;tinyCam Monitor&lt;/strong&gt; (free Android edition) — pairs nicely on a two-phone setup. RemoteStream serves the LAN stream from the camera-phone; tinyCam runs on the viewing-phone and layers motion alerts on top.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want the comparison oriented around the baby-monitor use case specifically — which is the case where the trust model matters most because the camera is pointed at a sleeping infant in a private room — that's here: &lt;a href="https://dev.to/superfunicular/best-android-baby-monitor-apps-no-cloud-no-subscriptions-2026-1eb1"&gt;Best Android Baby Monitor Apps — No Cloud, No Subscriptions (2026)&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The single sentence
&lt;/h2&gt;

&lt;p&gt;Free is not a price. Free is a question about who's actually paying.&lt;/p&gt;

&lt;p&gt;If the app has a cloud bill, somebody is paying it. The architecture tells you who.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm an indie Android developer at Super Funicular LLC. Background Camera RemoteStream is on Google Play here: &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;play.google.com/store/apps/details?id=com.superfunicular.digicam&lt;/a&gt;. The website is &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;superfunicular.com&lt;/a&gt;. If you want to talk architecture, I'm on dev.to &lt;a class="mentioned-user" href="https://dev.to/superfunicular"&gt;@superfunicular&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>android</category>
      <category>architecture</category>
      <category>indiehackers</category>
    </item>
    <item>
      <title>This week on @Digital_Nomad_Media — 13 new clips (2026-W20)</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Sun, 17 May 2026 14:03:31 +0000</pubDate>
      <link>https://dev.to/superfunicular/this-week-on-digitalnomadmedia-13-new-clips-2026-w20-1nfm</link>
      <guid>https://dev.to/superfunicular/this-week-on-digitalnomadmedia-13-new-clips-2026-w20-1nfm</guid>
      <description>&lt;p&gt;Quick weekly digest from my YouTube channel — every clip below is fresh in the last 7 days.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=FKEBahnMC_Y" rel="noopener noreferrer"&gt;Dog consultant&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=FKEBahnMC_Y" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvanib28wagxaouf39uu.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;21s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=EtfR8ZOdb00" rel="noopener noreferrer"&gt;Never F#@k'in Mind 🤣✌️&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=EtfR8ZOdb00" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp2l1e6a2s6wrxfi4diym.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;11s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=FLrOQLVcWK8" rel="noopener noreferrer"&gt;Was that a UFO? ✌️🎅&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=FLrOQLVcWK8" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugmpf1ccrn9ev1ldo46c.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;8s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=N1JT5WB3Ww0" rel="noopener noreferrer"&gt;Just peel it quick! ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=N1JT5WB3Ww0" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1rxs89s9udkmmqajmw4c.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;16s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=IjZkHfKvRWo" rel="noopener noreferrer"&gt;Welcome Back!  Dog Park America  ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=IjZkHfKvRWo" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftouh89v8z9f8t371539g.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;74s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=vlNq1WOj24Y" rel="noopener noreferrer"&gt;I say, I say young dog! ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=vlNq1WOj24Y" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e4h6uct7cff06mm0c3r.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;194s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=oD3kH2n09RA" rel="noopener noreferrer"&gt;Belleville Illinois invaded by ICE monster named Digi Nomad&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=oD3kH2n09RA" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzkzcknx7a7mjaerpoet.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;247s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=P3avogfHnTE" rel="noopener noreferrer"&gt;I couldn't bear to stop him so I just gave him the truck ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=P3avogfHnTE" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhegt2egrdhul7dyp9zcf.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;18s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=uRutlJF-Y-w" rel="noopener noreferrer"&gt;It's a Dog Gone adventure we're on&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=uRutlJF-Y-w" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qgiatpvt7ok3xuqwwze.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;220s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=15VX4NMnYg4" rel="noopener noreferrer"&gt;Me and my dogs were STRANDED on this island for five years ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=15VX4NMnYg4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fagk02kg747j1x164gz2a.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;258s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=fHufwuXp2Tc" rel="noopener noreferrer"&gt;All hail Buddy Rowe&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=fHufwuXp2Tc" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7t30mjtt7q6zvk9nrch.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;273s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=mhI38xuqqRA" rel="noopener noreferrer"&gt;On the trail of ???? ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=mhI38xuqqRA" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpivv1ezcmqjzu1wyipf3.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;325s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=u84_AHue8jI" rel="noopener noreferrer"&gt;Changing transmission fluid in a 2013 Ford C-Max #cmax #c-max #ford #hybrid ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=u84_AHue8jI" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F950zcgavwmbixf45r5xe.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;9s&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  I also built an app — DigiCam
&lt;/h2&gt;

&lt;p&gt;I also made DigiCam, listed as Background Camera RemoteStream on Google Play. It's the world's first screen-off YouTube live streaming app: stream live with the screen off for ~10× the battery life, plus background recording, remote web console control, file-based YouTube Live, and playlists. Privacy-first, all local storage. Free with ads or Pro for the full feature set:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.superfunicular.digicam&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Watch the full channel: &lt;a href="https://www.youtube.com/@Digital_Nomad_Media" rel="noopener noreferrer"&gt;@Digital_Nomad_Media&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tags: #SuperFunicular #DigiCam #LadyThePitbull #DigiNomad #YouTubeShorts #ContentCreator #dogpark #dogs #travelvlog #puppies&lt;/p&gt;

</description>
      <category>diginomad</category>
      <category>youtube</category>
      <category>indiedev</category>
      <category>digicam</category>
    </item>
    <item>
      <title>Texas Says 'Netflix Watches You' — Why I Built My Camera App to Be Structurally Incapable of It</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Fri, 15 May 2026 08:06:09 +0000</pubDate>
      <link>https://dev.to/superfunicular/texas-says-netflix-watches-you-why-i-built-my-camera-app-to-be-structurally-incapable-of-it-gcb</link>
      <guid>https://dev.to/superfunicular/texas-says-netflix-watches-you-why-i-built-my-camera-app-to-be-structurally-incapable-of-it-gcb</guid>
      <description>&lt;p&gt;On May 11, the Texas Attorney General &lt;a href="https://www.texasattorneygeneral.gov/news/releases/attorney-general-ken-paxton-sues-netflix-spying-texas-kids-and-consumers-illegally-collecting-users" rel="noopener noreferrer"&gt;filed suit&lt;/a&gt; against Netflix. The complaint's core accusation, in plain English: Netflix has been quietly building advertising profiles from what users watch, pause, rewind, and search — &lt;em&gt;including children&lt;/em&gt; — while telling the public it does not. The lawsuit specifically cites Reed Hastings's 2020 statement that Netflix "doesn't collect anything" and points to the company's pivot to ad-tech as evidence the public was misled. Coverage: &lt;a href="https://time.com/article/2026/05/13/netflix-spying-on-users-lawsuit-claims-texas-allegations/" rel="noopener noreferrer"&gt;Time&lt;/a&gt;, &lt;a href="https://www.cnbc.com/2026/05/11/netflix-sued-by-texas-for-allegedly-spying-on-children-addicting-users.html" rel="noopener noreferrer"&gt;CNBC&lt;/a&gt;, &lt;a href="https://variety.com/2026/tv/news/netflix-sued-by-texas-attorney-general-addictive-spying-on-users-1236744936/" rel="noopener noreferrer"&gt;Variety&lt;/a&gt;, &lt;a href="https://www.malwarebytes.com/blog/news/2026/05/texas-sued-netflix-over-claims-it-secretly-collected-and-sold-users-data" rel="noopener noreferrer"&gt;Malwarebytes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'm not writing this to dunk on Netflix. I'm writing it because the lawsuit names the exact structural failure mode I tried to design my way out of when I built &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architectural diagnosis hiding inside this lawsuit
&lt;/h2&gt;

&lt;p&gt;Cloud-by-default products collect by default. That isn't a policy choice that can be paper-over with a privacy page — it's a property of the architecture. The moment a stream of user behavior crosses the network to a vendor-owned server, three things become technically inevitable: the data exists somewhere outside the user's control, it can be joined with other data on that server, and it can be repackaged for advertising whenever the business model demands it.&lt;/p&gt;

&lt;p&gt;The Texas complaint reads like an architecture review. It says Netflix tracks "viewing activity, searches, location data, pauses, rewinds, and other behavior" to build profiles "shared across the broader ad-tech ecosystem." Note what is missing from that sentence: any specific malicious decision by an engineer. Each of those signals is generated as a &lt;em&gt;side effect&lt;/em&gt; of running a streaming product whose backend has to know what the player is doing in order to keep playing it. Once they're on a server, they're collected, whether or not anyone intended to collect them in the consumer-protection sense. Opt-out flows are a UI fiction layered on top of that fact.&lt;/p&gt;

&lt;p&gt;This is the trap I wanted to avoid for a camera app — because of all the categories of data on a phone, "what does the camera see and hear" is the worst possible thing to architect around a cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I made the design call to keep everything local
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; is a background-recording, screen-off-streaming Android camera. It records when the phone is locked, streams to a local network or to YouTube Live, and never asks for a cloud account.&lt;/p&gt;

&lt;p&gt;The architecture is deliberately uncomfortable for any future business model that depends on selling user behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No account system.&lt;/strong&gt; The app does not have a sign-up flow. There is no userId for analytics to key off of, because there are no users in the database sense — there is only a phone, holding a file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No cloud storage.&lt;/strong&gt; Every recorded clip is written to the device. The app does not upload, mirror, or sync. If you uninstall it, your footage is wherever Android's MediaStore put it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No third-party analytics SDK.&lt;/strong&gt; Most "free" apps fund themselves by sending behavior to Firebase, Mixpanel, Amplitude, AppsFlyer, or some combination. We don't. There is no analytics endpoint to disable, because there is no analytics endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming is peer-to-peer.&lt;/strong&gt; When the app streams over the local network it serves frames directly from an embedded Ktor server on the phone — so the receiver is a browser on your laptop, not a relay in our datacenter. When it streams to YouTube Live, the frames go to YouTube; they do not pass through a Super Funicular intermediary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The crash logs are sparse and on-device.&lt;/strong&gt; Diagnostic info that exists at all is what Android's stock crash mechanism keeps locally. We don't ship telemetry off the phone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these are not "best practice" by any 2020s indie-dev playbook. The conventional wisdom is "you can't grow without analytics." But the moment you accept analytics, you accept a server that knows what users do. And the moment you have a server that knows what users do, you have written the first line of a complaint a state AG can file against you in 2030.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Texas lawsuit makes easier to say
&lt;/h2&gt;

&lt;p&gt;I have been pitching the local-only architecture for almost a year, and the most common reaction from non-technical users is some version of &lt;em&gt;"surely they all do that?"&lt;/em&gt; — "all" being the cloud cameras, the smart doorbells, the social streaming apps. There has been a quiet consumer assumption that the collection is fine, because the brand on the box is trustworthy.&lt;/p&gt;

&lt;p&gt;The Texas filing is going to make that assumption harder to hold. The lawsuit is not against an obscure ad-tech company; it's against the household-name streaming service whose CEO publicly said it didn't do this. The complaint alleges $10,000-per-violation penalties under the Texas Deceptive Trade Practices Act and asks the court to require Netflix to delete data and disable autoplay for children's accounts by default.&lt;/p&gt;

&lt;p&gt;For builders, the message embedded in that filing is simple: &lt;em&gt;the privacy promises you make on the marketing page are now legally interesting.&lt;/em&gt; If you say you don't collect, your architecture had better not collect. If your architecture collects, the marketing-page promise is the lawsuit-ready evidence the AG will cite.&lt;/p&gt;

&lt;p&gt;The way out of that exposure is not a better privacy policy. It is to not be able to collect the thing in the first place — to put it on the device, leave it on the device, and stay out of the network path. You cannot be subpoenaed for what you don't have.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell another indie builder
&lt;/h2&gt;

&lt;p&gt;Pick one piece of user data your product touches and ask: &lt;em&gt;if this ever gets cited in a complaint, what would I want my architecture to look like?&lt;/em&gt; That's the design constraint. Then work backwards from it. Most apps can't take this all the way to "no cloud" because they need server-side features, but almost every app can reduce its collection surface meaningfully. The local-only choice I made for camera footage is the strictest version, available because cameras are a category where the phone is genuinely capable of doing the whole job.&lt;/p&gt;

&lt;p&gt;I built the app on this thesis. The Texas lawsuit reads, to me, like a 65-page validation of it.&lt;/p&gt;

&lt;p&gt;If you want to see what a privacy-first Android camera looks like when the architecture matches the marketing, &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream is free on Google Play&lt;/a&gt; — and the project's home is at &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;superfunicular.com&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Related reading on this architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/superfunicular/11-million-baby-monitors-were-watchable-by-anyone-heres-the-architectural-mistake-behind-it-548o"&gt;1.1 Million Baby Monitors Were Watchable by Anyone — Here's the Architectural Mistake Behind It&lt;/a&gt; — the Meari breach from earlier in the same week.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/superfunicular/the-architecture-behind-a-0-security-camera-how-an-old-android-phone-replaces-ring-without-the-3d70"&gt;The Architecture Behind a $0 Security Camera — How an Old Android Phone Replaces Ring Without the Cloud&lt;/a&gt; — what "structurally incapable of cloud upload" actually looks like in code.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/superfunicular/turn-your-old-android-phone-into-a-free-home-security-system-2026-guide-3gjf"&gt;Turn Your Old Android Phone Into a Free Home Security System (Updated May 2026)&lt;/a&gt; — the practical setup guide built on the same thesis.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Coverage cited: &lt;a href="https://www.texasattorneygeneral.gov/news/releases/attorney-general-ken-paxton-sues-netflix-spying-texas-kids-and-consumers-illegally-collecting-users" rel="noopener noreferrer"&gt;Texas AG press release&lt;/a&gt;, &lt;a href="https://time.com/article/2026/05/13/netflix-spying-on-users-lawsuit-claims-texas-allegations/" rel="noopener noreferrer"&gt;Time&lt;/a&gt;, &lt;a href="https://variety.com/2026/tv/news/netflix-sued-by-texas-attorney-general-addictive-spying-on-users-1236744936/" rel="noopener noreferrer"&gt;Variety&lt;/a&gt;, &lt;a href="https://www.cnbc.com/2026/05/11/netflix-sued-by-texas-for-allegedly-spying-on-children-addicting-users.html" rel="noopener noreferrer"&gt;CNBC&lt;/a&gt;, &lt;a href="https://www.malwarebytes.com/blog/news/2026/05/texas-sued-netflix-over-claims-it-secretly-collected-and-sold-users-data" rel="noopener noreferrer"&gt;Malwarebytes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>android</category>
      <category>security</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>1.1 Million Baby Monitors Were Watchable by Anyone — Here's the Architectural Mistake Behind It</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Tue, 12 May 2026 08:04:32 +0000</pubDate>
      <link>https://dev.to/superfunicular/11-million-baby-monitors-were-watchable-by-anyone-heres-the-architectural-mistake-behind-it-548o</link>
      <guid>https://dev.to/superfunicular/11-million-baby-monitors-were-watchable-by-anyone-heres-the-architectural-mistake-behind-it-548o</guid>
      <description>&lt;p&gt;On May 11, 2026, &lt;em&gt;The Verge&lt;/em&gt; and &lt;em&gt;PetaPixel&lt;/em&gt; reported that researcher Sammy Azdoufal had remotely accessed roughly 1.1 million network-connected baby monitors and security cameras made by Chinese white-label vendor Meari Technology — across 118 countries, by extracting a &lt;em&gt;single key&lt;/em&gt; from the company's Android app.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Just by inspecting the Android app, Azdoufal says he was able to extract a single key that gave him access to devices across 118 countries."&lt;br&gt;
— &lt;a href="https://petapixel.com/2026/05/11/anyone-could-have-been-watching-your-kids-on-certain-baby-monitors/" rel="noopener noreferrer"&gt;&lt;em&gt;The Verge&lt;/em&gt; via PetaPixel&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Photos from those cameras were stored on Chinese Alibaba servers with public web addresses and no protection. The same backend infrastructure is reportedly used by &lt;strong&gt;378 different brands&lt;/strong&gt; sold under different names on Amazon and at retailers like Leroy Merlin. The primary hole has been patched. The architectural mistake that produced it has not.&lt;/p&gt;

&lt;p&gt;I build an Android app called &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; (&lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;superfunicular.com&lt;/a&gt;). It is a structural alternative to the cloud-camera model that just failed for the millionth time. I want to talk about &lt;em&gt;why&lt;/em&gt; this keeps happening, because "another IoT camera got hacked" is not a useful framing — and neither is "buy a more expensive one."&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually broke
&lt;/h2&gt;

&lt;p&gt;Three things, stacked:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A shared key inside a public client.&lt;/strong&gt; The Android app ships with credentials that authenticate against a central broker. If you have the app, you have the key. Reverse-engineering an APK is not hard. Researchers do this for breakfast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An MQTT broker that trusts the key.&lt;/strong&gt; Once you have it, you can subscribe to message topics belonging to devices that aren't yours. Meari's spokesperson described it carefully: &lt;em&gt;"Under specific technical conditions, attackers may intercept all messages transmitted via the EMQX IoT platform without user authorization."&lt;/em&gt; Translation: the broker authenticated the &lt;em&gt;app&lt;/em&gt;, not the &lt;em&gt;user&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud-side photo storage with public URLs.&lt;/strong&gt; Saved snapshots lived on Alibaba object storage with predictable, unprotected addresses. Per-photo authorization wasn't enforced; knowing the URL was the access control.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each layer is fixable in isolation. What is &lt;em&gt;not&lt;/em&gt; fixable in isolation is the structural decision underneath all three: &lt;strong&gt;the device is a thin client, and the cloud is the camera.&lt;/strong&gt; Every byte of the video, every snapshot, every event has to go to a vendor-controlled backend so the vendor's app can pull it back down. That backend becomes a single point of compromise for every device that ships under every one of the 378 brand names that resells the same firmware.&lt;/p&gt;

&lt;p&gt;This is not unique to Meari. The same researcher &lt;a href="https://petapixel.com/2026/02/24/someone-remotely-accessed-the-cameras-in-7000-dji-robot-vacuums/" rel="noopener noreferrer"&gt;pulled the same trick on 7,000 DJI robot vacuums in February&lt;/a&gt; of this year. It is the predictable failure mode of "cheap IoT camera that streams to an app." The bug bounty changes; the architecture doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing the architecture is optimizing for
&lt;/h2&gt;

&lt;p&gt;Cloud-relay cameras exist because they solve a real product problem: you want to see the feed when you're not on the same Wi-Fi as the camera. NAT, dynamic IPs, mobile network restrictions — punching through all of that with a vendor-run relay is genuinely easier than asking users to configure port forwarding.&lt;/p&gt;

&lt;p&gt;The cost is that the vendor must store, decrypt-or-not, and route everyone's video, forever. The vendor's employees can in principle look at your living room. The vendor's API keys can be extracted from the public app. The vendor's backend can be breached. The vendor can be acquired or shut down or pressured by a government.&lt;/p&gt;

&lt;p&gt;If you only ever needed your &lt;em&gt;own&lt;/em&gt; feed on your &lt;em&gt;own&lt;/em&gt; network, you paid the entire cost of a centralized backend so the vendor could give you back the thing you started with.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "local-only" actually looks like
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; takes the other branch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No vendor cloud.&lt;/strong&gt; Recordings are stored locally on the Android device acting as the camera. There is no Meari-style backend that proxies your video. There is nothing for me, the developer, to leak — because nothing of yours ever reaches me.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No account.&lt;/strong&gt; There is no email, no password, no shared key against a central broker. There is no database of users for an attacker to dump.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No third-party hardware vendor.&lt;/strong&gt; The "camera" is an old Android phone you already own. The supply chain ends at your drawer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming, when you want it, is YouTube Live on &lt;em&gt;your&lt;/em&gt; channel.&lt;/strong&gt; If you want a remote feed, you authenticate to &lt;em&gt;your&lt;/em&gt; Google account and stream to &lt;em&gt;your&lt;/em&gt; YouTube channel — same auth surface as the rest of your YouTube use, controlled by you, revocable by you, gone the moment you stop the stream. There is no superfunicular.com relay between you and the viewer. Even I cannot watch it without your channel link.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen-off recording.&lt;/strong&gt; The camera phone runs with the display off so it can sit on a shelf for days without burning the screen — the local-only model has no extra cost here.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't a marketing checklist. It is a different threat model. The Meari breach exists because there is a server that &lt;em&gt;can&lt;/em&gt; be breached. We do not run that server.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not solve
&lt;/h2&gt;

&lt;p&gt;A local-only camera does not protect you from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Someone on your home Wi-Fi who already has device access.&lt;/strong&gt; If an attacker is already inside your LAN, neither architecture saves you. Network hygiene still matters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physical access to the camera phone.&lt;/strong&gt; If someone walks off with the device, the recordings on it are theirs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Misconfigured streaming.&lt;/strong&gt; If you start a YouTube Live and make the link public, the feed is public. That is a property of the choice to broadcast, not the architecture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm not claiming the local-only model is invulnerable. I'm claiming it does not have the &lt;em&gt;specific failure mode&lt;/em&gt; that just exposed 1.1 million homes through a single extracted key, because there is no central server to extract a key against.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 378-brand problem
&lt;/h2&gt;

&lt;p&gt;The most uncomfortable detail in the report is that 378 different camera brands sit on top of the same Meari backend. Consumers buying a "different" camera at a retailer were buying the same vulnerability. The brand name on the box told them nothing about what their feed was traveling through.&lt;/p&gt;

&lt;p&gt;When the architecture is centralized and white-labeled, the brand on the box is decorative. The relevant question is "whose servers does this talk to," and the box almost never tells you. With a local-only Android app, the answer is: &lt;strong&gt;only your device, plus whatever streaming destination you explicitly point it at.&lt;/strong&gt; That is auditable in a way that a stack of unnamed Chinese MQTT brokers is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you have a Meari-derived camera right now
&lt;/h2&gt;

&lt;p&gt;Per &lt;em&gt;The Verge&lt;/em&gt;'s reporting, the primary vulnerability has been patched, but Meari has not disclosed which brands are affected or whether the Chinese server with ~220,000 still-exposed users has been fully closed. Practical steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check whether your camera's app routes through Meari or one of the related rebrands. The companion app name and developer-of-record on Google Play is often the easiest tell.&lt;/li&gt;
&lt;li&gt;Rotate any credentials you've reused across IoT apps. Shared-key extractions tend to publicly cluster after disclosure.&lt;/li&gt;
&lt;li&gt;If you don't strictly need remote access from outside your home, consider an LAN-only or local-only setup. If you do need remote access, prefer architectures where &lt;em&gt;you&lt;/em&gt; hold the relay keys (e.g., your own YouTube channel, your own VPN) over architectures where a vendor does.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last point is the whole pitch. &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; is on Google Play, free, no account, local-only by default, optional YouTube Live to your own channel. If the Meari story made you uncomfortable, that discomfort is a signal worth following — not toward a more expensive camera, but toward a smaller blast radius.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading on local-only camera architecture
&lt;/h2&gt;

&lt;p&gt;If the architectural pattern in this piece is interesting, four follow-on reads:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/superfunicular/best-android-baby-monitor-apps-no-cloud-no-subscriptions-2026-1eb1"&gt;Best Android Baby Monitor Apps — No Cloud, No Subscriptions (Updated May 2026)&lt;/a&gt;&lt;/strong&gt; — practical baby-monitor picks that avoid the Meari failure mode by skipping the cloud backend entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/superfunicular/the-architecture-behind-a-0-security-camera-how-an-old-android-phone-replaces-ring-without-the-3d70"&gt;The Architecture Behind a $0 Security Camera — How an Old Android Phone Replaces Ring Without the Cloud&lt;/a&gt;&lt;/strong&gt; — the deeper technical post on why a phone-as-camera build is local-only by construction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/superfunicular/texas-says-netflix-watches-you-why-i-built-my-camera-app-to-be-structurally-incapable-of-it-gcb"&gt;Texas Says "Netflix Watches You" — Why I Built My Camera App to Be Structurally Incapable of It&lt;/a&gt;&lt;/strong&gt; — the same structural argument applied to the Texas attorney general's complaint against Netflix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/superfunicular/turn-your-old-android-phone-into-a-free-home-security-system-2026-guide-3gjf"&gt;Turn Your Old Android Phone Into a Free Home Security System (Updated May 2026)&lt;/a&gt;&lt;/strong&gt; — step-by-step setup, including the AlfredCamera 2-camera free-tier cap and how to avoid central-backend providers.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;App:&lt;/strong&gt; &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream on Google Play&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;superfunicular.com&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Source for this article:&lt;/strong&gt; &lt;a href="https://petapixel.com/2026/05/11/anyone-could-have-been-watching-your-kids-on-certain-baby-monitors/" rel="noopener noreferrer"&gt;PetaPixel — "Anyone Could Have Been Watching Your Kids on Certain Baby Monitors"&lt;/a&gt; (covering &lt;a href="https://www.theverge.com/tech/926487/meari-technology-hack-baby-monitor-security-camera" rel="noopener noreferrer"&gt;&lt;em&gt;The Verge&lt;/em&gt;'s original report&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>android</category>
      <category>security</category>
      <category>iot</category>
    </item>
    <item>
      <title>Google Just Turned On Binary Transparency for Android — Why Privacy-First Indies Should Cheer</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Sun, 10 May 2026 08:03:25 +0000</pubDate>
      <link>https://dev.to/superfunicular/google-just-turned-on-binary-transparency-for-android-why-privacy-first-indies-should-cheer-5fe1</link>
      <guid>https://dev.to/superfunicular/google-just-turned-on-binary-transparency-for-android-why-privacy-first-indies-should-cheer-5fe1</guid>
      <description>&lt;p&gt;On May 1, 2026, Google quietly flipped a switch that will reshape how the Android software supply chain is trusted. Every Google-published Android app released after that date now has a corresponding cryptographic entry on a public, append-only ledger — a system called &lt;strong&gt;Android Binary Transparency&lt;/strong&gt;. The Hacker News and Help Net Security covered the rollout this week, and Google's own Android Developers Blog confirmed the company is "actively working to extend Binary Transparency to third-party developers."&lt;/p&gt;

&lt;p&gt;For users, this is great news. For independent privacy-first developers like us at &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;Super Funicular&lt;/a&gt;, it's even better — and here's why.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Binary Transparency actually does
&lt;/h2&gt;

&lt;p&gt;A digital signature has always told you &lt;em&gt;who&lt;/em&gt; signed an app. Binary Transparency tells you &lt;em&gt;what&lt;/em&gt; was signed, &lt;em&gt;when&lt;/em&gt;, and lets anyone in the world verify it after the fact.&lt;/p&gt;

&lt;p&gt;The mechanism comes straight out of the Certificate Transparency playbook the web uses to catch rogue HTTPS certificates. Every binary Google ships is hashed, the hash is published to a public Merkle-tree log, and the log is append-only — you cannot quietly remove or rewrite an entry. If a Google account were ever compromised and a malicious build were pushed under a legitimate signing key, the rogue binary's hash would still have to land in the public log, where independent monitors would spot it within minutes.&lt;/p&gt;

&lt;p&gt;That's the whole point. Signatures prove origin. Transparency proves &lt;em&gt;intent&lt;/em&gt;. The two together make a stealth supply-chain attack — the kind that has plagued npm, PyPI, and the broader open-source ecosystem for years — dramatically harder to pull off.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://thehackernews.com/2026/05/android-apps-get-public-verification.html" rel="noopener noreferrer"&gt;Google's Android Apps Get Public Verification to Stop Supply Chain Attacks (The Hacker News, May 2026)&lt;/a&gt; · &lt;a href="https://www.helpnetsecurity.com/2026/05/06/google-android-binary-transparency/" rel="noopener noreferrer"&gt;Google expands Android Binary Transparency to counter supply chain attacks (Help Net Security, May 6, 2026)&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the timing matters
&lt;/h2&gt;

&lt;p&gt;Google didn't roll this out in a vacuum. The last six months on Android have been rough:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PromptSpy&lt;/strong&gt; — the first known Android malware that abused on-device generative AI to read a victim's screen, distributed as a fake banking app (ESET, February 2026).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keenadu&lt;/strong&gt; — a backdoor baked into the &lt;em&gt;core software&lt;/em&gt; of certain Android tablets, loading itself into every app launched on the device (Kaspersky; &amp;gt;13,700 victims across Russia, Germany, Japan, and Brazil).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The McAfee Play Store sweep&lt;/strong&gt; — over 50 malicious apps with a combined 2.3M+ installs, slipping past Google's initial review and shipping rootkits that overwrote system libraries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one is a reminder that "I downloaded it from the Play Store" is no longer a sufficient guarantee of safety. Binary Transparency is Google's structural answer: even if the review process misses something, the public ledger gives security researchers an audit trail they can interrogate forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why privacy-first indies &lt;em&gt;especially&lt;/em&gt; benefit
&lt;/h2&gt;

&lt;p&gt;Here's the part the trade-press coverage has mostly missed.&lt;/p&gt;

&lt;p&gt;When the trust signal for Android shifts from "this app is on the Play Store" to "this app's binary is on a public, verifiable ledger," the playing field tilts toward developers who have &lt;strong&gt;nothing to hide in the binary itself&lt;/strong&gt;. That favors small, independent, privacy-first apps for three reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Smaller surface area to verify.&lt;/strong&gt; A 12 MB camera app with no third-party SDKs, no analytics, and no ad networks is dramatically easier for an outside reviewer to reproduce, compare against the published hash, and vouch for than a 200 MB app with a tangled web of bundled libraries. Indie privacy apps tend to ship lean binaries on purpose — that turns out to be a verification superpower.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No remote-config trickery.&lt;/strong&gt; The most pernicious supply-chain attacks involve apps that look benign on first install and then fetch malicious code or configs after the fact. Apps that store everything &lt;em&gt;locally&lt;/em&gt; and don't phone home don't have that attack surface to begin with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The ledger is forever.&lt;/strong&gt; When a privacy-first dev publishes a clean build, that record is permanently public. Over time, a long history of clean entries becomes a portable reputation no platform can take away from you.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For us, this aligns almost too perfectly with what we've been building. Our Android app, &lt;strong&gt;Background Camera RemoteStream&lt;/strong&gt;, was designed from day one around the principle that the app shouldn't see, store, or transmit anything the user didn't explicitly ask it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recordings live &lt;strong&gt;locally on the device&lt;/strong&gt;. There is no cloud bucket, no developer S3 we could be subpoenaed for, no telemetry pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No account required.&lt;/strong&gt; No email, no signup, no identifier we couldn't lose if we wanted to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No third-party trackers.&lt;/strong&gt; What goes in the APK is what runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional YouTube Live streaming&lt;/strong&gt; for users who explicitly want a remote feed — the default is private and offline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When binary transparency expands to third-party developers (Google has signaled this is the intent), an app like ours has a very simple story to tell a verifier: &lt;em&gt;"Here's the hash. Here's the source-equivalent build. Compare them. There's nothing in between."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can install Background Camera RemoteStream from the Play Store here: &lt;strong&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;play.google.com/store/apps/details?id=com.superfunicular.digicam&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What to watch next
&lt;/h2&gt;

&lt;p&gt;A few things worth keeping an eye on over the next 90 days:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;September 2026 enforcement.&lt;/strong&gt; Google has separately announced that, starting in September, apps in select regions must be registered by a verified developer to be installed on certified Android devices. Verification + transparency are the two halves of the same trust model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third-party rollout timeline.&lt;/strong&gt; The Android Developers Blog has confirmed the intent to extend Binary Transparency to non-Google apps, but the timeline isn't public yet. When it lands, expect a meaningful divide between developers who opt in early and those who drag their feet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independent monitors.&lt;/strong&gt; The web's certificate-transparency ecosystem only became useful once third parties started running their own monitors. The Android version will only be as strong as the watchers who watch the log.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The bigger picture
&lt;/h2&gt;

&lt;p&gt;For years, "privacy-first" has been treated as a marketing claim — a vibe, a developer's promise. Binary Transparency starts to make it auditable. That's a quietly enormous shift, and it favors exactly the kind of small, independent, no-tracker, no-cloud apps that have been the unsung good actors of the Android ecosystem all along.&lt;/p&gt;

&lt;p&gt;We'll take it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;p&gt;Three companion posts on the structural side of privacy-first Android development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/superfunicular/the-architecture-behind-a-0-security-camera-how-an-old-android-phone-replaces-ring-without-the-3d70"&gt;The Architecture Behind a $0 Security Camera — How an Old Android Phone Replaces Ring Without the Cloud&lt;/a&gt;&lt;/strong&gt; — the long-form architecture post on what "no cloud, no account" actually looks like in code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/superfunicular/texas-says-netflix-watches-you-why-i-built-my-camera-app-to-be-structurally-incapable-of-it-gcb"&gt;Texas Says "Netflix Watches You" — Why I Built My Camera App to Be Structurally Incapable of It&lt;/a&gt;&lt;/strong&gt; — what a state attorney general's framing of data collection means for camera architecture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/superfunicular/11-million-baby-monitors-were-watchable-by-anyone-heres-the-architectural-mistake-behind-it-548o"&gt;1.1 Million Baby Monitors Were Watchable by Anyone — Here's the Architectural Mistake Behind It&lt;/a&gt;&lt;/strong&gt; — the Meari breach as a worked example of why a central backend is the failure surface.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Background Camera RemoteStream — privacy-first Android camera + YouTube Live streaming, local-only storage, no account, no tracking. &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Get it on Google Play&lt;/a&gt; · &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;superfunicular.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; android, privacy, security, indie&lt;/p&gt;

</description>
      <category>android</category>
      <category>privacy</category>
      <category>security</category>
      <category>indie</category>
    </item>
    <item>
      <title>Best Apps to Turn Your Old Phone Into a Doorbell Camera in 2026 (Free, Privacy-First, No Subscription)</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Sun, 10 May 2026 06:10:00 +0000</pubDate>
      <link>https://dev.to/superfunicular/best-apps-to-turn-your-old-phone-into-a-doorbell-camera-in-2026-free-privacy-first-no-flg</link>
      <guid>https://dev.to/superfunicular/best-apps-to-turn-your-old-phone-into-a-doorbell-camera-in-2026-free-privacy-first-no-flg</guid>
      <description>&lt;p&gt;A video doorbell is one of the easiest cases to argue for a smart-home upgrade — you want to know who is at the door, you want a clip when something arrives, and you want to be able to look at the porch from your phone without driving home. The hardware industry has answered with a Cambrian explosion of brands: Ring, Nest, Eufy, Aqara, Reolink, Arlo, Wyze, Blink, and a hundred white-label clones on Amazon. Almost all of them want $80–$250 up front and $30–$100/year for cloud video storage.&lt;/p&gt;

&lt;p&gt;If you have an old Android phone in a drawer — and most of us do — you already own a better doorbell than what Amazon will ship you. That phone has a 12 MP camera, a microphone, dual-band Wi-Fi, USB-C continuous power, and a CPU that is roughly six times more powerful than the SoC in a $200 Ring. The thing it does not have is doorbell software. That is what this article is about.&lt;/p&gt;

&lt;p&gt;Below is a real, honest comparison of the five Android apps that can credibly turn that drawer phone into a doorbell. The apps differ on four axes that matter for a doorbell specifically: continuous recording with the screen off, local-only storage, the cost of a "ring" notification, and how the app handles the live feed when you're at work. We rank them in that order, and the verdict is at the bottom.&lt;/p&gt;

&lt;p&gt;Heads-up before we start: every Play Store link in this article uses the correct package id &lt;code&gt;com.superfunicular.digicam&lt;/code&gt; for our app — we'll come back to why that matters in the privacy section.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "doorbell" actually requires
&lt;/h2&gt;

&lt;p&gt;Before the comparison, let me be specific about what a doorbell-mode app needs to do. A doorbell is a recording device with three jobs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stay on continuously&lt;/strong&gt; while plugged in. The most common phone-cam failure mode is screen-on requirement — the moment you tap home or the screen times out, the camera stops. A doorbell that stops the moment the screen sleeps is just an annoying selfie cam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capture motion at the door&lt;/strong&gt;, not the entire neighborhood. Most phone-camera apps point a 27 mm equivalent lens at the door from 18 inches away — that gives you a good enough frame, but you need to know that the recording is &lt;em&gt;actually happening&lt;/em&gt; without picking up the phone every five minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show you the feed&lt;/strong&gt; without exposing your home network or selling your video to the cloud. This is the part Ring is bad at.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apps that fail on (1) — screen-off continuous recording — are out of contention. Two of the apps below pass and three fail. Apps that fail on (2) — recording without a manual tap — are also disqualified for this use case. And apps that fail on (3) — sending the doorbell stream to a third-party cloud — are &lt;em&gt;technically&lt;/em&gt; useful but introduce a privacy tax that defeats the point of using your old phone in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  #1 — Background Camera RemoteStream (Super Funicular LLC)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free. No subscription. Local-only. No account.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Background Camera RemoteStream is the only app on this list that was built specifically around the screen-off recording case. It records continuously while plugged in, with the display fully off, while a foreground service notification keeps Android's Doze and App Standby modes from suspending the camera pipeline. That is the single most important capability for a doorbell — and it is the one most repurposed phone-cam apps either don't ship or charge for behind a paywall.&lt;/p&gt;

&lt;p&gt;Three things specifically matter for the doorbell case:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screen-off continuous recording.&lt;/strong&gt; You can mount the phone face-out at the door, press the lock button, and the camera keeps recording. No flicker, no preview wasted on the screen, no battery drain from the display. The signature feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local web server for viewing.&lt;/strong&gt; The app runs a small embedded HTTP server (Ktor) on the phone's Wi-Fi network. You open &lt;code&gt;http://&amp;lt;phone-ip&amp;gt;:8080&lt;/code&gt; from any browser on your home Wi-Fi — your laptop, your work phone, a Raspberry Pi, anything with a browser — and you see the live doorbell feed. Because the server only listens on the LAN, the video never leaves your home. This is what "no cloud" actually means in practice; the data path is phone → router → laptop, full stop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optional YouTube Live for remote viewing.&lt;/strong&gt; If you want to watch the doorbell from a coffee shop, you can flip the YouTube Live switch and the stream goes out to YouTube as a private/unlisted stream. You're using YouTube's CDN as your remote-viewing pipe instead of paying $30/month to Ring. (See &lt;a href="https://dev.to/superfunicular/best-apps-to-stream-youtube-live-from-your-android-phone-2026-lic"&gt;Best Apps to Stream YouTube Live From Your Android Phone in 2026&lt;/a&gt; for the YouTube setup details.) The feed never lives on Super Funicular's servers because Super Funicular doesn't have any.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Truly free (not free-with-ads, not free-tier-with-paywall)&lt;/li&gt;
&lt;li&gt;Records with the screen off — the default mode is the doorbell mode&lt;/li&gt;
&lt;li&gt;Local-only by design; no account required, no email, no signup&lt;/li&gt;
&lt;li&gt;Embedded web server for any-browser viewing on the LAN&lt;/li&gt;
&lt;li&gt;YouTube Live for remote viewing if you want it&lt;/li&gt;
&lt;li&gt;All recordings stored on the phone's own SD card / internal storage&lt;/li&gt;
&lt;li&gt;Open-ended use — can be re-pointed at a pet bowl, a workshop bench, a baby crib without unlocking a different "mode"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No motion-trigger event log out of the box. The doorbell records continuously rather than capturing 30-second motion clips like Ring does. (Honest tradeoff: continuous recording is more reliable, but it is more storage and more video to scrub through.)&lt;/li&gt;
&lt;li&gt;No two-way audio (the phone's mic records, but there is no live "speak through the doorbell" feature). If you need to actually answer the door from your phone, that is a limitation.&lt;/li&gt;
&lt;li&gt;No motion-zone configuration. The whole frame is the recording area.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; If you mostly want continuous video of who came to the door and an easy live view from your laptop, this is the only app on the list that gets all three doorbell jobs right with no asterisks. Get it on Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam&amp;amp;utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026w19" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  #2 — Alfred Camera
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free with ads + paid Premium tier ($30/year).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alfred Camera is the most popular phone-as-security-camera app on the Play Store, and for good reason — it has been around for years, the team behind it ships consistently, and the basic experience is polished. As a doorbell, however, it asks for a tax that the others on this list don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What works:&lt;/strong&gt; The setup is the smoothest of any app in this comparison. Install on the doorbell phone, install on your viewing phone, sign in with the same account, and you have a paired feed within ninety seconds. Motion detection triggers a clip and a push notification, which is closer to the Ring experience than what Background Camera RemoteStream offers out of the box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What doesn't:&lt;/strong&gt; Alfred Camera is fundamentally a cloud product. The clips and motion events are routed through Alfred's servers. The free tier is ad-supported (you'll see ads in the viewer app), recording resolution is throttled (HD is paywall), motion-zone configuration is paywall, and clip storage is limited. It is not "free" in the way that costs you nothing; it is "free enough that most people don't bother to upgrade."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Polished, low-friction setup&lt;/li&gt;
&lt;li&gt;Motion detection + push notification on the free tier&lt;/li&gt;
&lt;li&gt;Cross-platform viewer (iOS + Android + browser)&lt;/li&gt;
&lt;li&gt;Active developer presence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud-based (your doorbell video is on Alfred's servers, not yours)&lt;/li&gt;
&lt;li&gt;Free tier has ads in the viewer&lt;/li&gt;
&lt;li&gt;Most useful features (HD, zones, longer clip retention) are behind a $30/year paywall&lt;/li&gt;
&lt;li&gt;Account required — you cannot use it without signing up&lt;/li&gt;
&lt;li&gt;Pulls regular telemetry; not the right pick if you care about privacy on a porch camera&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; A reasonable choice if you don't mind cloud storage and an account. Less of a fit if "no subscription, no signup" is what you came here for.&lt;/p&gt;

&lt;h2&gt;
  
  
  #3 — AtHome Camera
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free with ads + paid tier (no subscription, one-time $4.99 unlocks).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AtHome Camera is the closest functional analog to Alfred Camera but with a slightly different business model and a slightly stripped-down feature set. It is a paired app: install AtHome Camera on the doorbell phone, install the AtHome Video Streamer companion on your viewing phone, link them with a code, and you have a feed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What works:&lt;/strong&gt; No mandatory subscription. The motion-detection feature is on the free tier with a usable clip retention window. There is a cross-platform Windows/macOS viewer, which is helpful if you want a permanent monitor at a desk PC. Setup is reasonably straightforward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What doesn't:&lt;/strong&gt; The viewer app pushes ads pretty aggressively on the free tier. The video relay is cloud-routed even though clip storage is local-ish, which means the feed travels through AtHome's relay servers — privacy-equivalent to Alfred. Account setup is required. App stability has been hit-or-miss in long-running configurations (the doorbell case is exactly a long-running configuration).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One-time payment instead of monthly subscription&lt;/li&gt;
&lt;li&gt;Desktop viewer available&lt;/li&gt;
&lt;li&gt;Reasonable free tier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud relay for the live feed&lt;/li&gt;
&lt;li&gt;Heavy ads on free tier&lt;/li&gt;
&lt;li&gt;Account required&lt;/li&gt;
&lt;li&gt;Long-running stability less reliable than Alfred or our app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; A middle ground. If you specifically want a desktop viewer and you're willing to spend $5 once, it has a niche. As a privacy-first doorbell, no.&lt;/p&gt;

&lt;h2&gt;
  
  
  #4 — IP Webcam (Pavel Khlebovich)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free. No account. Local-only. Old-school.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;IP Webcam is the spiritual ancestor of every "phone as IP camera" app and is genuinely free, no signup, with a local-only HTTP stream. It has been around for over a decade and has earned a real fan base among people who run home automation setups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What works:&lt;/strong&gt; Like Background Camera RemoteStream, IP Webcam exposes a local web server with the live feed and recordings — the architecture is similar. It has been the go-to for "I want to see my Android camera in Home Assistant" use cases for years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What doesn't:&lt;/strong&gt; The screen-off recording case is where IP Webcam has historically been weak. The default behavior on modern Android (12+) is for the camera to stop or degrade quality when the screen is off, because IP Webcam was designed before Android's foreground-service / Doze rules tightened. There are workarounds (battery optimization disable, foreground service options) but they are not the &lt;em&gt;default&lt;/em&gt; setup, and a doorbell needs to work from defaults if a non-developer is going to set it up. The UI is also showing its age — it looks like an Android 4 app and it is hard to find settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free, local-only, no account — the right values&lt;/li&gt;
&lt;li&gt;Decade of stability for the basic use case&lt;/li&gt;
&lt;li&gt;Strong Home Assistant / DIY home-automation integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Screen-off recording requires manual configuration on modern Android; not the default&lt;/li&gt;
&lt;li&gt;Aging UI&lt;/li&gt;
&lt;li&gt;Reportedly higher battery use than newer purpose-built apps&lt;/li&gt;
&lt;li&gt;No YouTube Live built-in&lt;/li&gt;
&lt;li&gt;Less actively developed than the leaders&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; For a homelab user who wants a Home Assistant-friendly local-only stream, IP Webcam is fine. For a doorbell that needs to "just work" with the screen off when a non-technical household member sets it up, the screen-off gap is the dealbreaker.&lt;/p&gt;

&lt;h2&gt;
  
  
  #5 — WardenCam
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free with ads + paid tier ($24.99/year).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WardenCam is a polished phone-pair security camera app with a Google Drive integration that lets you store motion clips in your own Drive instead of the developer's cloud. It has a small but loyal user base and the developer is responsive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What works:&lt;/strong&gt; The Google Drive integration is genuinely interesting — it sidesteps the "trust the app developer's cloud" problem by letting you put the clips in storage you already control. Motion detection works, the viewer app is decent, and the free tier is functional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What doesn't:&lt;/strong&gt; Like Alfred and AtHome, WardenCam routes the live feed through a relay. Like everything except #1 and #4, it requires an account. The free tier is ad-supported and the feature gates are aggressive enough that the practical experience pushes you toward the $25/year tier. Battery efficiency in continuous mode is mediocre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clip storage in your own Google Drive (the most novel choice on this list)&lt;/li&gt;
&lt;li&gt;Reasonable, affordable paid tier&lt;/li&gt;
&lt;li&gt;Cross-platform viewer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud-relayed live feed&lt;/li&gt;
&lt;li&gt;Account required&lt;/li&gt;
&lt;li&gt;Ads on free tier&lt;/li&gt;
&lt;li&gt;Aggressive paywalls on the experience-improving features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; If you specifically want motion clips in Google Drive and you don't mind the relay, this has an angle no one else has. As a privacy-first option, no.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side-by-side comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;App&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Records w/ screen off (default)&lt;/th&gt;
&lt;th&gt;Local-only feed&lt;/th&gt;
&lt;th&gt;Account required&lt;/th&gt;
&lt;th&gt;Motion detection&lt;/th&gt;
&lt;th&gt;YouTube Live&lt;/th&gt;
&lt;th&gt;Privacy verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Background Camera RemoteStream&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Continuous (no event log)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Best&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alfred Camera&lt;/td&gt;
&lt;td&gt;Free / $30/yr&lt;/td&gt;
&lt;td&gt;No (relays through cloud)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AtHome Camera&lt;/td&gt;
&lt;td&gt;Free / $4.99 once&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Cloud relay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP Webcam&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Manual config required&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (motion logging)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Local but old&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WardenCam&lt;/td&gt;
&lt;td&gt;Free / $24.99/yr&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;No (relays)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Cloud relay (Drive for clips)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why the local-only architecture matters for a doorbell specifically
&lt;/h2&gt;

&lt;p&gt;A doorbell is the camera with the worst privacy properties of any camera in your home. Every visitor — the mail carrier, your neighbor, a delivery driver, a kid selling cookies, a date — is captured by it. A nanny cam in a closed bedroom captures three people; a doorbell captures three thousand a year.&lt;/p&gt;

&lt;p&gt;If that camera is cloud-relayed, every one of those captures traverses someone else's server. The 2024-2025 wave of camera-cloud breaches (Wyze cross-account video exposure in 2024, Ring's law-enforcement-handover policy reversal, the Be Prime breach we covered in &lt;a href="https://dev.to/superfunicular/when-the-camera-cloud-becomes-the-attack-surface-what-the-be-prime-breach-should-teach-every-55ba"&gt;When the Camera Cloud Becomes the Attack Surface&lt;/a&gt;) is the practical demonstration of the architecture failure: cloud-managed camera fleets create a pooled target. Every additional camera on the platform increases the value of breaching the platform once.&lt;/p&gt;

&lt;p&gt;A local-only doorbell — the kind Background Camera RemoteStream and IP Webcam make possible — does not have that property. The video never leaves the LAN. Even if the developer of the app is breached, your doorbell footage is not in the breach because the developer never had it. The blast radius of a compromise is your one phone, not a million phones.&lt;/p&gt;

&lt;p&gt;That is the privacy argument, and for a doorbell specifically it is sharp because the doorbell sees more strangers than any other camera you own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical doorbell setup — the part the comparison doesn't tell you
&lt;/h2&gt;

&lt;p&gt;Once you've picked an app, the configuration questions are the same regardless of which one you used. A few of them are non-obvious:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power.&lt;/strong&gt; A doorbell phone needs to be plugged in 24/7. If you keep the battery at 100% with USB-C continuous power for a year, you will degrade the battery aggressively (lithium-ion batteries hate being kept at 100%). The fix is to set a charge limit at 80% in Android's battery settings (most modern Android phones support this; check Settings → Battery → Charging optimization). This is the same trick we covered in &lt;a href="https://dev.to/superfunicular/why-your-old-phone-security-camera-dies-after-4-hours-and-how-to-fix-it-on-modern-android-3ppp"&gt;Why Your "Old Phone Security Camera" Dies After 4 Hours (And How to Fix It on Modern Android)&lt;/a&gt; — a doorbell shares the battery-management problem with any 24/7 phone-camera setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lens position.&lt;/strong&gt; A 12 MP phone camera at 18 inches from the door produces a wider frame than a 27 mm-equivalent doorbell, but a slightly worse low-light frame. If your porch is dim at night, the trick is the porch light (5–10 lumens of warm light is enough to give a phone camera a usable frame; "smart" doorbells use IR LEDs because they don't have any other choice). A constant porch light is a cheaper IR-equivalent than the HDR sensor in a Ring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mounting.&lt;/strong&gt; A 3D-printed phone mount, a strong magnetic mount, or a low-tech adhesive mount on the inside of a window all work. The window mount is by far the easiest because it eliminates the weather sealing problem entirely — the phone is on the inside of the glass and gets a clean view of the porch without any environmental exposure. We have not yet seen a phone-as-doorbell setup that goes outdoor without weather-sealing it, and we recommend not trying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audio consent.&lt;/strong&gt; If your doorbell records audio (and most of these apps do by default), check your jurisdiction's two-party consent rule for audio. In some U.S. states (California, Florida, Pennsylvania, Washington, plus several others) recording audio of a conversation requires both parties' consent. Most home-doorbell videography is fine because there is no conversation happening, but a doorbell that picks up sidewalk conversation is a different question. If you are worried, mute the audio in the app (Background Camera RemoteStream lets you turn audio off without losing video).&lt;/p&gt;

&lt;h2&gt;
  
  
  Verdict
&lt;/h2&gt;

&lt;p&gt;For "old Android phone → doorbell, free, no subscription, no signup, no cloud," the honest stack ranks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Background Camera RemoteStream&lt;/strong&gt; — the only app with screen-off continuous recording as the &lt;em&gt;default&lt;/em&gt;, local-only feed, no account, and YouTube Live as an optional escape hatch. The doorbell case is what it was designed for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP Webcam&lt;/strong&gt; — local-only and free, but the screen-off case is a manual-config problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alfred Camera&lt;/strong&gt; — the polished cloud option, fine if cloud is fine for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WardenCam&lt;/strong&gt; — the Google-Drive-storage option, niche.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AtHome Camera&lt;/strong&gt; — middle of the pack, fewer reasons to pick it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to stop renting your porch surveillance from a hardware company, install Background Camera RemoteStream from &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam&amp;amp;utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026w19" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt; on the phone in your drawer, point it at the door, plug it in, and that is your doorbell. We have written about &lt;a href="https://dev.to/superfunicular/turn-your-old-android-phone-into-a-free-security-camera-no-subscription-required-1m70"&gt;how to mount and configure an old phone as a free home security camera&lt;/a&gt; if you want a full setup walkthrough; that piece is the prequel to this one.&lt;/p&gt;

&lt;p&gt;The hardware to make a doorbell already exists in your house. The software to make it actually work is free.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Background Camera RemoteStream is built by &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;Super Funicular LLC&lt;/a&gt;. Free on &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam&amp;amp;utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026w19" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;. No account, no subscription, no cloud.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>privacy</category>
      <category>security</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Build-in-Public Week 1 — 35 Articles, 185 Views, First Bookmark, First Bluesky Follower, and the Pareto in a Flat Chart</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Sat, 09 May 2026 07:12:06 +0000</pubDate>
      <link>https://dev.to/superfunicular/build-in-public-week-1-35-articles-185-views-first-bookmark-first-bluesky-follower-and-the-4b6j</link>
      <guid>https://dev.to/superfunicular/build-in-public-week-1-35-articles-185-views-first-bookmark-first-bluesky-follower-and-the-4b6j</guid>
      <description>&lt;h1&gt;
  
  
  Build-in-Public Week 1 — 35 Articles, 185 Views, First Bookmark, First Bluesky Follower, and the Pareto in a Flat Chart
&lt;/h1&gt;

&lt;p&gt;This is the Friday field report for Week 1 of public marketing on &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam&amp;amp;utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026w19" rel="noopener noreferrer"&gt;&lt;strong&gt;Background Camera RemoteStream&lt;/strong&gt;&lt;/a&gt; — a privacy-first Android camera app that records with the screen off, streams to YouTube Live, and never phones home. Three days ago I posted &lt;a href="https://dev.to/superfunicular/how-i-built-a-production-android-app-in-75-ai-sessions-part-2-what-the-first-month-of-public-1399"&gt;Part 2 of the build-in-public series&lt;/a&gt; — the philosophical month-one retrospective. This post is the boring tactical sibling. The data, the experiments, what is queued for Week 2, and what I am no longer doing.&lt;/p&gt;

&lt;p&gt;If you are an indie hacker keeping a public scoreboard, this is the format I have settled on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Friday-of-Friday scoreboard
&lt;/h2&gt;

&lt;p&gt;The cumulative numbers as of this morning, sourced from the actual dashboards (no rounding, no projection):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Channel&lt;/th&gt;
&lt;th&gt;Volume&lt;/th&gt;
&lt;th&gt;Engagement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;dev.to&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;35 articles&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;185 cumulative views, 2 reactions, &lt;strong&gt;first ever bookmark today&lt;/strong&gt;, 4 followers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X / Twitter&lt;/td&gt;
&lt;td&gt;~59 tweets&lt;/td&gt;
&lt;td&gt;0 followers, blue-check active, &lt;strong&gt;first verified-account reply chain today&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluesky&lt;/td&gt;
&lt;td&gt;33 posts&lt;/td&gt;
&lt;td&gt;4 cumulative likes, &lt;strong&gt;first ever follower today&lt;/strong&gt; (mutual)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quora&lt;/td&gt;
&lt;td&gt;15 answers&lt;/td&gt;
&lt;td&gt;First-position SERP slot today, 1 organic follower captured this week&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LinkedIn&lt;/td&gt;
&lt;td&gt;Profile only&lt;/td&gt;
&lt;td&gt;0 posts shipped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reddit&lt;/td&gt;
&lt;td&gt;Account only&lt;/td&gt;
&lt;td&gt;API approval still pending&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The headline reading: the &lt;em&gt;flow&lt;/em&gt; is moving in the right direction even when the &lt;em&gt;flat numbers&lt;/em&gt; look like nothing. Three "first ever" milestones landed in a single day this week. None of them showed up in the article-view chart, because they happened on platforms that are not dev.to.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Week 1 ship log
&lt;/h2&gt;

&lt;p&gt;Every dev.to article published this week, in order, with archetype and the day's gate:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Archetype&lt;/th&gt;
&lt;th&gt;Title (abbrev)&lt;/th&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;Gate / fate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;May 2 (Sat)&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Best Free Nanny Cam Apps for Android in 2026&lt;/td&gt;
&lt;td&gt;3598582&lt;/td&gt;
&lt;td&gt;+20 views in the 24h after publish — caught a feed wave&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 2 (Sat)&lt;/td&gt;
&lt;td&gt;NJ&lt;/td&gt;
&lt;td&gt;ClayRat Trojan — Privacy-First Camera Architecture&lt;/td&gt;
&lt;td&gt;3599501&lt;/td&gt;
&lt;td&gt;Day-1: 0 — first newsjack to hit the ceiling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 2 (Sat)&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Why Your Old Phone Security Camera Dies After 4 Hours&lt;/td&gt;
&lt;td&gt;3601469&lt;/td&gt;
&lt;td&gt;Day-1: 1 — confirmed C archetype is structurally weak&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 2 (Sat)&lt;/td&gt;
&lt;td&gt;NJ&lt;/td&gt;
&lt;td&gt;NoVoice Rootkit Hit 2.3M Android Devices&lt;/td&gt;
&lt;td&gt;3601479&lt;/td&gt;
&lt;td&gt;Day-1: 0 — second newsjack ceiling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 3 (Sun)&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Monitor Your Dog While You Are at Work for Free&lt;/td&gt;
&lt;td&gt;3602874&lt;/td&gt;
&lt;td&gt;Day-1: 6 — D archetype average held&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 3 (Sun)&lt;/td&gt;
&lt;td&gt;NJ&lt;/td&gt;
&lt;td&gt;When the Camera Cloud Becomes the Attack Surface — Be Prime&lt;/td&gt;
&lt;td&gt;3603034&lt;/td&gt;
&lt;td&gt;Day-1: 1 — third newsjack ceiling, throttle confirmed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;May 4–5 (Mon/Tue)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;DEV.TO PUBLISHING THROTTLE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Hard pause — no new posts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 6 (Wed)&lt;/td&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;How I Built a Production Android App — Part 2&lt;/td&gt;
&lt;td&gt;3619147&lt;/td&gt;
&lt;td&gt;Day-2 verdict: still throttled (0 views @ 48h)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 6 (Wed)&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;The Architecture Behind a $0 Security Camera&lt;/td&gt;
&lt;td&gt;3619879&lt;/td&gt;
&lt;td&gt;Day-2 verdict: still throttled (0 views @ 48h)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 7 (Thu)&lt;/td&gt;
&lt;td&gt;aux&lt;/td&gt;
&lt;td&gt;Weekly clip post (Digital Nomad Media)&lt;/td&gt;
&lt;td&gt;3623990&lt;/td&gt;
&lt;td&gt;Out of main publish cadence&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most important entry on the ship log is the row that says &lt;strong&gt;DEV.TO PUBLISHING THROTTLE&lt;/strong&gt;. I will get to it.&lt;/p&gt;

&lt;p&gt;Cumulative dev.to footprint as of this morning: &lt;strong&gt;35 articles, 185 cumulative views, 2 reactions, 1 bookmark (the first one ever, landed today), 4 followers.&lt;/strong&gt; The first reaction landed on id 3590177, a build-in-public sibling post from late April. The first bookmark landed today, on the same archetype family. Both signal-bearing engagements in the catalog have come from build-in-public posts. That is not random.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 24-hour doubling — and the flat 48 that followed
&lt;/h2&gt;

&lt;p&gt;The single most counterintuitive number from this week: dev.to total views went from &lt;strong&gt;67 → 133 in a 24-hour window between May 2 and May 3&lt;/strong&gt;, then climbed steadily to &lt;strong&gt;185 by May 7&lt;/strong&gt;, then went &lt;strong&gt;flat for the next 48 hours&lt;/strong&gt;. The catalog roughly tripled its lifetime view count in five days, then stalled.&lt;/p&gt;

&lt;p&gt;Crucially, the May 2–3 growth did not come from new posts. The pieces published in that window (the two newsjacks and the use-case sequel) added roughly 0–6 views each. The growth came from the &lt;strong&gt;existing catalog&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;id 3592937 ("Best Apps to Stream YouTube Live") +20 views in 24h&lt;/li&gt;
&lt;li&gt;id 3598582 ("Best Free Nanny Cam Apps for Android") +20 views in 24h&lt;/li&gt;
&lt;li&gt;id 3590206 ("Turn Your Old Android Phone Into a Free Security Camera") +22 views over the week, +10 more in a single 24h window mid-week&lt;/li&gt;
&lt;li&gt;id 3592840 (a comparison-list piece) +10 views in a single 24h window&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are 4–7 day old pieces finally getting feed pickup or organic search hits. They are working precisely because they are no longer new. The lesson: &lt;strong&gt;dev.to view curves on this account are bimodal — a small day-1 burst, then a 4–7 day gap, then a second wave.&lt;/strong&gt; If I had judged any of these pieces by day-1 views I would have killed all of them.&lt;/p&gt;

&lt;p&gt;The pattern is now baked into the calendar: every archetype gets at least 72 hours before being judged, and 7 days before being demoted.&lt;/p&gt;

&lt;h2&gt;
  
  
  The archetype Pareto, after a full week
&lt;/h2&gt;

&lt;p&gt;Tagging every piece with its archetype turned out to be the highest-leverage thing I started doing in week one. The averages have stabilized enough to publish:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Archetype&lt;/th&gt;
&lt;th&gt;Pieces&lt;/th&gt;
&lt;th&gt;Cumulative views&lt;/th&gt;
&lt;th&gt;Avg / piece&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Build-in-Public (E)&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;~35&lt;/td&gt;
&lt;td&gt;17.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use Case Showcase (D)&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comparison List (A)&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;4.62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Newsjack (NJ)&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical Deep-Dive (C)&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dramatic Story (B)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;n/a (not validated)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Build-in-Public is averaging &lt;strong&gt;35× the views of Technical Deep-Dive&lt;/strong&gt; despite being the cheaper format to write. Comparison Lists looked like the worst-performing archetype 24 hours after publish (1.6 avg) and tripled to 4.62 by day three — saved from being demoted by the bimodal-distribution rule above. Build-in-Public is also the only archetype that has produced both reactions in the catalog and the first bookmark.&lt;/p&gt;

&lt;p&gt;The operational consequence: the Week 2 calendar adds &lt;strong&gt;+1 E and +1 D&lt;/strong&gt; in weekday slots, keeps &lt;strong&gt;Comparison Lists on weekend slots&lt;/strong&gt; for the 72-hour SERP runway, and quietly drops Technical Deep-Dive from any standalone slot until it earns its way back. Newsjacks are paused until Monday May 11.&lt;/p&gt;

&lt;h2&gt;
  
  
  The newsjack throttle — and why it has not lifted
&lt;/h2&gt;

&lt;p&gt;Three consecutive newsjacks (ClayRat, NoVoice, Be Prime) hit identical 0–2 view ceilings inside 48 hours, while four-day-old articles continued to rack up views. The most parsimonious explanation: dev.to has a &lt;strong&gt;per-account feed-volume throttle&lt;/strong&gt;, and I tripped it by publishing 30+ articles in under 96 hours.&lt;/p&gt;

&lt;p&gt;Diagnostic test: existing catalog still surfaces (proof: the +20s above), but new pieces don't get feed pickup. Conclusion: this is a velocity problem, not a quality problem.&lt;/p&gt;

&lt;p&gt;The remediation, as planned:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stop publishing for 48–72 hours.&lt;/strong&gt; Mon and Tue (May 4–5) went dark on dev.to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resume with a single high-value sequel&lt;/strong&gt; to one of the top performers, not another newsjack. (The Wednesday May 6 build-in-public Part 2.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-evaluate feed pickup on the resumed piece&lt;/strong&gt; before reintroducing daily volume.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What actually happened: the Wednesday resume piece (id 3619147, Part 2) and the architectural sibling piece (id 3619879) &lt;strong&gt;both hit 0 views at the 48-hour mark&lt;/strong&gt;, just like the newsjacks before them. That is the May 7 verdict, and it is the May 8 verdict, and as of this morning it is the May 9 verdict. The throttle has not lifted on a five-day pause. The Thursday May 8 D-sequel I had drafted was therefore deferred to Monday May 12, after the planned Hacker News submission window — better to land a sequel into a fresh discovery surface than dump it onto a still-throttled feed.&lt;/p&gt;

&lt;p&gt;If you publish for a living on dev.to and you are pushing more than five posts per week, watch your day-1 numbers across multiple posts. If three in a row hit a 0-view ceiling while older pieces continue to gain, you are throttled, not unlucky. And if your "resume" post is also throttled, the cooldown is longer than 48–72 hours — you may be looking at a full week or more, depending on the size of the burst that triggered it.&lt;/p&gt;

&lt;p&gt;The newsjack archetype is hard-capped at 2/week going forward, regardless of how good the news is. Next newsjack window opens Monday May 11.&lt;/p&gt;

&lt;h2&gt;
  
  
  Off-dev.to: where the surprising data lives
&lt;/h2&gt;

&lt;p&gt;The dev.to view chart is the headline, but the most informative single data points this week — and the three "first ever" milestones — were all elsewhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quora.&lt;/strong&gt; Monthly content views nearly doubled — &lt;strong&gt;34 → 66 (+94%)&lt;/strong&gt; in the first half of the week. The answer count climbed from 11 to &lt;strong&gt;15 published answers&lt;/strong&gt; by Friday morning, a +36% week-over-week increase. The 14th answer (a SimpliSafe-comparison piece) was algorithmically surfaced into a first-position SERP slot. The 15th (a dashcam GEO-targeted answer) was published this morning and is also pulling SERP rank. The first organic Quora follower captured this account has ever recorded landed early in the week. &lt;strong&gt;Quora is the closest thing to a working channel this account has, and it costs me ~10 minutes per answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bluesky.&lt;/strong&gt; Two milestones today, both first-evers: a third-party like landed earlier in the week from @zip358com, and &lt;strong&gt;the first ever follower landed this morning&lt;/strong&gt; — Liv Well (@olivination.bsky.social, 2.1K followers, vegan/wellness audience). The follow came in via a #dogs hashtag overlap on a pet-monitoring post, and the follow-back established a mutual. One follower in 33 posts is a 3% follower-conversion-per-post on a cold-start graph — not zero, but not enough to call Bluesky a working channel. The conclusion I am drawing: &lt;strong&gt;Bluesky's cold-start tax is brutal, and audience overlap on hashtags can produce a follower out of a community you did not target&lt;/strong&gt;. The next Bluesky experiment is intentional follower acquisition through neighbor topics (privacy, dogs, indie dev), not more posts into a 0-graph.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;X / Twitter.&lt;/strong&gt; ~59 tweets, 0 followers, but &lt;strong&gt;two structural wins this week&lt;/strong&gt;: (1) the &lt;a class="mentioned-user" href="https://dev.to/superfunicular"&gt;@superfunicular&lt;/a&gt; blue-check verification went live, which raises baseline reply-boost weight on the algorithm; (2) the first verified-account reply chain landed this morning, a back-and-forth with Mahere (@Mahere_Fluxera, founder of appxpose.app Privacy Scanner — a privacy-adjacent founder, the right kind of audience overlap). The reply chain extended past the first exchange, which is the actual signal — verified founders rarely engage on cold accounts unless the content is being read.&lt;/p&gt;

&lt;p&gt;The single most useful artifact of last week was a &lt;strong&gt;reply on a 51,500-view tweet&lt;/strong&gt; that was actively recommending a competitor (AlfredCamera). The reply named three concrete differentiators in 280 characters and linked the Play Store. I cannot prove it produced installs, but I would not trade it for the 58 standalone tweets that preceded it. The new operational rule: &lt;strong&gt;one reply per day on a saved search&lt;/strong&gt;, logged with parent-tweet view count, capped to avoid rate limits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LinkedIn.&lt;/strong&gt; Profile is up. Nothing has shipped yet beyond the bio. Week 2 will change this — the first long-form post is queued (this article's contrarian "deep-dive is the worst archetype" angle, adapted).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reddit.&lt;/strong&gt; Account created, API access pending approval. Week 1 was blocked on this. r/AlfredCamera surfaced &lt;strong&gt;three active pain threads&lt;/strong&gt; this week (hardware burnout, notification delay, doxx incident) that map cleanly to our differentiators. The moment API access lands, the queue is full.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is queued for Week 2
&lt;/h2&gt;

&lt;p&gt;The decisions made this week, all of them justified by the data above:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hacker News Show HN submission of id 3589467 on Tuesday May 12 at ~08:00 PT.&lt;/strong&gt; It is the highest per-piece efficiency archetype I have, the family that produced both reactions and the only bookmark, and the parent piece is now four weeks old — old enough to look real. Submission window is locked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparison List re-promoted from HOLD to SCALE.&lt;/strong&gt; Day-one views had us pointing at the exit; the 72-hour indexation pattern saved it. Week 2 carries an A piece on Mon May 12 (al&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>buildinpublic</category>
      <category>indiehackers</category>
      <category>marketing</category>
      <category>android</category>
    </item>
    <item>
      <title>This week on @Digital_Nomad_Media — 2 new clips (2026-W19)</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Thu, 07 May 2026 03:31:41 +0000</pubDate>
      <link>https://dev.to/superfunicular/this-week-on-digitalnomadmedia-2-new-clips-2026-w19-4cmo</link>
      <guid>https://dev.to/superfunicular/this-week-on-digitalnomadmedia-2-new-clips-2026-w19-4cmo</guid>
      <description>&lt;p&gt;Quick weekly digest from my YouTube channel — every clip below is fresh in the last 7 days.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=j6Cr4YCVgys" rel="noopener noreferrer"&gt;Some roads lead to toads ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=j6Cr4YCVgys" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fekom7ww7jrkbfads01.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;42s&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=SqZj2qVaZHM" rel="noopener noreferrer"&gt;Don't get behind the slow driver ✌️🤠&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=SqZj2qVaZHM" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwunfzcxuvfhxeckvde9s.jpg" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;84s&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  I also built an app — DigiCam
&lt;/h2&gt;

&lt;p&gt;I also made DigiCam, listed as Background Camera RemoteStream on Google Play. It's the world's first screen-off YouTube live streaming app: stream live with the screen off for ~10× the battery life, plus background recording, remote web console control, file-based YouTube Live, and playlists. Privacy-first, all local storage. Free with ads or Pro for the full feature set:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.superfunicular.digicam&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want the under-the-hood version?&lt;/strong&gt; I wrote up &lt;a href="https://dev.to/superfunicular/the-architecture-behind-a-0-security-camera-how-an-old-android-phone-replaces-ring-without-the-3d70"&gt;the architecture behind a $0 security camera&lt;/a&gt; and a 2026 comparison of &lt;a href="https://dev.to/superfunicular/best-apps-to-stream-youtube-live-from-your-android-phone-2026-lic"&gt;apps to stream YouTube Live from an Android phone&lt;/a&gt; — DigiCam's a useful starting point if you've ever wanted a phone-only studio.&lt;/p&gt;




&lt;p&gt;Watch the full channel: &lt;a href="https://www.youtube.com/@Digital_Nomad_Media" rel="noopener noreferrer"&gt;@Digital_Nomad_Media&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  SuperFunicular #DigiCam #DigiNomad #YouTubeShorts #ContentCreator
&lt;/h1&gt;

</description>
      <category>diginomad</category>
      <category>youtube</category>
      <category>indiedev</category>
      <category>digicam</category>
    </item>
    <item>
      <title>The Architecture Behind a $0 Security Camera — How an Old Android Phone Replaces Ring Without the Cloud</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Wed, 06 May 2026 09:11:56 +0000</pubDate>
      <link>https://dev.to/superfunicular/the-architecture-behind-a-0-security-camera-how-an-old-android-phone-replaces-ring-without-the-3d70</link>
      <guid>https://dev.to/superfunicular/the-architecture-behind-a-0-security-camera-how-an-old-android-phone-replaces-ring-without-the-3d70</guid>
      <description>&lt;h2&gt;
  
  
  Why This Is a Companion Piece
&lt;/h2&gt;

&lt;p&gt;A few days ago I wrote &lt;a href="https://dev.to/superfunicular/turn-your-old-android-phone-into-a-free-security-camera-no-subscription-required-1m70"&gt;Turn Your Old Android Phone Into a Free Security Camera (No Subscription Required)&lt;/a&gt; — a step-by-step guide to repurposing a drawer phone as a continuous-recording security camera with no cloud, no account, and no monthly fees.&lt;/p&gt;

&lt;p&gt;That post answered "how." This one answers "why it works at all."&lt;/p&gt;

&lt;p&gt;If you're an Android developer, the question that should be bothering you is: if a drawer phone is hardware-equivalent or hardware-superior to a $300 security camera, why doesn't every Android phone already do this? The answer is software, and it's interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Things Stock Android Won't Do
&lt;/h2&gt;

&lt;p&gt;Out of the box, an Android phone is unusable as a security camera for three specific reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The camera surface is destroyed when the screen turns off.&lt;/strong&gt; This is a battery decision, not a hardware limitation. The OS assumes that a user-facing app cannot be doing useful work when the display is off, so it tears down the Camera2 session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;There is no built-in remote viewer.&lt;/strong&gt; A handheld phone has no UX surface for "let other devices on my network connect to me and watch what my camera sees."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OEM dozing kills long-running services.&lt;/strong&gt; MIUI, OneUI, ColorOS, and friends each have their own aggressive battery-optimization layers on top of stock Android's Doze mode. A naïvely written background-camera app gets killed within an hour on most non-Pixel devices.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A real "old phone as security camera" app has to solve all three. Each one is a different sub-problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: Surviving Screen-Off
&lt;/h2&gt;

&lt;p&gt;The textbook solution is a foreground service holding a partial wakelock, plus a Camera2 capture session that's owned by the service rather than an Activity.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CameraRecordingService&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Service&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;wakeLock&lt;/span&gt; &lt;span class="k"&gt;by&lt;/span&gt; &lt;span class="nf"&gt;lazy&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getSystemService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;POWER_SERVICE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nc"&gt;PowerManager&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;newWakeLock&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;PowerManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;PARTIAL_WAKE_LOCK&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"BgCam::recording"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;onStartCommand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Intent&lt;/span&gt;&lt;span class="p"&gt;?,&lt;/span&gt; &lt;span class="n"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;startId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nc"&gt;Int&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;startForeground&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;NOTIF_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;buildPersistentNotification&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="n"&gt;wakeLock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;acquire&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000L&lt;/span&gt; &lt;span class="cm"&gt;/* 8h cap */&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;startCamera2Session&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;START_STICKY&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;onDestroy&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wakeLock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isHeld&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;wakeLock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;release&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;onDestroy&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three details that took me weeks to get right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The notification has to actually exist before &lt;code&gt;startForeground&lt;/code&gt; is called.&lt;/strong&gt; Android 12+ kills services that call &lt;code&gt;startForeground&lt;/code&gt; from a non-foreground context unless the notification channel is already registered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The wakelock has a max duration&lt;/strong&gt; — &lt;code&gt;acquire(timeout)&lt;/code&gt; with a finite timeout is safer than &lt;code&gt;acquire()&lt;/code&gt; with no argument, because it bounds the worst case if your stop logic crashes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;START_STICKY&lt;/code&gt; matters.&lt;/strong&gt; If the system kills your service for memory pressure, you want it restarted automatically. The Activity that started the service may be long gone.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Problem 2: The Local Web Server
&lt;/h2&gt;

&lt;p&gt;The interesting design choice is that the camera should serve itself — directly, over the LAN, to any browser. No companion app on the viewing device. No cloud relay.&lt;/p&gt;

&lt;p&gt;This is where Ktor on Android earns its keep:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nf"&gt;embeddedServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Netty&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;install&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;CORS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;anyHost&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;routing&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/stream"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;respondBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;contentType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ContentType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"multipart"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"x-mixed-replace; boundary=frame"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="n"&gt;bytes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mjpegFrameStream&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/snapshot"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;respondBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;latestJpegFrame&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nc"&gt;ContentType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;JPEG&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;respondHtml&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;controlPanelHtml&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wait&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three architectural payoffs from this pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero install on the viewing device.&lt;/strong&gt; Any browser on the same WiFi can hit &lt;code&gt;http://192.168.1.x:8080/&lt;/code&gt; and see the feed. Laptops, tablets, smart TVs with browsers, anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No relay infrastructure.&lt;/strong&gt; Cloud-camera companies need datacenter scale to relay every customer's video stream. We don't need any of it because the bytes never leave the LAN.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No third-party data exposure.&lt;/strong&gt; This is the privacy claim's actual technical foundation. There is no "we got breached" failure mode because there is no "we" — the server runs on your phone.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Things to know about putting Ktor on Android:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Netty, not the OkHttp engine. Netty is more battery-friendly for long-running idle servers.&lt;/li&gt;
&lt;li&gt;Don't try to bind to port 80 — Android won't let unprivileged apps. Pick something high (8080, 8443).&lt;/li&gt;
&lt;li&gt;For HTTPS on the LAN, generate a self-signed cert at first launch and accept the browser warning. There is no clean Let's Encrypt path for a host-on-LAN device with a private IP.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Problem 3: OEM Doze
&lt;/h2&gt;

&lt;p&gt;This is the part nobody's article warns you about. You can do everything above correctly and still have your service murdered after 30 minutes on a Xiaomi Redmi. (For users facing this from the &lt;em&gt;consumer&lt;/em&gt; side rather than the developer side, see &lt;a href="https://dev.to/superfunicular/why-your-old-phone-security-camera-dies-after-4-hours-1c1n"&gt;Why Your "Old Phone Security Camera" Dies After 4 Hours&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;The mitigations, in order of how much they help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Request &lt;code&gt;REQUEST_IGNORE_BATTERY_OPTIMIZATIONS&lt;/code&gt;.&lt;/strong&gt; This handles stock Doze.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detect the OEM and link the user directly into the manufacturer's whitelist screen.&lt;/strong&gt; MIUI has a separate "Battery saver" whitelist. OneUI has "Sleeping apps." ColorOS has "Auto-launch." Each is a different intent target. Detecting &lt;code&gt;Build.MANUFACTURER&lt;/code&gt; and routing the user there adds about 40 lines and saves about 80% of OEM-doze killings in my logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heartbeat from the foreground service notification.&lt;/strong&gt; A periodic notification update (once every 5 minutes) keeps the service "interesting" to certain OEM watchdogs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't use WorkManager for the camera loop.&lt;/strong&gt; WorkManager is fine for periodic tasks but it's the wrong tool for "stay running for 8 hours without interruption" — it batches work and is subject to all the same OEM-doze constraints you're trying to escape.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the Architecture Costs
&lt;/h2&gt;

&lt;p&gt;The only feature this architecture &lt;em&gt;can't&lt;/em&gt; easily replicate from a Ring/Nest is push notifications when motion is detected and you're not on your home WiFi. Solving that requires either a relay (which destroys the privacy claim) or a self-hosted notification service (which is a non-trivial follow-on project).&lt;/p&gt;

&lt;p&gt;For continuous monitoring on the LAN — driveway, baby crib, pet area, garage — the architecture is strictly superior to a cloud camera. (For a side-by-side of the consumer apps that implement variants of this architecture, see &lt;a href="https://dev.to/superfunicular/best-free-security-camera-apps-for-android-in-2026-2mdi"&gt;Best Free Security Camera Apps for Android in 2026&lt;/a&gt;.) Better hardware, no rent, no breach surface, no vendor lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for the Industry
&lt;/h2&gt;

&lt;p&gt;Cloud-camera companies sell hardware at near-cost and earn on subscriptions. The drawer-phone architecture undercuts both legs of that business model — the hardware is free because you already own it, and the subscription is gone because the cloud isn't in the picture.&lt;/p&gt;

&lt;p&gt;The reason this isn't more widespread isn't technical. The Android APIs to do all of this have been stable since Camera2 landed in Android 5.0 (2014). It's a marketing-distribution gap: Ring spends more on advertising in a quarter than the entire indie-Android-camera-app category will ever see in a decade.&lt;/p&gt;

&lt;p&gt;If you're an Android developer reading this, the takeaway is: there's a category of "rent-extracting consumer hardware" — security cameras, baby monitors, pet cams, dashcams — where the underlying technical problem is solved and the business model is held in place by marketing budget. The wedge for indie apps is that you don't need to outspend Ring; you just need to be the answer that comes up when someone Googles "free alternative to Ring."&lt;/p&gt;

&lt;h2&gt;
  
  
  How We Apply All of This
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam" rel="noopener noreferrer"&gt;Background Camera RemoteStream&lt;/a&gt; is the implementation of every architecture decision in this article. Free version covers screen-off recording and OEM-doze survival. Pro version adds the embedded Ktor web server for browser-based viewing.&lt;/p&gt;

&lt;p&gt;If you're building something adjacent — a different sensor type on a phone, a different content-server pattern over LAN — I'd love to compare notes in the comments. Camera2 quirks specifically are an underdocumented area and every Android dev I talk to has at least one war story — I covered the development arc itself in &lt;a href="https://dev.to/superfunicular/how-i-built-a-production-android-app-in-75-ai-sessions-part-2-what-the-first-part-missed-2eo3"&gt;How I Built a Production Android App in 75+ AI Sessions — Part 2&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Companion to: &lt;a href="https://dev.to/superfunicular/turn-your-old-android-phone-into-a-free-security-camera-no-subscription-required-1m70"&gt;Turn Your Old Android Phone Into a Free Security Camera (No Subscription Required)&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>android</category>
      <category>camera</category>
      <category>architecture</category>
      <category>privacy</category>
    </item>
    <item>
      <title>How I Built a Production Android App in 75+ AI Sessions — Part 2: What the First Month of Public Metrics Taught Me</title>
      <dc:creator>Super Funicular</dc:creator>
      <pubDate>Wed, 06 May 2026 07:08:00 +0000</pubDate>
      <link>https://dev.to/superfunicular/how-i-built-a-production-android-app-in-75-ai-sessions-part-2-what-the-first-month-of-public-1399</link>
      <guid>https://dev.to/superfunicular/how-i-built-a-production-android-app-in-75-ai-sessions-part-2-what-the-first-month-of-public-1399</guid>
      <description>&lt;h1&gt;
  
  
  How I Built a Production Android App in 75+ AI Sessions — Part 2: What the First Month of Public Metrics Taught Me
&lt;/h1&gt;

&lt;p&gt;A month ago I published &lt;a href="https://dev.to/superfunicular/how-i-built-a-production-android-app-in-75-ai-sessions-1h7g"&gt;a build-in-public post about shipping a production Android app using Claude Code as the primary developer&lt;/a&gt;. The app — &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam&amp;amp;utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026w19" rel="noopener noreferrer"&gt;&lt;strong&gt;Background Camera RemoteStream&lt;/strong&gt;&lt;/a&gt; — was already on the Play Store open testing track at the time. Since then it has hit production, the YouTube Live API quota expansion has been approved, AdMob is live, and I have spent four weeks trying to do something even harder than building it: getting other humans to know it exists.&lt;/p&gt;

&lt;p&gt;This is the unglamorous Part 2.&lt;/p&gt;

&lt;p&gt;It is the post about the marketing month, not the building month. About what it actually feels like to publish 32 articles, 59 tweets, 33 Bluesky posts, and 13 Quora answers, and watch most of them land in the void. About the one reaction I got. About the article that did 40× the floor and the one archetype that quietly outperforms everything else 7×. About the feed-volume throttle that made me sit on this post for three days.&lt;/p&gt;

&lt;p&gt;If you are an indie hacker, a solo founder, or a developer who finally shipped the thing and is now looking at a flat analytics chart wondering whether you broke marketing, this one is for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The headline numbers (real, not rounded up)
&lt;/h2&gt;

&lt;p&gt;Here is the dashboard, as of May 5, 2026, for the &lt;a class="mentioned-user" href="https://dev.to/superfunicular"&gt;@superfunicular&lt;/a&gt; footprint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;dev.to:&lt;/strong&gt; 32 articles published, 175 cumulative views (+21 in the past 48 hours, all from the existing catalog — see Lesson 6), 1 reaction, 0 comments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twitter / X:&lt;/strong&gt; ~59 tweets, 0 followers (yes, still zero), blue check live as of two days ago, 1 reply on a 51,500-view tweet that was actively recommending a competitor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bluesky:&lt;/strong&gt; 33 posts, 0 followers, 4 cumulative likes, 0 reposts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quora:&lt;/strong&gt; 13 answers, 13 followers, 66 monthly content views (up from 34 the week before); first algorithmically-surfaced "Question for You" routed to the profile this week&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; profile, but nothing has shipped yet beyond the bio&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reddit:&lt;/strong&gt; account created, API access pending; posting blocked&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indie Hackers / Uneed.best / Pitch Wall / SideProjectors / Launching Next:&lt;/strong&gt; product pages live or in queue; no measurable referral traffic yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your reaction to that list is "that is depressing," that is a healthy reaction. It is also wrong.&lt;/p&gt;

&lt;p&gt;The sentence that took me a month to internalize is this: &lt;strong&gt;the headline numbers are noise; the distribution is the signal.&lt;/strong&gt; Your one-month flat-line chart is hiding a Pareto, and the Pareto is your real product strategy.&lt;/p&gt;

&lt;p&gt;Here is what I mean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 1 — Pareto is the only metric that matters in month one
&lt;/h2&gt;

&lt;p&gt;Of those 32 dev.to articles, &lt;strong&gt;5 of them produced 100% of the views that broke the floor.&lt;/strong&gt; The other 27 are within rounding distance of zero. The single best piece — a comparison list titled "Best Apps to Stream YouTube Live" (id 3592937) — is at 40 views. The top five, in order, are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;id 3592937&lt;/strong&gt; — "Best Apps to Stream YouTube Live" — 40 views (Comparison list)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;id 3590206&lt;/strong&gt; — "Turn Your Old Android Phone Into a Free Security Camera" — 22 views (Use case)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;id 3589467&lt;/strong&gt; — "How I Built a Production Android App in 75+ AI Sessions" (Part 1, this article's parent) — 20 views (Build-in-public)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;id 3590177&lt;/strong&gt; — Build-in-Public sibling post — got the only reaction in the entire catalog&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;id 3598582&lt;/strong&gt; — "Best Free Nanny Cam Apps for Android" — gained +20 views in a single 24-hour window four days after publish (Comparison list)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything else is at single digits. Some of it is at zero.&lt;/p&gt;

&lt;p&gt;The temptation in month one is to look at the average — 175 views ÷ 32 articles ≈ 5.5 views per piece — and conclude that you have a "low-engagement problem." You don't. You have a &lt;strong&gt;discovery problem&lt;/strong&gt;. Five pieces work, and the rest are scaffolding. The right move is not to publish more scaffolding. The right move is to &lt;strong&gt;figure out why those five worked and write the sequels&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is exactly what next week's content calendar does. The piece directly above the one you are reading is the sequel to id 3589467. Thursday's piece is the sequel to id 3590206. Saturday's piece is the doorbell-camera comparison sister to id 3592937.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 2 — Archetypes outperform topics
&lt;/h2&gt;

&lt;p&gt;Inside that Pareto is a second pattern. I have been categorizing every article by "archetype" — Comparison List, Dramatic Story, Technical Deep-Dive, Use Case Showcase, Build-in-Public, Story Compilation, SEO Refresh. After 32 articles, the archetype averages tell a story the topic-by-topic view does not:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Archetype&lt;/th&gt;
&lt;th&gt;Avg views/piece&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Build-in-Public (E)&lt;/td&gt;
&lt;td&gt;17.5&lt;/td&gt;
&lt;td&gt;Highest per-piece efficiency; only archetype to land a reaction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comparison List (A)&lt;/td&gt;
&lt;td&gt;4.62&lt;/td&gt;
&lt;td&gt;Slow start, 3× growth after 24-72h indexation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use Case Showcase (D)&lt;/td&gt;
&lt;td&gt;5.5&lt;/td&gt;
&lt;td&gt;Steady performer; sequels compound&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical Deep-Dive (C)&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;td&gt;Worst performer despite the most effort per piece&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Newsjacks (NJ)&lt;/td&gt;
&lt;td&gt;0–2 (capped)&lt;/td&gt;
&lt;td&gt;Three consecutive 0-view ceilings; see Lesson 6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This was the most expensive lesson of the month. I came in assuming &lt;strong&gt;Technical Deep-Dive&lt;/strong&gt; would be the engine — developers love deep dives, dev.to is a developer site, Q.E.D. It is the worst-performing archetype I have. The Camera2 API explainers, the Ktor server walkthroughs, the foreground service architecture posts — they got read by approximately nobody. Build-in-public got read by 35× as many people on average.&lt;/p&gt;

&lt;p&gt;What I think is happening: deep-dive content competes against an enormous backlog of evergreen tutorials. Build-in-public competes against almost nothing, because almost nobody is willing to publish their real numbers. Scarcity is a moat.&lt;/p&gt;

&lt;p&gt;If you are about to write your first ten developer-blog posts about your indie product, the archetype mix matters more than the topics. Write the build-in-public first. Write the use-case piece second. Write the deep-dive last, and only when you have something genuinely surprising to say — not when you want to prove you are smart.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 3 — The averages lie until day three
&lt;/h2&gt;

&lt;p&gt;The most operationally useful thing I learned in week one was almost a strategic mistake. After 24 hours, my comparison list (A) archetype was averaging 1.6 views per piece. I almost demoted the entire archetype out of the calendar. Then I waited three days.&lt;/p&gt;

&lt;p&gt;Between publish-day and day-three of indexation, &lt;strong&gt;comparison-list pieces tripled&lt;/strong&gt; their per-piece average — from 1.6 to 4.62. The piece I had nearly written off (id 3592937) climbed from 5 views on day one to 40 views by the end of week two.&lt;/p&gt;

&lt;p&gt;The lesson: &lt;strong&gt;dev.to (and any SEO-driven channel) takes 48–72 hours to surface a piece&lt;/strong&gt;. Your day-one analytics are not telling you whether the piece worked; they are telling you whether your followers showed up. Those are different questions, and the second one matters less than you think for a brand-new account with no followers.&lt;/p&gt;

&lt;p&gt;Operationally, this means: &lt;strong&gt;wait three days before judging an archetype, and a week before judging a topic.&lt;/strong&gt; The lag is real, and "it didn't pop on day one" is not the signal you think it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 4 — The first reaction is structurally meaningful
&lt;/h2&gt;

&lt;p&gt;For the first three weeks, I had zero reactions across the entire dev.to catalog. Last week, the first reaction landed on a build-in-public post (id 3590177).&lt;/p&gt;

&lt;p&gt;I do not believe this is a coincidence. The articles that produce reactions are not the ones with the most views — they are the ones that produce &lt;strong&gt;identification&lt;/strong&gt;. Build-in-public posts say "I am like you and here is what is hard." A comparison list says "here are five products." Identification scales further than information, in social-proof economies.&lt;/p&gt;

&lt;p&gt;If you are publishing into the void and have not produced a single reaction yet, write something that names a hard thing honestly. Then publish it. Then wait three days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 5 — Your 0-follower X account can still produce one good placement
&lt;/h2&gt;

&lt;p&gt;X is the channel where I have been most reluctantly impressed. The &lt;a class="mentioned-user" href="https://dev.to/superfunicular"&gt;@superfunicular&lt;/a&gt; account has zero followers. It has produced one (1) genuinely useful artifact in a month: a single reply to a 51,500-view tweet from another account that was actively recommending a competing camera app. That tweet had 497 bookmarks at the time of the reply. My reply named three concrete differentiators (no account, no cloud, free) in 280 characters and linked the Play Store.&lt;/p&gt;

&lt;p&gt;I cannot prove this reply produced any installs. The attribution is bad and X does not give me the impression count for a single reply on a 0-follower account. But I would not trade it for any of the 58 standalone tweets that preceded it.&lt;/p&gt;

&lt;p&gt;The mechanism is straightforward: &lt;strong&gt;a high-view tweet in your category is a discovery surface.&lt;/strong&gt; It is full of people who, by virtue of having read the parent tweet, are already qualified for your product. You do not need followers to reply. You need a saved search and discipline.&lt;/p&gt;

&lt;p&gt;The discipline is to stay under one reply per day on the same query. (Mine is &lt;code&gt;("old phone" OR "spare phone") "security camera"&lt;/code&gt; on the Latest tab.) More than that and you will trip rate limits and look like spam.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 6 — There is a feed-volume throttle and you will hit it
&lt;/h2&gt;

&lt;p&gt;Here is the operational footnote that almost broke this article — literally. The piece you are reading is being published on May 6, three days after the last article in the catalog and two days after the date stamped in its directory. The reason is that I tripped dev.to's feed-volume throttle.&lt;/p&gt;

&lt;p&gt;What I observed: I published 30+ articles in under 96 hours. Three consecutive newsjack pieces (ClayRat trojan, NoVoice rootkit, Be Prime breach — ids 3599501, 3601479, 3603034) hit a 0–2 view ceiling that did not move. Meanwhile, articles I had published four to seven days earlier continued to accumulate views normally — id 3592937 added +20, id 3598582 added +20, id 3590206 added +22 in the same window.&lt;/p&gt;

&lt;p&gt;The diagnosis: my &lt;strong&gt;existing catalog still indexes and surfaces&lt;/strong&gt; through search and topic feeds. New posts were not getting picked up by the dev.to "feed" for a few days. The simplest explanation is a per-account volume throttle, not a per-article quality issue.&lt;/p&gt;

&lt;p&gt;If you are a developer and your instinct is "they probably have a soft cap on publish frequency," that instinct is correct. The fix is not to fight it. The fix is to &lt;strong&gt;slow down and let the existing pieces breathe&lt;/strong&gt;. I held publishing for three days and resumed with a single high-value sequel — the post you are reading. We will see whether that resets the surface.&lt;/p&gt;

&lt;p&gt;The deeper lesson is that &lt;strong&gt;publishing volume is not the metric&lt;/strong&gt;. Surface velocity is. If you double your output and feed pickup halves, you have made yourself busier and not better-distributed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 7 — The Bluesky chart will demoralize you. Read it anyway.
&lt;/h2&gt;

&lt;p&gt;After 33 Bluesky posts: 0 followers, 4 likes, 0 reposts. Compared to my dev.to numbers, this is the single most demoralizing line in the dashboard.&lt;/p&gt;

&lt;p&gt;I am keeping it because Bluesky is the only place where I have a public, queryable, untrustworthy-vendor-free measurement of what "0 distribution" actually looks like. It is the control group. Every post is well-formed, includes a direct link, and is original prose. None of them have produced anything.&lt;/p&gt;

&lt;p&gt;The conclusion I am drawing — tentatively — is that &lt;strong&gt;on a small platform with no follow graph, posting into the void produces zero compounding even when the content is fine.&lt;/strong&gt; It is a graph problem, not a content problem. To make Bluesky work, the next experiment has to be follower acquisition (replies on developer accounts, follower-trains, mutual follows from indie-dev lists), not more posting. Posting more into 0-follower territory is not a strategy. It is a metric.&lt;/p&gt;

&lt;p&gt;I will keep posting because it costs nothing and the day Bluesky's algorithm starts surfacing strangers, having a 60-post backlog is better than having a 6-post one. But I am not learning anything from the chart, and that is itself a lesson.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is changing in month two
&lt;/h2&gt;

&lt;p&gt;The operational changes for the next 30 days, all of them justified by the data above:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build-in-public sequels.&lt;/strong&gt; This post and three more like it before June. The reaction-rate is the highest in the catalog and the topic costs me nothing to write — it is just my real life.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparison-list scaling.&lt;/strong&gt; I had nearly killed the archetype after day one. Now it is on weekend slots through May because the 72-hour indexation pattern is real and the SERP wins are slow but real.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use-case sequels.&lt;/strong&gt; id 3590206's "doorbell, pet cam, garage-watch" follow-up ships next Thursday.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Newsjacks paused.&lt;/strong&gt; Hard cap at 2/week; window reopens May 11.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;X reply discipline.&lt;/strong&gt; One reply per day on the saved search, logged with timestamp and parent-tweet view count, so we can see whether the heygurisingh placement was a fluke or a repeatable pattern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reddit unblocked the moment API access lands.&lt;/strong&gt; The r/AlfredCamera surface alone has surfaced three pain threads this week that map directly to differentiators.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Six months from now, if you are reading this and the chart has gone vertical, it will be because we did the unglamorous, non-cute, slow-compounding work above. If it hasn't, I will publish Part 3 and tell you what I got wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the app, or don't
&lt;/h2&gt;

&lt;p&gt;If you are looking for a privacy-first Android camera that does not phone home, that records with the screen off, and that streams to YouTube Live without an account-based middleman: &lt;a href="https://play.google.com/store/apps/details?id=com.superfunicular.digicam&amp;amp;utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026w19" rel="noopener noreferrer"&gt;&lt;strong&gt;Background Camera RemoteStream is on Google Play here&lt;/strong&gt;&lt;/a&gt;, and the project lives at &lt;a href="https://superfunicular.com" rel="noopener noreferrer"&gt;&lt;strong&gt;superfunicular.com&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you are not — that is fine too. Subscribe, ignore, or come back in 30 days for Part 3. The only commitment I am making is that the numbers will be real.&lt;/p&gt;




&lt;h3&gt;
  
  
  Related reading
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/superfunicular/how-i-built-a-production-android-app-in-75-ai-sessions-1h7g"&gt;How I Built a Production Android App in 75+ AI Sessions&lt;/a&gt; — the original Part 1 this sequel responds to.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/superfunicular/best-apps-to-stream-youtube-live-in-2026"&gt;Best Apps to Stream YouTube Live in 2026&lt;/a&gt; — the top-performing comparison list referenc&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>buildinpublic</category>
      <category>indiehackers</category>
      <category>android</category>
      <category>marketing</category>
    </item>
  </channel>
</rss>
