<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Rohit Kashyap]]></title><description><![CDATA[Rohit Kashyap]]></description><link>https://rohitkashyap.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Fri, 30 Oct 2026 07:55:01 GMT</lastBuildDate><atom:link href="https://rohitkashyap.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The Honest Middle]]></title><description><![CDATA[Our outbox now says how sure it is about everything you wrote offline. What the word pending taught me about honest software.]]></description><link>https://rohitkashyap.hashnode.dev/the-honest-middle</link><guid isPermaLink="true">https://rohitkashyap.hashnode.dev/the-honest-middle</guid><category><![CDATA[offline first apps]]></category><category><![CDATA[user experience]]></category><category><![CDATA[startup]]></category><dc:creator><![CDATA[Rohit Kashyap]]></dc:creator><pubDate>Wed, 28 Oct 2026 06:51:51 GMT</pubDate><content:encoded><![CDATA[<p><em>This essay was first published on the <a href="https://zyaku.com/blog/the-honest-middle">Zyaku blog</a>.</em></p>
<p>Imagine a reporter on a bus climbing out of a valley. She has just finished a short piece about a road that washed out. She presses Publish. Somewhere around the next bend, the signal goes.</p>
<p>Now look at her screen and ask a simple question: what does the phone actually know?</p>
<p>It knows she pressed the button. It might know the request left the phone. It does not know whether Zyaku received it. Maybe the post went through a second before the tower dropped. Maybe it never left. From inside the phone, both look the same.</p>
<p>Most apps answer that question with a guess. A spinner that never stops. A tick that appears too early. Or, worst of all, a cheerful "Posted!" that turns out to be wrong much later, when her editor asks where the story is.</p>
<p>This week we shipped a small change to Zyaku that I think about more than most big features. Every item waiting in your outbox now says how sure it is.</p>
<h3>Half right</h3>
<p>In my first essay here, I wrote that in finance a transaction either happened or it didn't, and that "probably sent" is not a state. I still believe the first half. I've had to rethink the second.</p>
<p>Anyone who has worked near payments knows the word pending. Money has left one place and hasn't been confirmed in the other. Banks don't hide that. They don't round it up to "done" or down to "failed". They show it as what it is: a middle state, with a name, that everyone agrees to watch until it settles. Reconciliation, the dull work that keeps the whole system honest, is mostly about refusing to pretend the middle isn't there.</p>
<p>Software for ordinary people rarely gets that courtesy. We flatten everything into two states because two states are easier to design. Sent or not sent. Green or red. And the truth, which is often "we don't know yet", gets painted over with whichever colour makes the screen look calmer.</p>
<p>So "probably sent" still isn't a state. But "sent, no answer yet" is. So is "we tried and never heard back". Admitting uncertainty was never the mistake. Hiding it was.</p>
<h3>What the outbox says now</h3>
<p>Every row in the Zyaku outbox now carries one of a few plain answers.</p>
<p><strong>On this device only.</strong> You wrote it, it's safe on your phone, and it hasn't been sent anywhere yet.</p>
<p><strong>Sending, with no answer yet.</strong> It has gone out, and Zyaku hasn't replied.</p>
<p><strong>Tried, without a reply.</strong> We made an attempt and the network swallowed the answer. We can't tell you it arrived, and we won't.</p>
<p>What the outbox never says is "published". That word belongs to Zyaku itself, not to the queue on your phone. A queue finishing its job is not the same as the server saying "I have it". Since last week, a post's own page tells you whether it has reached Zyaku, and that's where the confirmation lives. The outbox only ever describes what your phone can honestly see.</p>
<p>That sounds like a wording change. It took a surprising amount of discipline. The temptation, every single time, is to let a row slide into "done" because the request finished without an error. But finishing without an error and arriving are different things, and anyone who has lost a message on a train knows it.</p>
<p>We changed something else on the same screen. The buttons that remove what you wrote now look different from the ones that send it. Cancel and Discard are drawn one way, because once you press them your words are gone. Try again and Send are drawn another way. We did the same on the offline emergency screen: buttons that send a message, buttons that remove something for good, and buttons that only check or go back each have their own shape. When you're tired, scared or squinting at a cracked screen, you shouldn't have to read a label to know which button can't be undone.</p>
<h3>Nothing moves by itself</h3>
<p>The same idea showed up somewhere I didn't expect: the marketplace.</p>
<p>Creators on Zyaku sell their work there. Until this week, if you opened the marketplace without a connection, you saw nothing. If you pressed Buy, you got a raw network error that didn't tell you the one thing you wanted to know. Did money move?</p>
<p>Now the marketplace opens offline, with the items you saw before and your own library. If you press Buy while offline, Zyaku tells you nothing has been charged. It can keep the item for you, and when you're back online it shows Continue to checkout. The payment page opens only when you press that button. Never on reconnect, never by itself.</p>
<p>This is where the finance years come back hardest. An offline queue for posts is a kindness. An offline queue for payments is a trap. Picture tapping Buy on a train, losing signal, forgetting about it, and getting charged much later when your phone finds a tower. Even if you wanted it at the time, you didn't agree to it now. So we made a rule with no exceptions: nothing is bought offline, and no payment ever starts on its own later. A payment needs a connection and your own tap. Every time.</p>
<p>It's a strange thing to be proud of, a button that refuses to do something. But I'd rather lose a sale than take money from someone who wasn't looking.</p>
<h3>Two versions of the truth</h3>
<p>The third change this week is for journalists, and it's the hardest one to explain without sounding technical, so here's a scene.</p>
<p>An editor fixes a mistake in a published story from her laptop. At the same time a reporter, offline on a hillside, is rewriting the same paragraph on his phone. Until this week, whichever edit arrived last simply won. His signal comes back, his version lands, and her fix disappears without anyone being told.</p>
<p>Now, if you edit an article offline and someone changed it somewhere else in the meantime, Zyaku asks which version to keep instead of quietly replacing the newer one. We also stopped a few quieter problems. Saving offline no longer makes extra copies of a new article. An open editor no longer turns a published article back into a draft. And a deleted article stays deleted.</p>
<p>None of that is glamorous. But news depends on people trusting that what they read is what the newsroom meant to publish. Living Story already keeps the earlier text of a story visible when it's updated, along with the reason for the change. Making sure one person's edit can't silently erase another's is the same promise, one level down.</p>
<h3>Saying "not yet" out loud</h3>
<p>Then there's the offline page itself. When you open a page on Zyaku that you haven't saved and there's no connection, you used to get one bare line telling you that you were offline. Now the page explains what happened, offers Try again and a way back to the saved home screen, and reloads by itself when the connection returns. Nothing clever. Just a screen that tells you where you stand and what you can do next.</p>
<p>When I line these changes up, I see one idea. Software should say what it knows, say what it doesn't, and never make a decision with your words or your money while you aren't looking.</p>
<p>That idea also sits at the centre of HoldSend, the open-source library we put on GitHub a few days ago. Its core is a small state machine that holds what you wrote and moves it from your device to the server one step at a time, without claiming a step it can't prove. It's public under the Apache license, and it's early. Only that core and its tests are there. The storage pieces, the server side and the emergency module are still being built, and the README says plainly that nothing is ready for production. I'd rather say that in public than find out later that someone trusted it too soon.</p>
<h3>What isn't finished</h3>
<p>"Tried, without a reply" is an honest answer, but not a satisfying one. The next job is to find out more often, so fewer things sit in the middle for long.</p>
<p>Some of that depends on the phone. Our native apps don't send in the background yet. For now, the first emergency message you write without signal sends by itself when signal returns, even with Zyaku closed, only in Chrome on Android or in Chrome or Edge on a computer. Any message you write after that waits for you to press Send or Send all, and they go in the order you wrote them. I want to close the gap on the native apps, and I won't claim it's closed before it is.</p>
<p>None of this replaces emergency services, either. If you're in danger, call your local emergency number first.</p>
<h3>The comforting lie</h3>
<p>I used to think the kindest thing an app could do was make you feel everything was fine. I don't anymore. The kindest thing is to tell you the truth in words you can act on, even when the truth is "not yet".</p>
<p>A reporter on a bus doesn't need a green tick. She needs to know whether to tell her editor the story is in, or to try again at the next town.</p>
<p>Everything we ship goes on our <a href="https://zyaku.com/developers/changelog">public changelog</a>, including the small, unglamorous fixes like these.</p>
<p>So here's my question for you. Where has a piece of software told you something was done when it wasn't, and what did it cost you? I read every reply, and more than one thing we've built started as a stranger's question.</p>
<p>Rohit Kashyap<br />Founder &amp; CEO, Zyaku · Founder, TAMVEL  </p>
<p><a href="https://zyaku.com/developers/changelog">What's new on Zyaku</a> · <a href="https://zyaku.com/founder">About the founder</a> · <a href="https://github.com/zyakuhq/holdsend">HoldSend on GitHub</a></p>
]]></content:encoded></item><item><title><![CDATA[The Hour the Internet Goes Quiet]]></title><description><![CDATA[What I've been building at Zyaku, who it's for, and why the core of it is going open source.]]></description><link>https://rohitkashyap.hashnode.dev/the-hour-the-internet-goes-quiet</link><guid isPermaLink="true">https://rohitkashyap.hashnode.dev/the-hour-the-internet-goes-quiet</guid><category><![CDATA[Open Source]]></category><category><![CDATA[startup]]></category><category><![CDATA[offline first apps]]></category><dc:creator><![CDATA[Rohit Kashyap]]></dc:creator><pubDate>Mon, 26 Oct 2026 09:49:58 GMT</pubDate><content:encoded><![CDATA[<p><em>This essay was first published on the <a href="https://zyaku.com/blog/the-hour-the-internet-goes-quiet">Zyaku blog</a>.</em></p>
<p>I keep coming back to one picture.</p>
<p>A phone on a kitchen table, screen on, one bar of signal that keeps disappearing. Water is already in the street. Someone is trying to tell their mother they're fine. The message sits there with a little clock icon next to it, and nobody knows if it went.</p>
<p>Most of the internet was never built for that moment. It was built for good Wi-Fi, a charged battery and a calm afternoon. When the network goes, apps don't slow down gracefully. They just stop. The phone still works. Your words are still there. But the software decides that without a connection, nothing you do counts.</p>
<p>That idea bothered me enough that I started building something about it. It's called Zyaku.</p>
<h3>I didn't come from software</h3>
<p>I spent most of my working life in finance: investment, wealth management, and eventually my own firm. I wasn't an engineer. I taught myself to build because the thing I wanted didn't exist, and waiting for someone else to make it felt worse than learning.</p>
<p>I'm telling you this because it explains the way Zyaku is built. In finance you learn one rule early: a transaction either happened or it didn't. "Probably sent" is not a state. So when I started on the offline side of Zyaku, that was the first rule I wrote down. Nothing gets called sent until it has actually arrived.</p>
<h3>Write now, publish when the world lets you</h3>
<p>The first thing Zyaku had to do was simple to say and hard to get right. You can write while you're offline, whether it's a post, a story or a news report. Zyaku keeps it safely on your device. When the connection comes back, it goes out once. Not zero times, not twice.</p>
<p>That "once" took more work than anything else. Phones lose signal halfway through a send. People tap the button again. Apps get killed in the background. Every one of those moments is a chance for a post to vanish or show up twice. A few weeks ago I posted a demo of this on X, phone in airplane mode, and engineers I'd never met started asking hard questions. How long do you keep the keys that stop duplicates? What happens if I force-close the app? Does a post keep the time it was written? Those questions were a gift. Building in public meant a stranger could look at my work and push it further, and that's exactly what happened.</p>
<h3>Then the floods</h3>
<p>Zyaku's Disaster Alert came out of the floods in Nepal. Networks failed exactly when people most needed to reach each other. Watching that from the outside, I realised that a platform which works offline for creators can also work offline for families.</p>
<p>So the safety side of Zyaku grew from there. Today it has:</p>
<p><strong>Official warnings, turned into Crisis alerts.</strong> Zyaku draws on official warning services around the world, including in India, Japan, Nepal, Europe, Canada and Brazil. When one of them issues a serious warning for an earthquake, flood, cyclone, wildfire or severe weather, Zyaku sends it first to people in that area, in its own Crisis feed so it doesn't get lost between memes.</p>
<p><strong>An Offline Emergency Assistant.</strong> Step-by-step guidance for earthquakes, floods, fire, first aid and CPR, with no internet at all. It speaks English, Hindi and Hinglish, because in a crisis people should get help in the language they think in.</p>
<p><strong>A Medical ID with a QR code.</strong> You add your blood group, allergies, medicines and emergency contacts. Zyaku turns the details you choose into a QR code that a rescuer can read with any phone camera. No app, no internet. It stays encrypted on your own phone, and we keep no copy.</p>
<p><strong>I'm Safe.</strong> One tap tells the people you trust most that you're okay. Nobody can add you to a circle without your say, and your location is shared only when you choose, every time.</p>
<p><strong>An offline map of hospitals and shelters.</strong> Save your area while you're online. Later, with no connection, your phone's GPS shows the nearest hospitals, clinics, shelters, police and fire stations, with distance and direction. The place data comes from OpenStreetMap, built by volunteers, which feels right.</p>
<p>I want to be careful here, because safety is the one area where overpromising is unforgivable. Zyaku is not an emergency service. If you're in danger, call your local emergency number first. What we can do is make sure that when the network is gone, the little things that help are still on your phone.</p>
<h3>Creators shouldn't need a big audience to get paid</h3>
<p>Safety is the part of Zyaku that gets attention, but the everyday part matters just as much.</p>
<p>Zyaku is a home for creators and independent journalists. Comics, motion comics made in our AI Studio, short video, podcasts, long reporting. There's no follower minimum to start earning. Readers pay for the chapter they unlock, not for how famous you are. And creators get paid wherever they live, including in countries where the usual payment rails don't reach.</p>
<p>Creators can also make Offline Packs: bundles of comic chapters or videos that a reader downloads once on Wi-Fi and enjoys anywhere, on a train, on a flight, in a village with one weak tower.</p>
<p>For journalists, one line matters more than any feature list: journalists can publish anonymously. Their identity is stored encrypted and is never shown to readers.</p>
<p>And every moderation decision on Zyaku goes on a public ledger, with a real window to appeal. If we take something down, you can see that we did, and you can argue with us.</p>
<h3>Where I'm being honest about what isn't done</h3>
<p>There's a part of Zyaku I care about a lot that isn't live yet. We're working on a mesh, where phones talk to each other directly when there's no network at all. It's in testing. I'm not going to call it finished until it works in the field, at real distances, with real people. If you've read startup announcements before, you know how rare that sentence is. I'd rather be slow and right.</p>
<h3>Why the core is going open source</h3>
<p>This is the part I'm most excited to write about.</p>
<p>The engine that lets you compose offline and publish safely during an outage shouldn't belong only to Zyaku. Newsrooms need it. Aid groups need it. Small apps in places with bad connectivity need it. Every team that builds this alone makes the same mistakes I made, losing posts, duplicating posts, and lying to users with a "sent" that wasn't true.</p>
<p>So we're going to open-source it. The idea is simple: a piece of software that holds your work safely while you're offline, sends it exactly once when the connection returns, and never pretends something arrived when it didn't. Anyone should be able to use it, inspect it and improve it. When it's public, I'll write about it here first.</p>
<p>I've also started a second company, TAMVEL, around the same belief applied to money: financial apps shouldn't stop working the moment the network does. Different problem, same stubborn idea.</p>
<h3>What I believe</h3>
<p>I don't think the next internet will be defined by who has the biggest model or the most users. I think it will be defined by what still works on the worst day.</p>
<p>A journalist in a shutdown who can still file. A creator in a small town who gets paid. A family that knows everyone is safe before the towers come back.</p>
<p>That's what I'm building. It's not finished, and I'm doing a lot of it in public, mistakes included. If you build software, report the news, make things, or just live somewhere the signal drops, I'd really like to hear what you'd want from it.</p>
<p>You can see everything that has shipped at <a href="https://zyaku.com">zyaku.com</a>, and every update goes on our <a href="https://zyaku.com/developers/changelog">public changelog</a>.</p>
<p>Rohit Kashyap<br />Founder &amp; CEO, Zyaku · Founder, TAMVEL</p>
<p><a href="https://zyaku.com/safety">Safety features</a> · <a href="https://zyaku.com/founder">About the founder</a></p>
<p><a href="https://medium.com/@rohit.kashyap_53123/the-hour-the-internet-goes-quiet-9cb1621f9b00">Also published on Medium.</a></p>
<hr />
<p><em>Update: the open-source part is now public as <a href="https://github.com/zyakuhq/holdsend">HoldSend</a>, an early open-source outbox for apps that must never lose or double-post what people write. It is not production-ready yet.</em></p>
]]></content:encoded></item></channel></rss>