1. 5

    They rolled their own dependency management!? And at such a high cost (roughly 1000 engineer-hours, assuming a team of 4)? Why not just use Nix or Bazel? Do people not realize that these tools exist, or is it just NIH syndrome?

    1. 19

      I think saying “just” use Nix understates the difficulty there significantly. I say this as someone who uses Nix, but if someone’s looking for an off-the-shelf dependency management system and the first step to use it is “hey, learn this functional language,” they could be forgiven for assuming it will create more problems than it could possibly solve. Also, packaging new things really is a pain. The build environment is under-documented, it’s hard to pull up an interactive equivalent to the build env, and failed builds are, as far as I know, thrown out instead of saved for debugging.

      I haven’t used Bazel before, but its Github blurb claims it’s designed for “A massive, shared code repository,” which isn’t the problem these folks were trying to solve. Maybe it works fine for multi-repos as well, I don’t know.

      1. 5

        I’m a big fan of Bazel (I’ve helped two companies now transition to it), but it’s not a polyglot panacea; if you’re using the languages Google uses (Java, C/++, Python, Go) and building for a platform that Google releases on (Android/iOS) then it’s wonderful; for anything else, you’d have to do a massive amount of work to integrate it. The article mentions using C# and Perl; you’d have a tough time using Bazel for those.

        I think this gets at a serious difficulty of the very-in-vogue polyglot codebase: it’s all well and good to let programmers choose whatever tool they want, but it comes with a serious devops cost. I don’t know of any tools for building, dependency management or continuous integration that truly work well with a whole bunch of implementation languages. Bazel is the closest I’ve seen, but it doesn’t even support building on Windows.

        1. 2

          I agree with many of your assessments, I hope we can improve in all of these areas :) For what it is worth, you are able to keep failed builds by passing --keep-failed to nix-build.

          1. 1

            It’s the external version of Blaze, Google’s build system.

            Some changes can rebuild the world. :P but Blaze/Bazel makes it possible and usable.

        1. 4

          While this article raised some interesting points - the title was unnecessary click bait - and there was a better article on the issue Why Would a Math Teacher Punish a Child for Saying 5 x 3 = 15? that was linked to in the article.

          1. 12

            I don’t know why, but this linked article made my blood boil. What the kid did was FULLY CORRECT. If you’re going to argue that the teacher was correct you have to explain why the instructions were INCOMPLETE THEN! Sorry. I get angry because this hits the child really, really hard. It tells them the world is random and stupid people will deduct points (reject you, beat you up, slander you, pass you in life) even when you did every thing logically. It’s a lesson that can wait till they are 20.

            1. 6

              Having been a math teacher in the past, I feel like you exactly described how many elementary teachers view their mission.

              It tells them the world is random and stupid people will deduct points (reject you, beat you up, slander you, pass you in life) even when you did every thing logically.

              Having been a child in the past, I’ve found there’s nothing a child can do that adults dislike more than an appeal to logic.

              1. 3

                Maybe it is “fully correct” in the context of your math instruction, but have you considered that maybe the teacher taught an arbitrary convention in the hopes of improving student understanding, and that the problem was likely testing comprehension of that convention?

                In other words, the instructions are potentially not “incomplete” when considered in the context of the teacher’s instruction.

                1. 4

                  The student followed the teacher’s instruction precisely, they just did an implicit commutation of the multiplication (if I were a math teacher, I’d be delighted to see this). In fact, the student showed, that they smartly applied the method, by choosing the variant that is faster to calculate (5+5+5 requires fewer steps than 3+3+3+3+3).

                  And yes, I agree, the teacher tested the method they explained in class, when probably the test should be about whether the student could solve the problem, and only give the method as a hint. Probably the issue is, that the folks who wrote the math standard require teachers to pose such questions in tests, in order to make sure teachers follow their program.

                  Problems that test whether a student can solve a problem using a given method are not bad per se. I.e. a problem that asks students to conduct “the proof by mathematical induction” is perfectly fine in my opinion. They are not for arithmetics on the level of elementary school. If there are 5 ways to do a multiplication, and you punish your students for using 4 out of these 5 methods because it is not the method spelled out in the syllabus, you are doing it wrong.

                  1. 2

                    Having taught some public school, having gone through public school as something of a problem child and having gotten an MA in mathematics, I’d that say elementary school teachers indeed often teach and impose arbitrary conventions in mathematics. This imposition may to “further understanding” or for some other reason (I suspect just the urge to impose discipline generally).

                    The imposition of such arbitrary rote conventions, however, actually expresses these teacher’s utter ignorance of the spirit and practice of mathematics and if anything, seems like one of the reasons that math is extremely unpopular in the US in particular. Basically, understanding math requires one to understand that “there’s more than one way of doing it” and the arbitrary convention puts the student in the position of being programmed rather than acting as the programmer. I’d also add that I think the biggest motivation for such conventions is to guarantee classroom order by making sure no one clever finishes their work early.

                    So I have to sympathize with kghose. I too, feel my blood boil when reading articles of this sort.

                  2. 3

                    There’s a difference between three baskets of five apples and five baskets of three apples. I’m going to guess that was part of the multiplication lesson; it was definitely part of the curriculum when I was in school.

                    1. 5

                      The difference is only there if the multiplication operator some how also has the side effect of adding baskets.

                      1. 5

                        When your want to obtain the total number of apples, it doesn’t matter how you partition them, and you can also redistribute the apples from 3 baskets into 5.

                        There is a problem in your elementary-school math class, when your problems are not correctly solvable by a mathematics professor ;)

                        1. 1

                          What is the value of showing a child how to do multiplication of different kinds of numbers? Seems a bit advanced given that really we should be showing that multiplication is commutative before showing where that’s not always the case.

                          1. 6

                            The obvious question is, what is multiplication? It’s repeated addition. Repeating what? Exactly. Which operand is repeated and which is the repetition count? That’s something you’ll want to get straight before you start raising powers, which is repeated multiplication.

                            It’s weird that people simultaneously shit on math education for teaching rote memorization and also shit on them for teaching concepts.

                            1. 2

                              It’s weird that people simultaneously shit on math education for teaching rote memorization and also shit on them for teaching concepts.

                              The double edged sword of teaching. Although, the teaching profession doesn’t help the problem - there is little evidence of what actually works in teaching - some good randomised controlled research with hundreds of thousands of students would be a good start. Although, any evidence that proved what worked would be ignored by politicians….

                        2. 1

                          It tells them the world is random and stupid people will deduct points (reject you, beat you up, slander you, pass you in life) even when you did every thing logically.

                          a lesson well learned early in life.

                      1. 2

                        Just starting to begin work on a package manager as of a few days ago. Still trying to organize ideas before they go into play.

                        1. 2

                          You should read this paper.

                          1. 1

                            Thanks!