Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    B

    Beets Blog

    beets.io · Company blog · on HN since 2016

    The developers of beets, a command-line music library organizer, write about the tool and technical issues like SQLite and filename encoding.

    Visit blogHN submissions
    Open Source & LinuxProductivity
    What HN says

    Commenters strongly recommend beets for tagging and managing music libraries, praising its flexibility and MusicBrainz and Discogs support.

    Stats for nerds
    49HN people shared it
    13linked in comments
    1.2Kstory points
    Nov 2025last shared
    2016people per year2025

    Top posts on HN

    1. 1
      We’re pretty happy with SQLite and not urgently interested in a fancier DBMS
      2 people · 533 points · first shared 2016 · 146 comments on HN
    2. 2
      Beets: The music geek’s media organizer
      44 people · 464 points · first shared 2016 · 121 comments on HN
    3. 3
      The hell that is filename encoding (2016)
      1 person · 155 points · first shared 2018 · 118 comments on HN
    4. 4
      SQLite's “database is locked” is caused by a missing compilation flag
      2 people · 2 points · first shared 2019 · 1 comments on HN

    What HN people wrote when they linked it

    • benrbrayJul 2021

      Yeah, the goal was (rather, is---I'm still working on it!) to learn more about real-world Haskell by actually learning how to use packages and forcing myself to read the Hackage docs, so for this project I pretty liberally import a new library whenever I need something.

      The "req" package is very intuitive to use for requests, and plays nicely with "aeson" for parsing JSON. I'm also using "persistent" to manage a sqlite database.

      For project ideas, try to scratch a personal itch. If you're solving a problem (or a daily frustration) that's important to you, you'll be more motivated to follow through! For me, I had been using the beets (https://beets.io/) command line tool to manage tags for my music library, but it isn't really optimized for my use case, and I thought I could do better. So I decided to write a cli [1] with Haskell to tag all my local music files with metadata from Discogs/MusicBrainz, modeled after the beets tagging loop. I'm also working on a more advanced tagging system that uses Datalog inference rules, inspired by a blog post [2].

      [1] https://github.com/benrbray/borscht-hs
      [2] https://dodisturb.me/posts/2018-12-25-The-Essence-of-Datalog.html

    • toddbonzalez1Sep 2025

      It's annoying how the author mentions "artists getting paid fractions of pennies per stream" along with buying from Bandcamp but doesn't describe how they integrate music from Bandcamp into their collection, instead linking to programs that seem designed exclusively for downloading from torrents and usenet.

      I also have a Navidrome setup that is my main music streaming method which I've used for a few years now. I buy from bandcamp quite often and downloading and importing music from bandcamp (and managing metadata generally) is the most tedious part. I use beets[1] and if I buy, say, a mix of 10 tracks and albums, I then get 10 URLs and I have to download and run `beet imp` on each mp3/zip file. I do this over SSH with a bunch of copy-pasting since I haven't convinced myself it's worth the time[2] to change my method. It looks like there's some way to scrape bandcamp and automate this process based on the existence of this tool, bandcamp-dl[3]. If anyone has their own method to suggest I'd appreciate it.

      [1]: https://beets.io/

      [2]: https://xkcd.com/1205/

      [3]: https://github.com/Evolution0/bandcamp-dl

    • pimeysFeb 2017

      There are other big areas where it's seriously lacking content:

      1) Modern contemporary electronic music, which is usually available vinyl only.

      2) Classic albums in their original form. When there's a remaster, Spotify typically only has the remaster, original was either never there or will be removed when remaster is out.

      Now, when you start to invest to your sound system even a bit (not talking about 100k wires here), you notice the lack of dynamics in many remasters. The originals just sound better with good soundsystem, not so much with below-average systems.

      When I listen to music, I like to have the best possible master from it. And preferably lossless, or that I have the control of the compression parameters and format. I guess Spotify will take the masses, but I'm not the only serious listener who prefers my own files and physical copies.

      Streaming is handy, but you can do a lot of things already with big hard disks with your computers, some syncing NAS system (as in Synology), beets[0] and a big enough microSD in your phone.

      [0] http://beets.io/

    • aidenn0Jan 2022

      I can't recommend https://beets.io/ strongly enough for managing your library.

      It's nice to have a single source of truth for tags and all in the same format.

      Only downside is you will need a player app that supports album-artist tags; notably this disqualifies all gnome players, as the gnome library for managing metadata does not support album-artist(!!). I use cmus on linux and GoneMad on Android.

      [edit]

      Nepomuk (the gnome ontology) seems to have an albumArtist field[1], not sure why gnome-music doesn't seem to bring that out.

      1: https://gnome.pages.gitlab.gnome.org/tracker/docs/developer/nmm-ontology.html?gi-language=c#musicalbum

    • sandreasFeb 2024

      I also do, with the substreamer app organizing my music with beets[2]. And it's great, especially with smart playlists[1] concept shamelessly stolen from iTunes (I mean this in a good way).

      But for audio books, I did not find an app, that is free, does not crash and supports earphone remote like iPods do (I tested audiobookshelf, smart audiobook player and many many others) :-)

      For going to bed or taking a walk I still love my distraction free, remote controllable iPod Nano 7.

      1: https://github.com/navidrome/navidrome/issues/1417 2: https://beets.io/

    • toastercatSep 2025

      I just use Plex hosted on a Raspberry Pi, and Plex Amp. I download mp3s from Bandcamp/wherever, and use beets [0] to auto-tag.

      EDIT: FWIW, I don't recommend most people host their own music. Spotify/YouTube music is easy to use and has most music people want to listen to. I only self-host because I'm the type of person who has built a collection of mp3s since 2005, and the few times I tried switching to Spotify, I would commonly not be able to find specific things I wanted to listen to.

      [0] https://beets.io/

    Related

    Beets Radboxbeets.radbox.org16 people

    The SQLite lock timeout nightmare

    Beets Radbox
    Personal · last shared 2015
    MetaBrainz Blogblog.metabrainz.org23 people

    ListenBrainz moves to TimescaleDB

    MetaBrainz Blog
    Company · last shared 2026
    Turso Blogturso.tech102 people

    Working on databases from prison

    Turso Blog
    Company · last shared 2026
    Scattered Thoughtsscattered-thoughts.net186 people

    Against SQL

    Scattered Thoughts
    Personal · last shared 2026
    Joey Hesskitenet.net/~joey24 people

    Adieu google

    Joey Hess
    Personal · last shared 2020
    Unix Sheikhunixsheikh.com73 people

    Technical reasons to choose FreeBSD over GNU/Linux (2020)

    Unix Sheikh
    Personal · last shared 2024
    Not a Monad Tutorialnotamonadtutorial.com40 people

    Weld: Accelerating numpy, scikit and pandas as much as 100x with Rust and LLVM

    Not a Monad Tutorial
    Publication · last shared 2023
    Simon Willison's TILstil.simonwillison.net111 people

    One-liner for running queries against CSV files with SQLite

    Simon Willison's TILs
    Personal · last shared 2026