Threads for mgam

  1. 17

    Thank you so much for this. Those were the days. When software aimed to the general crowds were making huge leaps in all fronts at insane speed. So much nostalgia, a couple of my favourite skins are featured at the top.

    The MP3 explosion in 98-99 was crazy. While online video got into our lives incrementally over the course of two decades, the introduction of mp3 was metheoric. In mater of months, almost anyone could download, store or even produce sound files just with their computer. Allo of this at a perfectly fine quality taking up 10 times less disk space than with previous formats.

    A couple of years after windows xp is released, polished with all the features the user wanted: an image viewer, the reference web browser at the time, a media player and an email client. What happened? Why did the industry stop giving the people what they want and need? Where, when and why did we lost track?

    Winamp is still to this day my favourite piece of software. Fast, light, pragmatic, feature rich, resource efficient, configurable. It really whips the llama’s ass!

    1. 1

      It really was fantastic! How would one go about making winamp-inspired software today I wonder… What UI library or toolkit (if any) makes it possible (if not easy) to make such fun, lightweight, powerful interfaces? The playfulness is sorely missed in todays desktop software.

      1. 1

        I think this kind of creative play is still possible in web development if you’re willing to eschew all the performance-optimizing complexity, deep state graph management, and avoidance of “ugly” hacks like table layouts and single-browser CSS that big FE frameworks + UI toolkits bring with them. Just throw down some markup and styling and bang on some JS until it all hangs together. (Odds are even without strict adherence to web standards your random demo will still work in mainstream browsers 5-10 years hence, which is more than you can say for most desktop app “skins”.)

        Beyond that, some experiments with one of the WebGL+Canvas-targeting immediate-mode UI toolkits popular around these parts and /r/rust might be just the thing the get the creativity flowing if you want an even more open sandbox. :)

        1. 1

          I do use tables for layout, but otherwise agree. My sites work in mosaic, Netscape, ie, and modern chrome too

        2. 1

          FWIW I still use Winamp on Windows and Audacious, an OSS clone, on Linux! Audacious is pretty nice, though it has a perplexing implementation that relies heavily on dbus.

          1. 1

            XMMS could be skinned, probably x11amp as well. To answer your question I guess Gtk offers this ability

        1. 13

          14 days I replied with:

          “Putting the finishing touches on a version of “which will be used to organize scientific articles about literature.”

          That was about the design, which is finished now. Here is a screenshot of how it looks like:

          The big blue arrow leads to the articles which are related to the topic in the center.

          Next step is to parse through a big German text corpus to calculate where the research topics will be placed on the map.

          1. 6

            I absolutely loved this when you last posted it, and I’ve already read (and liked) two books that I found due to the author’s proximity to some of my favorite authors in your map. And more are waiting in my stack. So thank you for your work!

            1. 3

              Happy to hear that!

            2. 1

              Crap, I almost got sucked into another multi–hour gnod discovery session…

            1. 4

              Can someone explain to me why you would prefer this to, say, IPFS? I’m not an IPFS user, but it seems like a solution in the same space that’s not tied to a blockchain startup?

              1. 4

                IPFS is also (unfortunately imo) tied to a blockchain startup, namely Filecoin.

              1. 10

                I’m not entirely sure what to conclude from this article.

                1. 13

                  That Charles Moore is a unique person with unique abilities. We can learn from him, but we cannot be him.

                  1. 9

                    We’re also in a slightly different era.

                    We’re so hellbent on seeing software engineering as a ‘team’ activity to the point that we’d rather cripple the expressive capabilities of languages so as to make it easier to scale teams up. This isn’t wrong, but it isn’t necessarily right, either.

                    1. 2

                      This dilemma could be easily solved with a training budget ;).

                  2. 8

                    That you should Be Moore Like Chuck.

                    1. 2

                      This (although I agree with the sentiment that most software is bloated, even though I think many OO languages suffer from this problem more than C). I’m also not sure what “1% the code” means.

                      1. 2

                        It’s a literal 1% of the amount of code.

                        1. 3

                          I understand that, but the whole post is a bit vague. Shouldn’t it be “1% of the code”? Or is it used in an imperative mood? And what is the statement? “1% the code” is not a statement. I’m not sure what he’s claiming either. That he can implement C code in 1% of the line count in Forth? That obviously doesn’t hold for all C code.

                          So, I do understand the “code is bloated” sentiment, but fail to take away any concrete points from the article.

                          1. 3

                            He’s saying that if you build an application in C, he can build the same application with 1% of the code, as measured in total source-code bytes between the NAND gates (i.e. including the compiler, linker, operating system, etc).

                            1. 0

                              Thanks. I was wondering for two reasons:

                              1. He only implies this claim, and never really phrases it
                              2. It’s obviously wrong. I’d like to see him do
                              int main(int argc, char *argv[]) { printf("Hello, world!\n"); return 0; }

                              in 0.73 bytes in Forth.

                              Now, of course this is a trivial program, but this still means that the claim is empty (a “true Scotsman”-like claim). The same goes for anyone who’s claiming that it’s impossible to write a 100% secure program (or bug-free, for that matter). When I oppose with an example with this, people usually refine to “it’s impossible to write a nontrivial program that is perfectly secure”. That is something that I can’t deny, because it’s so subjective. If you define a program as trivial as long as it has no bugs, you’re certainly right.

                              (BTW, I don’t deny that it can be unfeasible to make a sufficiently complicated program bug-free. That is something completely different than “there can be no complicated bug-free program”. I also consider bugs caused by the underlying infrastructure, whether software or hardware, to be not in the program. The CompCert is a practical example of a program which is well underway to be bug-free. I’d argue that a compiler for a simpler language, which less back-ends, would be non-trivial and could be completely bug-free.)

                              1. 6

                                It’s obviously wrong. I’d like to see him do … in 0.73 bytes in Forth.

                                You’re only counting a fraction of the C code, not the C compiler, the C standard library, or the operating system. You have to count them because you might have to debug them.

                                Also note his challenge is designed to be fair: But I’m game. Give me a problem with 1,000,000 lines of C. But don’t expect me to read the C, I couldn’t. And don’t think I’ll have to write 10,000 lines of Forth. Just give me the specs of the problem, and documentation of the interface.

                                It’s very easy to build contrived examples in order to miss the point, but this is only fun when we’re young. There’s real value in trying to understand what Chuck discovered, and if you can puzzle it out to understand the way that Forth can be 100x more productive than C, you’ll probably write better C as well.

                                1. 2

                                  Oh sorry, I totally misread your last comment. I thought it said excluding the compiler, linker, OS, etc. Now it starts to make more sense, and I finally get his point. But hey, my point was (like codey’s and alexandria’s) that the post is vague: Your explanation is a lot clearer and shorter than his post.

                                2. 1

                                  .( Hello, world!)

                                  While obviously not literally 1% of the code, I think this shows that the claim is not empty, but in fact supports his point. 4 bytes of non-data code vs 59.

                                  1. 0

                                    As I explained above, I think the claim he’s making is vague. If the claim was that the size of an arbitrary C program can be reduced to 1% of it using Forth, then my example shows that this is obviously not true. Even if you cheat by counting only non-data code, it’s still off by a factor of 6. As geocar explained, this is not the claim: He counts code in the OS, compiler, linker, etc. as well, which makes his claim much more plausible, since these are typically huge swaths of code.

                                    So my point is, if you have a point, state it clearly and don’t make any invalid claims just because they support your point.

                                    1. 2

                                      You are taking the concept far too literally, please stop being obtuse.

                      1. 6

                        First of all - congratulations on the release! This looks cool and I’ll definitely try it out.

                        So to ask an audio developer anything: How did you (and how can I) get into DSP/audio programming? I’m thinking mostly resources to learn both the concepts and math of DSP, as well as the tricks of the trade in writing fast DSP code. It seems like if you want to learn ML, or compilers, or OS-design, etc, there are piles of good books, tutorials and videos available – but I’m having trouble finding good resources to learn audio stuff. Do you have any tips?

                        1. 11

                          I had my introduction to signal processing with a course at the university. At least I can recommend some books for you:

                          PS: I think’ needs an dsp tag.

                          Edit: typos.

                          1. 1

                            There’s at least two tags we need that will cover lots of articles that people might filter if we get too specific on application area or arcane internals users of black-box tools don’t need to know. Relevant here is “parallel:” techniques for parallel programming. It’s already a huge field that HPC draws on. It can cover DSP, SIMD, multicore, NUMA, ways of stringing hardware together, parallel languages, parallelizing protocols, macros/libraries that parallelize, and so on. I plan to ask the community about the other one after I collect relevant data. Mentioning this one here since you already brought it up.

                          2. 4

                            Hey, thanks! Do feel free to reach out and let me know what you think.

                            With regards to DSP literature – klingtnet has provided some great resources already, so I’ll just talk a little about my path. My background has always just been in development, and my math has always been weak. Hence, the best resources for me were studying other people’s code (for which github is a particularly great resource) and figuring out enough math to implement research papers in code.

                            Audio DSP has this weird thing going on still where companies in the space are generally incredibly guarded about their algorithms and approaches, but there’s a few places where they’ll talk a little more openly. For me, those have been the music-dsp mailing list and the KVR audio DSP forum. The KVR forum in particular has some deep knowledge corralled away – I always search thorough there when I start implementing something to see how others have done it.

                            And, one final little tidbit about DSP: in real-time, determinism is key. An algorithm which is brutally fast but occasionally is very slow could be less useful than one slower but more consistent in its performance. Always assume you’re going to hit the pessimal case right when it’s the most damaging, and in this industry those moments are when a user is playing to a crowd of tens of thousands.

                            That being said, I’d encourage just jumping in! Having a good ear and taste in sound will get you further than a perfect math background will.

                            1. 4

                     is a really well done interactive intro to the basics (note that the top part is the table of contents, you’ll have to click there to navigate).

                              1. 1

                                Thanks a lot for this, I just finished and felt like I finally got some basic things that eluded me in the past. Good intro!