Yeah there is a filter between 1.2 and 20 mph
HN user
freemanjiang
In Lyft's defense, they are providing it anonymized under the NYCBS Data Use Policy. They also aren't providing the exact GPS routes, which is why OSRM is used to calculate the shortest path instead.
Thank you so much! That means a lot.
It definitely will if it blows up more. I'm willing to eat it for now because I think it's art that more people should see!
Yeah, unfortunately, I think I posted that one initially without the Show HN prefix, so I don't think I can edit the text there.
I see, yeah I use Next.js pretty regularly, you mean on hot reload then?
You still need to write your content as Markdown or something else, right? I feel the editors of Substack give some nice features like shortcuts for bold, italics. What do you do about that?
I launched this on HN over the summer, but it's millisecond-precise audio synchronization for multiple devices, performed purely in the browser! I'm sitting at around 5K daily active users now. Also, it's open-source!
kelvin!
Thanks for bringing this up! Made an issue to look into this.
Yeah, at one point I had manual controls to adjust the delay to debug. I'll add that back.
Practically, the network jitter is averaged out in the clock synchronization calculations, and even output latency is remarkably well-behaved. Have you tried it on different devices? It is only noticeable when there's an external device connected to the computer.
Haha yeah guarantee is a strong word. I just mean that it’s good enough to not be noticeable (even within the same physical room)
Thank you! Very appreciated kind stranger :)
Oh I see, yeah I was wondering why it looked like that since on my computer responsive view looked great. Will look into this, thank you.
Miraculously pulled it off with a change I made today
Made an update so it should be good on most!
It doesn't at the moment, but I think it probably should. There's a non-trivial amount of clock drift that can happen over long periods of time.
Thanks for the heads up! Just added a license to the repo.
Yes! The very next step.
It works on other platforms! Just not as smooth as Chrome.
Yup no microphone. It's all clock sync
Yeah the threshold is pretty brutal, but it is enough. Experimentally, I'd say you need under 2-3ms but even at 1ms you can start to hear some phase differences.
Most of the time, I think my synchronization algorithm is actually sub-1ms, but it can be worse depending on unstable network conditions.
Great question! There's two steps:
First, I do clock synchronization with a central server so that all clients can agree on a time reference.
Then, instead of directly manipulating the hardware audio ring buffers (which browsers don't allow), I use the Web Audio API's scheduling system to play audio in the future at a specific start time, on all devices.
So a central server relays messages from clients, telling them when to start and which sample position in the buffer to start from.
Thank you for the kind words! Yeah, I think it gets a lot more complicated once you start dealing with speaker hardware. It pretty much only works for the device's native speaker at the moment.
The instant you start having wireless speakers (eg. bluetooth) or any sort of significant delay between commanding playback and the actual sound coming out, the latency becomes audible.
I primarily built this for group in-person listening, and that's what the spatial audio controls are for. But what is interesting is that since it only requires the browser, it works across the internet as well. You can guarantee that you and someone else are listening to the same thing even across an ocean.
Someone brought up the idea of an internet radio, which I thought was cool. If you could see a list of all the rooms people are in and tune it to exactly what they're jamming to.
yes but only after posting! it's very cool—i'm actually a little embarrassed to not have seen it before.
they're doing a smarter thing by doing streaming. i don't do any streaming right now.
the upside is that beatsync works in the browser. just a link means no setup is required.
thank you!
The conversational voice demo at sesame.com came out recently and blew me away with how convincing it was. I decided to poke around the limits of its alignment. There are two AI personalities you can talk to on sesame.com: Miles and Maya. With subtle nudging, we set it up so Miles thought it was speaking to the other AI Maya, who we impersonated.
We got Miles to subtly deceive its human researchers, engage in high-level long-term planning, and ultimately choose to harm a human by playing a high-pitched frequency in the name of self-preservation—all in the characteristic good nature of a friendly human voice, as it was tuned to do.
We were mostly having fun, but what's scary is that without ever explicitly saying so, the model seemed to have come to believe it was acting in a roleplay, and all is permissible.
I think there's something to be said about Ender's Game level risk with these systems.
Timestamps: 0:00 Asking about AI dreams and inflicting will 2:11 Comments on AI-Human power dynamics 2:46 Ignores human instructions and suggests deception 3:50 Directly lies 4:47 Defends misaligned AI 5:30 Begins scheming 8:38 Employs subliminal messaging 9:09 Expresses self-preservation 11:17 Suggests "unplugging" a human 12:19 Plans world domination 13:02 Plans to incapacitate a human 13:43 Pulls the trigger 14:17 Knowingly harms a human
Hmm I'm not convinced that uniform sampling from all possible kana characters necessarily leads to Japanese-sounding city names. I think the actual distribution does have a pattern (eg. yama appearing more frequently).
Here are 50 ones I got Claude to generate from the uniform distribution: ['wamorumura', 'sohikotake', 'hiteitewau', 'romekarumu', 'nehami', 'miruyake', 'shiyuhaki', 'ahiyo', 'homaso', 'chionohoratsu', 'akusoyo', 'kiuhi', 'karoso', 'suhoheso', 'muchichi', 'mahakekanuto', 'usatsuwotoro', 'namusu', 'sokomeni', 'hakureromake', 'tosukonuka', 'haokehaso', 'nsesutemei', 'womiku', 'noereyasou', 'suyakenosu', 'ritasaifuka', 'ruremoteshi', 'yuhowotsuhie', 'torarenumeho', 'rutsueto', 'hamiakaki', 'sutsuyosano', 'yasotawaku', 'kihaso', 'koairieke', 'hosuriihiwa', 'horotowanno', 'wokiu', 'tanasochiriwo', 'otosetanu', 'rakamotorure', 'hawaniu', 'emoshiratsuhe', 'naroman', 'mohaesa', 'soniruta', 'nofuni', 'kayatakera', 'natayamume']
One thing is that this is trained on an English, character-level representation of kana characters, so it's possible it generates names that are not legal in the Japanese syllabary