Threads for binarymax

  1. 4

    Really great to see someone finally giving Visual Source Safe a run for their money.

    1. 4

      Look, I want to use something better than SourceSafe when I’m on one of my larks. I imagine others did too.

      1. 2

        I admire you greatly, for having the tenacity to keep the toolchain shiny. I’m sure it comes with many difficulties. Are you running emulation or do you use older hardware?

        1. 3

          Virtualization for building, but I’ve tested on real steel too.

    1. 22

      My crazy theory is that it’s a hack by someone who had an untouchable devops script with the typo, so made the package to fix the deployment pipeline.

      But really, NPM could do a better job of protecting against names like this. The package is harmless (for now), but it’s not a stretch to imagine malware typosquatting.

      1. 9

        My crazy theory is that it’s a hack by someone who had an untouchable devops script with the typo, so made the package to fix the deployment pipeline.

        Distressingly possible.

      1. 1

        I get a 404?

        1. 1

          It was up earlier. Now a 404. The cached copy being a 404 raises some questions.

          The Wayback link works, though.

        1. 3

          http://binarymax.com/art/ used to be hosted on a shared Vax webserver from my student university account in 1999. I had something earlier running on the same account in 1996, but it’s not on the web.

          1. 2

            Love the Piet Mondrian style PC you have posted there.

            1. 1

              Thanks! Built that pentium 1 machine from parts I bought at an old school auction site in 1997. Masking tape to block the negatives and used acrylic paint. I used that box with part upgrades here and there from original build until 2002, when I finally gave it away and switched to a laptop.

              1. 1

                Did you write Piet code for it?

          1. 1

            Looks like a competitor to https://libraries.io/ ?

            1. 13

              Yes, all the time! #!/usr/bin/env node fits nicely at the top of a js file, and process args or stdin/stdout streams work great.

              Lots of the time I use it for data wrangling and json ETL jobs that I’m playing around with. Sometimes they graduate into being actual apps instead of throw away scripts.

              My latest was I wrote a page listener to book myself a vaccine appointment:

              #!/usr/bin/env node
              var page = "https://www.monroecounty.gov/health-covid19-vaccine";
              var selector = "#block-system-main";
              var seconds = 15;
              var warning = "It's a ready"
              
              var child_process = require("child_process");
              var cheerio = require("cheerio");
              var fetchUrl = require("fetch").fetchUrl;
              
              var last = null;
              
              var check = function() {
                  fetchUrl(page, function(error, meta, body){
                      var $ = cheerio.load(body.toString());
                      var curr = $(selector).html();
                      if (last!=curr) {
                          //Page has changed!  Do something!
                          var command = `say "${warning}"`;
                          console.log("Changed!",new Date());
                          child_process.exec(command);
              
                      } else {
                          console.log("No change",new Date());
                      }
                      last=curr;
                      setTimeout(check,seconds*1000);
                  });
              }
              
              check();
              
              1. 5

                At some point in time I was favoring Python over bash for scripts. But the gain in expressivity was counter-balanced by the strength of bash for piping stuffs together, and the shortness/simplicity for doing basic file stuffs, and the whole vocabulary of shell executables. In the end, I gained a lot in embracing bash.

                And when things go more complex I slowly change language: Bash -> Perl -> Python -> Compiled Language.

                How would you sell NodeJs for Linux scripting to others like me. What are the major pros ? Is your main point (which would be totally understandable and acceptable) that you are fluent in Js and want to use this over harder to read bash.

                If your convincing I’d gladly give it a try to NodeJs linux scripting. Maybe there are field where it shines. Like retrieving json over the internet and parsing it far easily than other language for example.

                1. 7

                  Well it’s mostly preference and I’m a HUGE advocate of “use what you like and ignore the zealots”. It’s so hard to espouse pros and cons in a general sense for everyone, because everyone is doing different stuff in different styles.
                  That being said, here’s why I personally like to use it as a shell scripting language:

                  • I write python too, and use bash, and can sling perl if I have too, but js feels like the best balance between being concise and powerful (for my needs)
                  • node is everywhere now (or really easy to get and I know how to get it in seconds on any OS).
                  • Say what you will about node_modules, but node coupled with npm or yarn IMO set the standard in ease of using and writing packages. I also write python and writing a package for pip install is way way way more annoying compared to npm.
                  • package.json is a single file that can do everything, and I loathe config split across files in other langs for tiny tiny scripts that do one thing only.
                  • JSON is literally javascript, so messing with JSON in javascript is natural. Here’s how to pretty print a json file: process.stdout.write(JSON.stringify(JSON.parse(require('fs').readFileSync('myfile.json')),null,2))
                  • Everyone complains about node_modules size but this ain’t webpack - it’s just a module or two. I’m a big fan of cheerio and lines. node-fetch is also quite small and very powerful

                  Probably more reasons but that’s good enough :)

                2. 2

                  Hello const and modules.

                  1. 2

                    nah ES5 for life!

                  2. 1

                    #!/usr/bin/env node fits nicely at the top of a js file

                    At which point it’s no longer a valid Javascript file? But I suppose nodejs allows it?

                    1. 4

                      https://github.com/tc39/proposal-hashbang

                      Stage 3 proposal. every engine I know of supports it.

                      EDIT: hell I just checked, even GNOME’s gjs supports it.

                      1. 2

                        Yes node allows it and I like this because it makes it clear that its meant to be a command line script and not a module to include, and allows for the familiar

                        $>./script.js

                        versus needing to invoke node explicitly:

                        $>node script.js

                    1. 1

                      huh. so i guess it doesn’t live up to community standards as it was removed but from what I recall the comment at https://lobste.rs/s/5xhpfw/crypto_miners_are_killing_free_ci#c_fcfcas seemed to put forth an interesting and probably unpopular point of view.

                      Unless it was edited after I saw it, I don’t agree with removing it as trolling. Opinions that certain technologies are bad, awful even, should be allowed.

                      1. 1

                        That was my comment, and I did not edit it. Two people flagged it as a Troll comment (and I think one of them was @pushcx). I’m not upset that it was removed as it was a bit ranty on my part - but I wasn’t trolling (at least on purpose).

                      1. 24

                        I’ve come up with a simple analogy to help explain to non-programmers, that I think really gets to the heart of the issue: cooking.

                        Is it hard to make a meal? Well starting out, it’s easy to learn how to boil an egg, cook some vegetables, or even make a basic stir fry and rice. But how long would it take you to practice and learn so that you could serve a quality 5 course meal to 8 people at once in a limited amount of time?

                        This analogy is of course terrible and an apples-to-oranges comparison, but pretty much everyone has some experience with cooking - so it works particularly well at conveying the effort involved. They both require significant time, dedication, and practice.

                        It’s “easy” to learn how to write a small program that you yourself use. But writing workable software for others to pick up and enjoy? That’s hard.

                        1. 8

                          I think this analogy hits a lot of important points. Like cooking, programming is more difficult when there’s limited time, when you have to combine multiple seemingly-easy tasks, and although the output (taste) should be all that matters, presentation is also important.

                          1. 5

                            And also, doing it well when it’s just you takes a very different set of skills and disciplines and tools than doing it well as part of a team, but the beginner lessons only ever cover the solo stuff.

                          2. 5

                            This is a great analogy. Some programmers are content to be perceived as wizards of a special caste of people who were born to code. The cooking analogy pulls back the curtain. As Gusteau said in Ratatouille, “Anyone can cook.” The question is, do you enjoy it?

                            1. 6

                              I like the analogy too, but I have a very different read.

                              A lot of people want clear instruction, approachable and easy to operate stations, and a large number of people just like them they can ask for help, but don’t realise that means they’re working at McDonalds.

                              Real gourmet isn’t going to have any of those things; Michelin doesn’t rate restaurants on how “readable” their recipe cards are, but on the standards of the experience patrons have enjoying the restaurant.

                              So why do most arguments about programming ignore the final product? Can people agree coding is like cooking but still think python and java make a tasty meal? Doesn’t anyone else feel bloated trying to eat a fifty megabyte hello world, and think maybe there’s something wrong in the kitchen?

                              1. 2

                                This analogy is a goldmine!

                                So why do most arguments about programming ignore the final product? Can people agree coding is like cooking but still think python and java make a tasty meal?

                                This depends a ton on what you think “the final product” is. Is it the flavor or is it the calorie count or is it the rare ingredients? Are you critiquing how the sausage was made, or how the sausage feels in your mouth? Any of those answers could be correct depending on who you’re asking.

                                A skilled chef can come into your home and make an amazing meal out of the cheap leftover ingredients you have in your fridge and pantry. (And you can watch it on TV!) A novice chef will make a mediocre meal at best if you put them in a fully-stocked three-Michelin-star restaurant kitchen and tell them to go nuts.

                                If your tool is PHP, maybe you write some hobby web site full of SQL injection vulnerabilities. Or maybe you write Wikipedia.

                          1. 2

                            Matias Quiet Pro for Mac, which is very very nice: http://matias.ca/quietpro/mac/ … To help with ergonomics I use a standing desk 100% of the day, and I also have a DIY wristpad that I made from a couple pieces of wood and some piping insulation.

                            1. 2

                              I wrote “Matchbox-Twelvy” which is a GAN that makes deepfake toy car images.

                              https://twitter.com/binarymax/status/1252728403712782338

                              Video of the training progression: https://www.youtube.com/watch?v=ai-pUTKEJG4 (video does not contain audio and is silent, but does have flashing images)

                              1. 3

                                Giving learning-to-rank training, working with my clients, and trying to finish the first draft of a couple chapters for the ai-powered-search book. It’s a busy week!

                                1. 1

                                  Question: Does anyone use ngrok.com or a similar service? I’m looking to do some self hosting and this looks like a really easy option (I’m willing to pay the $9 per month to avoid all the headaches with firewalls and other networking stuff that I’m not too savvy with)

                                  1. 0

                                    Hey Erlend, I enjoyed the article. Unfortunately, talking about the nature of open source attracts many comic-book-guy type characters who love to nitpick and point out all the reasons they think you are wrong (see the other comment, which is technically incorrect in reference to Open Source having anything to do with trademarks).

                                    I find the analogy of the recipe a good one for people who are unfamiliar with the space, and a new contemporary thesis is needed to navigate the waters of commercial players vs altruistic hackers. Please keep writing and sharing!

                                    1. 11

                                      A nice 5 minute platformer. Now we wait for the speedrunning community to get it down to 1 minute.

                                      1. 1

                                        This is a culmination of two worlds that a niche group of researchers have been working towards, combining text transformers with image convolutional nets, and it’s really great to see this first mainstream outcome.

                                        This direction is much bigger than “oh cool I can make images from text”. Because a big problem in NLP is that it has been trapped in just using text for learning. In reality we learn language from text, speech, images, and other stimuli.

                                        When I hear people talk about NLU many folks lack the awareness that even if a model has perfectly represented a text label as an embedding, the embedding itself still lacks meaning. The label “dog” might be captured by a 768 dimension vector, but aside from co-occurrence with other words and contexts, it still doesn’t know what a dog is.

                                        So here’s hoping that the marriage of different vector spaces will get us closer to this realization.

                                        Shameless plug: I’m writing more about these concepts as a contributing author for the book AI-Powered Search. https://www.manning.com/books/ai-powered-search

                                        1. 3

                                          As far as I can tell, this does not use CNN for images at all. Do you have any evidence to the contrary?

                                          1. 1

                                            Yes you are right! They are using Variational Auto Encoders. I mixed it up with some other research I saw using outputs from Resnet and variants. Thanks for calling this out - I’m much more familiar with the text side of things

                                        1. 2

                                          I think lots of machine learning is not in the realm of explainability, but there is plenty of machine learning that is explainable.

                                          What is your definition of machine learning? Is linear regression machine learning? Are there more basic examples you can start with? Are you just talking about deep learning?

                                          The first example uses 900PB of data, which is one of the largest datasets you can think of. Start smaller and use first principles. I use plenty of ML that is explainable - for example LamdaMART decision trees are complicated, but you can explain the results after a pass through the model.

                                          1. 1

                                            I… agree with this, I even mention it in my last points (IV and III.2)

                                            The problem is that you have “easy” problems where explainable algorithms work well and achieve the best possible accuracy. But then you have “hard” problems where explainable algorithms might work, but with a sacrifice of accuracy.

                                            Even worst, the “easy” vs “hard” distinction (i.e. known if the best possible generic solution can be achieved with a simple decision-tree booster/regression style algorithm) is very hard to generate, basically impossible in the case of datasets with millions of examples and requires a tremendous amount of compute even for play datasets (since you have to run a very exhaustive train + validate loop on many different folds for a large variety of algorithms, either until you find 100% accuracy OR have a high certainty you’ve reached the accuracy cap).

                                            I.e. the problem of figuring out the ideal algorithm is NP-hard in all but a few edge cases.

                                            So unless I know in advance my problem is “easy”, I have two choices:

                                            1. Use an explainable algorithm, but lose accuracy
                                            2. Use a model with more parameters, but make explainability harder

                                            Even if you assume this is a false dichotomy and the most explainable algorithms are also the most accurate (highly unlikely, see point I and II as well as the last 20 years of history for machine learning) you’re still left with these problems, it just translates to a problem of investing research & compute into investigating accuracy versus explainability.

                                            But I digress since I’m kind of re-writing the last 2 chapters from a different angle.

                                            1. 2

                                              The problem is that you have “easy” problems where explainable algorithms work well and achieve the best possible accuracy. But then you have “hard” problems where explainable algorithms might work, but with a sacrifice of accuracy.

                                              I don’t see why this is a problem, maybe I’m missing something. Making a choice between the two, then, just requires expanding your - philosophical - utility function to include whatever context the explaining becomes valuable in.

                                              Are you doing machine vision in a driving setting, where the value of being able to say with certainty that there aren’t bonkers edge case behaviours is high? Then perhaps it’s worth losing precision: you might choose to have injuries rise by some well-known fraction than to have a huge unknown in the system (“turns out during solar eclipses the cars just run over pedestrians all day long and won’t stop”).

                                              Or are you doing something where the value of auditing and comprehension is low? If so, by all means chose the more accurate model and lose auditability.

                                              Maybe I’m seeing this naively though.

                                              Edit: Maybe what I’m missing is that you don’t mean that “this is a problem” in the sense of like “this is a problem we need to solve”, but rather in the sense you have in the article of like “well, this is something that looks like it’s just a fundamental trade-off we have to make here”, which seems intuitively right. Of course, I’d then argue that that is a problem, because we would be able to use these algorithms in many, many more places if they were able to meet explainability criteria.

                                              1. 1

                                                Maybe what I’m missing is that you don’t mean that “this is a problem” in the sense of like “this is a problem we need to solve”, but rather in the sense you have in the article of like “well, this is something that looks like it’s just a fundamental trade-off we have to make here”, which seems intuitively right.

                                                Yeap, that was what I was trying to convert there, that I see a tradeoff between the two (accuracy and explainability) often being the case/

                                              2. 2

                                                Even if you assume this is a false dichotomy and the most explainable algorithms are also the most accurate (highly unlikely, see point I and II as well as the last 20 years of history for machine learning)

                                                I challenge this assumption about history. I definitely think robust, explainable models at this moment in time are not SOTA, but that’s simply because a lot of the groundwork hadn’t been laid, and in the coming decade we may see explainable SOTA models. There are lots of individual innovations that “unlocked” DL to be where it is now, namely lowering graphics compute costs driven by gaming, and innovations in activation functions (such as ReLU) and even in programming language accessibility (with languages like Python and R prominent in ML, built atop tensor libraries) it’s a lot easier for a researcher to iterate on DL models.

                                                Likewise were seeing a lot of these benefits translate to explainable models as well, such as Bayesian models or polynomial regression models (as has been discussed upthread). And as a sibling poster said, there’s nothing stopping you from choosing the explainability of your model around domain needs. Making a game AI? Explainability isn’t that important. Determining credit scores? Auditability is essential. As it is, SOTA often comes with the caveat of reproducing the exact circumstances the authors massaged in order to release their results, so models with slightly worse theoretical performance may not in reality perform that much worse.

                                            1. 5

                                              I feel like I’m the only person in the world who disagrees with this sentiment: “Node.js is still based on callbacks, while there are far better ways to deal with asynchronicity in modern JavaScript”.

                                              I love callbacks. The entire world went all promises and async/await but I find callbacks to be far more explicit and manageable.

                                              I’m also an old codger who will stay on ES5 forever. All the new syntax just doesnt feel like the javascript I grew up with :)

                                              1. 1

                                                That is because you are comparing it with promises.

                                                Naturally, blocking IO calls are trivially understood by anyone that looks at them. And they solve a zillion intricate problems which arise from letting the concurrency of a web server to leak to programmer implementing request handling. This is obviously a bad idea and resulted in a decade of discussions where none is need.

                                                It’s kind of ironic that what is essentially a server backend leaves to the programmer the responsibility of not completely freeze the whole server, indeed countless times happening by accident and still get a hip reputation While PHP with all its warts has solved this problem by design to the point that most of its users are not even aware of it, and is regarded as a an amateurish toy.

                                              1. 2

                                                For anyone who does anything with images ever, imagemagick and ffmpeg are absolutely necessary.

                                                1. 8

                                                  We’re going to start seeing more licensing along the lines of - Use it for your project as you like, but you can’t use it as a for-profit hosting service. This has been a huge fight with Elastic and Amazon, where Amazon offered hosted elasticsearch in AWS causing harm to Elastic that had their own cloud - so Elastic changed their license to prevent this, and Amazon went out of their way to make the “open distro” with them supporting an equivalent API in a permissive license.

                                                  Redis protected themselves here, and others are starting to do so as well. It’s very likely we’ll see adoption of a limited/permissive license soon (like a modified MIT/APL/BSD) that folks can use without worrying that a cloud provider will swoop in and make money off the backs of small open source creators backs.

                                                  1. 3

                                                    Yeap, the odd thing is that Redis & elastic seem to have gotten a lot of bad press out of it. Which to me seems insane, since it was question of not giving amazon and google a free hand to run them into the ground.

                                                    1. 1

                                                      What is the bad press about? Like what are they saying is wrong about the change? Just that it’s not in the “spirit” of free software?

                                                    2. 2

                                                      Yeah, this does seem like a necessary change for a lot of free software projects. The software is free (as in beer), but someone (ideally the original creators) still owns and “controls” its use.

                                                      1. 2

                                                        It’s expensive to write, it’s free to copy. If your business model involves writing the software for free and then hoping you have some way of recouping that cost later then you may need a new business model. If your software works fine and needs no further modification, what do you lose by letting Google / Amazon deploy it at scale? If it needs updates / bug fixes / security updates, then those large deployments are a great place to look for people willing to fund them. If you stop producing them, then people who have built critical infrastructure on top are going to suddenly realise that was a very expensive mistake.

                                                        1. 2

                                                          I mean, it’s more so than free as in beer, since it’s also open source.

                                                          If anything, it’s more of the opposite, the software is always open, but not always free (i.e. not if you want to use it in a proprietary product).

                                                          1. 1

                                                            Yeah, that is a good point. Open is the right word there. It makes sense to me to do this.

                                                        2. 2

                                                          This has been a huge fight with Elastic and Amazon, where Amazon offered hosted elasticsearch in AWS causing harm to Elastic that had their own cloud - so Elastic changed their license to prevent this, and Amazon went out of their way to make the “open distro” with them supporting an equivalent API in a permissive license.

                                                          This is not what happened. Elasticsearch as a commercial offering was always dual open-source and closed-source, where the licensed part are Elastics “value-add” features like access control. Elastic at some point opened op the closed-source parts under a commercial license and added them to the main repository.

                                                          Amazons complaint and reason for forking their own distribution was that Elastics main repos contains commits that apply to both parts of the codebase. They started to maintain a clean source version. It also ships with some open source addons out of the community. https://opendistro.github.io/for-elasticsearch/

                                                          (That was a very rough summary)

                                                        1. 5

                                                          My biggest pet peeve is how many people want JavaScript to be the language they know best. Some come from Ruby and want it to be Ruby. Some from Java who want it to be Java. Some from Python.. you get the idea. I do like the amount of attention JS gets, but all of the various proposals that are not quite there yet that keep being used as if they are (like decorators/annotations) drive me a little bit nuts. I’ve been using JS for a really long time and I don’t feel like it’s missing that much stuff. It really just needed some things cleaned up (which has generally happened over time).

                                                          Also the insistence that JS needed “class” syntax (though it still isn’t classical inheritance), which was implemented, and now many people are trying to move back to functions/functional-based programming, throwing out the whole class baby with the bathwater. There’s too much flux there and not necessarily for the best reasons.

                                                          I am with the other guy who was talking about bundling and packaging things. If I can avoid it and use modern browsers, I do. But the reality is that those bundlers are still very useful particularly on applications that work on older browsers.

                                                          1. 2

                                                            It’s not just Javascript. I can make the same argument with Lua—the Pythonists that come to Lua want it to be Python; the Rubyists want Lua to look like Ruby, etc. It takes time to learn the lingo of a new language, and it’s darn it, it would be easier if it was just like <old language I know>.

                                                            1. 1

                                                              ES5 for life!