All of stellartux's Comments + Replies

I'd recommend Brave (brew install brave-browser) over Chrome if you care about privacy at all. It's a Chromium based browser so has feature parity with Chrome, but it doesn't send your personal information to the Google hivemind. Built-in ad-blocker too, and per-site noscript making it convenient to only run JS on sites you trust.

2jefftk
Well... I work on ads at Google, and I gave up on privacy a decade ago. So I don't think we're going to be thinking about this the same way, but some thoughts: * I wouldn't use an ad blocker. Sites are offering a trade: you can see our stuff if you also see our ads. If I don't want that trade I can go somewhere else. * I especially wouldn't use Brave, because it removes the ads sites have chosen to display, and asks advertisers to pay the browser to display their ads instead. * I'm happy for my information to go to Google, because they do useful things with it. My location history is automatically uploaded, and being able to figure out where I was on a specific date has been useful several times. Gmail scans my emails and turns flights into reminders. Ad tracking means better ad targeting, which means my visits to pages make more money for the site owners. Google's handling of user information is very good, and I'm frustrated that regulatory changes mean I'll likely see many fewer helpful new features connecting the pieces of information I've given them. None of this hurts me, and in return I get a lot of useful free things. * JS is very well sandboxed, and I'm fine running JS even on sites I don't trust at all. JS exploits in Chrome are rare enough to be newsworthy when they happen. (Speaking only for myself)

You can pipe a microphone directly to AudioWorklet, using MediaStreamAudioSourceNode. Do the following in the main scope, then you can access the mic input as the input parameter of process() in the worklet scope.

const audioCtx = new (window.AudioContext || window.webkitAudioContext)()
const micStream = await navigator.mediaDevices.getUserMedia({ audio: true })
const micNode = new MediaStreamAudioSourceNode(audioCtx, { mediaStream: micStream })
micNode.connect(yourAudioWorkletNode)
yourAudioWorkletNode.connect(audioCtx.destination)
3jefftk
Awesome! This works: https://www.jefftk.com/echo-demo-v2 Thanks so much!
Answer by stellartux70

The field of information theory for calculating how much data can be thrown away while minimising distortion is called rate-distortion theory, and the term for compression with some intentional data loss is lossy compression. This article on JPEGs is an interesting start on some lossy compression techniques, in particular the explanation of Discrete Cosine Transforms. https://parametric.press/issue-01/unraveling-the-jpeg/

I don't know of any resources, but I moderated a community once, and did absolutely no research and everything turned out fine. There were about 15 or so core members in the community and maybe a couple of hundred members in total. My advice is to make explicit rules about what is and is not allowed in the community, and try to enforce them as evenly as possible. If you let people know what's expected and err on the side of forgiveness when it comes to rule violations, most people in the community will understand and respect that you're just doing what's n... (read more)

I saw this before the meeting happened but couldn't get off work on such short notice, but would be interested in future meetups.

0bentarm
We will be organising another one relatively soon. If you pm me your email address, I'll include you in hype discussion