1. 3

    I think there is a strawman in there.

    1. 4

      don’t even see an argument for 1 based indexing here. It just says “people like 0 based indexing because of Dijkstra and C” but not why 1 based indexing would be better.

      1. 2

        Granted there is no “why 1-based indexing is ‘better’” section, maybe that isn’t what the author is going for anyways, but I noticed two points:

        It really shows how conditioned an entire community can be when they find the statement “given a list x, the first item in x is x[1], the second item in x is x[2]” to be unnatural. :)

        and:

        … and I think even proponents of 0-based indexing would agree, in spite of the fact that most of them wouldn’t even notice that they don’t call it a number zero reason.

    1. 4

      Is there a comparison of Navidrome vs. Ampache?

      Ampache’s been around a while and has been really solid for me. Wondering if there was a specific motivation for the Navidrome folks to start something new, other than new is always shinier of course.

      1. 2

        Shameless self-promotion, but:

        I wrote MousikóFídi as an alternative to Ampache, the website has a small feature comparison table. I’ve only recently learned about Navidrome but plan to add that the table as well.

        As for why would I write that: I too was a longtime Ampache user and was very happy with it, to be honest it just seemed like a fun project! After a week or so I had something reasonably usable so I thought: “let’s keep going!” I wrote in detail about it here.

        1. 2

          looks neat, nice work! does it have subsonic api support? that would be a good feature to put in your table. Also, without database support, do you just build an in-memory index at startup? seems like that would take a long time on a large collection, but maybe it’s not as bad as I think.

          1. 1

            Thanks for the compliment :)

            Currently, there is no subsonic support. I don’t use it, nor do I have much of an interest in it, but many folks have asked about it. When I do get around to adding the plugin system, subsonic API support is for sure something I’d like to tackle.

            Nothing is loaded at startup; instead, the application reads files and gets metadata (or tries to) on each request. This is running on a single-CPU virtual machine, to give you an idea of what performance might be like on a relatively low-powered host. When database support is added (it is planned as an optional plugin) much less work would be needed, of course.

            1. 2

              ohh i see, it’s more file browser oriented. i basically only access ampache via the subsonic api, so that’s a requirement for me. i also use the “virtual” playlists features a lot (like Newest, Most Played, etc). I also need to be able to do things like “search by year”, “search by genre”. Those kinds of things seem like they would be very slow without a database, but if that’s on your roadmap that’s cool.

              1. 1

                Those kinds of things seem like they would be very slow without a database

                Yes, they absolutely are - I experimented with DB-less search and it was a total disaster. Not that I expected otherwise, but I had to try it.

                Thanks for the feedback!

          2. 2

            This is very interesting, thanks. Am I right that your program works on a files/folders basis, not a metadata basis?

            1. 1

              That’s correct! Just give it a list of directories and browse away.

        1. 3

          This is a very interesting read, but I’m not sure how much this translates into “normal” open source development. I think that the audience for these kinds of products might skew “younger” - or at least not be as immersed in open source culture as other users.

          I do find the discussion about closed source development and Patreon funding fascinating too. I’m a firm believer in straightforward funding for development projects, something that still has to be hashed out to mesh with open source.

          1. 1

            I think you nailed it re: the audience for this kind of stuff. Games are an interesting space here - you could argue that most of the users really don’t care about open source and just want to play their games. For better or for worse, they also don’t care where the executables/games come from.

            It was really fascinating to read about the legitimate reasons for being closed source, and how it actually could benefit the user by shielding them from bad executables and so on. I used to consider the Patreon pattern you see CEMU and Yuzu doing a bit shady, but now that I better understand the context I respect the decision.

          1. 2

            For my own servers, it’s either: Castlevania characters or Mystery Science Theater 3000 characters. Lately, I’ve been adding Morrowind characters to the mix as well.

            1. 20

              That was an amazing read and I am in awe of byuu’s skill and dedication.

              1. 35

                Thank you so much ^-^

                1. 12

                  Man this community is so cool because authors regularly pop up in the comments about their own software.

                  People like you are hard to come by though, you’re awesome.

                  1. 8

                    Thank you so much for your work, I love your take on it as your life’s work. These games will still be fun to play 100 years from now.

                    I remember reading a year ago about some improvements you (or others?) made in upscaling bsnes to HD displays and still need to update my RasPi to pull in a recent version with those changes. My brain hurts every time I see my kid playing Mario Kart with the terrible shimmering!

                    https://arstechnica.com/gaming/2019/04/hd-emulation-mod-makes-mode-7-snes-games-look-like-new/

                    1. 1

                      It doesn’t look like RetroPie has pulled in the latest bsnes. In fact, development of RetroPie seems to have halted a year ago… :-( https://github.com/libretro/bsnes-libretro

                      1. 2

                        https://github.com/libretro/bsnes-libretro

                        That fork is not intended to be current, and even changed its library name to bsnes2014. Upstream bsnes supports libretro by itself now, which is probably the reason that fork is semi-abandoned.

                        development of RetroPie seems to have halted a year ago

                        RetroPie/EmulationStation last commit was yesterday, RetroPie-Setup two days ago??

                        1. 2

                          Thanks for the pointers but commits don’t matter if they aren’t shipping to users. I’m referencing https://retropie.org.uk/news/ where the latest release announcement was 9 months ago and the forum also doesn’t seem to have threads from 2020.

                          I’m going through the steps to install Lakka instead, which appears to have modern bsnes support baked in.

                          1. 1

                            Retropie has an update menu in the UI, so these commits are making it to users who run updates.

                1. 3

                  Some thoughts:

                  • Do the builtin tutorial.
                  • Don’t cargo cult others’ configs.
                  • Do look into use-package, and use it to install packages/modes you need.
                  • Be aware of and use the various describe-* functions (e.g. M-x describe-mode but many many things can be described).
                  • Have fun!
                  1. 18

                    An acompanying blog post[1] from Terry Cavanagh, the game’s creator, contains some additional information on the source release as well as a bit of a code-post-mortem. I think it’s worth noting that the VVVVVV code is pretty horrendous (Cavanagh even admits so), yet the VVVVVV product is a best selling and well loved indie title. It shows that code quality is not equivalent to product quality.

                    [1]: http://distractionware.com/blog/2020/01/vvvvvv-is-now-open-source/

                    1. 5

                      code quality is not equivalent to product quality

                      … for one indie game. True enough, but I would be cautious about extrapolating from this.

                      1. 3

                        Games are somewhat different to most other software in that they are art, not tools. A quirk or oddity is far more tolerable in a piece of art than in a tool that one potentially has to use for hours every day.

                        1. 2

                          Has there ever been a widely-used consumer product that has had great code quality? Like xmonad is cool but it isn’t exactly widely used.

                          1. 2

                            I don’t know of you consider database systems widely used, but SQLite is kind of well-known for their extremely extensive testing, and SQLite is very widely used, but most likely not that known to the ordinary consumer of the products that it’s used in.

                            1. 2

                              Infrastructure typically requires a higher baseline level of quality versus user facing code. Conversely, it is one step removed from revenue, thus it tends to be under appreciated and under funded relative to its importance.

                              Choose your poison. The amount of value generated by SQLite is likely in the billions, thanks in no small part to the quality of engineering that went into it.

                          2. 1

                            There was some other obscure indie title called “Minecraft” that was supposed to have very terrible code. Microsoft bought it for more than 2 billion dollars.

                            It might happen more than you think with video games, as opposed to other kinds of software.

                            1. 1

                              Agreed. I might even say that poor code quality is correlated with high-quality games, but that doesn’t mean the relationship is causative. Many brilliant video games are made by creatives who don’t care so much for developing their programming skill. That doesn’t mean that high-quality, maintainable code is a bad idea.

                            2. 4

                              It shows that code quality is not equivalent to product quality.

                              Games are different from many other pieces of software in that you can create it once, and then never (or rarely) have to update it, especially for smaller games. A lot of the problems with “poor quality code” is that it becomes hard to update code, not that the original code doesn’t work.

                              Quoting from the article:

                              Looking back through it myself all these years later, I find it really funny how much of it is basically just the same parts copy and pasted over and over, with the values changed. This basically makes it impossible to read and maintain ten years later, but back when I was in the thick of it, it made it really fast to iterate and add new things

                              1. 1

                                Yeah, the most succinct summary I’ve heard was “VVVVVV’s code can afford to be bad because it was made in 7 months with not much plans for large scale post-launch support”

                              1. 2

                                These are interesting bullet points:

                                * Support for Vulkan
                                * MinGW-w64 and DXVK support
                                

                                This seems to indicate Alpine is a viable choice for modern gaming.

                                1. 2

                                  I’ve made mousikofidi.info with soupault and am very happy with it. I generate the pages from various markdown files that are in a wiki branch of the code repo.

                                  It hits each of your points, I recommend checking it out. The soupault blog itself is a nice example of how to set up something like that. I have plans to move my own blog over to soupault in the future.