Hacker News new | past | comments | ask | show | jobs | submit login
Ambient Co-Presence (maggieappleton.com)
106 points by Tomte on Dec 31, 2023 | hide | past | favorite | 38 comments



I run a smallish private forum (~4k MAU but pretty active). My philosophy for the real-time stuff is to update anything that can be updated without being distracting. On the thread list, the number of replies will update in real time but the threads won't move position (be bumped) until you refresh. Threads with at least 2 people reading them will have a subtle highlight that users can configure, this lets you know you have a decent chance someone will see your reply immediately; this fades in and out in real time too. New replies show up instantly inside of a thread (and so do edits and deletions). There's a real-time 'N users are currently viewing' counter for threads and the whole site at the bottom of the page but it doesn't tell you who is viewing it -- I think that's kind of a privacy violation and might discourage people from clicking around. I think the combination of these features lets users know the site is alive without feeling like a panopticon.


Yes, this! I just posted about forums before seeing your comment. As I recall, on some forums it's possible to decide whether to "appear" as your username, or lurk incognito. Yours sounds cool.


>on some forums it's possible to decide whether to "appear" as your username, or lurk incognito

This is a feature of every (non-private at least) forum, it's called the logout button :)


I've been playing through Dark Souls recently, and I think it captures the ambient presence discussed in the article very well. You see ghosts of other players flickering in and out of existence. You can communicate with others by leaving messages, and you can view their deaths. A bunch of pools of blood left by multiple player deaths will draw your attention and warn you subtly that there's danger ahead.

But the actual multiplayer is constrained. Your offers of help can be accepted by anyone. You can be periodically invaded. There's no communication other than by movement and gestures.

It does feel like the gaming equivalent of sitting alone with other people. You're aware of them, can interact if you so choose, but your experience is still your own.


Yeah I was thinking the same thing as reading this article.


The old-fashioned bulletin-board forums, circa 2006, are very effective at creating this sense of parallel play. At the bottom of the screen there's the list of who's browsing, so you can engage with folks on threads, or just lurk. You get a pleasant sense of community, with as much or as little engagement as you like.


When I was a kid, well before the internet, one of the three TV networks would play a movie on Sunday nights. Even if the movie were old, it was intoxicating to know that all my friends were watching exactly the same thing at the same time, and that we'd get to talk about it at school on Monday. There were zero ambient co-presence signals, but the magic still happened. I don't know where that magic came from.


This is the magic of broadcast media oligopolies.

There was a co-presence signal, but it had a 12-24 hour delay. It was called "the water cooler." You quickly learned what everyone else was watching and if you had picked the wrong network for that timeslots.


I don’t think seeing where someone is reading is enticing. I thing it’s best to extend the experience of the physical world (and if that works, it can evolve).

Ambient presence is an important goal. I’ve been running remote companies for almost 35 years and have been trying to achieve some level of this.

I’ve tried a few times to connect a couple of offices by just putting up a tablet running a chat (first Skype — that’s how long ago!) and later FaceTime. The idea is to not be spying on anyone, but showing what others would see if they were there: basically you could glance over and see if Jo was around, or basically see that Jo looks like they are really concentrating so no wonder they don’t respond to my slack. Or “look, those guys have a visit from jim’s partner!”

This is harder than it seems — the software isn’t designed to run continuously and the cameras aren’t really right.


I agree that seeing where someone is reading (with blobs moving around in your visual field while you are trying to read) is not good. It doesn't correspond to any physical experience of being in a room with someone, or any positive, helpful experience of collaboration. There's a reason we don't attend lectures with laser pointers strapped to our heads, to make visible where everyone's eyeballs are looking on the projector screen or whiteboard. When I'm reading a magazine in a waiting room, I'm not socially isolated by the fact that the reading experience is not a synchronous collaboration with other people around the world.

The fact that this idea was even proposed and explored makes me think there are some common-sense principles and ground rules that are not being followed, like a first filter after brainstorming new digital experiences. For example, hmm, brainstorming here, part of working in the same room as other people is you can hear their phones buzzing when they get texts. What if we made an app that gets notified when one of your friends' phones buzzes, for any reason, and it makes your phone buzz at a lower volume, so it's more like you're in the same room even if you are on the other side of the world? No, that is a bad idea because it would just be annoying and distracting.

One should ask, under what circumstances do people currently read the same thing at the same time, in each other's presence? What creates a feeling of presence in this case? What makes the experience feel better or worse? Do we even care what strangers are reading? In a meeting, people are usually reading on their own screens or pages, or one person reads to another or to the group. There are situations like reading the same sign at a museum exhibit or art gallery, where there is presence with a stranger (which may or may not even be a positive thing). I think the first thing my brain needs to know is how many people are standing around next to me. Reddit threads have a little indicator that says something like "17 people here." To have a blurry cursor blob suddenly moving across my screen without an indication of how many people are "here" is disorienting. That doesn't happen in real life unless someone is out of sight playing with a laser pointer or flashlight, or there's a sniper.

I really would hope this would be 101-level thinking for this field.

I've worked at workplaces that had a video "portal" between two office locations, and that worked fine, if you could choose whether you want to work in view of the camera.


> seeing where someone is reading [...] doesn't correspond to any physical experience

I don't know if I agree with that. You can follow someone's gaze fairly easily. At a train stop, you can see if they're reading the map, watching birds or what have you. You can tell if someone is looking at something that interests you as well.


Those things are true, but I think you have to also state why. Do you want to talk to them about the map or the birds?


> I don’t think seeing where someone is reading is enticing.

I agree that if we explode the word "reading" into everything it might be an analog for, then some of this could make more sense.

If "reading" a page on the web is supposed to be an analog of "reading a book", maybe most don't want to see others.

But if "reading" a page on the web is supposed to be an analog of "attending a lecture" or "showing up to vote" or "standing in line to buy a ticket", then "reading a book" may not be the best frame of reference :)

(I think about this stuff a lot. I lean extroverted. Maggie and I seem to be working through the same thoughts I've been picking through for the last few years, so I'm definitely a bit biased as to the wisdom of the post :)


I think for many people, one of the advantages of working remotely is that it's possible to have more privacy. I'm not sure live video for the entire work day in any form is a great solution.


In my mind (and my attempts) the question went back to “ambient presence”, meaning extending the existing proximal environment.

I agree a camera on a person is almost always bad, and an involuntary camera on a person is always bad.

But what about connecting two offices? If I stand in one corner I have a very low resolution understanding of what’s going on — can’t really see any screens, just get a general gestalt of the energy level, if Bob looks like he’s concentrating etc. Maybe I’d walk over to the next room, see across the room that he’s busy, so send him email instead. I’d like that kind of thing, and that kind of thing not using a traffic light on a dashboard but something that used human senses, intuition, and affordances.

But we are far from solving this problem.


One high-level approach that might work is to have a fully-local app monitor the user (possibly including the camera, current activity, etc.) and then expose some high-level information to the rest of the team. I think this could potentially work well, although it would be hard to do it in a way users can trust.


I find having the camera on distracting and/or stressful to me in a way that I don't find in person interactions. I'm not sure why.

Always on camera just seems stressful and I hate the idea.

I don't have any data or even anecdotes, just these vague feelings.


Yeah, a camera on an individual (or seeing their cursor on the same file, and knowing the other sees yours) triggers a lot of performance anxiety, for good reason. You know the famous quips by various famous people at parties? They spent hours thinking them up ahead of time and waiting for the right moment to whip them out. Who wants to live that way, especially at work?

Yet we do take pleasure doing things together in other domains, not always talking. Consider hiking, sailing, or building something together. Why can’t we have that same feeling while working?

See my response to the comment you were responding to for some other thoughts in this regard.


as someone who likes working in a coffeeshop full of sf strivers, i love the vibe of these co-presence ideas. I have a technical question though...

Has anyone figured out a nice way to do the partykit-like cursor stuff [0] that doesn't need a database/intermediary? It would be so nice to be able to ship a p2p presence-enabled static site without a dedicated server. Looks like partykit has a generous free tier but we all know those only last so long.

Oh and while I'm here I'll plug my friend's project that this reminded me of! StreetPass is a browser extension that helps you find your people on Mastodon by checking for social metadata tags on the sites you visit [1].

[0]: https://blog.partykit.io/posts/cursor-party

[1]: https://streetpass.social


You can use my project p2pcf [1] to do WebRTC signalling and then sync the cursors by just blasting datachannel messages to all your connected peers. For a project I made that uses this to do far more than cursor syncing, but syncs an entire 3d world with voip, checkout https://webspaces.space

[1] https://github.com/gfodor/p2pcf


awesome, thank you


Use Websockets if it's just two people.

edit: This is server-mediated. For true P2P you could use WebRTC.


how do you get websockets to work p2p? afaik websockets needs a dedicated server to relay messages.


WebRTC will also require having TURN servers to relay messages if you want to be compatible with everyone on internet. True P2P is pretty much impossible in a way that works in 100% of the networks.


It sounds also like a nightmare but it would be interesting as heck to me to have a bunch of folks ambiently co-working on code at the same time. Render all the open windows into some kind of 2d or 3d space, then show avatars viewpoints shifting across different files as they go.

Alternatively, it'd be interesting (albeit again difficult and confining too) to have 2 or 3 folks working on the same desktop. Get a 8k 85 inch TV, with a long desk in front of it, and set it up with multi-pointer-x or some such, and let everyone work on the same shared surface.

Good write-up. Hypothesis is one of the greatest damned tools on the net; I wish we saw this stuff getting traction & iterated on, saw it rising. It feels like it afforda so much more to us than anything else people have done.


This existed in the 90s! The Self programming language[0] took Smalltalk's existing visual approach and extended it to be a full visual environment with interactive animations and physical metaphors, giving you a literal "desktop" to work on. Later versions of Self also supported working on a single "world" over the network, where the other users' objects and "hands" (cursors) would be visible to you. Here's an official movie released by Sun Microsystems:

https://youtu.be/Ox5P7QyL774

[0]: https://selflanguage.org/


A multiplayer lisp or smalltalk vm can work beautifully for this. With adhoc support for chat and video call. But that would work only in a single project context.


> Alternatively, it'd be interesting (albeit again difficult and confining too) to have 2 or 3 folks working on the same desktop. Get a 8k 85 inch TV, with a long desk in front of it, and set it up with multi-pointer-x or some such, and let everyone work on the same shared surface.

Just a bit over a week ago I was pair coding with a coworker over a live share VS Code session for an hour or so when I suddenly realized that they must have been talking the whole time and I couldn't hear them (which turned out to be an audio issue on my end). We had apparently gone from "both of us talking and hearing fine while pair coding on the same set of files" to "I could speak but not hear him and only see his cursor and typing, and even then only if I was looking at the same place as him at the same time". Part of why we were actually able to be somewhat productive for the period of time since I had lost audio (maybe half an hour or so?) was that he was non-verbally communicating incredibly well just with his editing; I might be writing a line of code, and then suddenly I'd see that he paused what he was doing and highlighted some other line, and I'd look and say "Oh! Good catch, I forgot to take into account <something related to the line of code he highlighted".

I suspect that having something like a live share session that I was using but sitting everyone in the same room would honestly give the same or better results; I think you're on to something that this sort of social interaction in the same room could be incredibly interesting for everyone involved, but I'm not convinced that you need any sort of special virtual working space with avatars _or_ a giant monitor for everyone to be on at the same time. Honestly, thinking about this is already giving me some ideas for hackathon-type stuff where collaboration can be encouraged by having a team share exactly one copy of the repository to all work on at once rather than everyone going off in to their silos and working on separate components.


I've done hackathons by having everyone ssh (and by extension, vscode remote ssh) into a shared virtual machine. It's way faster than any version control.

A lot less safe, but a lot more fun.


Would that be different from pair-programming?


I was thinking more ambient co-presence. Getting to see what parts of the code - at a glance - are active, see where folks are in the codebase.

If someone does want help, then heck yeah, the same shared code-environment should help co-coding too! But I think the leap, for me, is trying to imagine staying connected, rather than everyone being siloed; ambient co-presence puts it nicely.


The major value proposition I see is here validation through crowdsourcing.

That is, if I was able to "hang out" in the same vicinity as e.g. Cory Doctorow, Bill Gates, < insert your favorite blogger / influencer here > and weed out low effort content.

I'd much rather read articles vetted by people I consider to have good critical thinking skills.


Oh my God, they were called newspapers and magazines, and this industry killed them.


My main experience with co-presence are those "Can I help you?" chat popups on websites, which probably in most cases aren't a co-presence since they are running chatbots most of the time.


Those are about as copresent as an overeager sales person. The examples in the article would be more like shopping with your friends. Imagine a shopping site that friends could browse together. Unfortunately no shopping site wants to be social because they want to control the experience, not surrender it to the users.


This sort of reminds me of the "bullet" comment system on the Chinese video platform BiliBili [1] and others. It can be overwhelming, but people seem to like it precisely because it brings a feeling of co-presence just like the article describes.

[1] https://djyresearch.com/2021/03/30/details-bilibili-and-bull...


Ambient signifiers are not a new idea in design (mostly talked about in the use of alerts), but knowing just enough about who is present would be more compelling if there was a more clearly stated payoff for it. The idea seems to have different outcomes depending on what features the "presence" has (fuzzy cursors vs commenting at the side, for example).


Immediately reminded me of a similar term for something slightly different, from about 15 years back - Ambient Intimacy. https://www.disambiguity.com/ambient-intimacy/




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: