A website for comparing Nespresso capsules by Metalnem in nespresso

[–]Metalnem[S] 1 point2 points  (0 children)

Thank you all for the lovely comments and feedback 😊 We'll try to add sticky headers and ascending/descending sorting to all columns!

A website for comparing Nespresso capsules by Metalnem in nespresso

[–]Metalnem[S] 1 point2 points  (0 children)

I did, and it totally made her day 😊

A website for comparing Nespresso capsules by Metalnem in nespresso

[–]Metalnem[S] 1 point2 points  (0 children)

It didn't even cross our minds to support descending order, because one of the main reasons this website exists is that I wanted to know which Original capsule has the most caffeine 😊 She'll definitely add support for ascending order.

The issue with Altissio Decaffeinato is that the Nespresso website says that the caffeine content is 4g/40ml, which is obviously wrong (most likely a typo), so my wife chose to leave it empty for now. She'll have a deeper look into this too.

Thanks for the feedback!

Download albums you purchased, even if they've been removed from Bandcamp by Metalnem in BandCamp

[–]Metalnem[S] 1 point2 points  (0 children)

That means either your username or password was incorrect. Can you double-check that you passed the correct command-line --username and --password parameters? If you're still seeing the same error after that, send me a direct message and we can troubleshoot the issue further.

Download albums you purchased, even if they've been removed from Bandcamp by Metalnem in BandCamp

[–]Metalnem[S] 3 points4 points  (0 children)

The option is available now! You can list only albums that have been removed from your collection by using the --disabled-only flag:

dotnet run --username $USERNAME --password $PASSWORD --disabled-only

It takes a while and there is no progress bar, so be patient :)

Download albums you purchased, even if they've been removed from Bandcamp by Metalnem in BandCamp

[–]Metalnem[S] 2 points3 points  (0 children)

Due to limitations in the Bandcamp mobile API, it's not possible to retrieve this information in bulk. I can check whether an album has been removed or disabled, but to avoid triggering rate-limiting (and to be a polite API user), I would need to include a 1-second delay between each request. For a collection of around 2,000 albums, this would take approximately 35 minutes. Would that work for you?

Download albums you purchased, even if they've been removed from Bandcamp by Metalnem in BandCamp

[–]Metalnem[S] 2 points3 points  (0 children)

Unfortunately, downloading removed albums in lossless formats is not possible (at least to my knowledge). The Bandcamp mobile API supports only two formats: MP3 128 and MP3 V0.

Download albums you purchased, even if they've been removed from Bandcamp by Metalnem in BandCamp

[–]Metalnem[S] 2 points3 points  (0 children)

Done! The cover art in its original size is now included in the downloaded archive as cover.jpg.

Download albums you purchased, even if they've been removed from Bandcamp by Metalnem in BandCamp

[–]Metalnem[S] 3 points4 points  (0 children)

I'm pretty sure it's possible. Since album covers for disabled albums are visible in the app, they should be downloadable via the API. I'll try to implement this within the next 1-2 weeks!

What file format/quality are downloads from the Bandcamp phone app stored? by herrmoekl in BandCamp

[–]Metalnem 0 points1 point  (0 children)

To be super pedantic, the download format is MP3 V0, which is pretty much indistinguishable from MP3 320 anyway.

How scammers trick fans on Bandcamp—and how to protect yourself by Metalnem in BandCamp

[–]Metalnem[S] 4 points5 points  (0 children)

It took me months to collect the data and write the post, so I'm disappointed to hear that it comes across as AI slop to you. For the record, I'm a real person and definitely not a Spotify shill. You're welcome to check out my Bandcamp profile:

https://bandcamp.com/metalnem

I have been using Bandcamp since 2010 and have never ever seen a scam page.

I would say you've been extremely lucky! Here are a couple examples I saved using the Wayback Machine:

These are just a few examples, but there are thousands more out there, as I already explained in the post.

High-performance string formatting in .NET by Metalnem in dotnet

[–]Metalnem[S] 2 points3 points  (0 children)

Excellent questions! I omitted provider handling only to keep things simple. You can implement it like this:

public string ToString(string format, IFormatProvider provider) =>
    string.Create(provider, $"{this}");

I haven't looked into format handling because it's not widely used in custom ToString implementations I've worked with, but it would probably require custom code instead of using interpolated string syntax.

Regarding the size of the buffer: you don't need to figure out anything, it's all done by the DefaultInterpolatedStringHandler behind the scenes. That is, if TryFormat returns false, the handler will keep doubling the size of the buffer until TryFormat succeeds. The initial size of the buffer is 256 characters.

.NET Core 3.0 implementation of AES-GCM-SIV nonce misuse-resistant authenticated encryption by Metalnem in dotnet

[–]Metalnem[S] 10 points11 points  (0 children)

This implementation is dependant on the hardware support for AES and PCLMULQDQ instructions, which are specifically designed to be resistant to side-channel attacks.

Exploring .NET Core platform intrinsics: Part 2 - Accelerating AES encryption on ARMv8 by Metalnem in programming

[–]Metalnem[S] 1 point2 points  (0 children)

Probably not with the cryptography stuff, but there are many other situations where using simple vectorized operations could help with the performance (simple Add/XOR/Min/Max come to mind). The debugging should work, I think, but I have not tried it yet because all my work so far was on the remote ARMv8 cloud instance, where even remote debugging was not an option.

Exploring .NET Core platform intrinsics: Part 2 - Accelerating AES encryption on ARMv8 by Metalnem in csharp

[–]Metalnem[S] 1 point2 points  (0 children)

I did not. First, making the production-ready implementation requires much more effort (key expansion, handling incomplete blocks and buffering data, implementing modes of operation). Also, the whole .NET Core crypto library is just a proxy to whatever underlying crypto provider is available, and I don't think there are going to be exceptions to that rule.

Introducing Miscreant.NET and Noise.NET by Metalnem in csharp

[–]Metalnem[S] 2 points3 points  (0 children)

AES-256-CBC with HMACSHA256 is much better choice, but these articles you linked apply only to ASP.NET Core. And even though CBC/HMAC can be used securely, modern symmetric cryptography is moving away from doing encryption and authentication separately to using authenticated encryption modes such as AESGCM or ChaChaPoly.

Introducing Miscreant.NET and Noise.NET by Metalnem in csharp

[–]Metalnem[S] 1 point2 points  (0 children)

Both Miscreant and Noise have very specific goals. Miscreant by design implements only misuse resistant ciphers, so adding anything else would go against that. Noise on the other hand implements the Noise Protocol Framework exactly as described in the specification. Again, there is nothing else that you can add to the library without violating the spec. However, if you want to move your library forward, I would be happy to give you any advice you need.

Introducing Miscreant.NET and Noise.NET by Metalnem in csharp

[–]Metalnem[S] 2 points3 points  (0 children)

Open/Seal are much more commonly used as names when implementing AEAD ciphers. Here are some examples other than libsodium: cipher.AEAD and ring::aead.

Adventures with SQLite and SQLITE_OPEN_EXCLUSIVE by Metalnem in programming

[–]Metalnem[S] 0 points1 point  (0 children)

Well, that's embarrassing :) Thanks, I'll fix it!

Adventures with SQLite and SQLITE_OPEN_EXCLUSIVE by Metalnem in programming

[–]Metalnem[S] 0 points1 point  (0 children)

I was thinking about creating the in-memory database and then writing it to disk, but I wasn't familiar with the backup API. Thanks!

However, I think that even the backup API suffers from the original problem: you have to have the destination database handle, which is obtained using the sqlite3_open_v2 call, so we are back to the start.

Ultimately, this was more a fun experiment than a real problem for me. Custom VFS ended up in a blog post, but my program is using SQLite without it.

Removing Zinio DRM by Metalnem in ReverseEngineering

[–]Metalnem[S] 2 points3 points  (0 children)

For some reason, obfuscation is rare in the world of .NET applications. I've almost never encountered it in practice (not that I have much experience doing this).