I prefer to use Zod or JSON Schema as the source of truth. Then I use QuickType [1] in the build process to generate code in different languages. This lets me share data structures. I mostly do this in Tauri apps to keep the same data shape in TypeScript and Rust. I also use it to define protocols, like for REST APIs.
Here are the advantages of this approach compared to using guts lib:
- I get validation with clear error messages.
- It supports many languages out of the box.
- I don’t need to maintain a custom library.
- JSON Schema is well supported in LLMs (for example, with structured output or vibe coding).
Good ol’ Prometheus and Grafana stack (Loki for logs, Tempo for traces) is perfect for smaller projects. You can also explore having OpenTelemetry collectors in the middle for more sophisticated processing and if you want to keep an eye on its ecosystem.
This is still the goto OSS stack, and I wouldn’t really recommend looking into smaller projects (usually backed by a single vendor) that are claiming better performance/lower resource usage for the same capabilities, because that always comes with a cost.
> As mentioned above, the default behavior for caching (that is, for a response without Cache-Control) is not simply "don't cache" but implicit caching according to so-called "heuristic caching".
> How long to reuse is up to the implementation, but the specification recommends about 10% [...] of the time after storing.
So assuming I'm reading this correctly, if she still hasn't added `Cache-Control` headers to the feed responses, and her last post was (for example) 24 hours ago, that means a well-behaved client will check the feed again in 2.4h from now, and then again 2.64h after that, and then 2.9h after that, and so on.
If the last feed update was 1 hour ago, and no `Cache-Control` header is present, a well-behaved client would cache the response for 6 minutes (10% of 1 hour).
Quoting the next paragraph (right after my last quote):
> Heuristic caching is a workaround that came before Cache-Control support became widely adopted, and basically all responses should explicitly specify a Cache-Control header.
So a possibility is that Unread RSS Reader might be detecting the lack of `Cache-Control` (which means Rachel is not bothering to follow caching recommendations), which then might be causing Unread RSS Reader to be doing heuristic caching as per the recommendations mentioned above, and the problem is just that Rachel doesn't like this heuristic caching but also doesn't want to include `Cache-Control` in her responses.
And if I'm understanding all this correctly, the `If-Modified-Since` and `If-None-Match` headers have nothing to do with request rate (what she's complaining about), they are only used to let the server decide if it should return a full response or if a 304 is enough.
Next time you find yourself reverse engineering a weird protocol - use ImHex. You can literally define patterns (in a C++ / Rust -like language) so that your binary file gets highlighted and processed.
I can't recommend it enough - it's perfect for the job and it's free and Open Source.
I visited zurich and lucerne last year and loved it, we had a hike and cog train trip around rigi kulm in the alps which had some breathtaking sights.
Zurich is excellent but expensive. You can do 3,4,5 days here especially if you plan a hike for one or two days up the alps.
For Bavaria i recommend a trip to Munich and then by train to nearby Salzburg in Austria. You really cant beat a bier keller and some paul anner, pretzels, and brautwerst and suarkraut,
You should do 2-3 days in Munich and 1-2 days in Salzburg.
Both places are beautiful with fantastic food, beer, and museums.
Is there any good beginner friendly documentation for zfs? I've started using it as a testing/learning NAS with a raspberry pi (cloning my google library to immich). It has not been a clearly easy process and errors are very much not clear. I recently extended a single drive to 2 and now I can't import due to corrupted metadata and reports bad disk but smartctl reports all fine. Stack overflow is all over the place and reddit is... reddit. So is there a good goto place for these kinds of issues? I suspect this will be far from my last one.
YouTube (and most other streaming sites like Spotify etc) use something called ReplayGain. It's essentially a tag that specifies the calculated average loudness of the video/song/whatever (this number is calculated at upload time).
Upon playback, the official YT client knows to use that tag and adjust its volume level accordingly, but I'd imagine either the tag isn't getting downloaded, or perhaps MKV doesn't support ReplayGain tags natively.
Here are the advantages of this approach compared to using guts lib: - I get validation with clear error messages. - It supports many languages out of the box. - I don’t need to maintain a custom library. - JSON Schema is well supported in LLMs (for example, with structured output or vibe coding).
[1] https://quicktype.io/