HNHacker News
TopNewBestAskShowJobs

geekuillaume

623 karma · joined March 31, 2013

I'm a french developer and good food adict. I love the web and everything working around it.
submissionscomments
geekuillaume··on PostHog FOSS
Agreed, I tried self-hosting it a couple of month ago and it was impossible. I spent the day on it but the setup process was broken because of a recent change which was made for their cloud offering. Managing both a codebase both adapted to a cloud deployment with a huge amount of users and to a self-hosted way small deployment is very hard and requires a lot of resources. It's hard to justify investing this much time and money in making it work well for a self-hosted setup, and it seems like they stopped doing so.

It's still great to make the code open, but it's not usable anymore for a self-hosted setup.

geekuillaume··on Build Adafruit projects right from Firefox
WebSerial was just introduced in Firefox 151. It was already available for 5 years in Chromium based browser. It's so new in Firefox that even caniuse is not up-to-date: https://caniuse.com/web-serial.
geekuillaume··on KISS Launcher – fast launcher for Android
I also been using it for 5+ years, it's been really great! And Neamar, the creator, is a really nice guy who goes the extra mile to make sure it works great, doesn't need any permission that are not absolutely required and stays up-to-date with the last changes of the Android API.
geekuillaume··on What is a PID controller in an espresso machine?
The first image is a Rancilio Silvia espresso machine. If you like DIY, you can add your own PID with an ESP32 (wifi-enabled cheap microcontroler), a thermocouple (to measure the temperature of the boiler) and a solid-state relay (to turn on/off the boiler heating element) for less than $40. I did it in my own machine following this repo: https://github.com/rancilio-pid/clevercoffee. I have perfectly stable temperature, I can turn on the heating from my bed (with MQTT and HomeAssistant) and I used the occasion to fully understand how my machine works (which tbh is always a big part of the motivation for doing these kind of projects).
geekuillaume··on Matrix was worth the effort to self host
If you want to quickly deploy Matrix (and all the related goodies) on your server,I highly recommend https://github.com/spantaleev/matrix-docker-ansible-deploy. It's one of the best maintained project I've seen, a pleasure to install, maintain and upgrade.
geekuillaume··on Eurovision Song Contest Bingo
Currently live: https://www.youtube.com/watch?v=VhyLh5sGRRI
geekuillaume··on Ask HN: Why isn't there a standard network audio protocol?
There are some projects like Snapcast[1] or SoundSync[2] (disclaimer: I'm the creator of Soundsync) to let multiple devices communicate together on the same network. The transmission-side isn't that complex: you choose an audio codec, transmit chunks of data and add a synchronization layer (to keep multiple outputs in sync and to correctly delay video playback to match the soundtrack). The bigger problem is building an ecosystem big enough to make it attractive. Bluetooth sucks but is everywhere.

[1] https://github.com/badaix/snapcast [2] https://github.com/geekuillaume/soundsync

geekuillaume··on Hasura GraphQL Engine 2.0
If you are interested by Hasura, don't care about the graphical interface and want more control over permissions, take a look at Postgraphile: https://www.graphile.org/postgraphile/ I've been using it for a year on multiple projects and it's awesome.
geekuillaume··on Introduce DAMON-based Proactive Reclamation
Phoronix made a small article about this: https://www.phoronix.com/scan.php?page=news_item&px=DAMON-Pa...
geekuillaume··on How image search works at Dropbox
PhotoPrism (https://github.com/photoprism/photoprism) includes a TensorFlow model to tag pictures and search them.
geekuillaume··on HiFiBerryOS
HifiBerryOS is really nice. I used it for a couple of years (mainly for Spotify and Airplay) and I never had any problem with it. I need to create a PR to integrate my project Soundsync[1], it would add multi-room audio synchronization to this project. The last missing integration imo is a Chromecast receiver but this is blocked by the missing encryption keys. It would really be awesome if Google releases them.

[1] https://github.com/geekuillaume/soundsync

geekuillaume··on High-Throughput Game Message Server with Python WebSockets
I'm working on a game server handling websockets with mainly broadcast messages. I'm using nchan[1], a Nginx addon to handle websocket with a pub/sub pattern. It works really well, is customizable and is highly optimized. Perfect for some games which needs to send a global state to every players.

[1] https://nchan.io/

geekuillaume··on OpenWrt and Self-Signed Certificates
I encountered this problem on my project Soundsync. It's controlled by a webpage that needs to connect to every Soundsync peer on the current local network. I couldn't use HTTP as I need to instantiate an AudioWorklet (which has the same security requirements as a WebWorker). The big browser warning of a self-signed HTTPS certificate is a deal-breaker for a lot of non tech-savy users (which are my target).

In the end, I used WebRTC from an external HTTPS webpage I'm hosting and a "mailbox" service where two peers can post and retrieve messages from a UUID. To communicate this UUID on the local network to the peer, I first used an <img> tag with the UUID in the URL query string but this method was recently broken because of increased security measures by browsers. I now use two methods:

- Bonjour: Every peer listen for every bonjour request on the network, on the webpage I make a request to https://soundsync-UUID.local/. The peer then extract the UUID from the request and connect

- TLS Server Name Indication: I use sslip.io to connect to https://UUID_IP.sslip.io/. This is redirected to the local network IP of the peer which use the full domain name in the TLS handshake to extract the conversation UUID. This method doesn't always work because of some router filtering out DNS records resolving to 192.168.X.X.

All this process is very hacky and doesn't always work but I haven't found anything else better. We still don't have a good way to make self-hosting easy for anyone while making it secure and not dependant on an external service.

geekuillaume··on Show HN: Soundsync – Easy to use synchronized multiroom audio
The latency is dynamically set from the max latency of each audio output (reported by the OS or the WebAudio context) plus 200ms. I haven't tweaked this yet to find the best possible value so it's still quite high. In the future I want to observe the network quality (packets loss mainly, latency on the local network is not an issue in most cases) to use a custom latency for each network. As I use Opus for the audio encoding, I've enabled the packet loss concealer which is already helping in case of package loss.
geekuillaume··on Show HN: Soundsync – Easy to use synchronized multiroom audio
Hello everyone, I’m Guillaume, the creator of Soundsync.

Soundsync is a software to synchronize every audio speaker in your home and listen to your music however you want. It’s compatible with a lot of existing audio systems (Chromecast, Airplay, Spotify, WebAudio, OS audio) and focus on using what you already own instead of selling you a new proprietary system. I’ve been working on this since early 2020 and it’s in a good enough shape now that I use it everyday at home.

You can install it on any number of Windows, MacOS and Linux computers (and also RaspberryPis) on your local network and control each speaker from the web interface from any web browser on the same network. When multiple speakers are linked to the same audio source, Soundsync synchronizes them to make the playback seamless (less than 10ms drift in most cases). It supports any type of configuration, as many audio sources and audio outputs on any number of devices. You can even connect multiple audio cards on a single computer and control them separately.

The full source-code is available on Github and it’s released under the BSL License. It respects your privacy (more info in the FAQ on the landing page), doesn’t share any information with third-parties and only collects anonymous basic usage data that can be disabled easily.

On the technical side, this is Javascript, uses WebRTC to communicate in a peer-to-peer model (no server-client) and some WebAssembly to encode and resample the audio streams. The Web interface uses the same code as the installable binary for the audio and communication. The binary is an Electron package built on Github Actions. I’m using Cubeb, the multi-OS audio library used by Firefox. This is the most technically complex project I’ve ever done. Some hard problems I’ve encountered include precise audio synchronization, peer-to-peer communication system, connection to local peers from an external https webpage (the controller at https://soundsync.app/controller) and C bindings between the audio lib and NodeJS (which are available separately here https://github.com/geekuillaume/node-audioworklet/).

I’m happy to talk more about this if you have any questions! :)

geekuillaume··on Sonos is spying on me (and you)
You can use Airplay to stream to Soundsync but there is not native Apple Music integration.
geekuillaume··on Sonos is spying on me (and you)
You can use the Airplay output integration of Soundsync to send your music to your Sonos speakers. Soundsync keep track of each output latency and correct for it to keep all output synchronized.
geekuillaume··on Sonos is spying on me (and you)
All the communication stack is based on WebRTC. I made this decision to centralize the command and audio communication methods and also to easily support web targets. For Gstreamer, it should be possible to use the same method as for the Librespot (Spotify) and Shairport (Airplay source) intergration: capturing the stdout of a program. I didn't test it yet but there is the `! filesink location=/dev/stdout` option to do just that. I might also add a way to read on a named pipe (which should be easy to do) if its needed.
geekuillaume··on Sonos is spying on me (and you)
Shameless plug: I'm building an alternative to Sonos focused on managing audio streams on your home network. It's a software and a controller webapp to broadcast synchronized audio on any number of Windows / MacOS / Linux / Chromecast / Airplay speakers / Web pages / Philips Hue (light synchronized to the audio). It's available on https://soundsync.app/ and the sources are on Github: https://github.com/geekuillaume/soundsync
geekuillaume··on OB–4 – Portable high fidelity loudspeaker
Adblock Radio does exactly that: https://github.com/adblockradio. They should get in contact with the creator!
geekuillaume··on Raspberry Pi 4 can finally boot directly from USB
Snapcast is really cool, Johannes did an awesome job! I used it for a long time at home on multiple RaspberryPis. I've been working for some time on a more user-friendly and cross-OS alternative. It's available here: https://github.com/geekuillaume/soundsync

I think I'm going to try to integrate net-boot in Soundsync this weekend. It would be awesome to be able to install Soundsync on any computer on the network, turn on an option and then just start the rPi to get it to play music.

geekuillaume··on New two-stroke engine design could help keep internal combustion around longer
Link to the video: https://www.youtube.com/watch?v=oiUnqlGzLw8
geekuillaume··on Show HN: A simple open-source Android puzzle game
I've been part of the early testers and I can fully recommend the game! It's simple at first, gets harder really fast but the learning curve is well adapted.

Perfect game to pass time without the modern games addictive bullshit :)

geekuillaume··on Jitsi Architecture – legacy desktop application (2011)
Is there any feature difference between the hosted service on meet.jit.si and a self-hosted installation? I've tried looking for more information about this but I couldn't find anything.
geekuillaume··on Snapcast – Synchronous multi-room audio player
Not my project but I've been using it for a year on 3 Raspberry Pi and it has been rock solid. I highly recommend it. The synchronization is perfect and it only adds a small delay (500ms max) to the music. I've configured Librespot to use this as a Spotify Play speaker and control it from the desktop or mobile Spotify app.
geekuillaume··on Show HN: Roc – Real-Time streaming over the network
I've built something similar at home with three RPis and Snapcast [0]. It has an integration with Librespot [1] that shows it as a Spotify destination. It works really well!

[0] https://github.com/badaix/snapcast [1] https://github.com/librespot-org/librespot

geekuillaume··on Handling thousands of image upload per second with Amazon S3
The presigned requests are great, you can also use multi-part presigned URL to upload a large file in multiple chunks and resume the upload if it's interrupted.

Just one precision, you don't need to contact S3 to get a presigned URL, it's a cryptographic operation most libs do on your server. This means that if your key is invalid for any reason, the URL will be signed but the error will only be raised when the client starts the upload. You need to check for this in your code.

geekuillaume··on Calculating a record-breaking 31.4T digits of Pi with GCP
I'm curious, did someone estimate how much it would cost to replicate this experiment on GCloud with the same infrastructure?
geekuillaume··on Public Chat Web Application Source Code on GitHub
Nice work! Some time age I worked on a similar project for a client but with much bigger scaling needs (300k+ concurrent connections). My client authorized me to publish the project with an open licence. It's available here if you want to take a look: https://github.com/geekuillaume/chatup
geekuillaume··on Ask HN: Best Centralized Backup Solution
Self promotion ahead: I worked on a SaaS product to backup databases on S3 called DBacked. After some time I decided to open-source most of it. It's not made to backup files, only databases. You can look at the open-source project here: https://github.com/dbacked/agent and the SaaS product here: https://dbacked.com/
Page 1 of 3Next →