The best Hacker News stories from Show from the past day
Latest posts:
Show HN: A macOS app to prevent sound quality degradation on AirPods
Right, here's the thing: If you are using AirPods(or any Bluetooth headphones with a mic in fact) on Mac and something activates the mic(i.e. you Shazam a song), the sound will be interrupted momentarily and will return in very low quality. This is happening because Bluetooth can't handle both way high quality streaming and the bandwidth is decreased to make it work.<p>It's a known issue and here's what Apple recommends to fix it: <a href="https://support.apple.com/en-hk/102217" rel="nofollow">https://support.apple.com/en-hk/102217</a><p>Most of the time(unless you are on a Mac Mini/Studio/Pro), you have much higher quality microphones built in, so in most use cases, you want to hear from your AirPods but be heard from your internal microphone, which means if every time you connect your AirPods and go into the settings and set the default input device as the internal mic, you won't have sound quality degradation on mic activation, and if you use your mic to talk to people or record something, you will have better sound quality too.<p>Based on this observation, first I tried to create a script or some automation that can do it for me but found out that it can be clunky or needlessly complex.<p>Here's someone who used this approach to fix this issue: <a href="https://www.dermitch.de/post/macos-force-microphone-when-using-airpods/" rel="nofollow">https://www.dermitch.de/post/macos-force-microphone-when-usi...</a><p>Anyway, I decided to take the "build your app for that" route and created this app and called it CrystalClear Audio which doesn't involve any technical setup to use. Making it was also not as easy I hoped, I was expecting this to be a half an hour project but ended up filing bug reports with Apple because some API wasn't behaving as expected or mysterious things were happening when using it(like phantom device changes).<p>After spending that much time with all this, I decided to publish it on Mac AppStore and after too many rejections(all my mistakes) I got it published: <a href="https://apps.apple.com/us/app/crystalclear-sound/id6695723746" rel="nofollow">https://apps.apple.com/us/app/crystalclear-sound/id669572374...</a><p>The app is not free but comes with a free trial. I decided to go with a very cheap subscription model because I suspect further development might be needed as bugs emerge or API behavior changes. I know its a hated business model but IMHO it's better than ads or tracking of any sort to justify the work done. It's not free because supporting a free app is just as hard as supporting a paid one and it's not one time payment because I don't know what would the right price be for supporting an app for years to come and still have people willing to pay for it.<p>I hope other people find this useful and if you do, you can support by upvoting on Producthunt so even more people can find it sueful: <a href="https://www.producthunt.com/posts/crystalclear-sound" rel="nofollow">https://www.producthunt.com/posts/crystalclear-sound</a><p>PS: the app is also useful for quickly switching between giving the sound out of the laptop speakers and the headphones, I ended up using that quite often.
Show HN: A macOS app to prevent sound quality degradation on AirPods
Right, here's the thing: If you are using AirPods(or any Bluetooth headphones with a mic in fact) on Mac and something activates the mic(i.e. you Shazam a song), the sound will be interrupted momentarily and will return in very low quality. This is happening because Bluetooth can't handle both way high quality streaming and the bandwidth is decreased to make it work.<p>It's a known issue and here's what Apple recommends to fix it: <a href="https://support.apple.com/en-hk/102217" rel="nofollow">https://support.apple.com/en-hk/102217</a><p>Most of the time(unless you are on a Mac Mini/Studio/Pro), you have much higher quality microphones built in, so in most use cases, you want to hear from your AirPods but be heard from your internal microphone, which means if every time you connect your AirPods and go into the settings and set the default input device as the internal mic, you won't have sound quality degradation on mic activation, and if you use your mic to talk to people or record something, you will have better sound quality too.<p>Based on this observation, first I tried to create a script or some automation that can do it for me but found out that it can be clunky or needlessly complex.<p>Here's someone who used this approach to fix this issue: <a href="https://www.dermitch.de/post/macos-force-microphone-when-using-airpods/" rel="nofollow">https://www.dermitch.de/post/macos-force-microphone-when-usi...</a><p>Anyway, I decided to take the "build your app for that" route and created this app and called it CrystalClear Audio which doesn't involve any technical setup to use. Making it was also not as easy I hoped, I was expecting this to be a half an hour project but ended up filing bug reports with Apple because some API wasn't behaving as expected or mysterious things were happening when using it(like phantom device changes).<p>After spending that much time with all this, I decided to publish it on Mac AppStore and after too many rejections(all my mistakes) I got it published: <a href="https://apps.apple.com/us/app/crystalclear-sound/id6695723746" rel="nofollow">https://apps.apple.com/us/app/crystalclear-sound/id669572374...</a><p>The app is not free but comes with a free trial. I decided to go with a very cheap subscription model because I suspect further development might be needed as bugs emerge or API behavior changes. I know its a hated business model but IMHO it's better than ads or tracking of any sort to justify the work done. It's not free because supporting a free app is just as hard as supporting a paid one and it's not one time payment because I don't know what would the right price be for supporting an app for years to come and still have people willing to pay for it.<p>I hope other people find this useful and if you do, you can support by upvoting on Producthunt so even more people can find it sueful: <a href="https://www.producthunt.com/posts/crystalclear-sound" rel="nofollow">https://www.producthunt.com/posts/crystalclear-sound</a><p>PS: the app is also useful for quickly switching between giving the sound out of the laptop speakers and the headphones, I ended up using that quite often.
Show HN: Bringing multithreading to Python's async event loop
This project explores the integration of multithreading into the asyncio event loop in Python.<p>While this was initially built with enhancing CPU utilization for FastAPI servers in mind, the approach can be used with more general async programs too.<p>If you’re interested in diving deeper into the details, I’ve written a blog post about it here: <a href="https://www.neilbotelho.com/blog/multithreaded-async.html" rel="nofollow">https://www.neilbotelho.com/blog/multithreaded-async.html</a>
Show HN: Bringing multithreading to Python's async event loop
This project explores the integration of multithreading into the asyncio event loop in Python.<p>While this was initially built with enhancing CPU utilization for FastAPI servers in mind, the approach can be used with more general async programs too.<p>If you’re interested in diving deeper into the details, I’ve written a blog post about it here: <a href="https://www.neilbotelho.com/blog/multithreaded-async.html" rel="nofollow">https://www.neilbotelho.com/blog/multithreaded-async.html</a>
Show HN: An experimental AntiBot, AntiCrawl reverse proxy for the web
Show HN: Open-source app builder for comfy workflows
Hey, we’ve been working on an open-source project built on top of Comfy for the last few weeks. It is still very much a work in progress, but I think it is at a place where it could start to be useful. The idea is that you can turn a workflow into a web app with an easy-to-use UI.<p>Currently, it should work with any workflows that take images and text as input and return images. We are aiming to add video support over the next few days.<p>Feedback and contributions are more than welcome!
Show HN: GitHub Repo Visualizer Using D3
I built this as part of my quest to properly learn data visualization. The code is the easy part!<p>Some lessons learned:<p>- personal verification of the the general truth that pie charts are tough! and the returns are not great for the effort due to people's difficulties perceiving angles
- may not use "vanilla" d3 with no React. was difficult to adapt for mobile
- the GitHub API provides fairly standardized responses so building dynamic charts wasn't too bad. But when working with streaming data (say Kafka) I can see this getting interesting... schema registry should help but creating a view into the data with a lookback would be interesting with d3, done it with altair before.
Show HN: GitHub Repo Visualizer Using D3
I built this as part of my quest to properly learn data visualization. The code is the easy part!<p>Some lessons learned:<p>- personal verification of the the general truth that pie charts are tough! and the returns are not great for the effort due to people's difficulties perceiving angles
- may not use "vanilla" d3 with no React. was difficult to adapt for mobile
- the GitHub API provides fairly standardized responses so building dynamic charts wasn't too bad. But when working with streaming data (say Kafka) I can see this getting interesting... schema registry should help but creating a view into the data with a lookback would be interesting with d3, done it with altair before.
Show HN: Enable right click and copy on websites that disabled it
Show HN: htmgo - build simple and scalable systems with golang + htmx
Hey all, I just wanted to share a project I've been working on for the past month.<p>After years of heavy frameworks, I really like the idea of using htmx, but it’s a little too low level for me and needs a thin layer above it to facilitate things like components, better syntax with complex JS inside of an attribute, etc<p>To try and solve this problem with a very minimal stack (golang + htmx) that I've been really enjoying, I'm building this project to cater to my needs and was thinking it would be useful for other developers.
Show HN: htmgo - build simple and scalable systems with golang + htmx
Hey all, I just wanted to share a project I've been working on for the past month.<p>After years of heavy frameworks, I really like the idea of using htmx, but it’s a little too low level for me and needs a thin layer above it to facilitate things like components, better syntax with complex JS inside of an attribute, etc<p>To try and solve this problem with a very minimal stack (golang + htmx) that I've been really enjoying, I'm building this project to cater to my needs and was thinking it would be useful for other developers.
Show HN: htmgo - build simple and scalable systems with golang + htmx
Hey all, I just wanted to share a project I've been working on for the past month.<p>After years of heavy frameworks, I really like the idea of using htmx, but it’s a little too low level for me and needs a thin layer above it to facilitate things like components, better syntax with complex JS inside of an attribute, etc<p>To try and solve this problem with a very minimal stack (golang + htmx) that I've been really enjoying, I'm building this project to cater to my needs and was thinking it would be useful for other developers.
Show HN: Mitata – Benchmarking tooling for JavaScript
I always had a sweet tooth for how easy it is to use google/benchmark, but when working with js, current libraries didn't feel right and some were not even accurate enough, so I decided to create my own library to make JavaScript benchmarking tooling better.<p>With more free time, I finally implemented all features I wished for in 1.0.0 and made a lightweight C++ single-header version for moments when google/benchmark is too much.<p>Hope this library helps you as much as it does me.
Show HN: Mitata – Benchmarking tooling for JavaScript
I always had a sweet tooth for how easy it is to use google/benchmark, but when working with js, current libraries didn't feel right and some were not even accurate enough, so I decided to create my own library to make JavaScript benchmarking tooling better.<p>With more free time, I finally implemented all features I wished for in 1.0.0 and made a lightweight C++ single-header version for moments when google/benchmark is too much.<p>Hope this library helps you as much as it does me.
Show HN: Mitata – Benchmarking tooling for JavaScript
I always had a sweet tooth for how easy it is to use google/benchmark, but when working with js, current libraries didn't feel right and some were not even accurate enough, so I decided to create my own library to make JavaScript benchmarking tooling better.<p>With more free time, I finally implemented all features I wished for in 1.0.0 and made a lightweight C++ single-header version for moments when google/benchmark is too much.<p>Hope this library helps you as much as it does me.
Show HN: Comprehensive authentication library for TypeScript
The most comprehensive authentication library for TypeScript
Show HN: Comprehensive authentication library for TypeScript
The most comprehensive authentication library for TypeScript
Show HN: Comprehensive authentication library for TypeScript
The most comprehensive authentication library for TypeScript
Show HN: Iceoryx2 – Fast IPC Library for Rust, C++, and C
Hello everyone,<p>Today we released iceoryx2 v0.4!<p>iceoryx2 is a service-based inter-process communication (IPC) library designed
to make communication between processes as fast as possible - like Unix domain
sockets or message queues, but orders of magnitude faster and easier to use. It
also comes with advanced features such as circular buffers, history, event
notifications, publish-subscribe messaging, and a decentralized architecture
with no need for a broker.<p>For example, if you're working in robotics and need to process frames from a
camera across multiple processes, iceoryx2 makes it simple to set that up. Need
to retain only the latest three camera images? No problem - circular buffers
prevent your memory from overflowing, even if a process is lagging. The history
feature ensures you get the last three images immediately after connecting to
the camera service, as long as they’re still available.<p>Another great use case is for GUI applications, such as window managers or
editors. If you want to support plugins in multiple languages, iceoryx2 allows
you to connect processes - perhaps to remotely control your editor or window
manager. Best of all, thanks to zero-copy communication, you can transfer
gigabytes of data with incredibly low latency.<p>Speaking of latency, on some systems, we've achieved latency below 100ns when
sending data between processes - and we haven't even begun serious performance
optimizations yet. So, there’s still room for improvement! If you’re in
high-frequency trading or any other use case where ultra-low latency matters,
iceoryx2 might be just what you need.<p>If you’re curious to learn more about the new features and what’s coming next,
check out the full iceoryx2 v0.4 release announcement.<p>Elfenpiff<p>Links:<p>* GitHub: <a href="https://github.com/eclipse-iceoryx/iceoryx2">https://github.com/eclipse-iceoryx/iceoryx2</a>
* iceoryx2 v0.4 release announcement: <a href="https://ekxide.io/blog/iceoryx2-0-4-release/" rel="nofollow">https://ekxide.io/blog/iceoryx2-0-4-release/</a>
* crates.io: <a href="https://crates.io/crates/iceoryx2" rel="nofollow">https://crates.io/crates/iceoryx2</a>
* docs.rs: <a href="https://docs.rs/iceoryx2/0.4.0/iceoryx2/" rel="nofollow">https://docs.rs/iceoryx2/0.4.0/iceoryx2/</a>
Show HN: Iceoryx2 – Fast IPC Library for Rust, C++, and C
Hello everyone,<p>Today we released iceoryx2 v0.4!<p>iceoryx2 is a service-based inter-process communication (IPC) library designed
to make communication between processes as fast as possible - like Unix domain
sockets or message queues, but orders of magnitude faster and easier to use. It
also comes with advanced features such as circular buffers, history, event
notifications, publish-subscribe messaging, and a decentralized architecture
with no need for a broker.<p>For example, if you're working in robotics and need to process frames from a
camera across multiple processes, iceoryx2 makes it simple to set that up. Need
to retain only the latest three camera images? No problem - circular buffers
prevent your memory from overflowing, even if a process is lagging. The history
feature ensures you get the last three images immediately after connecting to
the camera service, as long as they’re still available.<p>Another great use case is for GUI applications, such as window managers or
editors. If you want to support plugins in multiple languages, iceoryx2 allows
you to connect processes - perhaps to remotely control your editor or window
manager. Best of all, thanks to zero-copy communication, you can transfer
gigabytes of data with incredibly low latency.<p>Speaking of latency, on some systems, we've achieved latency below 100ns when
sending data between processes - and we haven't even begun serious performance
optimizations yet. So, there’s still room for improvement! If you’re in
high-frequency trading or any other use case where ultra-low latency matters,
iceoryx2 might be just what you need.<p>If you’re curious to learn more about the new features and what’s coming next,
check out the full iceoryx2 v0.4 release announcement.<p>Elfenpiff<p>Links:<p>* GitHub: <a href="https://github.com/eclipse-iceoryx/iceoryx2">https://github.com/eclipse-iceoryx/iceoryx2</a>
* iceoryx2 v0.4 release announcement: <a href="https://ekxide.io/blog/iceoryx2-0-4-release/" rel="nofollow">https://ekxide.io/blog/iceoryx2-0-4-release/</a>
* crates.io: <a href="https://crates.io/crates/iceoryx2" rel="nofollow">https://crates.io/crates/iceoryx2</a>
* docs.rs: <a href="https://docs.rs/iceoryx2/0.4.0/iceoryx2/" rel="nofollow">https://docs.rs/iceoryx2/0.4.0/iceoryx2/</a>