Zetaphor

joined 8 months ago
[–] Zetaphor@zemmy.cc 2 points 5 months ago (4 children)

Go ahead and try scraping an arbitrary list of sites without an API and let me know how that goes. It would be a constant maintenance headache, especially if you're talking about anything other than the larger chains that have fairly standardized sites

[–] Zetaphor@zemmy.cc 7 points 5 months ago (6 children)

Because grocery stores don't make that data accessible to third party developers, otherwise someone would do what you're suggesting and they'd risk you shopping elsewhere.

[–] Zetaphor@zemmy.cc 5 points 5 months ago (2 children)

Give NixOS a shot. It's got a learning curve that may be difficult if you've never read code, but it's my preferred immutable setup.

It even has more packages than Arch.

Here's the video that got me onto it:

https://youtu.be/CwfKlX3rA6E

[–] Zetaphor@zemmy.cc 0 points 5 months ago* (last edited 5 months ago)

Bro just accept the L and quit while you still can

Edit: I just saw the thread 💀

[–] Zetaphor@zemmy.cc 2 points 5 months ago (1 children)

I mean the NVIDIA stock price speaks for itself, I think Jensen is onto something

[–] Zetaphor@zemmy.cc 5 points 1 year ago (1 children)

Yes I do! It's a pretty great overview that isn't extremely math heavy

The book is "Deep Learning for Coders with Fastai and PyTorch: AI Applications Without a PhD"

https://www.amazon.com/gp/product/1492045527

[–] Zetaphor@zemmy.cc 69 points 1 year ago (3 children)

I have a book on learning Pytorch, this XKCD is in the first chapter and implementing this is the first code practice. It's amazing how things progress.

[–] Zetaphor@zemmy.cc 7 points 1 year ago (1 children)
[–] Zetaphor@zemmy.cc 7 points 1 year ago

I'm really enjoying Otterwiki. Everything is saved as markdown, attachments are next to the markdown files in a folder, and version control is integrated with a git repo. Everything lives in a directory and the application runs from a docker container.

It's the perfect amount of simplicity and is really just a UI on top of fully portable standard tech.

[–] Zetaphor@zemmy.cc 55 points 1 year ago* (last edited 1 year ago)

The apology video to me rang hollow and self serving. They made jokes (including a sex joke which was very unfortunate timing), they teased a new product and plugged lttstore, they said the details on how Labs does thorough testing will be paywalled, they publicly disclosed Billets prototype price which GN's video clearly stated they did not want public (an error in the video apologizing for errors), and then there's Linus' response.

I've canceled my floatplane subscription and unsubscribed from all of their YouTube channels. I was willing to see them through on the original accusations from GN, but after that "apology" and the accusations from Madison, I no longer feel okay rewarding them with my time and money.

[–] Zetaphor@zemmy.cc 77 points 1 year ago (12 children)

Then you missed where they dropped an opportunity to show a new screwdriver variant coming to LLTStore.com 🤦

 

As the title says, I got tired of hearing about twitter and reddit so provide this userscript a comma separated list of keywords and you will no longer see posts containing those keywords. I'd love to see this functionality built into Lemmy itself, but until then here's a userscript.

Repo link

 

cross-posted from: https://zemmy.cc/post/25499

You may have seen my previous post over here, after I had just gotten everything setup initially.

I've now expanded this with an additional script, a github repo, and proper documentation.

Here's a cleaner explanation:

I've taken on the challenge of self-hosting more of the services I regularly depend on. The latest target is Spotify. This meant I needed a simple and convenient way to listen to my music from anywhere, get new music into my collection, and also still receive recommendations based on my interests and listening habits.

I now have what I think is the pretty ideal setup, here's what it includes:

  • A 24/7 radio station that plays my entire catalog (link here if you're interested). This is powered by Azuracast along with the scripts in the repo. The station link is using the Public Pages feature in Azuracast with a bunch of custom CSS.

  • A Spotify-like experience that also supports mobile and offline. This is powered by Navidrome for web/desktop and Substreamer for mobile. Substreamer connects to Navidrome using the Subsonic API.

  • A couple of scripts that allow me to easily download tracks/albums/playlists from Spotify and Youtube. I used these to bootstrap the collection and export my existing playlists from each service.

  • A couple of scripts that automatically grab my latest recommendations from Spotify and LastFM, add them into Navidrome, and provide me a nearly fully automated way to parse out tracks I want to keep permanently.

That last point is the most interesting part in my opinion. Both scripts run on a weekly cron job that downloads my Discover Weekly playlist from spotify, and current recommendations from LastFM. It then creates a playlist for each source for that weeks collection and moves it into Navidrome.

I then browse that weeks playlist at my leisure, using the "star" feature in Navidrome to decide what to keep. Once I'm done I run another script manually that takes all of the starred tracks from those two playlists and moves them into my catalog, and then deletes the remaining tracks and the playlists.

This means I just need to go through and listen to recommendations and click a button on what to keep, and the rest is discarded automatically. It really doesn't get any simpler than this!

What remains will then be available for on-demand playback through Navidrome and also added to the full catalog that powers the 24/7 radio station.

FAQs from the last thread

What is being used to download from X? - spotdl is being used for Spotify.pytube is being used for LastFM and Youtube. spotdl is also just downloading tracks from Youtube under the hood.

What is the audio quality of the downloaded tracks? - Since these are coming from Youtube, everything is a 128kbps VBR Opus codec. It's certainly not FLAC but it's good enough for my enjoyment.

 

You may have seen my previous post over here, after I had just gotten everything setup initially.

I've now expanded this with an additional script, a github repo, and proper documentation.

Here's a cleaner explanation:

I've taken on the challenge of self-hosting more of the services I regularly depend on. The latest target is Spotify. This meant I needed a simple and convenient way to listen to my music from anywhere, get new music into my collection, and also still receive recommendations based on my interests and listening habits.

I now have what I think is the pretty ideal setup, here's what it includes:

  • A 24/7 radio station that plays my entire catalog (link here if you're interested). This is powered by Azuracast along with the scripts in the repo. The station link is using the Public Pages feature in Azuracast with a bunch of custom CSS.

  • A Spotify-like experience that also supports mobile and offline. This is powered by Navidrome for web/desktop and Substreamer for mobile. Substreamer connects to Navidrome using the Subsonic API.

  • A couple of scripts that allow me to easily download tracks/albums/playlists from Spotify and Youtube. I used these to bootstrap the collection and export my existing playlists from each service.

  • A couple of scripts that automatically grab my latest recommendations from Spotify and LastFM, add them into Navidrome, and provide me a nearly fully automated way to parse out tracks I want to keep permanently.

That last point is the most interesting part in my opinion. Both scripts run on a weekly cron job that downloads my Discover Weekly playlist from spotify, and current recommendations from LastFM. It then creates a playlist for each source for that weeks collection and moves it into Navidrome.

I then browse that weeks playlist at my leisure, using the "star" feature in Navidrome to decide what to keep. Once I'm done I run another script manually that takes all of the starred tracks from those two playlists and moves them into my catalog, and then deletes the remaining tracks and the playlists.

This means I just need to go through and listen to recommendations and click a button on what to keep, and the rest is discarded automatically. It really doesn't get any simpler than this!

What remains will then be available for on-demand playback through Navidrome and also added to the full catalog that powers the 24/7 radio station.

FAQs from the last thread

What is being used to download from X? - spotdl is being used for Spotify.pytube is being used for LastFM and Youtube. spotdl is also just downloading tracks from Youtube under the hood.

What is the audio quality of the downloaded tracks? - Since these are coming from Youtube, everything is a 128kbps VBR Opus codec. It's certainly not FLAC but it's good enough for my enjoyment.

 

I recently decided to start taking on the challenge of selfhosting and curating my music collection. I originally started looking at Lidarr as I am already a big fan of Radarr and Sonarr, but it wasn't really what I was looking for. I'm not often seeking out full albums, and am more often finding my music by listening to single tracks from Spotify's Discover Weekly playlist. I needed a solution that would let me replicate this experience while hosting my own MP3's and ideally be entirely automated.

I currently have the following setup running on a VPS:

  • Azuracast - This provides me a streaming radio station that cycles through my entire library 24/7
  • Navidrome - This fills the gap of the Spotify-like interface where I can play specific tracks, albums, or playlists

I bootstrapped my library with a Python script that parsed a list of Spotify URL's and downloaded all of the tracks with the spotdl library. This allowed me to grab my liked tracks, the playlists I had created, as well as a large number of albums I wanted.

I then used ChatGPT to write two python scripts:

  • The first script runs using cron every Monday and uses SpotDL to grab the contents of my Discover Weekly playlist from Spotify. It puts all of the files into a folder with that weeks date and also creates a playlist file. This way I can easily browse that weeks playlist in Navidrome and decide what to keep. It also sends me an email on completion/error

  • The second script is a bit more complex. This one does the same end result but for all of my LastFM reccomendations. This is done by spinning up a headless Chrome browser with Selenium in a docker container. It then logs into my LastFM account, parses each reccomendation, and then uses pytube to download the video links, since LastFM just directly links to Youtube videos. This list should change as I continue scrobbling via Navidrome and other sources, but I still need to determine how often the cron job should run.

My next step is figuring out how to connect to Azuracast/Navidrome using the many subsonic compatible clients so I can have mobile playback and things like offline playback. I'm currently looking at substreamer for Android.

I'd also like to look into a more seamless way of picking out the tracks I want to keep and discard from the playlists in Navidrome. I'm considering writing something to check its SQL database for liked tracks in each playlist and automatically move those into the main folder/playlist that Azuracast is playing from.

This whole setup took me only a couple days to create, and largely relied on ChatGPT to write the scripts and dockerfiles. I'm a capable programmer but GPT-4 is absolutely OP if you know what you're trying to accomplish and how to debug its mistakes. That Selenium script only took me an hour from idea to completion and I never modified the code by hand, only prompted it for corrections/additions.

If anyone is interested I've uploaded all the scripts to a gist, you just need to go through and update with your credentials/URLs

 

cross-posted from: https://zemmy.cc/post/79525

I currently have 4 different Android clients for Lemmy installed on my phone and none of them are what I'm looking for. Additionally I've tried 3 different PWA's and they're still not what I want out of a browsing experience.

So I've decided if nobody else is going to make what I'm looking for I'll have to do it myself. This is an early preview of the current unnamed client I'm working on.

It will be a PWA supporting Android and iOS, though I don't own any Apple products so support will be in so far as they don't do dumb stuff to break PWA standards. It's open source and will be free to use.

Currently the dev environment is hardcoded to my personal instance as CORS support is restricted in the Lemmy server until a future release. This means all PWA's are actually proxying your requests through their server in order to rewrite the origin header. I don't intend to release this until CORS support is fully resolved which should be soon.

I need help with a name! I was considering Infinity since I'm using that for the loading symbol, but there's already a reddit client with that name and I don't want to poach it if they decided to transition to Lemmy.

 

A game where you must devise a password that meets a list of requirements that grow in number, complexity, and absurdity

 

0.18 is now officially available. I expect it will be a few days as instance owners test the upgrade and decide whether or not to switch over. Especially since the captcha fix isn't coming until 0.18.1.

Relevant to this community is the fact that this upgrade includes two different PR's (1, 2) that add a number of semantic classes and ID's to the markup to aid in the creation of custom themes, userscripts, and browser extensions. Additionally the UI has been upgraded to use Bootstrap 5.

However it should be noted that Desallines has explicitly stated that there is no official support for anything utilizing these classes, and that the UI framework is going to be changed in a future update.

This means you're targeting these classes/ID's at your own peril, and they may break in a future update. They want to keep theming as light as possible rather than adding lots of custom hooks that people will then become dependent on and expect ongoing maintenance/support.

 

cross-posted from: https://lemm.ee/post/177673

Cross posting this here for visibility since lemmy.ml federation has been very hit or miss the last week. Original post from @sunaurus@lemm.ee

Today, a bunch of new instances appeared in the top of the user count list. It appears that these instances are all being bombarded by bot sign-ups.

For now, it seems that the bots are especially targeting instances that have:

  • Open sign-ups
  • No captcha
  • No e-mail verification

I have put together a spreadsheet of some of the most suspicious cases here.

If this is affecting you, I would highly recommend considering one of the following options:

  1. Close sign-ups entirely
  2. Only allow sign-ups with applications
  3. Enable e-mail verification + captcha for sign-ups

Additionally, I would recommend pre-emptively banning as many bot accounts as possible, before they start posting spam!

Please comment below if you have any questions or anything useful to add.

 

There have been a number of ongoing conversations and PR's around trying to add semantics to the lemmy-ui markup to enable developers to more easily create custom themes, userscripts, and browser extensions.

Up until now we've had no input from a maintainer, as they are rightfully heads down focused on shipping the 0.18 update. We now have direction on where we should be focusing our effort and to what extent the project will offer support for this:

...I'm fine with adding something like this, with the very bold caveat that we as maintainers will not do custom theme support, and if class names change, and themes break, that is up to themers, not us. I've had to close so many issues on this repo for people asking me to do theming support for them, which I don't have time to do.

This is great news for anyone who has been struggling with incredibly deep class selectors and general lack of specificity. There is further mention of switching UI frameworks in the future, so do expect that whatever you build today may break tomorrow. We're still in the very early days of the Lemmy maturity lifecycle, but it's encouraging to receive acknowledgement for this effort.

Relevant links to the various efforts in addition to the post link:

 

cross-posted from: https://zemmy.cc/post/17190

This comes to us courtesy of @misnina@crystals.rest. As a technical person I sometimes find it difficult to communicate with my friends about the value proposition of Lemmy and other federated platforms.

The reality is 99.9% of people are going to instantly tune out the moment they hear "federation", "decentralized", or "self-hosted". These things all existed before the centralized social media hellscape we have today, but those centralized platforms gained dominance because they were able to package their value into a simple pitch: "Your one-stop shop for social!"

Another good example of this is comparing the current state of the official Lemmy website to the official Mastodon website.

Mastodon spends the first 2 page scrolls offering you a visual explanation of what their platform offers, a cohesive and familiar social experience. It's not until you get 1/3 into the page that you see the words "open source", and the word "federation" doesn't even appear in the main copy, it's used in a user testimonial towards the bottom of the site.

Lemmy's site on the other hand has an okay paragraph of copy about it's value proposition, but then spends the first two image tiles and blurbs showing and talking about its source code and infrastructure, with only the third referencing moderator tools.

The following section talks about self-hosting and the fediverse, with only a brief mention to the core value proposition. I could go on about the remainder of the site but by this point it's likely that the majority of users who weren't already seeking this and/or are technically inclined have left.

Communicating the value of these things is difficult and something we're going to need to focus on improving both as platform providers and as users of that platform. That's why I'm so enamored with this video from Nina. It is quick and to the point, it only communicates what needs to be said for anyone to understand the value prop, and it does so in a way that doesn't invoke any of the exclusive terminology.

Thank you for coming to my ~~TED Talk~~ rant.

 

This comes to us courtesy of @misnina@crystals.rest. As a technical person I sometimes find it difficult to communicate with my friends about the value proposition of Lemmy and other federated platforms.

The reality is 99.9% of people are going to instantly tune out the moment they hear "federation", "decentralized", or "self-hosted". These things all existed before the centralized social media hellscape we have today, but those centralized platforms gained dominance because they were able to package their value into a simple pitch: "Your one-stop shop for social!"

Another good example of this is comparing the current state of the official Lemmy website to the official Mastodon website.

Mastodon spends the first 2 page scrolls offering you a visual explanation of what their platform offers, a cohesive and familiar social experience. It's not until you get 1/3 into the page that you see the words "open source", and the word "federation" doesn't even appear in the main copy, it's used in a user testimonial towards the bottom of the site.

Lemmy's site on the other hand has an okay paragraph of copy about it's value proposition, but then spends the first two image tiles and blurbs showing and talking about its source code and infrastructure, with only the third referencing moderator tools.

The following section talks about self-hosting and the fediverse, with only a brief mention to the core value proposition. I could go on about the remainder of the site but by this point it's likely that the majority of users who weren't already seeking this and/or are technically inclined have left.

Communicating the value of these things is difficult and something we're going to need to focus on improving both as platform providers and as users of that platform. That's why I'm so enamored with this video from Nina. It is quick and to the point, it only communicates what needs to be said for anyone to understand the value prop, and it does so in a way that doesn't invoke any of the exclusive terminology.

Thank you for coming to my ~~TED Talk~~ rant.

view more: next ›