Show HN: Pony – a messenger for mindful correspondence
ponymessenger.com
ponymessenger.com
Pony is a messenger without a send button. When you're finished composing a message, instead of sending it right away, you put it in your outbox. Once a day—in the morning (5:30am), afternoon (12:00pm), or evening (6:30pm)—Pony picks up anything that's in your outbox and delivers any new messages that may have arrived. You can edit a message until it's picked up, move it into drafts, or delete it altogether.
I built Pony because email makes it hard to keep up lasting correspondences with people. I think the main reason for this is because email is dominated by "transactional" communication—time-critical messages that are tied to some particular interaction: order confirmations, password resets, etc. All of these things tend to bury interpersonal correspondence. The same goes for texting and chat platforms: they may be good for keeping in touch with people and for making plans, but messages come and go quickly and they're not really spaces designed for more thoughtful correspondence.
Pony, on the other hand, encourages thoughtful communication and acts as a barrier to anything time-sensitive. It's a highly predictable space and unless you've received a delivery, you know that when you open the app, nothing will have changed. And although Pony encourages you to take your time and not communicate reflexively, it also sets a "micro-deadline" every day, which creates structure that helps keep the correspondence going.
I've started a blog, so if you're interested in reading more: https://www.ponymessenger.com/blog/2021-11-15/humans-are-not.... (RSS is available at https://www.ponymessenger.com/feeds/blog.xml.)
If you like this concept, please sign up and try it out! It's available for iOS, Android, and the web. This is a completely self-funded project. You can contribute inside the iOS app using In-app Purchases or in the web app using Braintree/PayPal. You can also buy me a coffee: https://www.buymeacoffee.com/dmitryminkovsky.
I like that you were able to spot this particular usage pattern as something to narrow in on for your product. I don't know if this would catch on as a trend (for example, like ephemeral messaging did when Snap came out), but I wish you all the best!
But humans are herd animals after all and long to keep in touch with the herd. All the time. Like the borg. Even more so, if addiction is exploitable. You hear me, facebok.
Indeed 1x day may be much healthier, but prbly too adult to catch.
indeed, and repetition as a lever of the leaders. Repetition makes people believe anything plus forgetting it's a belief.
If you hear 'mooo' all day long, you better behave like a cow. You'll be treated like one anyway. That's nothing to think about. Mental firmware does that.
If the GP is Godot, doesn't that hint they fancy keeping others waiting? ;-)
You can remove the "probably", it was exactly for that. Most often then not you would write offline, send the email (which would go in the "outbox") and then later on you would eventually connect to the Internet and send/receive emails.
I sometimes write thoughtful replies to HN submissions many hours later, after ruminating, but HN has moved on to the next new thing. (It is a "news" site after all).
I already use HN with a point limit of 250 so it doesn't update so often. What would be the easiest way to implement Pony messenger philosophy into it and only see a front page that updates once a day?
I know that this sounds a lot like an ancient technology called a newspaper :)
Matrix = an open, federated messaging protocol suitable for replication of all kinds of structured data
matrix-rust-sdk is a client SDK for writing Matrix clients, written in Rust.
I know you don't integrate with email because of some time critical messages, but I wonder if you could still integrate as an email/sms app and allow temporary overrides (kinda like how pihole let's you pause it for 5 minutes).
That'd be downright awesome
Thank you so much.
> but I wonder if you could still integrate as an email/sms app and allow temporary overrides ... like how pihole let's you pause it for 5 minutes
I'm leaning towards avoiding that sort of thing. Like how Gmail has a "snooze" or how Apple's Screen Time has timers that lock you out, etc. That stuff really stresses me out. I tried to make this as simple as possible and as "human" as possible, in the sense that the human experience—or cognitive processes, or biological cycles—plays out on the human timescale, which seems to be more like the day or week or year than minutes or hours.
And I love this one.
Anyone who needed my attention immediately could use the telephone and hardly anyone ever did.
Many years ago I lived in a house without a phone - the only meaningful way to communicate with faraway friends was sending and receiving paper letters via post. In many ways, that cadence was a great way to maintain relationships over many years, with minimal mental overhead.
Maybe Pony should send/receive messages once a week/month, instead of daily :-)
edit: pro-tip: type it out using your favorite editor in case your browser crashes or something!
I guess this can now be done with Gmail/Superhuman/Boomerang "send later" feature as well.
I particularly like that FutureMe is a service solely dedicated to the task of sending an email in 1/3/5 years. I'm guessing infra-costs are pretty low - the site hasn't changed much in 15 years i.e. I would hope they can continue running long into the future, whereas some of these other services are at the whims (gmail excluded) of survival against a multitude of competing services and being able to continue running long into the future. A lot changes in 5 years - it feels like a lot of services from 15 years ago don't even exist anymore. Oh and a nice bonus for some people - you can allow your emails to be shown publicly (and anonymously ;)
Not necessarily ;) IMHO what matters is their actual traffic. For each user they are going to send an email in the future. If they have 10 daily users, then that's 10 emails in let's say a year. Those users are daily, so a year after their acquisition they will send 10 emails/day, everyday.
Where I'm getting to is the delay doesn't matter much long-term, because they will eventually need to send all those emails whilst serving new users. It's all about their user base, not delay.
Obviously, their use case might simply be what limits daily active users thus the "usage loan" to pay back in the future :D
It sure would be interesting to see some stats though! :)
Instead of delivering a message once a month/ week you could make the conversation/reply once a month. The key here is to skip the transactional nature of the conversations that are happening around us. Because of the availability of IMs we tend to write back to back questions/texts and waiting only seconds to get a reply. Instead, I liked the letter format where we realise what we have I'm hand and composed it in a thoughtful way. Right?
At least my sending can get scheduled. And maybe also autoresponders.
Wont be exactly the same.
This isn't meant to replace instant communication, but to augment instant communication.
It will definitely take a lot of communicating and explaining and showing value to people who don't get it right away. And that's fine! That's what makes this a business endeavor :).
Okay from a different angle. Im sure you have thought about this:
My point was referring to the challenge of moving people away from their existing communication platforms.
So I wrote down some quick ideas how to move your philosophy which many of us clearly appreciated to our current workflow.
Convincing individuals to your product is something you are clearly succeeding in, but for many of us to convince our social circles to move your product won't be so easy to do.
At least I, and maybe more of us would love this feature in Gmail or whatever e-mail client they are using.
And for sure, it's hard to change behavior in general. It's been hard for me—and I made this product. Sometimes I send a message to someone and I'm like: "Why did I sent that instantly?" But I've been improving.
For Pony to be successful at some kind of scale, there will need to be "influencers" (aka "leaders"?) who help makes this someone of a culturally relevant movement. Finding those people and getting them on board will be a big focus of my marketing effort.
Would be interesting to see a Google implementation...
Anyway to better clarify my initial comment. There are chrome extensions, allowing you to schedule emails at certain times. You could do a similar things were you extend chrome with an extension for Pony Gmail, where you send email on the pony time scheduled. The sending part is solvable.
Receiving however, 2 problems: - Organise receiving; not sure if it can be done, but probably its somehow possible to create a service that saves all incoming meessages and then once a day serves it to a seperate inbox
- Senders probably sometimes need sn autoresponder, that's a problem already solved.
Anyway, just brainstorming out loud. Wish you all the best.
I noticed the In App Purchase names are "Massive", "Generous", "Enormous"; I think these are donations (based on your comment in this submission), but I wouldn't know that without visiting the HN thread. If they're donations, I'd change the In App Purchase names to something like "Donation: Massive", etc.
Yes—the names are definitely a little... strange. They're artifacts from my first submission to the App Store when I didn't know how they would appear in the app description, and I've left them because getting into a groove with the Apple App Store took some time, and I didn't want to do anything to upset that.
It's been a really interesting experience, though. The first Store review process was confusing and took a few days. But lately it's been quite smooth. This last version (2.1.7) was reviewed and accepted in under an hour. And in the middle of a weekday. If it stays this smooth, I might be inclined to try and rename the IAPs :).
It's common for letters across countries to take >12 or sometimes even >24 hours. It's led people to a lot of meaningful relationships/friendships, they publish some as stories: https://slowly.app/en/story/featured/
For me a big deal is not just the slow delivery, but the inability to instantly send as well. The presence of a send button has this effect of making me send things that aren't ready. I don't intend Pony to encourage people to edit and edit and edit forever, but I've found in my personal usage that sometimes I write a message, put it in my outbox, and then some number of hours later I'll think of something randomly and edit it a bit. Or I'll change my mind and delete it.
The idea of email (even if it carries with it some versioning history) that is editable is really nice.
Is there a way to interface Pony with email directly, so that an app isn't required?
I can imagine giving ISL@ponymail.com out to people with the clear expectation that my SLA for a reply is 24-48 hours instead of instantaneous and that my SLA for their correspondence is also similar.
I wish GMail's "delay send" feature had a much longer maximum time...
It's not really long enough for deciding, after some thought, that maybe I shouldn't have sent that. (Though I'm pretty good at self-censoring these days.
I also tweak a bit after posting, and that Pony helps with that. I don't usually edit and edit forever, but it helps me get the message how I want it.
> Is there a way to interface Pony with email directly, so that an app isn't required?
Right now there is not, and I'm not sure it makes sense to add one. The first version of Pony was actually an email service, because I wanted it to be as accessible and useful as possible. It turned out that because email comes with its own set of norms and expectations, many people perceived the email version of Pony to be anti-social if not even borderline hostile. It was pretty disappointing because I wanted to make something that was pro-social. With everyone on Pony, everyone is on board and the expectations are totally clear.
If you remember it, and used it a few years ago, but then forgot about it until some random HN post mentioned it, it's not something with persistent utility (addiction) to you.
EDIT: I see I got understood in a way I didn't intend to.
Didn't want to say anything about parent, just pointing out that mentioned platform itself lack addictiveness to be considered a good (successful) social network.
Or is this one of the "feel good, we all should be using it" kind of stuff, where people force themselves to use it, because it's "right thing to do", but it feels more like a chore than joy, something like gym.
Is it really that bad? It's plausible, but I'm skeptical.
Regardless, it is surely suboptimal. I wonder if there are more optimal approaches than "if you can't say anything nice, don't say anything at all" (my Mom's advice)....can you think of any?
Demean was too strong a word, I need to follow my own advice better :).
> Regardless, it is surely suboptimal. I wonder if there are more optimal approaches than "if you can't say anything nice, don't say anything at all" (my Mom's advice)....can you think of any?
The three gates[0] are what I try (and admittedly fail miserably) to implement, though not in their original form.
I generally try for "Is it true", "Is it useful", "Is it kind" - in that order of precedence if they can not all be met.
[0] Is it true, is it necessary, is it kind.
I would evaluate it thusly:
a) Is it true?
I would say: overwhelmingly.
b) Is it necessary?
In an absolute sense: no.
In a relative sense (say, if one has a specific goal in mind): Certainly maybe, but I would predict: Extremely Likely.
> Is it kind.
I suspect not. But then, I think HN'ers can have thick skin when required (say, if you are trying to optimize The System that we all live within).
That's... not a good definition of persistent utility.
My pantry has quite a lot of persistent utility, but I'm reasonably sure I'm not addicted to it.
Edit:
>Didn't want to say anything about parent,
I apologize for my misreading.
>just pointing out that mentioned platform itself lack addictiveness to be considered a good (successful) social network.
I think that depends on the definition of successful. I quite like the idea of calm technology. I think it's possible to have a non-addictive social network which lets you socialize without feeling compelled to use it.
It wouldn't be for everyone, but wouldn't be for no one.
>Or is this one of the "feel good, we all should be using it" kind of stuff, where people force themselves to use it, because it's "right thing to do", but it feels more like a chore than joy, something like gym.
I don't think so. And it's possible to have something that is both - exercise, writing, sometimes reading fall into that category for me. Many things worth doing are not easy but far more rewarding and worthwhile in the long run.
If going to the gym feels more like a chore than a joy, then you may be doing it wrong, or inconsistently (some good coaching may help).
However, no mention of monetization strategy. Are you selling my personal data? Do you show me ads? Do you intend to sell subscriptions?
Also, no E2E _and_ it's not open source/self-hostable. I need at least one of those. Either I don't need to trust you because things are E2E encrypted, or you establish trust by letting me see and verify code.
> However, no mention of monetization strategy.
Thanks for bringing this up. I was hoping to give a brief introduction and then to field questions.
I will definitely not be selling personal data, or data otherwise. I do have some monetization ideas, and I'm really excited to try them out. They're all going to fit nicely with the core concept of the platform: periodicity. One of them is advertising, and there are others. If I can find good features to sell with subscriptions, I will. The important thing at this point for me is to demonstrate value, and then to monetize without disappointing or alienating users.
> Also, no E2E
Pony is currently a one-person startup and the focus has been on fleshing out the concept, building solid apps for desktop and mobile, and getting those apps into the hands of users. Privacy is something I take incredibly seriously on a deeply personal, ideological level. While I consider myself a really solid full stack developer and believe that Pony's infrastructure is secure, I do not have the requisite experience with cryptography to honestly represent to people that this is a private platform. I hope that with enough traction and some investment, I'll be able to hire an expert to help add privacy features that I can advertise in good faith.
It would be great if this existed as an infrastructure-level service. Something like the Signal “API” that allows apps like yours to be built on top.
Fair. E2E isn't trivial. However, platforms generally need to be built privacy focused from the ground up. It's hard to go back to a platform and add these things back in.
I would encourage you to add these features early, with the appropriate warnings until an audit can happen. "Hey, we're trying to keep all your message end-to-end encrypted but we haven't had our implementation audited yet. Thanks for being an early user!"
Now is a really good time to learn. Seriously. libsodium is an excellent example of a library which provides user-friendly APIs that don't require you to roll your own crypto and is very strongly audited by experts — see https://libsodium.gitbook.io/doc/public-key_cryptography/aut... for an illustration. There are lots of other similarly good libraries. All you need to do is to implement some public key infrastructure, making sure that private keys stay private and never leave the user's device and that you can look up the published public key of another user.
I think most people do care about privacy, but they're usually powerless to defend it.
Seriously, sometimes I wonder if people on this site have ever interacted with people outside of tech.
From the FAQ:
> How does Pony protect my privacy?
> We collect and store the minimum amount of data possible. We do not sell or share data with any third parties.
Super happy you're offering a direct APK download. That's how all android apps should be available.
Maybe also a mail server bridge ? If So write to <user>@ponymessenger.com it reply with "You message will be once a day, you can edit and cancel, by clicking this link".
I'm surprised you took the approach that pickup = delivery. I would assume you'd have a lag between them, with only cancellation allowed in that gap. Basically "you have N minutes to reconsider this thing you wrote, if you've changed your mind and want to edit it you have to defer to next pickup".
I would think a "mindful correspondence" system would have an enforced gap between composition and delivery to avoid "oops I clicked send at 6:29 PM but it's wrong and I need to change it".
I mean, this is based on my experience in email and twitter, which you've rightly identified as the opposite of "mindful" correspondence (where "submit" and "deliver" are the same action), and personal experience with business apps that make heavy use of fixed daily jobs (where "submit" and "deliver" are the same action at one very specific deadline that everybody is rushing to hit).
There is no send button. You write drafts, and then at the pickup/deliver time, Pony picks up all the drafts from your outbox, and delivers any mail for you at the same time.
Therefore, you can change your mind about what you've written at any point before it gets picked up.
So if you compose and submit a draft at 10 seconds before pickup/delivery time, you have no time to reconsider. That's what I'm getting at. I would assume a "no drafts submitted before X minutes before pickuup" rule to mandate a minimum reconsideration time.
To me, it seems akin to writing a letter and putting it in your mailbox. You can go and retrieve the letter any time before the mail carrier picks it up, but after they've picked it up it's gone.
To extend your analogy, imagine telling the postman "I'm just finishing off this letter, could you come back in 5 minutes?"
Except your postman is very observant, and noticed your frantic scribbling as he approached. In a display of empathy he gives you a few minutes to finish while he goes to grab a coffee.
Any changes 10 minutes before the deadline? That one will wait for the next day. That way you're forced to think for at least 10 minutes "do I really want to send this?"
Adding a minimum lag (either by adaptively skewing the pickup time by a few minutes, or deferring any just-edited drafts to the next window) would mean you always have time to think about what you wrote.
> but then email bridging might just turn it into another email client.
Exactly. My first attempt at Pony was an email service. People tried it, but there was a lot of confusion about the asymmetry of some people being on an instant platform and some people being on Pony. Email comes with its own norms and expectations, and many people viewed Pony as "rebellious" or "anti-social," which was the last thing I was going for. I am trying to create something very pro-social. I decided that my strategy for overcoming network effects would be to build a unique, excellent product that people loved enough to get other people to use it. That's the only way, really, I think.
I can give username@ponymessenger.com email to new people I start communication with, like maybe part of a professional profile. An email to this address will receive an auto-reply. It will explain that message will be delivered later, and not instantly. Since this is a different email domain and opens a new line of communication, it will not carry an expectation of instant emails. It will be even better if this auto-reply contains a link to a webpage. On that page, they can modify their message or rephrase until the delivery time (with a countdown ideally). Maybe the domain name could be something that implies the delayed delivery part to make it even clearer.
From the recipient/reader side, this has to be a sacred space, away from the continuous traffic of other emails. It is not possible to turn all of our emails into delayed correspondence. Hence, this can not work as just an email client. It should help grow the network without becoming an email client.
Pony is just the messenger service needed in the ever-connected world. I had dreamed of using this kind of messenger. Thanks for building it. I hope this grows into something big.
- I like the overall idea and execution seems great. It's even free so you're reducing a lot of friction, great job.
- My gut reaction is that except in very few settings, once a day delivery is going to be problematic. Perhaps a once an hour, or once every 2-3 hours delivery could be supported. Unfortunately that will defeat the entire purpose, so am not really sure. I guess you'll have to just wait and watch how it's being adopted and adjust if needed.
- Not sure how the backend works, but if you're pooling all requests for delivery at the same time you will have very high peaks with mostly idle time in between. Am curious how you are adjusting for that? AWS Lambda??
- How about delivering the messages via email over SMTP, so that this becomes an email client and takes care of having person at the other end also having Pony. A lot of people may like reading/drafting emails at quiet times, periodically say every 2 hours. Again, this is not inline with the original intent of this, so not suggesting you change anything just something to keep in mind depending on the traction you get.
All the best!!
For content of that nature, once a day is well beyond what's expected of the postal service. About the fastest you can exchange letters with someone by post is one week round trip, assuming a letter and a reply.
It is also well-proven that humanity is able to maintain human connection and relationships using mailed postal letters, so once a day is certainly no barrier in that regard.
Yep, that is a good heuristic!
I think it could be generalized by saying that anything that isn't time-bound or time-sensitive (i.e. making plans) is fine for once-daily delivery. Everything that is time-sensitive or perhaps just quick and low-effort should be kept in the instant realm, because that's why the Internet got so huge in the first place. The only problem was that absolutely everything became instant and no non-instant ways to communicate online were left, thereby making it pretty hard to have correspondence like people used to correspond. Which is the problem Pony tries to address.
My grandmother says that before telephones, she used to make plans by post! At that time there were 4-5 postal deliveries per day, so she could exchange messages with friends while at work to make arrangements for that evening.
Bu I agree that it’s nice to have that separation. I think email used to provide that long-form channel, but it’s too swamped by transactional rubbish these days.
This was in the US? Urban or Rural area? Very curious since I've only seen once a day deliveries, between 2 countries I've lived in.
> once a day delivery is going to be problematic. Perhaps a once an hour, or once every 2-3 hours delivery could be supported.
I've gone back and forth on this many times myself. To the point where the backend actually does support two deliveries already :). It's been a really tough call! Ultimately I decided to double down on sticking to the unique value proposition that this offers. I don't mean to sound too self serious but although this app tweaks one little parameter (instantaneity) the result is pretty dramatic. Lessening the impact of that result, as you observe, would defeat the point. I think traction/adoption will involve the people intuitively "get it" right away using it (fortunately such people do exist, which has been a really nice affirmation for me), and helping spread and explain the concept.
> requests for delivery at the same time you will have very high peaks with mostly idle time in between.
The infrastructure is described here https://news.ycombinator.com/item?id=29280539, but essentially I have not optimized yet for peaks etc. This will be a great problem to have, and should be solvable with telemetry, scaling, "pre-delivery" etc.
> How about delivering the messages via email over SMTP, so that this becomes an email client and takes care of having person at the other end also having Pony.
The first iteration of Pony was an email service. It turned out that breaking the cardinal rule of "Don't Fix Email" was, indeed, a bad idea. I didn't even try to properly launch it, because the very first piece of feedback I got was about how "wonderfully rebellious" Pony was—which was pretty sad for me because the last thing I wanted was for Pony to be perceived as anti-social by people. I wanted to make a platform that was pro-social. It turned out that established platforms like email have their own set of norms and expectations, and trying to unilaterally violate those norms is a big social no-no. That's why this version is a self-contained platform. It's less accessible, but with all parties on the platform, all the expectations are really clear.
Yes, and these friends also have my phone and email, so they know how to reach me for time sensitive stuff. Good to have a channel that is for deeper and slower connection.
Anyway, I'm stoked to have Pony. Thanks!
Network effects will definitely be the #1 challenge. I considered integrations—I first tried Pony as an email service, actually. I wanted it to be as accessible as possible. This led to a lot of problems, specifically you get this asymmetry and confusion of some people being on Pony and others being in instant real-time. All of our existing platforms come with norms and expectations, and using a non-instant integration was often perceived as anti-social, which was really unfortunate because I was trying to build something pro-social. You also lose this effect of it being a special place.
Anyway, it is hard to get people on, but fortunately the idea seems to be unique enough and resonate enough with that there's already a seemingly dedicated (albeit small) userbase. It suggests that maybe network effects will be possible to overcome. Everything has to start somewhere!
I really like email as a comms platform and think that it could greatly benefit Pony.
Assume, for a moment, that your idea takes off and becomes the next WhatsApp. People, you know, will find ways to return to their normal selves. They'll cram a ton of links and messages into their allotted time slots.
What you're attempting to address is a fundamental flaw in human nature. Many people are aware of the issue and are taking precautions in their daily communication. Many, however, do not.
A wall of text/messages from a relative is more-readily handled in a healthy fashion when it doesn't arrive piecemeal.
Thank you for your support in this. It's a constant exercise in discipline to keep focused in this direction.
> They'll cram a ton of links and messages into their allotted time slots.
I'm not sure people will be inclined to put links and ephemera in here. At least not most people. I do, to some extent, especially when I want to avoid starting a text back-and-forth, but I think instant messaging is a good place for that kind of thing and I suspect it'll stay that way.
It’s a great idea, but without uninstalling other messaging clients the goal of a mindful messaging life seem impossible.
That's what I do anyway :).
And more fundamentally, I'd say there's a difference because Pony changes not just how you personally receive messages but also the kind of messages that people send to you. Having that extra time and structure, and knowing that your correspondent does too, can make a qualitative difference.
Did you play around with different frequencies for distribution? I've always thought it would be great if the messaging we used at work could be delivered just once every hour or every half hour. It might reduce the distraction of constant emails or messages.
I haven't played with different frequencies at all, but I really want to. Do you have anything in mind?
I wake up in the morning and read my postcards from friends. Write a few during the day. They get “mailed” out that night.
I just need to find some friends who don’t just want to chat all day.
Is there potential for a bridge between worlds? I’m on WhatsApp with a bunch of friends. One of which will read our entire group thread once per day and provide an itemized single message response paragraphs long. I love her style. But the problem is that WhatsApp is complete junk for long form.
Like anything behavior-related, it takes some time and effort. I created this because I've wanted this going on two decades, have used it for the better part of 6 months, and I still sometimes send things to on text/chat/email that could have been sent by Pony. But I do it less and less and it's been rewarding.
> Is there potential for a bridge between worlds?
I'm not sure... I am looking forward to hearing about people's experiences and what they think.
> One of which will read our entire group thread once per day and provide an itemized single message response paragraphs long. I love her style. But the problem is that WhatsApp is complete junk for long form.
She may be your go-to candidate for trying this out! I've found that people who successfully adopt Pony have at least one person who's willing to try it with them. I was even thinking of making that a prerequisite for signing up, a gimmick of sorts, that you need to sign up with someone else. My experience has also been that all these platforms—WhatsApp, email, chat (obviously)—aren't great for long form. Stuff just gets lost and buried before you respond to it, and the UIs aren't built for that. If you know someone who seems interested in that sort of communication, you might want to try it with them! Would love to know how it goes.
Also this:
> data is not encrypted at rest [0]
I realise this is a one-person startup, but personally I would want more focus around privacy and security for a new messaging app. It’s going to be a key requirement for a lot of people I think.
Being a one person startup, this is even more important, as the “company” behind this is likely not to have the same level of security measures that a larger company would have (I know this is an assumption but it’s a reasonable one).
I absolutely love the concept and the execution so far looks great. We do need a messaging app like this!
I'm sorry this doesn't have at-rest encryption, much-less E2EE. I totally understand. As I wrote elsewhere, the best I can do is be transparent about that. I'm a solid fullstack dev, but it would be dishonest to represent to people that I can cryptographically secure their information against a sophisticated adversary. I hope that Pony grows such that I can retain or hire a reputable expert who may be able to assist with that, so that I could market encryption in good faith.
Good luck!
Can each msg have it's own pickup / delivery time? For example, I might want Msg A to Person X be lunch-ish, but B to Y might be after work.
An example scenario might be a personal trainer reminding X to eat and health lunch, but Y gets an after work nudge to go to the guy.
Note: I realize such things could be self-reminders (read: TODO app) but there's sonething to be said for hearing from someone else and possibly being accountable to them as well.
> Can each msg have it's own pickup / delivery time?
That would really get into the realm of things like Boomerang, of which many already exist. Pony is more like "email if it was actually electronic mail." The post person comes and delivers new things and picks up anything you're sending. I think microconfigurability adds a lot to cognitive load, which I am trying to minimize.
With that said, to your point about overload, I think it's worth considering the receiver (not only the sender). That is, for example, you want to mitigate my overload. (Thank you! :)) And I want to mitigate the strain on my receiver.
Maybe that's still Boomerang? I'll have to check it out. My point is, our ideals are very similar when you take a step back.
Thanks again.
> the current model is (1) stale (2) 20-30 years old without any interesting innovations other than emojies/channel organization.
Yeah that's the most fascinating thing! Honestly I kept waiting for amounted to almost two decades for someone to build Pony before I built it. It never made sense that just because the medium of transmissions (the Internet) is instant, all applications built on top of that medium had to be instant, too! I mean, how many instant apps do we need? So I made Pony, because instantaneity is what really stood out to me as a factor that if modified could make a big difference in usability and experience.
Would love to hear about the time dynamics you're working with if you can share.
Not that I'm a huge fan of Outlook, but it has a "delayed delivery" option that schedules when the emails leave your outbox, and an "Urgent" option that highlights the email in the receiver's browser. I don't know if I would want those features in a messaging/chat app. The whole scheduling aspect seems to lend itself to the asynchronous aspects of email. Unless you tailor the notifications in your messaging app, everything is basically "urgent".
It's only a slight exaggeration to say that it has changed my life!
If anyone is interested I'll dig out the code and share.
(For bonus modern security and convenience, use NNCP for this; possibly have packets delivered by an urchin with a thumb drive.)
> not really sure how to use it since nobody I know uses it yet. I'd be ok with some way of people to discover me
Yeah I haven't been sure what to do about that except having people naturally invite other people and connect that way. What are other ways for people to discover each other? I'm reluctant to have people upload contacts, for example.
> I'm pretty sure some will raise questions about the privacy of messages,
Yes, adding at-rest encryption and exploring other options as well is a top priority.
That is what I do for all messenging apps except for SMS. I would check them in my downtime in the evening.
In my view, turning off notifications (or using something like iOS 15's "Focus" feature), though superficially in the same sphere of concerns, is actually an orthogonal concern. The purpose of Pony not just to limit distractions, but to create a space that naturally keeps out transactional (security codes, shipping alerts) or low-effort (tweets, funny pictures) messages. These messages are usually time-sensitive and often fun and enjoyable, but they also have a tendency to bury messages you may need some time to think about. So while I enjoy getting links and pictures from friends, I've always wanted a space that's on a more "human" timescale—that is, a space that isn't instant but more attuned to our non-instant cognitive processes. Turning off notifications kinda, sorta gets you there, but not really.
Some are in better states than others, and most will have trade-offs when it come to stickers and media. But definitely worth a look.
Alternatively, Pony could maybe piggyback on email by providing an email address that proxies to each Pony account.
I'm wondering what your approach to scalability is, as it seems like you're going to have large bursts of traffic every half hour ( with certain hours having much more traffic depending on demographics).
If this messenger takes off, how are you going to deal with say for example all of India having their messages deliver all at once in the evening?
This is much better I think, because it removes control. I sometimes still have the urge to check often for responses.
I like this micro-blogging distribution concept. It's like a micro substack distribution.
As someone who generally abhors social networking, I like anything that has substance and limits spam.
I started working on this many years ago at this point trying to build the backend with Java/event sourcing[0] and the frontend as an SPA React app. I took the unfortunate/fortunate approach of building a webpage first[1]. I learned a lot from this experience and the result was something that worked okay but was terribly inflexible and difficult to work with. (The other problem was that it was an email service, but that's a whole other matter).
I realized that if I wanted people to use this, I needed to have mobile apps and I needed to have a server-rendered frontend, at least the public facing pages. So for my second attempt (which is what you see here, a standalone messaging platform), I did the right thing and transitioned to Postgres/Hasura for the backend (with a NodeJS-based API that fills it out). On the front-end, for the web, I transitioned to NextJS which is wonderful. Eventually I transitioned entirely to TypeScript, and my stack if entirely typed from DB schema to UI. It's just great. I was able to do something like transition serial int identifiers to UUIDs in two hours without introducing a single bug anywhere in the stack.
Since I had started with a webapp, I was able to build the mobile apps out of the same frontend codebase by wrapping the core of the webapp in an SPA that is delivered with Capacitor, which is also pretty excellent. Building a nice mobile experience with web technologies proved very difficult, but I think I did a pretty good job with it. But it is really, really nice having one, single codebase for the web and mobile.
In addition to the tools I've already mentioned, I'd like to make a couple shoutouts to these indispensable libraries and the people behind them:
- ProseMirror — a rich text editor. Thank you Marijn!
- Framer Motion — an animation library for React. Thank you Matt!
- Apollo Client — a JavaScript GraphQL client. Not as robust as Relay in some ways, but actually better in my opinion (having spent a lot of time with Relay). Thank you Ben and the entire team!
(You can get a complete list of frontend libraries by clicking "Credits" in the footer on the homepage or in the menu inside the app.)
Edit:
I almost forgot: the backend is running on GKE. Kubernetes hosted by other people is a wonderful thing! This morning I woke up, ran:
gcloud container clusters resize cluster1 --node-pool default-pool --num-nodes 3
Tweaked some resource requirements in my a couple YAML files, ran helm upgrade prod .
And here we are! There was a post on here the other day about how the hermit developer is dead but that post was very wrong, and I am living proof :). One person can do so much in 2021 with all the tools we have. (That said, I would love to work with other people on this.)This is probably a dumb question because I don't have much experience with GraphQL, but how important is GraphQL to your project?
For example, if your client makes the same dozen or so queries day-after-day, would it ever make sense to use that knowledge to write a more static API? There seems to be a lot of text parsing and object serialization and deserialization with GraphQL and it makes me wonder if something more RESTy would be more efficient?
Is computer time and space too inexpensive to worry about these things?
I like GraphQL because it aligns with how I think about frontend queries and data. I had spent a bunch of time with technologies like HATEOS that standardize sorta-similar REST-based approaches, but as soon as I saw GraphQL, in my mind it was immediately like: "THIS! This is it." There's just something about it for me. I can't say that that GraphQL is _important_ technologically, I'm sure I could have done it some other way, but it definitely is what has felt the most right of all other things I've tried, and I think that's really important. The front-end clients for GraphQL are also awesome. I've tried Relay and Apollo, and both are excellent. They normalize everything and provide reactive updates when something changes.
> For example, if your client makes the same dozen or so queries day-after-day, would it ever make sense to use that knowledge to write a more static API?
Hasura lets you turn GraphQL queries in REST endpoints! It's pretty amazing. But GraphQL also has this thing called "persisted queries" where instead of sending the queries every time that needs to be parsed, you send a hash for the queries, and the server already knows what the query is and has its representation stored in memory so it can satisfying it w/ the parse step. I can only hope to have to optimize like this :).
> Is computer time and space too inexpensive to worry about these things?
I don't think so... I've just been trying to ship without prematurely optimizing. It's been somewhat of a journey as it is :).
And by the way, in 2021, I wouldn't write a GraphQL backend by hand. I think a tool like Hasura/Postgraphile is the way to go. They put up excellent scaffolds that you can augment. In addition Hasura (I don't know about other tools) provides an access control layer that is really nice as well.
That says authorization should not be in the resolver but putting it elsewhere often resulted in much more complicated code. It makes sense if GraphQL is coexisting with REST or other end points because they could all share the same authentication code, but for pure GraphQL projects it seems arbitrary.
The time cost for "letters" to be delivered depends on the distance between personal selected location.
Small thing that irks me. The app icon looks too much like a unicorn. A stocky little Pony would be so much nicer and true to the name.
any concerns about spam? I figure it won't be as bad as most services but I still for see people sending spam if it gets even moderately popular.
Definitely lots of concerns about spam. I've actually been soft launching this and have already had spam. And not just spam, but harassment, too. All the stuff that comes with an online community. After network effects, striking a good balance with moderation be a real challenge.
I frame he product as "mindful" because it's an well-applicable, widely-understood word, but to my surprise I've not had much traction with the mindfulness community in terms of people who actually use it. But my sample size should be bigger to really get a good feel for the demographics.
And thank you :).
It appears the underlying problem is the volume of traffic has tripped something at both of these providers. Google actually works, just incredibly slowly. Facebook says I need to submit the app for developer review—but I did that a while ago and when I go to https://developers.facebook.com it says I'm all set... I will try to figure out what's going on.
If you're interested in the app, please create an account using a password—you'll be able to add Google/Facebook in "Settings" later.
Since the beginning of Covid, my workplace has converted almost fully into remote working. For a lot of people this has been great, no commute, flexible working hours, ect.
For me, it has been a living nightmare and I believe I have narrowed it down to one thing; the constant stream of messages that I am now getting. Everything is unfiltered, instant and arriving at all times.
This has resulted in message fatigue where I am no longer able to connect with my friends.
I feel that platforms like Pony work to eliminate that. Remove the anxiety from checking messages and add a structure that everyone can follow.
I sincerely hope platforms like this become more popular.
Edit: wow yes, the telecommunication section contains some sentences I might have written myself over the last 6 months:
> The allowable time would depend on the context: in some cases, a second would be too much, while in some others, even several days would be fine. ... The exchange of messages and information would be slow and contemplative rather than fast and reactive.
Also the via HN post is very interesting too. I remember seeing that but I didn't check it out then.