Slashdot Mirror


How One Dev Broke Node and Thousands of Projects In 11 Lines of JavaScript (theregister.co.uk)

An anonymous reader quotes an article written by Chris Williams for The Register: Programmers were left staring at broken builds and failed installations on Tuesday after someone toppled the Jenga tower of JavaScript. A couple of hours ago, Azer Koculu unpublished more than 250 of his modules from NPM, which is a popular package manager used by JavaScript projects to install dependencies. Koculu yanked his source code because, we're told, one of the modules was called Kik and that apparently attracted the attention of lawyers representing the instant-messaging app of the same name. According to Koculu, Kik's briefs told him to take down the module, he refused, so the lawyers went to NPM's admins claiming brand infringement. When NPM took Kik away from the developer, he was furious and unpublished all of his NPM-managed modules. 'This situation made me realize that NPM is someone's private land where corporate is more powerful than the people, and I do open source because Power To The People,' Koculu blogged. Unfortunately, one of those dependencies was left-pad. It pads out the lefthand-side of strings with zeroes or spaces. And thousands of projects including Node and Babel relied on it. With left-pad removed from NPM, these applications and widely used bits of open-source infrastructure were unable to obtain the dependency, and thus fell over.

480 comments

  1. The guy was ripping off leftpad by Anonymous Coward · · Score: 0

    You can't just take hundreds of man-years of Ph.D level work and dump it into the public domain.

    1. Re:The guy was ripping off leftpad by Anonymous Coward · · Score: 0

      I do open source because, Power To The People.

    2. Re:The guy was ripping off leftpad by phishybongwaters · · Score: 4, Insightful

      See this is the exact scenario I've talked about before, typically when learning a new coding language. Dependancies and libraries are BAD. 1: because they remove the need to understand what's actually going on (premade functions for example) 2: because some asshat could yank them away and leave your project broken, then YOU have to figure out how to replace the dependencies. I get not reinventing the wheel. But you really need to pay attention to what your code is dependent on and remove that dependency if possible

    3. Re:The guy was ripping off leftpad by Lisandro · · Score: 5, Insightful

      Dependencies are unavoidable, specially on big projects - you are not expected to reinvent the wheel every time you code.

      Now, having a dedicated library dependency for padding strings is a bit of a stretch though...

    4. Re:The guy was ripping off leftpad by nedlohs · · Score: 5, Insightful

      Bullshit.

      Dependencies and libraries are fine. If you want to use SSL encryption in your software you should try and re-implement it all, because while SSL libraries have been having security issues in the last few years there's almost zero chance you make something that doesn't have bigger ones. Multiply that by all the domain specific pieces of code you need.

      Not having to understand what's actually going on is a feature not a problem.

      What is retarded is using a dependency that exists out in the internet somewhere only, so that your code breaks if some random internet service disappears. As long as you have your own copy of the dependency it's fine. Some asshat can't yank them away since you have your own copy that doesn't magically stop working. Obviously you want the source code, or at the very least the source code escrowed somewhere that you obtain if the provider vanishes in the future.

    5. Re:The guy was ripping off leftpad by Aaden42 · · Score: 5, Informative

      I don't think this proves libraries per-se are bad, but blindly depending on out-of-house software repositories for every build or (worse) every startup/deploy is crazy.

      We're a Java house (go ahead, get your ki[c]ks in...), and we use around 100 open source libraries. They're all mirrored locally in an Ivy repository we maintain. No new versions get checked in unless they've passed a reasonable level of scrutiny, and nothing gets deleted unless we delete it.

    6. Re:The guy was ripping off leftpad by 110010001000 · · Score: 4, Interesting

      It is 2016. You need to use libraries. You just copy them to your local repo so they are in a known state if you use them.

    7. Re:The guy was ripping off leftpad by rockmuelle · · Score: 4, Insightful

      Dependencies are unavoidable, true, but it's a good practice to vet libraries before you include them and make sure they're worth the risk.

      The risk with Open Source libraries is usually long term maintenance - will the project be maintained for the lifetime of my project? If the project is not maintained, is it something you're willing to take on and will the license and community let you fork it? If not, there's risk.

      You also have the risk we see here - ideology trumping pragmatism (that's a nice way of saying the developer had a fit and took his toys away for reasons even he doesn't fully understand). In those cases, you also have the chance to fork, assuming the license/community allows it.

      For trivial operations, such as left padding, it's almost never worth the risk to use a library unless it's part of the language's standard library. Sure, don't write your own FFT or ORM, but if you can code a function in a few minutes for a well defined problem, there's no reason to add an external dependency.

      -Chris

    8. Re: The guy was ripping off leftpad by hey! · · Score: 1

      Building on the work of others is what open source is about. Heck, it's what proprietary code is about too.

      I think what we're looking at here are community rules of which are too permissive of unsharing without cause. It's one thing to unshare for legal reasons but the extent of unsharing should be strictly limited to the affected modules. The deal should be that if you encourage people to depend on your car work you don't get to take it away without good reason.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    9. Re:The guy was ripping off leftpad by orledrat · · Score: 1

      You can't just take hundreds of man-years of Ph.D level work and dump it into the public domain.

      Is like no one ever told him he should peddle the work to journals to keep the grants flowing. That's how it goes, see, who is gonna pay up when the payers no long get paid?

    10. Re:The guy was ripping off leftpad by JoeSchmoe999 · · Score: 1

      Did you read even the synopsis? He had a module named the same as a Instant Messaging program. The IM program lawyers insisted that that module be pulled (it didn't do IM). When it was pulled he got frustrated and pulled everything he did from the repository. He didn't "dump it into the public domain". He chose a name that someone else had used.

      --
      You have enemies? Good. That means you've stood up for something, sometime in your life.
    11. Re:The guy was ripping off leftpad by tripleevenfall · · Score: 2

      It's a bit like asking the bum in the alleyway to hold the keys to your business for you over nights, instead of carrying them in your own pocket.

    12. Re:The guy was ripping off leftpad by kuzb · · Score: 2

      What a crock of shit. Do this and you increase your development time 1000-fold. It's stupidity to think that just because someone uses a dependency that they're incapable of understanding it and it blows my mind that this absolute garbage has been voted up. No sane developer would tell you this.

      --
      BeauHD. Worst editor since kdawson.
    13. Re:The guy was ripping off leftpad by kuzb · · Score: 2

      "Dependencies are unavoidable, true, but it's a good practice to vet libraries before you include them and make sure they're worth the risk."

      But that's not what is being said. What is being said is "dependencies are bad, you shouldn't have them" which is just ridiculous ideological bullshit. If nobody used dependencies half the software today wouldn't exist in any stable form because people would still be testing and debugging their newly-invented wheels.

      --
      BeauHD. Worst editor since kdawson.
    14. Re:The guy was ripping off leftpad by kuzb · · Score: 1

      No, it's really nothing like that.

      --
      BeauHD. Worst editor since kdawson.
    15. Re:The guy was ripping off leftpad by kuzb · · Score: 3, Interesting

      This. Exactly this. Someone needs to allow your score to go to 6 for combating the stupidity around here.

      --
      BeauHD. Worst editor since kdawson.
    16. Re:The guy was ripping off leftpad by Z00L00K · · Score: 1

      I agree - if you use libraries then provide them with your stuff since otherwise you may suffer from the library getting updated and your package crashing for someone else that uses a library that's too new.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    17. Re:The guy was ripping off leftpad by Fallso · · Score: 2

      What an absurd statement. You only need to understand the implementation details if you have the responsibility of changing or fixing something - the whole basis of high(er) level languages is that you don't need to understand how absolutely everything works in order to use it; and the same applies to third party libraries.

    18. Re:The guy was ripping off leftpad by Anonymous Coward · · Score: 1

      Actually, that's a pretty good analogy.
      You shouldn't trust Joe Developer to never make some change that breaks one of your dependencies.
      Mirror your dependencies, and pull changes in from outside only when it's appropriate to do so.

    19. Re:The guy was ripping off leftpad by Anonymous Coward · · Score: 1

      We do the same thing, except with maven and artifactory. I thought it was dependency 101. Must have missed some sort of memo.

    20. Re:The guy was ripping off leftpad by narcc · · Score: 1

      How about this? Dependencies are bad; you should avoided them.

      You can apply that to third-party code as well as code you've written yourself. GIS for "dependency graph" if you'd like to see why you see this "rule" posted so frequently.

    21. Re:The guy was ripping off leftpad by gweihir · · Score: 1

      And there is also 3: Many libraries are of bad quality, often not readily obvious so. Frameworks are a worst offender here. The only thing you can safely accept from libraries is encapsulated functionality with clean interfaces that you can re-implement if necessary (which also addresses your first point: Never ever use libraries where you do not really understand what they are doing and were you would be unable to code a reasonable replacement yourself). You know, like you would ordinarily divide a larger project anyways.

      Of course, a basically semi- to incompetent community makes things worse. Using a function like "leftpad" in so many places indicate people that take shorter to find it than to code it themselves. That requires a serious lack of skill.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    22. Re:The guy was ripping off leftpad by gweihir · · Score: 1

      Fatally wrong. If you are incompetent, then you "need to", otherwise it is a convenience and a trade-off that you need to understand. I do agree that currently most "developers" fall under "incompetent" though, so most of them actually need to use library, but they also would have needed to never get hired in the first place. (Yes, one of the things I do is clean up behind people that cannot code even basic things right and that write "enterprise" software. "Incompetent" is the industry standard for coders these days.)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    23. Re:The guy was ripping off leftpad by toonces33 · · Score: 1

      It is true that dependencies are unavoidable, but I have seen things reach the point where to build something, the build tools will have to hoover the Internet and download a bunch of gunk. What is it used for? You may know why your direct dependencies are present, but those dependencies may have other dependencies and it is all opaque as to why they are there.

      What is the code quality for each module? Honestly you have no way of knowing with certainty. With something you purchased you might have higher expectations than for something that unknown individuals on the Internet might have written, but even that's no guarantee. I would bet that most people don't look at the source nor do they try and understand what the module does. They just accept it as another black box that their application needs and move on after letting the tooling download the binaries. And you might pay attention to reported bugs and/or security issues reported in modules that are your direct dependencies, but the dependencies of dependencies are another matter. There could be horrible bugs buried in there that you know nothing about.

      And then you have version-hell issues. You might need version 1.2.5 of some package, but something you depend on uses version 1.2.6. And something else you depend on uses version 1.2.7. Some things like Felix try and keep things straight for you, but it just seems like laziness to me that people accept this sort of thing as normal.

    24. Re:The guy was ripping off leftpad by phantomfive · · Score: 3, Informative

      For trivial operations, such as left padding, it's almost never worth the risk to use a library unless it's part of the language's standard library. Sure, don't write your own FFT or ORM, but if you can code a function in a few minutes for a well defined problem, there's no reason to add an external dependency.

      Generally I've found that anything taking less than two days (one day for writing, one day for testing) is worth rewriting yourself instead of adding a dependency (arguably, anything taking less than a week is worth rewriting, depending on the quality and stability of the dependency).

      --
      "First they came for the slanderers and i said nothing."
    25. Re:The guy was ripping off leftpad by Dog-Cow · · Score: 1

      If you are competent and not independently-wealthy, you need to. I suspect that you are neither wealthy, nor a professional developer. Probably not a software developer at all, really.

    26. Re:The guy was ripping off leftpad by Jahta · · Score: 1

      I don't think this proves libraries per-se are bad, but blindly depending on out-of-house software repositories for every build or (worse) every startup/deploy is crazy.

      We're a Java house (go ahead, get your ki[c]ks in...), and we use around 100 open source libraries. They're all mirrored locally in an Ivy repository we maintain. No new versions get checked in unless they've passed a reasonable level of scrutiny, and nothing gets deleted unless we delete it.

      You beat me to it! I work in a Java/Maven house and we use Nexus to maintain an internal mirror of the open source libraries we use from Maven Central. The developers pull their build dependencies from the internal mirror not the Internet. In addition, we also mirror the source code for the libraries we use as we submit patches and enhancements for them.

    27. Re:The guy was ripping off leftpad by TheRaven64 · · Score: 2

      What is being said is "dependencies are bad, you shouldn't have them"

      It's true. It's also true to say 'reinventing the wheel is bad, you shouldn't do it'. Eventually, you have to pick the lesser of two evils, but neither solution is particularly enjoyable.

      --
      I am TheRaven on Soylent News
    28. Re:The guy was ripping off leftpad by Anonymous Coward · · Score: 0

      Only if the bum created the business for you while you stood on his back forcing him to stay in the alley.

    29. Re:The guy was ripping off leftpad by Anonymous Coward · · Score: 0

      Not having to understand what's actually going on is a feature not a problem.

      Wow - mind blown.

      Did you really just say that? LOL

    30. Re:The guy was ripping off leftpad by flargleblarg · · Score: 1

      If you are competent and not independently-wealthy, you need to.

      I do not think you understand what need to means.

      The GP is correct. If you are competent, you do not need to use libraries. Libraries are a convenience.

    31. Re:The guy was ripping off leftpad by Anonymous Coward · · Score: 0

      So i suppose you write your own operating system whenever you start a new project then?

    32. Re: The guy was ripping off leftpad by Anonymous Coward · · Score: 0

      PhD level work? You know those letters have zero correlation to quality and sophistication, right?

    33. Re:The guy was ripping off leftpad by gweihir · · Score: 1

      Funny. Spoken like one of the incompetent masses. As I do know better about your unsophisticated Ad Hominem, I see no reason to correct your misconceptions.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    34. Re:The guy was ripping off leftpad by gweihir · · Score: 1

      Exactly. If you _need_ them, then you have no business coding the project you _need_ them for in the first place because you do not understand what you are doing.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    35. Re:The guy was ripping off leftpad by david_thornley · · Score: 2

      Define "need". Explain to me why I need to understand how a library works in detail. We use a geometry library that uses NURBS, which I haven't bothered learning enough to debug the library. We use a JPEG library, and I really haven't bothered to learn how JPEG works. Add up all the third-party libraries we use, and the company would never have gotten off the ground if we'd had to write all those ourselves.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    36. Re:The guy was ripping off leftpad by NormalVisual · · Score: 1

      It is true that dependencies are unavoidable, but I have seen things reach the point where to build something, the build tools will have to hoover the Internet and download a bunch of gunk. What is it used for? You may know why your direct dependencies are present, but those dependencies may have other dependencies and it is all opaque as to why they are there.

      Yeah, this is an exciting thing to deal with. At the last place I worked, the "architect" decided that the existing Java/.NET framework was crap (even though the code had worked just fine for years at production sites) and declared that we were moving it all to Node.js. Where it got fun was when the engineer in charge of builds saw his distributable package jump to almost 40,000 files, and the master build was unable to run every couple of weeks because of broken dependencies, which had to be isolated and dealt with each time. Meanwhile, problems that had continued to plague the system because of the 20-year old "roll-your-own" DBMS that didn't even support concurrency went unaddressed because they just weren't as much fun for him to work on.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
    37. Re:The guy was ripping off leftpad by kuzb · · Score: 1

      When should I avoid them? In what situations? There are times where the problems to be solved are so complex that not using a library could set you back years. In some cases it may kill a project entirely because the domain specific knowledge required to build the library might not be something you already have. I mean, where do I draw the line? Should I not use established database formats? Maybe I should build my own TCP stack?

      The WHOLE IDEA of FOSS relies on interdependency of things written by a multitude of people. You may as well just throw Linux and all the rest out while you're at it as well.

      --
      BeauHD. Worst editor since kdawson.
    38. Re:The guy was ripping off leftpad by narcc · · Score: 1

      When should I avoid them? In what situations?

      As often as is reasonable. See, you have this amazing ability to use your own judgement and discretion. You need not be beholden to simpleminded absolutes.

      There are times where the problems to be solved are so complex that not using a library could set you back years.

      When we talk about dependencies, we're talking about far more than simply the use of third-party libraries. Take a moment to think about that, I've little doubt that you'll come to understand what the rest of us are talking about.

    39. Re:The guy was ripping off leftpad by flargleblarg · · Score: 1

      Define "need".

      Need means required. Need means that you have to use a library in order to complete your project. Libraries are never required; you can always write your own, given enough time and effort.

      That is why libraries are a convenience: they save you time and effort. But they are not required; they are not needed.

    40. Re:The guy was ripping off leftpad by Darinbob · · Score: 2

      People reinvent the wheel all the time. You'd have to or else we'd still be using stone wheels. Even a bigmath library gets reinvented, I've seen many versions. That's because one size does not fit all and some of those libraries or their RAM usage will literally not fit on some machines.

    41. Re:The guy was ripping off leftpad by Darinbob · · Score: 1

      Modern programming religion says "thought shalt not write original code anymore". The JavaScript people take this seriously and their coding skills have atrophied to the point that they don't even know how write the code to pad strings.

    42. Re:The guy was ripping off leftpad by kuzb · · Score: 1

      ....but that's exactly what people are doing here when they tell you to avoid dependencies as though it's something you need to be doing all the time - they're making a stupid binary statement about something that is not binary at all. As programmers we need to stop trying to pass the things we say off as set-in-stone rules.

      I already understand very well what you all are talking about. The point of my statements is to say that you can't make such a stark statement as though it is true in every case. It makes you look like you're parroting something someone else said and took it as a simple inviolate rule that you're either 100% following or entirely wrong about.

      --
      BeauHD. Worst editor since kdawson.
    43. Re:The guy was ripping off leftpad by cas2000 · · Score: 1

      It is true that dependencies are unavoidable, but I have seen things reach the point where to build something, the build tools will have to hoover the Internet and download a bunch of gunk.

      build tools for projects shouldn't do this. ever. there is no excuse which justifies it.

      the project should just document the requirements/dependencies and point the user at them (and their install instructions). Or rely on the fact that distros package most important libraries (and many unimportant ones) for most languages.

      trying to do a distro's job is a pointless waste of time and effort on the part of project developers. also, they tend to be very bad at it, often perpetrating unforgivable coding-atrocities such as 'bundling'.

      And then you have version-hell issues. [...]

      It gets worse than just requiring different release versions of libraries. the 'bundling' atrocity mentioned above is often compounded by having the bundled lib be a private custom-hacked version that only works with/for the project concerned, with no attempt made to upstream any changes. at some time in the future, the upstream lib gets bug-fixes and security fixes that are unavailable to the forked/bundled version.

    44. Re:The guy was ripping off leftpad by Anonymous Coward · · Score: 0

      Not having to understand what's actually going on is a feature not a problem.

      No, it's actually both.
      If you have no understanding of the code you use you WILL get burned.
      But not knowing everything about it saves you time and money.
      It's a balance that requires carefull consideration.

    45. Re:The guy was ripping off leftpad by nedlohs · · Score: 1

      Of course that's what abstraction layers are all about.

      I do not have to understand the mathematical details and theorems that make SSL work in order to use an SSL library.

      I do not have to understand how the letter T is displayed on a computer screen in order to use I/O libraries.

      I do not have to understand Z-buffering in order to use a high level graphics library.

      I do not have to understand how a modem encodes data for transmission in order to use a library that uses one.

    46. Re:The guy was ripping off leftpad by david_thornley · · Score: 1

      In a real world context, "enough time and effort" is not always available, whether we're talking about a grad student trying to get a Ph.D. thesis done, a startup trying to get a revenue stream before running out of investment, or accounting software that legally has to be in place by a specific date. Moreover, it requires knowledge of what the library is doing. To replace the libraries we use at work, I'd have to be good with data compression, encryption, XML processing, PDF generation, and an expert on 3D computational geometry, as a start. I know a lot of what goes into this, but not nearly everything I'd need.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    47. Re:The guy was ripping off leftpad by DutchUncle · · Score: 1

      For stone wheels, fine. For software, wasteful. One of the benefits of open source should be the pooling of effort and intellect. Instead of many people writing their own library, and then having to refine and optimize it, many hands can get the same work done faster - and hopefully with cross-checking and review.

    48. Re:The guy was ripping off leftpad by Darinbob · · Score: 1

      People reinvent software for the same reason that they reinvent the wheel. A truck tire doesn't fit on a kid's bike. The mountain bike tire is too heavy for competitive cycling. New materials are available to make stronger tires while being lightweight. Technology evolves, we shouldn't be stuck using code written in 1970 in places it wasnt' designed to go. I work on embedded systems, some of them very small. Glibc will not work on those systems very easily as it is a bloated and overly generic mess. So new libraries are written that are more appropriate. Lots of new libraries. Lots of new RTOSs. Lots of new everything. Linux is essentially a reinvention of the wheel. Competition is good.

      It would save me a lot of time if there were libraries I could trust that fit the requirements I need.

  2. Good for him by Anonymous Coward · · Score: 0

    I'm proud of him. What a great move he made.

  3. So, in summary by Anonymous Coward · · Score: 4, Insightful

    So, what have we learned?

    External dependencies are unsustainable;

    JavaScript is unmaintainable;

    Dozens of mainstream projects relying on a trivial bit of string padding code from an external JavaScript dependency is unconscionable.

    1. Re:So, in summary by Anonymous Coward · · Score: 2, Insightful

      Dozens of mainstream projects relying on a trivial bit of string padding code from an external JavaScript dependency is unconscionable

      This is the state a *lot* of open source projects are in. Dependency trees that make windows dll hell look sane. We have cranked out thousands of packages like this. Tons of people writing things to get 'resume cred' then immediately forgetting about it after they get a job. The code lives on as a zombie with no one really digging in and taking a look at it.

      Then this little gem "and I do open source because Power To The People" No dude you are throwing a fit and punishing everyone for it. You just showed yourself to be a 'my code is the best and i am taking my ball and going home' sort of guy. You are pissed off that the npm guys did not side with you over a rather minor issue. You also just gave the kik guys some good will and make them look like they have the higher ground. Good luck getting people to accept your pull requests. As they will forever be thinking 'what if he does it again?'.

    2. Re:So, in summary by Malc · · Score: 1

      Code re-use is normally considered a good thing. Re-inventing the wheel when there's apparently a solution good enough to be popular is normally considered "unconscionable".

    3. Re:So, in summary by Anonymous Coward · · Score: 0

      "good enough to be popular"

      I'm not sure I understand what that phrase means.

    4. Re:So, in summary by Anonymous Coward · · Score: 0

      JavaScript itself is not the issue, nor is it inherently unmaintainable. Bad developers can write unmaintainable code in any language.

    5. Re:So, in summary by DamnOregonian · · Score: 1

      That kind of thinking is a cancer.

      Just because something is hyped, or is a fad, or otherwise popular, does not mean it has any merit, and I'm quite certain that most programmers worth their salt of re-invented some wheel that outperformed a popular wheel in every way. Your way of thinking applies pressure to otherwise good programmers to be mediocre and pump out software built upon shitty frameworks, because lazy.

      I see it a lot from executive-level management when they decide they want buzzwords inserted into a project.

      All one needs to do is look at the swaths of projects that have been replaced with something better and saner over time to realize that nothing that is popular is sacred or necessarily good, and a lot of it truly is quite bad.

    6. Re:So, in summary by Anonymous Coward · · Score: 0

      So, what have we learned?

      The developer is a little jerk and prima donna.

    7. Re:So, in summary by gweihir · · Score: 1

      Actually, the whole thing is pretty funny. It nicely demonstrates how defunct the whole JavaScript "ecosystem" (think "swamp" or the like) actually is.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    8. Re:So, in summary by ultranova · · Score: 2

      I'm quite certain that most programmers worth their salt of re-invented some wheel that outperformed a popular wheel in every way.

      Perhaps. But that took time they could had used to invent a hyperdrive instead. So does the super-wheel outperform the popular wheel even when the opportunity cost of the time and effort that went into inventing it in a world where the popular wheel already existed is taken into account?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    9. Re:So, in summary by Dog-Cow · · Score: 2

      I think the Kik guys deserved to have a sharp spike "kiked" (sic) up their asses. You really think they look like good guys for threatening an open source developer who probably never wrote an IM client in his life?

    10. Re:So, in summary by TheRaven64 · · Score: 1

      No, the lesson is that if you have a single point of failure then you should be aware of it. It's one of the (many) reasons that language-specific package managers are a terrible idea. If you depend on a library then you want something that is packaged as a library, can be easily mirrored for your own local development, and will show up in package managers for your targets or can be statically linked / bundled when deploying on a platform without a package manager.

      --
      I am TheRaven on Soylent News
    11. Re:So, in summary by Anonymous Coward · · Score: 0

      External dependencies are unsustainable;

      JavaScript is unmaintainable;

      Koculu took his pads

      and went back to his dad's

      leaving decaffinated stains on the coffeetable

      fixed.

    12. Re:So, in summary by DamnOregonian · · Score: 1

      So does the super-wheel outperform the popular wheel even when the opportunity cost of the time and effort that went into inventing it in a world where the popular wheel already existed is taken into account?

      Sometimes yes, sometimes no.
      Part of being a good programmer is knowing when it wiser to use already-written software. It's important to view the software from the standpoint of its merit, not its popularity.

    13. Re:So, in summary by Anonymous Coward · · Score: 0

      Outperforming is not a reason for re-inventing if the existing solution has acceptable performance. Re-writing in this instance is bad programming and often leads to new issues being introduced. I see it time and time again, and I'm just left wondering: why, why did you do that?

    14. Re:So, in summary by Anonymous Coward · · Score: 0

      What we learned here is not to have dependencies in published code.

      Javascript is not the worst example. Linux is. All it takes to demolish a Linux build is one dependency version mismatch and you get stuck with a series of half-built projects that you can neither roll forward or roll backward.

      Perl is also a bad example of dependency hell. One version bump, and you have to update ABSOLUTELY EVERYTHING that uses perl.

      We may cry about how Windows is a bloated mess, but at least dependency hell on Windows is solved by just including the libraries in the application's directory. Linux, and most open-source projects try to leverage a "common" shared dependency path, and the end result of that one common dependency can break a lot of things.

    15. Re:So, in summary by Anonymous Coward · · Score: 0

      Good luck getting people to accept your pull requests. As they will forever be thinking 'what if he does it again?'.

      It won't matter if he does it again if they take his pull requests. Because the accepted code will be in THEIR repository, not his. Unless of course his pull requests add new dependencies on his code, which is easily resolved by pulling in local copies.

    16. Re:So, in summary by Malc · · Score: 1

      I think the original point -- perhaps not well expressed -- I was trying to make before you went off on your rant is that popular oftens mean better or well used, scrutinised and understood. At least more so than something you've written yourself. This story's about something that's totally trivial, so I'm talking in general terms. What you're describing is this grey area of decision making, where a lot of developers go too far in the direction of always re-inventing, even experienced ones.

    17. Re:So, in summary by dave420 · · Score: 1

      It does nothing of the sort. This would happen to any language which relied upon an external dependency provided at the whim of someone else. Sane developers will already have their own caching repository between them and the real provider, which would store all dependencies for later use. That speeds up build times, and gives you a manageable, controllable source for your dependencies.

    18. Re:So, in summary by Anonymous Coward · · Score: 0

      We have learned one thing : retards that use this can't program shit !

    19. Re:So, in summary by DamnOregonian · · Score: 1

      No, I understand the original point. I just take exception to the assertion that popular often means better or well used, scrutinised and understood.
      Particularly in the open source world, I find that very much not to be the case.
      The most popular software (excluding ubiquitous software at the core of it all) often suffers from very poor design, and in many cases you do yourself a disservice by using it instead of writing something better.
      I've been sucked into too many cloud stacks, too many HA stacks, and far too many buzzword distributed filesystem/block layers to give the idea that "popular means good" any kind of credibility. That's executive thinking, not programmer thinking. Re-use software if it doesn't suck. If it does suck, write something better. Too much of the internet is perl bandaids around shitty software.

    20. Re:So, in summary by Anonymous Coward · · Score: 0

      This guy's the dick. They were there first. What an asshole.

  4. Local copy by Anonymous Coward · · Score: 0

    I know this is not a popular stance, but this is why I always include all npm package dependencies in my application's git repository. If the package goes away, it's not a problem.

    1. Re:Local copy by gweihir · · Score: 1

      That this even has to be mentioned (how stupid do you have to be to _not_ do this?) exemplifies the larger problem nicely: The people that got hit have no clue how to write code professionally.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  5. Global Namespaces? by Anonymous Coward · · Score: 0

    What could possibly go wrong?

  6. oh vanity... by retchdog · · Score: 5, Funny

    This is just hilarious. What a shit-show, from the bullshit legal threat to the developer's hissy fit to the dependence on an apparently obscure package to implement (lol) left-padding.

    Reminds me of someone I knew who was wringing his hands for a few days over which license to use for his super-awesome R function library. He asked me for advice, and I told him that it's ~30 lines of syntactic boiler-plate code so get over yourself and just put it in public domain so that the two people who ever use it can do so easily. But of course, he had to deeply consider the political implications of which flavor of "freedom" he would support.

    --
    "They were pure niggers." – Noam Chomsky
    1. Re:oh vanity... by The+Evil+Atheist · · Score: 2, Insightful

      Yeah, because should only apply their ethics when you say it's okay. How vain of people to care about their personal ethics.

      --
      Those who do not learn from commit history are doomed to regress it.
    2. Re:oh vanity... by retchdog · · Score: 3, Funny

      you make a good point.

      incidentally, i just took my morning shit. could you please tell me, before i flush the turds down the toilet, what redistribution license should i bless them with?

      --
      "They were pure niggers." – Noam Chomsky
    3. Re:oh vanity... by headkase · · Score: 1

      You don't like the license? Fuck off and write your own then. Simple.

      --
      Shh.
    4. Re:oh vanity... by The+Evil+Atheist · · Score: 0

      You make a stupid point. What has that got to do with ethics, as opposed to someone deciding how to release code? Retard.

      --
      Those who do not learn from commit history are doomed to regress it.
    5. Re:oh vanity... by retchdog · · Score: 2, Insightful

      The downstream impact of my dump is comparable to the downstream impact of 99% of github bullshit. That's the analogy.

      Some things are not worth agonizing over, or "discretion is the better part of valor".

      --
      "They were pure niggers." – Noam Chomsky
    6. Re:oh vanity... by Big+Hairy+Ian · · Score: 1

      Just waiting for the obligatory "and a million applications cried out in pain and were suddenly silenced"

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    7. Re:oh vanity... by serviscope_minor · · Score: 0

      Reminds me of someone I knew who was wringing his hands for a few days over which license to use for his super-awesome R function library.

      Oh no! Someone was spending mental effort wondering what the best way to contribute to the pool of human knowledge rather than yelling "fuck it". Thing is, your attitude is kinda consistent with your .sig:

      TRIGGER WARNING: YOU WERE MOLESTED AS A CHILD.

      A trigger warning is to indicate there might be disturbing contents coming up so someone can opt out. Taking the piss out of trigger warnings is functionally equivalent to taking the piss out of people who mention "this contains bright flashing lights and may be unsuitable for epileptics" or people who provide wheelchair ramps when not compelled to do so by law.

      --
      SJW n. One who posts facts.
    8. Re:oh vanity... by Anonymous Coward · · Score: 0

      Yeah, what a pussy that developer is, should've just sucked it like a man.

      Fuck NPM for bending over.

    9. Re:oh vanity... by Anonymous Coward · · Score: 0

      This is just hilarious. What a shit-show, from the bullshit legal threat to the developer's hissy fit to the dependence on an apparently obscure package to implement (lol) left-padding.

      I remember having a senior developer rip out a five line loop I'd written and add a 2MB dependency to our code base that happened to contain a utility method that did the same thing solely to avoid "reinventing the wheel."

      Some people just do not understand that it can be easier to just write simple things yourself rather than deal with dependencies, especially huge ones. Although the fact that Javascript doesn't provide a built-in way of doing left-padding is somewhat hilarious on its own.

      (Also, quicky method of zero-padding to a fixed length in Javascript:

      "0000".substring(s.length) + s

      Works on all lengths of s because substring on indexes greater than the string length returns an empty string. Much faster than doing array bullshit at the expense of not being variable, but in most cases when you need zero padding, you don't need an arbitrary number of zeros.)

    10. Re:oh vanity... by Anonymous Coward · · Score: 0

      Only a total douche would call releasing something to the public domain unethical.

      I doubt even Ayn Rand would take that stance. Though she probably would be proud of your "put a license on it so I can wring advantage out of even trivial product" attitude.

    11. Re:oh vanity... by Anonymous Coward · · Score: 0

      and nothing of value was lost

    12. Re:oh vanity... by lorinc · · Score: 1

      Well, apparently not. In this story, we learned of the downstream impact of an open source library that has the complexity of a 1st year programming exercise. I would have though the same as you in the first place, but it seems different for Javascript.

      So either JS is an utter pile of shit, or JS developers are far more incompetent than I thought. Or maybe both. Or maybe one is a consequence of the other. Or maybe both are contributing to the ever growing shittyness of each other in an endless circle of insane stupidity.

      At least, it means Javascript is amazing at something, I guess.

    13. Re:oh vanity... by orlanz · · Score: 1

      So... you created a dependency on a feature of substring that isn't formally standardized? A behavior that could change in a future release.

    14. Re:oh vanity... by Anonymous Coward · · Score: 0

      >Taking the piss out of trigger warnings is functionally equivalent to taking the piss out of people who mention "this contains bright flashing lights and may be unsuitable for epileptics"

      No it isn't.

      One of those is a medical condition. The other is made up bullshit.

      Learn to recognize the two and you'll do better in life.

    15. Re:oh vanity... by Anonymous Coward · · Score: 0

      Uh, no. It is standardized. Technically, it says that using an index past the end of the string is to be treated the same as the length of the string. If you check out the official ECMA specification you'll see that they define "finalStart" as: "Let finalStart be min(max(intStart, 0), len)."

      I just gave a simpler explanation of what that actually accomplishes: namely, asking for a substring past the end of a string gives an empty string. Which is the standard.

    16. Re:oh vanity... by Anonymous Coward · · Score: 0

      uh... it's unethical to call in ethics to manage rights on something that by its very nature could all but fall together by itself from the ether.

      you want to get a patent on the word "Start" appearing on a button? you want to make a business out of suing people who put "Start" on a button? well, good for you and your ethics. i'm sure the rest of the retards on this stagnated shitpile website think you're "Insightful" as well.

      eat some dick, losers.

    17. Re:oh vanity... by firewrought · · Score: 5, Insightful

      Missing from your list is that NPM didn't just pull the npm package, they reassigned it to a different user. Think about the security implications of that... it implies anyone can send a few intimidating emails, gain control of a major project, and then substitute with their own code/malware.

      Assuming that's how it played out, it might be a good thing the developer threw a hissy fit: the resulting public fallout may or may not prompt NPM (and NuGet, Cargo, Docker, and so forth) to reconsider the trust problem they have created.

      --
      -1, Too Many Layers Of Abstraction
    18. Re:oh vanity... by Anonymous Coward · · Score: 0

      > Taking the piss out of trigger warnings is functionally equivalent to taking the piss out of people who mention "this contains bright flashing lights and may be unsuitable for epileptics" or people who provide wheelchair ramps when not compelled to do so by law.

      Grade A Bullshit. Epilepsy is a real, legitimate medical condition. Not being able to physically use the lower half of your body is a real, legitimate medical condition.

      "Waah that hurts my feelings and I never learned how to cope with that" and other "trigger" related bullshit is nothing more than immature outbursts by people who have nothing better to do than waste everyone's time. If anything, the gentleman you replied to is doing humanity a service by mocking such people openly in hopes they might get over themselves and become productive members of society.

    19. Re:oh vanity... by Anonymous Coward · · Score: 0

      >contribute to the pool of human knowledge
      aaaaahahahahahahaha if you reached any farther your arm would snap in half

    20. Re:oh vanity... by Anonymous Coward · · Score: 0

      When I redistributed my cum into your mom's mouth last night, I went with the GPL (though I hear her mouth is wildly popular in the public domain).

    21. Re:oh vanity... by goose-incarnated · · Score: 1

      the best way to contribute to the pool of human knowledge Taking the piss out of trigger warnings is functionally equivalent to taking the piss out of people who mention "this contains bright flashing lights and may be unsuitable for epileptics" or people who provide wheelchair ramps when not compelled to do so by law.

      You're confusing something that is both measurable and objective with something that is neither measurable nor objective. "Triggers" fall into the same basic category of astrology, homeopathy, chiropracty(sp?) and similar. It is, I find, usually safe to ignore people who ask you to take their non-empirical voodoo seriously.

      --
      I'm a minority race. Save your vitriol for white people.
    22. Re:oh vanity... by Anonymous Coward · · Score: 0

      Sounds like a non-programming programmer. I've worked with my share of them. They can't do anything themselves, so everything is automatically too hard for others.

      I was on one project where there was a list-detail pattern with an anti-scroll dictate from management and hardcoded window sizes. Every time the derpy lead duhvelopers fiddled with the site-wide styles, field arrangement, submenus, records-per-page settings, etc, every single list page had to be checked out and the hardcoded sizes changed. There goes an hour, repeated several times each week, on a Mickey Mouse project that was _crawling_ to alpha status.

      So one day I took a whole hour* and figured out how to get the windows to resize themselves (~8 lines IIRC). They were fucking hysterical. "OH MY GOD WE DONT HAVE TIME FOR THAT! YOURE WASTING TOO MUCH TIME ON THIS!"

      *It ended up being two, thanks to their poor understanding of HTML/CSS and the clunky UI toolkit they'd chosen to cover up not knowing jack about HTML/CSS.

      But that was the entire project in a nutshell. Spend months going in circles trying to make generic tools do specific stuff because it would take days to do it yourself. And then shriek about the deadline in between shrieking about the evils of capitalizing acronyms.

    23. Re:oh vanity... by Anonymous Coward · · Score: 0

      And a million applications cried out in pain and were suddenly silenced

    24. Re:oh vanity... by Anonymous Coward · · Score: 0

      BUT my mum said I was SPECIAL!

    25. Re:oh vanity... by phantomfive · · Score: 1

      A trigger warning is to indicate there might be disturbing contents coming up so someone can opt out.

      He knows that, and his entire point is to annoy people. Not even worth arguing with him about it.

      --
      "First they came for the slanderers and i said nothing."
    26. Re:oh vanity... by Anonymous Coward · · Score: 0

      Even simpler: just to copy the code without the license.

    27. Re:oh vanity... by cas2000 · · Score: 1

      well said. this needs to be modded up.

    28. Re:oh vanity... by drinkypoo · · Score: 1

      So either JS is an utter pile of shit, or JS developers are far more incompetent than I thought.

      Here's the actual story: Some really incredibly fucking stupid web developers are in the habit of using externally hosted Javascript libraries. There are lots of ways this can come back to bite you, and this is only one of them.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    29. Re:oh vanity... by serviscope_minor · · Score: 1

      You're confusing something that is both measurable and objective with something that is neither measurable nor objective.

      DSM defines PTSD as an actual thing, and that very much has the concept of triggers.

      No offence, but I'll take the medical professional's opinion on this over yours.

      --
      SJW n. One who posts facts.
    30. Re:oh vanity... by goose-incarnated · · Score: 1

      You're confusing something that is both measurable and objective with something that is neither measurable nor objective.

      DSM defines PTSD as an actual thing, and that very much has the concept of triggers.

      No offence, but I'll take the medical professional's opinion on this over yours.

      An actual thing it may be, but measurable and objectively empirical it is not, hence it is not even in the same realm as someone who is disabled. In terms of science, micro-aggression triggers have more in common with homeopathy and acupuncture than it does with science.

      --
      I'm a minority race. Save your vitriol for white people.
    31. Re:oh vanity... by dave420 · · Score: 0

      You forgot one option: This has nothing to do with JavaScript but with using external dependencies in your code without preparing for an outage.

      Don't be so quick to throw around accusations, as if you've got the wrong end of the stick you will look rather thoughtless.

    32. Re:oh vanity... by dave420 · · Score: 1

      You'd be right if PTSD wasn't considered a disability. As it is considered a disability by medical professionals and organisations the world over, you are massively incorrect, and you've just shown that you're quite happy being incorrect if you can grind a suitable axe in the process.

    33. Re:oh vanity... by goose-incarnated · · Score: 2

      You'd be right if PTSD wasn't considered a disability. As it is considered a disability by medical professionals and organisations the world over, you are massively incorrect, and you've just shown that you're quite happy being incorrect if you can grind a suitable axe in the process.

      Sure, its considered a medical disability, but what I started on about is still not measurable. Doesn't matter how you want to put it, it's not measurable. You cannot compare two cases of PTSD the way you can with most other things, because you cannot measure it. It all comes down to who says they feel $X more.

      You've got to draw the line in the sand *somewhere*; you choose to draw the line at unmeasurable feels. I choose to draw it at what can be measured and quantified. Because, you see, if the world has to care about *your* unmeasurable feels, then they have to care about *my* unmeasurable feels, at which point it just degrades into who better expresses their unmeasurable feels, which they may or may not even be feeling.

      Thus, the world doesn't particularly care about your feels. We don't care if you "feel" triggered, were you actually? Doctors the world over require substantial evidence before diagnosing PTSD. Social mountaineers, OTOH, get by with just "You said $FOO, you triggered me".

      As far as the axe-grinding goes, I've never espoused any ideology, and continue to refuse espousing any particular ideology; however I've noticed the various *wing nutcases always try to console themselves that because they are true to their ideology, they *must* be the good guys, hence everyone on the other side must be bad, hence anyone who expresses skepticism of their extraordinary claims must be on the "other side".

      The world is not so black and white - if the bar for PTSD was "You've triggered me" you can be sure it would abused. And, to be honest, as someone with a close family member who actually suffered from PTSD, there is a world of difference between actual diagnosed PTSD and someone on the internet who got offended that someone else used the word "cunt". You trivialise real victims in pursuit of your ideology, just like those professional whiners do when they complain about "stare-rape".

      I can just about guarantee you that no PTSD sufferer is going to get triggered by someone on the internet. Real suffering and real loss puts a whole of things into perspective, and one of those things is that the offensive words on the internet remain there.

      --
      I'm a minority race. Save your vitriol for white people.
    34. Re:oh vanity... by sjames · · Score: 1

      Not necessarily. I think MOST people who object to the whole trigger warning thing are actually objecting to those who treat failure to "just know" what someone's obscure triggers might be as if it was some sort of knowing crime against humanity.

  7. What is Kik? by The+Evil+Atheist · · Score: 2

    Don't know who they are or what they do, but fuck them and boycott whatever it is they sell.

    --
    Those who do not learn from commit history are doomed to regress it.
    1. Re:What is Kik? by The+Evil+Atheist · · Score: 1

      And fuck NPM for restoring someone else's work without their permission. Surely that's got to be a copyright infringement.

      --
      Those who do not learn from commit history are doomed to regress it.
    2. Re:What is Kik? by Luthair · · Score: 3, Informative

      They're a messaging application and have been around 5-6 years. Recall that trademark owners are required to protect their trademark.

    3. Re:What is Kik? by Luthair · · Score: 2

      Not really, the owner distributed under an open source license.

    4. Re:What is Kik? by jimbolauski · · Score: 1

      Kik is an anonymous IM service where you can invite friends to a board and you all post horrible things about other people.

      --
      Knowledge = Power
      P= W/t
      t=Money
      Money = Work/Knowledge so the less you know the more you make
    5. Re:What is Kik? by __aaclcg7560 · · Score: 2

      Recall that trademark owners are required to protect their trademark.

      That's only relevant if Kik has a JavaScript library. AFAIK, they do not. It's just another patent troll overreach.

    6. Re:What is Kik? by angel'o'sphere · · Score: 4, Informative

      And the trademark for "KiK" an instant messenger "App" on phones or tablets, does not cover a "library" or even a "program" written for software development.

      At least not in my country, and likely not in yours either.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:What is Kik? by bluefoxlucid · · Score: 1

      They have a trademark for an instant-messaging application, not a JS library. Attempts to enforce the Kik trademark against NPM modules not dealing with instant messaging are vexatious, and any lawsuit raised is legal barratry.

    8. Re:What is Kik? by The+Evil+Atheist · · Score: 1

      They're a messaging application and have been around 5-6 years.

      Oh, so I don't need to do anything then.

      Recall that trademark owners are required to protect their trademark.

      Trademarks are only in effect for what purposes they filed for. It cannot just cover any use of the word in any context.

      --
      Those who do not learn from commit history are doomed to regress it.
    9. Re:What is Kik? by Anonymous Coward · · Score: 0

      It's BSD licensed, so... nope.

    10. Re:What is Kik? by The+Evil+Atheist · · Score: 1

      You still retain copyright over your own copy. That's how it stops other people from dictate what you can or cannot do with your copy outside the scope of the licence and what makes that licence desirable to that person.

      --
      Those who do not learn from commit history are doomed to regress it.
    11. Re:What is Kik? by Anonymous Coward · · Score: 0

      Distribution under Open Source License != renouncing the copyright.

    12. Re:What is Kik? by NotInHere · · Score: 2

      There is a legal aspect, and there is a moral aspect. SourceForge had the right to adware infected installers for open source software. Whether they should do, is another question. Same here.

    13. Re:What is Kik? by Anonymous Coward · · Score: 0

      He said in his blog entry explaining the take down anyone who wanted to repost and own it could.

    14. Re:What is Kik? by nedlohs · · Score: 1

      1. The new owner apparently asked them to, so that would be permission.

      2. They already have permission since the license the "software" was published under gave it to them.

    15. Re:What is Kik? by AmiMoJo · · Score: 4, Insightful

      True, but lawyers don't understand those words, they just know it's about computers so anything computer related called "kik" must die. They are like marauding barbarians, waving their clubs in the air and smashing anything that looks a bit like the magic rock they worship.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    16. Re:What is Kik? by Luthair · · Score: 1

      And what does copyright have to do with distributing code under its license?

    17. Re:What is Kik? by Luthair · · Score: 1

      See my response to the other AC

    18. Re:What is Kik? by The+Evil+Atheist · · Score: 1

      Yes, OUTSIDE of NPM in Github.

      --
      Those who do not learn from commit history are doomed to regress it.
    19. Re:What is Kik? by Luthair · · Score: 1

      There is no 'moral' aspect here, the author chose to provide his code under an open source license through npm. Then threw a hissy fit when npm quite reasonably followed trademark law.

    20. Re:What is Kik? by Anonymous Coward · · Score: 0

      Why don't you try just RTFA instead of getting your SJW knickers in a twist about whatever imaginary brainfart pops into your skull.

      The original author has put his code on GitHub under the WTFPL (Do What the Fuck You Want Public License), so as the license name implies he's fine with other people doing whatever the fuck they like with it.

    21. Re:What is Kik? by Cid+Highwind · · Score: 4, Funny

      This is the USPTO we're talking about here. Instant messaging services and Node.js libraries probably both fall under a category like "Products and services pertaining to computers, electronic calculators, magnetic or paper tapes, teletypes, slide rules, and abacuses"...

      --
      0 1 - just my two bits
    22. Re:What is Kik? by The+Evil+Atheist · · Score: 1

      Restoring something that someone has removed is the same as making a copy. It is not distributing.

      --
      Those who do not learn from commit history are doomed to regress it.
    23. Re:What is Kik? by Anonymous Coward · · Score: 1

      Wrong. You cannot make existing code from previously released source disappear because you get in a childish hissy fit. You can hold back your own modifications, updates, bug fixes, and kill your hosting accounts. But legally you cannot demand other hosting code that's already in the wild when it had been released under an open license.

      Open source license's strengths are in copyright law that prevents this, irrespective of what you personally believe.

      The coder for this little bodge can do what he likes going forward, but he cannot turn back the clock.

    24. Re:What is Kik? by MrKrillls · · Score: 1

      Where's the head of newegg when he's needed? Again.

      --
      Don't step on the baby.
    25. Re:What is Kik? by Anonymous Coward · · Score: 2, Insightful

      Yeah but that's not how they think.

      They're not real lawyers. They're a "brand management" company that was hired over a game of golf. Their job is to prove that they are useful to their clients.

      So they fire up a search engine and find every instance of the word 'kik', then send legal flavored nastygrams to everyone they can find. In some cases they harass poor developers working on js projects.

      Then they put it all in a report and give it to their employer to 'prove' how much they protected their 'brand'

      They don't give a wet fart about the consequences as there are effecively zero legal repercussions for this behavoir.

    26. Re:What is Kik? by Luthair · · Score: 2

      When the author pushed to npm he granted them a license, given its an open source license it is not a violation for npm to continue to distribute the code.

    27. Re:What is Kik? by Anonymous Coward · · Score: 0

      Words we don't understand? Oh boohoo it's too complicated, lump it in with something we think is kinda similar because [insert 150 pages of small print legalese only we understand]

    28. Re:What is Kik? by __aaclcg7560 · · Score: 1

      So Kik has a trademark on both Kik the IM App and Node.js?

    29. Re: What is Kik? by Anonymous Coward · · Score: 0

      Tell that to facebook. They successfully go after any face... or ...book sites.

    30. Re:What is Kik? by onepoint · · Score: 1

      Not sure how to address your point, but it's a great question to ask.
      Open source, is not free from copyright. It depends on the type of open source contract you request.
      So I am guessing that the author of the work, pulled his work, but the repository put it back.
      So, here is the problem ( from my perspective and without the copy of the type of open-source Lic used ).
      A) did the repository have the legal right's to place it back?
      B) does the author of the work have recourse against the repository

      people seem to want to blame Kik ( the brand), but the real blame here seems to be the repository acting
      without a legal "demands" and the lack of the brand and/or the author trying to negotiate.

      if the repository acted incorrectly due to the open source Lic, they will be subjected to the rule a violation of infringement which could be calculated per download, I think the max is around $750K to $850K total

      --
      if you see me, smile and say hello.
    31. Re:What is Kik? by DRJlaw · · Score: 2

      Restoring something that someone has removed is the same as making a copy. It is not distributing.

      If the license applied to the project didn't explicitly mention "copying, distribution, and modification" that distinction might possibly have meant something.

      But the license does. So the distinction does not.

    32. Re:What is Kik? by jareth-0205 · · Score: 1

      You still retain copyright over your own copy.

      Yes you do, very good. And all those people you have distributed it to in the past retain their rights to use it under the licence that you distributed it under.

    33. Re:What is Kik? by Anonymous Coward · · Score: 0

      Of course they had a legal right to put it back. Having a legal right to distribute code - hell, not only a right but a legal obligation - is the whole point of open source code. Open source says I can take your code and do essentially anything I want to do with it so long as I DISTRIBUTE THE CODE. Where I can get into trouble is if I DON"T DISTRIBUTE THE CODE.

    34. Re:What is Kik? by Anonymous Coward · · Score: 0

      Go and look at the USPTO category list. There is unbelievable refinement in the area of computer software and services. You just don't know what you're talking about. Stop making shit up.

    35. Re:What is Kik? by jopsen · · Score: 1

      Really, the followed NPM naming dispute guidelines... and npm resolved the dispute...
      Some dev didn't like the resolution, and hey I don't know if it was a right resolution.
      But it's nice that NPM cares about name allocation, rather than it being like the wild west of .com domains and squatting...

    36. Re:What is Kik? by Hognoxious · · Score: 2

      You are absolutely fucking shit at using commas.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    37. Re:What is Kik? by Anonymous Coward · · Score: 0

      Seems like a lot of people failed (flunked) out of law school, so then decided to become really bad Javascript Kiddies of Script. (Not law script, thought.)

    38. Re:What is Kik? by Anonymous Coward · · Score: 0

      Yes, yet another example of how deeply flawed the US Patent system is. My wife ends up having to defend her brand almost yearly because there is another business on the other side of the country with a similar name who has to prove he is defending his trademark to keep it (some years he finds someone else to pick on). There is no practical business reason for the guy to pursue action as both are local service businesses 3000 miles apart, and it ends up costing both him and my wife time and money and makes lawyers rich in the process. We have been in contact with him directly about it and he feels bad about having to do it, but for him to keep his trademark he is required to pick on *somebody*. The insanity level is high.

    39. Re:What is Kik? by sabt-pestnu · · Score: 1

      NPM is immune to Kik's blandishments in this issue: Section 230 is not restricted to copyright law. NPM could easily have informed KoÃulu of the issue, allowed him to make a counter-claim, then told Kik to pound sand - not their problem, talk to the author.

      But no, they took down the module.

      On the positive side, we see the result of years of unnecessarily leaving references to external code external. And of depending on a private corporation to protect your interests in it.

    40. Re:What is Kik? by loonycyborg · · Score: 1

      Maybe, but NPM had no right to actually accede to this obviously invalid trademark claim. Now its users need to prove that they're more important than marauding lawyers by voting with their feet, unless they want to risk their control of libraries revoked for arbitrary reasons in the future.

    41. Re: What is Kik? by fsagx · · Score: 1

      or Apple's i-anything

    42. Re:What is Kik? by Jahta · · Score: 2

      And the trademark for "KiK" an instant messenger "App" on phones or tablets, does not cover a "library" or even a "program" written for software development.

      At least not in my country, and likely not in yours either.

      I'm guessing you are not a lawyer. The international law on trademarks classifies goods and services into trademark categories. This classification puts "data processing equipment, computers; computer software" in the same group (along with bunch of other things). So an "App", a "program" and a "library" are all just "computer software" for trademark purposes.

      But if you wanted to start a company called "KiK" to sell "Apparatus for lighting, heating, steam generating, cooking, refrigerating, drying, ventilating, water supply and sanitary purposes" (for example) you're good to go.

    43. Re:What is Kik? by Anonymous Coward · · Score: 0

      There is no 'moral' aspect here, the author chose to provide his code under an open source license through npm. Then threw a hissy fit when npm quite reasonably followed trademark law.

      Ahh... but "Kik" is a trademark registered in the E.U. in 2007, waaaaaaay before the 2013 filing from Kik Interactive.
      And if we're considering just the USA, then there's dancer's apparel trademark "Kik", registered in 2011.
      I'm trying to highlight that this is an absolutely absurd attempt at trademark enforcement - I don't see how Kik as a developer tool could possibly be confused with Kik the crappy messaging app.

    44. Re:What is Kik? by cbhacking · · Score: 1

      Are you claiming trademark law requires that a third-party provider remove other peoples' content without their permission in response to a letter from a lawyer? Because I'm skeptical of that. There was no legal action taken - no lawsuit, no determining of infringement, no finding in favor of either party, no out-of-court settlement, etc. - and there is no trademark equivalent of the DMCA's bullshit takedown notices.

      Now, NPM was most likely within their legal rights to remove the module. The only way they wouldn't be is if they had signed a contract or made some similar promise to not do that, and that seems quite unlikely. However, defending their actions as followed trademark law is bullshit. There was no legal requirement yet, and may never have been one, that prohibited distributing that JavaScript module.

      --
      There's no place I could be, since I've found Serenity...
    45. Re:What is Kik? by david_thornley · · Score: 1

      One of the things about releasing one's work under an open source license is that one can't arbitrarily pull it and keep it pulled. If the repository has a copy, the repository has the right to put it back and keep distributing it. The author has no recourse. If the author wanted to be able to pull the code, the author needed to use another license (which probably would have kept it out of the repository in any case).

      I doubt the repository has significant legal resources. I'd expect it to cave fairly easily under threat of lawsuit, because it wouldn't have any ability to keep going once in a serious lawsuit.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    46. Re:What is Kik? by david_thornley · · Score: 1

      First, the trademark claim is not obviously invalid. Second, NPM probably has the right to pull whatever it wants. Third, NPM probably can't defend itself in a lawsuit, and will therefore tend to cooperate with people threatening lawsuits, particularly if the people threatening are likely to win.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    47. Re:What is Kik? by angel'o'sphere · · Score: 1

      Being in the same categories is not enough to claim the trade mark or forbid anyone else to use the name.

      The library in this case e.g. does not even "appear on the market" in contrast to the company KiK or their product.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    48. Re:What is Kik? by Jahta · · Score: 1

      Being in the same categories is not enough to claim the trade mark or forbid anyone else to use the name.

      The library in this case e.g. does not even "appear on the market" in contrast to the company KiK or their product.

      The whole point of the classification system is to constrain the applicability of trademarks to similar sets of goods or services. So being in the same classification _is_ grounds for trademark infringement. And, as others have pointed out, trademark holders are obliged to defend their trademarks; it's a "use it or lose it" proposition.

    49. Re:What is Kik? by Anonymous Coward · · Score: 0

      And trademark if you registed it. Best example in open source is how firefox name is being used to prevent people from calling their own builds 'firefox' unless they contain exactly what Mozilla wants.

    50. Re:What is Kik? by onepoint · · Score: 1

      Thank you

      --
      if you see me, smile and say hello.
    51. Re:What is Kik? by onepoint · · Score: 1

      I know, funny, I never looked at it closely, but, I will try more often to use them more. I am the shit.

      --
      if you see me, smile and say hello.
    52. Re:What is Kik? by loonycyborg · · Score: 1

      No, it is invalid, because it has no potential to cause consumer confusion. His program wasn't even a competing product, just some command line tool doing totally different thing. Trademark law doesn't apply for such cases by definition. NPM's job is to provide reliable hosting for projects. Removing projects due to invalid claims makes it less reliable. It doesn't matter if project was lost due to software bug, bad hosting hardware or invalid trademark claim. All three cases are good enough to make service unreliable.

    53. Re:What is Kik? by cas2000 · · Score: 1

      You have no idea what you're talking about.

      I don't think there's a single open source license (copyleft or not) in existence that *requires* you to distribute the source code if you don't also distribute the binaries/executables (or with the AGPL and similar, provide a publicly-accesible service based on the code - which by their definition is just another way of distributing the binary...and you accepted both their license and their definition if/when you chose to use their code in your public server).

      The GPL doesn't. The BSD and MIT licenses don't. Neither do any licenses based on them.

      With any of them you're free to use the code personally or within your company/organisation with no obligation to distribute binaries to anyone else, and no obligation to distribute the source if you don't distribute binaries to third-parties (and BSD/MIT/non-copyleft licenses don't require you to distribute the source even in that case).

    54. Re:What is Kik? by cas2000 · · Score: 1

      Recall that trademark owners are required to protect their trademark.

      actually, they're not. this is complete and utter bullshit. it also happens to be commonly-believed bullshit which is why it is repeated so often.

      there is no such obligation.

      It is possible for a trademark owner to lose (some/all control over) their trademark because it has become generic. This has absolutely nothing to do with other companies or individuals misusing their trademark for commercial activities and everything to do with ordinary people using the trademark in a generic way in ordinary everyday conversation or writing. e.g. saying 'xerox' instead of 'photocopy' (this is mostly specific to the US, almost every other english-speaking country just uses 'photocopy'); aspirin instead ofacetylsalicylic acid ; heroin instead of diacetyl morphine ; and, much as google disapproves and fights it, googling as a generic term for searching for stuff on the internet.

      And even when a trademark has become generic, that still doesn't always automatically remove all proprietary rights from the trademark holder.

      https://en.wikipedia.org/wiki/...

    55. Re:What is Kik? by cas2000 · · Score: 1

      fuck i hate that you can't edit your own posts on slashdot to fix stupid mistakes like not ending a blockquote properly.

    56. Re:What is Kik? by cas2000 · · Score: 1

      by "co-operate with", I think you mean "abjectly surrender to without even a token show of resistance".

      there are only two guilty parties here:

      1. the arsehole lawyers / brand-management consultants who scattergunned the nastygrams to anyone using the word "kik"

      2. NPM for caving without a fight and without even a snarky excuse on their web site.

      The dev who pulled his software did the only thing he could to protest his shabby treatment by NPM. It also had the side-effect of making what happened public knowledge and an outrage-of-the-day for those who like to get angry about things they have no control over or direct interest in.

    57. Re: What is Kik? by cas2000 · · Score: 1

      neither apple nor facebook are relying on trademark law for this. they are relying on the fear of bankruptcy and a lifetime of poverty, and with good reason: it works exceptionally well for them.

    58. Re:What is Kik? by cas2000 · · Score: 1

      but for him to keep his trademark he is required to pick on *somebody*.

      this is bullshit. he does not need to "defend" his trademark. at all, let alone by "picking on somebody".

      he needs to find lawyers who aren't intent on ripping him off.

      or (if it's him and not his lawyers behind this) he needs to either stop being an arsehole or stop pretending that he's not one.

    59. Re:What is Kik? by drinkypoo · · Score: 1

      True, but lawyers don't understand those words, they just know it's about computers so anything computer related called "kik" must die.

      Never attribute to stupidity what is done by a lawyer, it's probably due to malice. They are just drumming up more work. They've been to court, they know that it doesn't matter. I note that your thought that all lawyers are idiots really means you think you're the shit. You're close...

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    60. Re:What is Kik? by david_thornley · · Score: 1

      Trademark law doesn't apply across fields, but how big are the fields? I'm not a lawyer, myself, but it seems quite possible that the two things weren't distinct enough. If I were a user of kik, I might think that some software also named "kik" was supposed to be associated. (If you used Kik-brand hand power tools, and saw a chainsaw marked Kik, would you potentially get confused?) This is not a question to be settled by geeks, but by judges according to the law.

      You're not addressing the question of what NPM was supposed to do. I'd suspect they don't have much of a legal fund, or ability to absorb large losses. The trademark claim isn't obviously invalid, and they may indeed have asked a lawyer for advice. The result may have been a bigger risk than they could take and be confident about staying in business.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    61. Re:What is Kik? by Lord_Jeremy · · Score: 1

      Actually that's not necessarily true. I've worked closely with a software patent attorney in the course of my business and, while not a developer or engineer, he did have a substantial working knowledge of software development and architecture. He was also very knowledgable about GPL in commercial products, linking, reverse engineering laws, etc...

    62. Re:What is Kik? by dave420 · · Score: 1

      They wanted to release software, hence them wanting the name under which to release it. That seems rather fair. The way this was handled, however, was anything but fair.

    63. Re:What is Kik? by dave420 · · Score: 1

      Kik wanted to open source some of their code, and wanted to release it with that name. That's where the problem came from. Don't misrepresent it, please.

    64. Re:What is Kik? by onepoint · · Score: 1

      Thank you for expanding on the concept if distribution.
      So, I am leaning towards the repository is wrong on the action it took...

      feedback?

      --
      if you see me, smile and say hello.
    65. Re:What is Kik? by loonycyborg · · Score: 1

      A tool to generate projects from templates vs IM messaging client. Totally different things. Allowing any trademark owner to remove even accidental name coincidences is going WAY too far. There going to be a lot more of those in the future which would make all such hosting services extremely unreliable. Only sane response from such a service is to refuse such a claim and defend against invalid claim in court. If they pay for server infrastructure to host projects then why wouldn't they protect projects from hostile frivolous claims too? If legal costs would get too high there is always a possibility to make a fundraiser. I'm sure devs pooling would get service of a very good legal team..

    66. Re:What is Kik? by david_thornley · · Score: 1

      What is your background in trademark law? Are you a lawyer? You seem to have a good grasp on the general idea of trademarks, but I think you seriously underestimate the cost of a very good legal team. You also seem to be more aware of technical details than the usual person.

      Trademark fields are fairly broad, and it wouldn't surprise me to find that "software" was one field. I doubt that most people would realize the difference between a project generator and an IM messaging client. Even if they did, they might think that software called Kik was from the people who write Kik. Unless you're skilled in trademark law, which you don't appear to claim to be, I have to consider this as likely infringement, and I'd stay away from it.

      Given that there's at least some potential merit in the complaint, NPM is not going to want to get involved. The cost of server infrastructure is fairly constant, and almost never involves sudden really expensive surprises, but the same is not true of lawsuits. I doubt NPM has an "intellectual property" lawyer on retainer, and so would have to pay money to find if this was a real threat. If it was a potential threat, NPM could defy the claim, and risk being wiped out by legal costs and possible damages.

      You appear to be telling NPM what to do with their money, and the merits of a trademark claim. Are you in fact qualified to do either?

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    67. Re:What is Kik? by loonycyborg · · Score: 1

      I've merely read wikipedia article on trademark law, and certain other resources in the past. But it doesn't make sense to expect from average person to be proficient lawyer to comply with law, at least in simple cases like this one. What I really have experience with is being an open-source contributor, and I definitely wouldn't want some startup I don't know about to suddenly appear and force me to change a name of my project. Not only this would be assholish behavior, but also would make life harder for all devs in the future. There's a limited number of words in world's languages and it's only matter of time before pretty much all projects would be vulnerable to such frivolous claims. So I definitely object to this apparent change of intent of trademark law. It originally was intended to combat counterfeiting, that is making products competing with existing producer and making your product like theirs in order to deceive consumers. And it's pretty obvious that if you didn't know that name was taken you didn't mean to counterfeit! And there's even no product, really. That project's author didn't make any sales, let alone didn't steal any claimant's customers!

    68. Re:What is Kik? by Anonymous Coward · · Score: 0

      Eclipse IDE vs Mitsubishi Eclipse

      Both trademarked.

      Neither infringes the other.

      That isn't to include the 10000 other trademarked uses of eclipse.

      I could write a video game called Eclipse and IBM and Mitsubishi could do fuck all about it.

    69. Re: What is Kik? by vilanye · · Score: 1

      Intel i7

  8. And nothing of value was lost by 31415926535897 · · Score: 2

    Just kidding, I have no problem with Javascript. By the way, that summary was confusing as hell.

    One of the beauties of JS is that it's easy to provide your own functions, so as long as it's only left-pad missing, you could provide your own, right?

    function left_pad(str, min_length, pad_char){
            if(str.length min_length){
                    str = Array(min_length - str.length).join(pad_char) + str;
            }
            return str;
    }

    (note, I did not do any sanity/error checking in the function, so do not simply copy/paste, please fill it out if you intend to use it)

    1. Re:And nothing of value was lost by Anonymous Coward · · Score: 1

      For comparison:
      https://github.com/camwest/left-pad/blob/master/index.js

      module.exports = leftpad;

      function leftpad (str, len, ch) {
          str = String(str);

          var i = -1;

          if (!ch && ch !== 0) ch = ' ';

          len = len - str.length;

          while (++i len) {
              str = ch + str;
          }

          return str;
      }

    2. Re:And nothing of value was lost by sanosuke001 · · Score: 1

      ...and fix those pesky characters that /. thinks are html and removed!

      seriously, whoever was using left-pad and was too lazy to implement this themselves deserves their fate.

      --
      -SaNo
    3. Re:And nothing of value was lost by __aaclcg7560 · · Score: 1
      Here's the code from the article:

      module.exports = leftpad;

      function leftpad (str, len, ch) {
      str = String(str);

      var i = -1;

      if (!ch && ch !== 0) ch = ' ';

      len = len - str.length;

      while (++i < len) {
      str = ch + str;
      }

      return str;
      }

    4. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      31415926535897,

      Great. Your left pad solution is 40% shorter and probably more efficient than the crap that was yanked from NPM.

      Thanks.

    5. Re:And nothing of value was lost by __aaclcg7560 · · Score: 3, Insightful

      Your left pad solution is 40% shorter and probably more efficient than the crap that was yanked from NPM.

      The original code from NPM is more readable. Given the choice between compact code and readable code, I prefer readable code. Especially when it comes to my own code and I have to figure out what I wrote months or years later.

    6. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      I disagree. If the standard JS features do what you want and you are familiar with the standard JS features, which you should be if you are programming JS, then using them is more readable than hacking around with your own "for" loops and such.

    7. Re:And nothing of value was lost by nedlohs · · Score: 1

      The compact code is just as if not more readable in this case. Well assuming Array(n).join(c) is an idiomatic way to create a string of n c characters - I don't do javascript to know - if it isn't then replace it with what is, which I seriously hope isn't str='';i=-1;while(++i<n) {str = c + str;}

    8. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      The above needs some extra sanity checking, but it's actually better than this function.

      The fact any code depends on a library to do this and will use a library this poorly written to do it is depressing. First-year CS students should be able to do better if they have even a modicum of talent.

    9. Re:And nothing of value was lost by Kjella · · Score: 1

      The original code from NPM is more readable. Given the choice between compact code and readable code, I prefer readable code. Especially when it comes to my own code and I have to figure out what I wrote months or years later.

      Yeah... and the older I get, the more I care about the variable/function name accurately describing the scope. Like if a function is called "getInputData()" that might involve various steps/hacks/fixes/legacy format compatibility functions but if it's called "readDataFromFile()" then I expect it to do exactly that and nothing more. Fortunately any sane IDE will do auto-complete.

      --
      Live today, because you never know what tomorrow brings
    10. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      Both are uncommented. Both can be understood by reading the code. The shorter one could have been done slightly more smoothly, but there should be no reason to loop through that. ES6 has a new repeat() method in the string object that would make this even cleaner.

    11. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      JS is so fragile.

      leftpad(new Array, document.getElementById("blargh"), 82384);

      Anyone want to tell me what kind of hell-portal that code opens? I really try to avoid JS whenever I can.

      Captcha: muddling

    12. Re:And nothing of value was lost by omnichad · · Score: 1

      No - nothing of value was lost - see AC comment before mine. Theirs was far less elegant and even used iterative code when completely unnecessary.

    13. Re:And nothing of value was lost by CrashNBrn · · Score: 4, Informative
      I prefer something like this:

      function PadZero(s,z) {
      padstr = "0000000000";

      while(z>padstr.length)
      padstr+=padstr;

      return padstr.substr(0-z) + s;
      }

      Which only concatenates the string once.

    14. Re:And nothing of value was lost by KlomDark · · Score: 1

      If you have issues reading/comprehending the shorter code then you should probably find a different line of work. Seriously.

    15. Re:And nothing of value was lost by Chatterton · · Score: 1

      Actually less efficient: http://jsperf.com/leftpadding

    16. Re:And nothing of value was lost by __aaclcg7560 · · Score: 1

      If you have issues reading/comprehending the shorter code then you should probably find a different line of work.

      I don't work as a programmer (but I do have an A.S. degree in programming). I typically program in Python. To quote the Zen of Python: "Readability counts."

      https://www.python.org/dev/peps/pep-0020/

    17. Re:And nothing of value was lost by 93+Escort+Wagon · · Score: 1

      By the way, that summary was confusing as hell.

      That's because the article's author was more interested in injecting his personal anti-Javascript biases than in writing a cogent summary.

      --
      #DeleteChrome
    18. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      To quote the Zen of Python: "Readability counts."

      And then they went and made invisible whitespace a fundamental syntactic part of their language...

    19. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      Great. Your method is more than of 2 orders of magnitude *slower* [1] than the one that was actually used in the library being discussed.
      And you don't handle the basic case of what to do if the pad character is unspecified. (Though that's better than the 'padZeros' example given further down.)

      [1] http://jsperf.com/leftpadding

    20. Re:And nothing of value was lost by __aaclcg7560 · · Score: 1

      And then they went and made invisible whitespace a fundamental syntactic part of their language.

      I have the invisible whitespace set to a dark grey in my IDE. ;)

    21. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      That 'no value' iterative code, which you call 'far less elegant' is 1-2 orders of magnitude *faster* than the 'non-iterative' methods utilizing array.join(), or repeat(). All while being at least equally readable. [1]

      In a moderately pathological case (padding to 10,000 characters)[2], the iterative method runs 6 orders of magnitude faster than array.join(), and still 2 orders of magnitude faster than repeat().

      [1] http://jsperf.com/leftpadding
      [2] http://jsperf.com/leftpadding/2

    22. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      So it has bugs if you pad with a multi-character padding sequence, makes an odd choice of a while loop instead of a for loop, and inefficiently appends strings together instead of simply creating a string with the exact amount of padding sequences required and then appending once. What an odd library.

    23. Re:And nothing of value was lost by epine · · Score: 1

      If you have issues reading/comprehending the shorter code then you should probably find a different line of work. Seriously.

      Unfortunately what counts as "readability" is 50% groupthink. I rarely pay much heed unless the barrier to entry on the language I'm using is pretty high to begin with.

      One you've waded through Static Single Assignment Book, you'll never find the infamous ?: operator unreadable ever again.

      #define back_of_the_cupboard_lvalue (a[b->c[i],d]->item)
      if (n > 0) {
        back_of_the_cupboard_lvalue = 1
      }
      else {
        back_of_the_cupboard_lvalue = 2;
      }

      I'm going to write a book. It will be called The Joy of Reswyping Lvalues, because I assume most people who find ?: "unreadable" are programming using Swype keyboards.

    24. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      I don't work as a programmer (but I do have an A.S. degree in programming). I typically program in Python. To quote the Zen of Python: "Readability counts."

      And that explains ever so much. I suspect a lot of comments being made here are either from academics, hobbyists, or just clueless people pushing their religion.

      I do see a commonality though. They all believe "someone, anyone, somewhere else is a far better programmer than they are." Thus, they can't write ~5 lines of code because they are re-inventing the wheel. Oh my. Cut-and-paste programmers are hip man. Apparently, so are "lib-pullers." They pull in an entire lib to get a single function. Yeah....

      Captcha: minimum.

    25. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      What about the fact that the loop is 2+ orders of magnitude faster than the array.join() method, and 1-2 orders of magnitude faster than the repeat() method? Does that count as 'no reason'?

      pad to 10 characters - http://jsperf.com/leftpadding
      pad to 10000 characters - http://jsperf.com/leftpadding/2

      Looks to me like repeat() needs to be re-implemented internally, since it is so much slower than the while-loop alternative.

    26. Re:And nothing of value was lost by __aaclcg7560 · · Score: 1

      And that explains ever so much.

      That readability counts? Absolutely! :)

    27. Re:And nothing of value was lost by K.+S.+Kyosuke · · Score: 1

      I'm wondering if this code isn't faster because someone implemented a fast path for such code patterns because people keep writing code like this. It shouldn't be faster. You may be seeing the results of a vicious circle here.

      --
      Ezekiel 23:20
    28. Re:And nothing of value was lost by Bite+The+Pillow · · Score: 1

      In my country, and likely yours, I cannot use this because it qualified for copyright protection when you submitted it. So thanks for nothing.

    29. Re:And nothing of value was lost by phantomfive · · Score: 1

      Nice.

      --
      "First they came for the slanderers and i said nothing."
    30. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      Remember when we just wrote functions like this in 5 minutes and didn't worry about it ?

    31. Re:And nothing of value was lost by lucien86 · · Score: 1

      Once spent hours debugging a C++ program only to find it was a single errant piece of white space, one that caused the compiler to misinterpret a math operator in a totally weird way.

      --
      Below the speed of light Special Relativity is one of the most accurate theories in physics - above the speed of light..
    32. Re:And nothing of value was lost by Anonymous Coward · · Score: 0

      I have to say I completely disagree about which is more readable. 1) left_pad uses more understandable function parameter names 2) left_pad simply compares the string length and the min_length, rather than doing a subtract and, in the subsequent line, comparing this to -1, which was initialized a few lines above. 3) left_pad uses a standard array operation rather than dealing with "low-level" nitty-gritty indexing of the string. left_pad is the winner all-around for me.

  9. Re:What a strange name for an IM app... by itamihn · · Score: 4, Insightful

    Everything is one letter away of meaning something in some language.

  10. Lesson for next time ... by BarbaraHudson · · Score: 1, Insightful

    Roll your own libraries. No outside dependencies, and you'll probably leave out a lot of the cruft that is there "because."

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    1. Re:Lesson for next time ... by NotInHere · · Score: 4, Insightful

      So you say everybody should write their own buggy and incomplete reinvention of the wheel?

      Yes, probably most of his libraries aren't longer than 2000 lines of code, and therefore are pretty replaceable, but I don't think that writing your own libraries will decrease the total number of bugs, it will rather increase them.

    2. Re:Lesson for next time ... by 110010001000 · · Score: 1

      No, that isn't possible in 2016. You cannot do development at this point without depending on some libraries. The trick is to create a personal git fork of all your dependencies. So if the original disappears you still have your copies.

    3. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      That's an idiotic lesson to take from this. The better lesson is "use local copies of libraries, try not to rely on remote servers somebody else controls."

      But if you really want to duplicate tens or hundreds of hours of work instead of just saving a copy locally, go for it I guess.

    4. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      Agreed, that's what I was going to say was if you're going to use a library, host it yourself rather than relying on somebody else to host it. If nothing else, it limits your webpage to only being down when your servers are down.

    5. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      What makes you think existing wheels are by definition less buggy than the ones an experienced developer builds by himself?

    6. Re:Lesson for next time ... by adri · · Score: 1

      note: personal fork needs to be a complete repo copy and not a "click button" fork - otherwise when the original repo gets a DMCA complaint, it and all forks are disabled.

    7. Re:Lesson for next time ... by thegarbz · · Score: 1

      I for one welcome 1000 re-implementations of SSL code by people who have no idea :).

    8. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      RTFM. There is a difference between writing your own implementation of a TCP listener, and a few lines of code to left pad a string. Trust me, there is.

    9. Re: Lesson for next time ... by Anonymous Coward · · Score: 0

      The real question is why is that basic stuff not part of the language? Why do you need an NPM module like isArray? This shit cannot happen with any other language.

    10. Re:Lesson for next time ... by BarbaraHudson · · Score: 1

      You should have the skill to do so, or it will bite you in the ass. The function that was in question is trivial to implement. Very trivial. Even in c.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    11. Re:Lesson for next time ... by BarbaraHudson · · Score: 1

      Most of the stuff in kitchen-sink libraries isn't used. It's just cruft waiting around, uselessly taking up space.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    12. Re:Lesson for next time ... by BarbaraHudson · · Score: 1

      I for one welcome applications that aren't dependent on the web - just the internet. Get rid of LOTS of crappy javascript libraries :-)

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    13. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      > buggy and incomplete reinvention of the wheel

      aka every node.js project?

    14. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      I for one welcome commenters who realize that the web is a *subset* of the internet.
      Your comment was akin to saying, "I don't like collies - just animals."

    15. Re:Lesson for next time ... by phantomfive · · Score: 1

      I don't think that writing your own libraries will decrease the total number of bugs, it will rather increase them.

      That kind of depends on how much skill you have as a programmer, wouldn't you say? When you write your own (small) piece of code, you don't have to worry about other people updating things and breaking them for you. Once you get it to work, it works until you change something, that is the advantage.

      In any case, suppose you evaluate the code, and find that it is solid code from a good programmer. The next thing you need to evaluate is their commitment to not breaking things, that is, to backwards compatibility, because otherwise you'll find that the 'solid code' is causing you all kinds of problems.

      --
      "First they came for the slanderers and i said nothing."
    16. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      Because they've been through some amount of testing and use. By definition, anything you build yourself starts at zero hours of testing and use.

      And isn't it a little arrogant to assume you're smarter, by default, than any arbitrary library developer?

    17. Re:Lesson for next time ... by phantomfive · · Score: 1

      No, that isn't possible in 2016. You cannot do development at this point without depending on some libraries.

      It really depends on what you are doing. If you're building straightforward websites, you can easily do it without using external libraries. Getting a parallax effect isn't so difficult that you need to call a function to do it. You need to weigh the complexity of re-writing a library with the cost of maintaining the library: in my experience, if a library would take less than two days to re-implement (one day for writing, one day for testing), it's more cost-effective to do it yourself.

      When you do use someone's library, ask yourself, "Does this library have a commitment to backwards compatibility, or am I going to constantly be fixing things at the whim of the creator?" And of course, you are right, creating a personal fork is the best way (but can be time consuming as well).

      --
      "First they came for the slanderers and i said nothing."
    18. Re:Lesson for next time ... by BarbaraHudson · · Score: 1

      I for one welcome commenters who realize that the web is a *subset* of the internet. Your comment was akin to saying, "I don't like collies - just animals."

      No, the comment was the equivalent of saying "I like dogs - except pugs." Shame you can't tell the difference.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    19. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      So you say everybody should write their own buggy and incomplete reinvention of the wheel?

      No! Getting back to the core of the original article, the point is not that the third party code was unreliable, but that *access* to that code became broken. The solution is pretty simple: maintain a local mirror of any third party code you use.

    20. Re:Lesson for next time ... by Anonymous Coward · · Score: 0

      You realize that means you have to start from the ground up, including writing your own OS.

  11. What is this Kik module and what does it do? by Khyber · · Score: 1

    Also, when was it made, originally?

    --
    Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    1. Re:What is this Kik module and what does it do? by campuscodi · · Score: 1

      The package Kik is for "kickstarting new projects" It was also removed from GitHub, so I don't know when it was actually created. It was a pretty old project. I remember it from a few years back.

  12. Why does your app rely on remote libraries? by Anonymous Coward · · Score: 1

    Why would you ever build an app that assumed the perpetual existence AND availability of remote, opensource, Internet-hosted code?

    1. Re:Why does your app rely on remote libraries? by ledow · · Score: 0

      Yeah.

      What kind of idiots would do that?

      http://www.w3schools.com/tags/...

    2. Re:Why does your app rely on remote libraries? by jlv · · Score: 1
      Someone mod this up.

      It's fine to make your project use externally written libraries and depend upon. I do it all the time. I import those modules I need and *have* a copy of them. They can go away in the rest of the world and *my* project won't ever fall over.

      The problem here is the NPM model of "don't keep it local, always go back to the remote repository". That's just wrong.

    3. Re:Why does your app rely on remote libraries? by dave420 · · Score: 1

      That's not a problem on its own, as some people want to work that way. It's trivial to install your own node local repository which upstreams all requests to the real repositories, which gives you what you want without telling everyone else to do just what you want.

      Choice is good.

  13. A bit of poetic justice for you by nimbius · · Score: 1

    the Kik application referenced has iOS, Android, and Windows Phone implementations all rely on node.js for both overt client side as well as server side processing.

    --
    Good people go to bed earlier.
  14. Great. THAT was that bug I ran into 2 days ago. Fi by Qbertino · · Score: 1

    Installed Babel. Strange Error messages and babel borked and unusable. Same problem popping up all over the interweb.

    Sad. Wanted to start with classes in JS. :-(
    Does anyone know when this gets fixed and what the plan is?

    --
    We suffer more in our imagination than in reality. - Seneca
  15. This is hilarious, open source more than just code by bobo_1968 · · Score: 1

    But it illustrates a key lesson for open source. So much of the project is not just code, it's governance and culture and how to make smart decisions under pressure in a way that respects the people involved. Node failed to do that, the guy pulled his code, they learned a harsh lesson. Let's see what the post-mortem letter is like to see if they really learned what they needed to.

  16. Re:What a strange name for an IM app... by Anonymous Coward · · Score: 2, Funny

    Kik is one letter short of being kike (a racist name for a Jewish person). How brilliant.

    It's also one letter short of being "kick" (an racist action to be performed on a Jewish person). How brilliant.

  17. Anybody surprised? by gstoddart · · Score: 5, Insightful

    I've always thought this interconnected pile of stuff, linking across a bunch of domains was lazy, dangerous, and likely to be very brittle.

    Sorry, but the interwebs have shown me I can't afford to trust arbitrary code from all over the place, which can change at a moments notice, and which I know nothing about.

    If you've created an infrastructure where tons of stuff breaks because some asshole corporation forces some guy to say "fuck you, you can't have my code", you have a terrible mess. What happens if someone adds some malicious code?

    What I find really odd is they've over-ruled him and said "no, you can't un-publish your own stuff, we own it". So, what, they've decided his stuff was too important to still be his own? So he got fucked because of corporate assholes only to have his copyright infringed?

    Jenga tower indeed, it sounds like the state of the art is a bunch of brittle dependencies controlled by a few places, and subject to causing a shit top of things to happen when someone makes a change.

    This reminds me of a company I worked at which had a universal build system ... everything build from scratch every day and wouldn't build if any of its dependencies didn't build. So when some guy broke a components 3 components upstream, nobody could get anything compiled because the system was too stupid to go with the last known good ... and hundreds of developers sat around all day going "but, what do you mean we can't do anything because some guy checked in shit code".

    And that's how JavaScript app development works in 2016.

    Wow, just wow.

    Steaming Heaps of Innovative Technology.

    --
    Lost at C:>. Found at C.
    1. Re:Anybody surprised? by 110010001000 · · Score: 2

      If you used git and used your own local branches for your dependencies you would avoid this issue. You only pull from upstream when there are changes you need to incorporate. It sounds like a lot of people were doing it wrong.

    2. Re:Anybody surprised? by Dutch+Gun · · Score: 1

      It's like someone wanted to embrace continuous integration but forgot the part about being able to quickly and easily roll back from your own source repositories when a mistake is made. Oops.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    3. Re:Anybody surprised? by Luthair · · Score: 1

      Its also worked for Apache Maven for a decade, though central is treated as immutable short of content illegally uploaded.

    4. Re:Anybody surprised? by Anonymous Coward · · Score: 0

      Not that hard to setup something local like Artifactory to cache dependencies though.

    5. Re:Anybody surprised? by Anonymous Coward · · Score: 0

      I've always thought this interconnected pile of stuff, linking across a bunch of domains was lazy, dangerous, and likely to be very brittle.

      If it didn't exist, then what would all the low-quality programmers, whose only skill is gluing other peoples' libraries together, and equally talentless H1-Bs do for a living? They'd be starving on the streets. Won't someone think of the clueless?

    6. Re:Anybody surprised? by jareth-0205 · · Score: 3, Insightful

      What I find really odd is they've over-ruled him and said "no, you can't un-publish your own stuff, we own it". So, what, they've decided his stuff was too important to still be his own? So he got fucked because of corporate assholes only to have his copyright infringed?

      *sigh* We really shouldn't still be having this conversation about how open source licensing works, but OK: They don't claim to own it, but they can redistribute it under the same licence that it was being distributed under. His copyright isn't infringed, it just remains distributed under the non-reversible licence that he chose to distribute it under in the first place.

    7. Re:Anybody surprised? by Anonymous Coward · · Score: 0

      I don't even like that my company insists on loading jquery from google (for bandwidth and to bow to their rule so we don't get buried in the results). Smart and efficient as it may seem to be to use what may seem to be ubiquitous and everlasting, I just don't like referencing anything external. The web is a fickle place where too many supposed mainstays go tits up on a whim.

      If it were up to me, we'd load local copies (maybe not even use jquery at all), but I'm just a cog with unpopular opinions. At the very least we aren't loading any 'latest' libraries so we don't have to deal with sporadic deprecations.

    8. Re:Anybody surprised? by Anonymous Coward · · Score: 0

      But semantic versioning!

    9. Re:Anybody surprised? by Luthair · · Score: 1

      I've always thought this interconnected pile of stuff, linking across a bunch of domains was lazy, dangerous, and likely to be very brittle.

      That isn't what this is about at all

    10. Re:Anybody surprised? by drinkypoo · · Score: 1

      That isn't what this is about at all

      WHAT? Yes, yes it is. If people weren't linking to external javascript libraries then someone unpublishing their library doesn't cause sites to break.

      If nobody did that, then this is a non-story, because the component is trivially replaced.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    11. Re:Anybody surprised? by DutchUncle · · Score: 1

      ... universal build system ... everything build from scratch every day and wouldn't build if any of its dependencies didn't build.

      I worked under a similar philosophy at one place (maybe a little less complete). 1. Anything wrong was noticed IMMEDIATELY. 2. Everyone knew that their bad check-in would shut down everyone else, so we were cautious enough to confirm our work before doing the check-in, and maybe do a confirmation check-out-and-build afterwards just for paranoia's sake. Yes, it's overhead, and so is "Measure twice, cut once".

    12. Re:Anybody surprised? by Anonymous Coward · · Score: 0

      You are technically correct, the best kind of correct!

      Dial down the aspergers a little bit and realize that the GP hasn't used the exact precise terminology to describe his complaint but he's still absolutely right.

      Copyright isn't the issue, its the developer's NPM account. They arbitrarily took control of his account which, again, I'm sure is technically within their rights due to fineprintlawyering but it is still a very clear violation of the social contract between the developer and NPM.

  18. Is Rust vulnerable to the same problem? by Anonymous Coward · · Score: 0

    My big question is, Is Rust vulnerable to the same kind of problem?

    Rust has Cargo which is similar to NPM.

    If Cargo and Rust are vulnerable to this kind of problem, why wasn't it caught earlier? Isn't Rust supposed to be an ultra-safe and ultra-secure programming language?

    1. Re:Is Rust vulnerable to the same problem? by Lisandro · · Score: 1

      I guess? Every language with a package manager (like Python's pip) is "vulnerable" to someone pulling the rug on a project.

    2. Re:Is Rust vulnerable to the same problem? by mattventura · · Score: 1

      From what I've noticed in Python, the most important packages tend to be available in a distro's package manager anyway. But packages (in both Python and node) can manually un-break such dependency issues by directly specifying the repo location of the package rather than relying on pip/npm.

    3. Re:Is Rust vulnerable to the same problem? by Darinbob · · Score: 1

      Most of them won't break overnight though. JavaScript doesn't store its routines locally on your computer so every single time one of these library routines are used it is redirected the site that implements that routine. Whereas with Python using the package manager copies the code to your machine. If the library code later vanishes you can still reimplement it before hordes of web users start complaining that the world is ending. It would cause problems if someone goes and downloads your utility and follows the instrudtions to "install these packages first" but that's a minor problem compared to every user of the code suddenly finding that it has stopped working.

  19. OPC by Anonymous Coward · · Score: 1, Insightful

    This is what can happen when you use Other People's Code.

    The more a project says "requires" something other than the language it's written in, you're making the risks worse.

    The better the programmer, the less OPC they will use.

    The best programmers are known by the announcement in their projects that their code was black box and has no external project dependencies. If you must use OPC, you should be looking hard for such a statement.

    Of course, today, most "programmers" aren't deserving of the name in the first place. Glorified scriptkiddies at best.

    1. Re:OPC by Njorthbiatr · · Score: 4, Funny

      Yeah, real programmer treat integers as byte arrays.

      You kids and your new fangled pythons don't know how good ya'll have it.

    2. Re:OPC by tripleevenfall · · Score: 1

      What we really need is the barriers to coding to be higher.

      Don't shoot, I'll get off your lawn now.

    3. Re:OPC by Delwin · · Score: 5, Insightful

      ... I hope you're kidding. Don't reinvent the wheel - if someone else has already written the code then there's no reason to re-write it. That's a huge waste of man hours. Instead you should package all dependencies in such a way that they can be retrieved without requiring the other guy to still be offering it. Yes, that means a snapshot of the version you rely of should be in your repository because you also can't guarantee that a given version will be available as long as your own project is.

    4. Re:OPC by Luthair · · Score: 5, Insightful

      The AC is too busy to respond, he's currently fixing the 9999999 security flaws in his hand-rolled SSL library.

    5. Re: OPC by Anonymous Coward · · Score: 3, Funny

      No, real programmers use a magnetized needle to manipulate bits in memory directly. #notruescotsman

    6. Re:OPC by Anonymous Coward · · Score: 0

      ... I hope you're kidding. Don't reinvent the wheel - if someone else has already written the code then there's no reason to re-write it. That's a huge waste of man hours.

      Biggest load of post-rationalization bullshit ever, proselytized by the laziest most clueless 'generation' of duh-velopers in the history of humankind.

      We are supposed to stand on the shoulders of giants. Your not supposed get down on your knees and 'suck it' and then make claims about how hard you work.

      Don't worry though, I've given up actually, because it's quite clear lazy people will never get it, and will push this crap to their dying breath. And oh, I meet my deadlines just fine, thank you.

      Captcha: revert

    7. Re:OPC by Anonymous Coward · · Score: 0

      In this one particular case, it's easier to just write a left pad function.

    8. Re:OPC by Anonymous Coward · · Score: 0

      Yeah, real programmer treat integers as byte arrays.

      You and your newfangled data types, it's all bit sequences to Real Programmers(TM)!

    9. Re:OPC by Anonymous Coward · · Score: 3, Funny

      he's currently fixing the 9999999 security flaws in his hand-rolled SSL library

      Well, I suppose that still means his library has fewer flaws than OpenSSL does, so maybe he is doing something right.

    10. Re:OPC by mrchaotica · · Score: 4, Insightful

      Using other people's libraries is fine; you just need to keep your own copy of them instead of dynamically-linking (or hotlinking, in the case of Javascript web shit).

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    11. Re:OPC by pla · · Score: 4, Insightful

      I hope you're kidding. Don't reinvent the wheel - if someone else has already written the code then there's no reason to re-write it.

      I hope you're kidding, and the present situation makes an excellent example of why.

      Tracking down Open Source dependencies has become a complete nightmare, in many cases, because far, far too many devs unfortunately take your advice to heart. No, we shouldn't roll our own bigmath libraries, or nosql implementations. But what lazy-assed devs would import an external dependency for something as trivial as padding a string? Oh, right - Apparently thousands of them. Gee, I wonder why the business world doesn't take us seriously, despite offering them our work for the low, low price of "free"?

    12. Re:OPC by Anonymous Coward · · Score: 1

      Yeah, I've seen the kind of shit people like you do to "meet your deadlines" while rolling your own implementation of dozens of things that have already been done better. I wouldn't let it run on a middle school lab.

    13. Re: OPC by mrchaotica · · Score: 1
      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    14. Re:OPC by mrchaotica · · Score: 1

      The Story of Mel

      (I'd post the full text, but Slashdot complains that it has too few characters per line. Hey Whipslash -- fix it, please!)

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    15. Re:OPC by hcs_$reboot · · Score: 0

      Seriously, real programmers do not produce such crappy code
      var i = -1; // unnecessary var, assigned far ahead from use
      len = len - str.length; // len -= str.length
      while (++i < len) { // while (len-- > 0)

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    16. Re:OPC by mwvdlee · · Score: 2

      Because iterating backwards is the same as forwards?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    17. Re:OPC by Anonymous Coward · · Score: 0

      Yeah, I've seen the kind of shit people like you do to "meet your deadlines" while rolling your own implementation of dozens of things that have already been done better. I wouldn't let it run on a middle school lab.

      Yeah, I've also seen posing amateurs pull in entire libraries for exactly one function, uh, just like left_pad(). So after pulling in dozens of libs, it always ends up a big bowl of spaghetti that is not even worthy of getting to a deadline. And also yeah, it's not others fault you can't read code.

      Your desperate attempt at (phycological) projection says far more about you and your ilk, than it does about me. Ever heard of the "yagni principle"? Of course not, script-kiddies never have.

      Btw, my observations are from real life. I worked with a 'crew' of script-kiddies who actually did refuse to use debuggers. None of them work there anymore, and none of their JS library ridden code ever made it to production. Imagine that. All but one, were in fact, nothing but posers. Sound familiar?

    18. Re:OPC by Curunir_wolf · · Score: 2

      ... I hope you're kidding. Don't reinvent the wheel - if someone else has already written the code then there's no reason to re-write it. That's a huge waste of man hours. Instead you should package all dependencies in such a way that they can be retrieved without requiring the other guy to still be offering it. Yes, that means a snapshot of the version you rely of should be in your repository because you also can't guarantee that a given version will be available as long as your own project is.

      Exactly. And this is the very reason we went to using Maven and a private Nexus server. Nexus will go out periodically and find all the security patches, bug fixes, etc. (and upgrades, if you want them) for all of your dependencies, and keep a local copy. If the upstream repository goes dark (this actually happens a lot), you still have a copy of the latest version.

      I'm sure there are other similar system that do the same thing. How are people managing their "nuget" packages?

      --
      "Somebody has to do something. It's just incredibly pathetic it has to be us."
      --- Jerry Garcia
    19. Re:OPC by Anonymous Coward · · Score: 0

      I've got 9999999 problems but heartbleed ain't one.

    20. Re: OPC by Anonymous Coward · · Score: 0

      That one person was you? You were the poser in the group? I'm confused. No I'm not, you are the poser.

    21. Re: OPC by Anonymous Coward · · Score: 0

      Actually, vars are hoisted to the top of the function block scope in JavaScript, so it's often preferred to declare or initialise vars right at the top. Still useless as you point out, though.

    22. Re:OPC by ripvlan · · Score: 2

      real programmers swipe code from SO and compile it without attribution - saying "I wrote all of this"

    23. Re:OPC by networkBoy · · Score: 2

      I have an SVN repo on the same server that hosts my sites. All code is linked from there for js stuff.
      I have a private side as well that I use to deploy all server side code from. Works quite well.
      -nb

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    24. Re:OPC by parkinglot777 · · Score: 2

      The script shouldn't use while loop at all. Instead, it could be replaced with a simple for loop instead because the loop number is defined.

      for (var i=0; i<(len-str.length); i++) { ... }

      Back to the topic, I think the word kik is a trademark - http://tmsearch.uspto.gov/bin/... - and it is still enforcible. If you look at the Good and Services, it may be the reason why the developer should not use the name or he could be sued...

    25. Re:OPC by parkinglot777 · · Score: 1

      This is what can happen when you use Other People's Code.

      The issue here is NOT about using other people's code, but it is from linking source that is on the Internet. It seems to be popular nowadays. If all codes are local, then there should not be a problem of this type. However, directly linking your work with others on the Internet would have this kind of issue. In other words, if something happen with the source you are linking, your page/app would fail and you can't simply fix it for them (unless you have a copied of their code in your local storage).

    26. Re:OPC by Aighearach · · Score: 1

      It amazes me how many people want to both use external resources in their project, and then also don't want any responsibility for managing those externalities. In this case, they were just blindly trusting where there was no system to technologically preserve trust. It was just a hope and a prayer.

      This is why distros do their own package management, and don't let upstream devs delete packages directly from repos. This was already a known risk. The question now is, will people who made this mistake admit it and change, or just call names and blame others and remain exposed in the future?

    27. Re:OPC by Aighearach · · Score: 1

      When I wanted "my own" bigmath library, I just took one of IBM's and wrote my own wrappers for it. I didn't want to re-invent the bugs, but I certainly wanted to be in full control of any applied code changes, and the wrapper semantics, etc.

      The problem with "waterfall" being seen as a bad word is that a lot of people are wandering week to week without a master plan, without longterm planning that takes responsibility for a properly layered architecture. Instead, they just mash together plugins and libraries with different conventions, assumptions, and semantics. It might indeed make it easier to work with difficult website clients who want to fiddle-faddle the requirements every week, but even there when you push that crap into your underlying support layers you're just burying mines and often not even mapping them.

      Don't reinvent the wheel; don't re-implement basic algorithms. However, always check the gearing for a new vehicle, don't just re-use any older gear that will fit. And if the wheel needs an adapter plate, at least consider building a revised wheel instead.

    28. Re:OPC by farble1670 · · Score: 1

      So true. And you shouldn't use OSS for the same reason. It's OPC, and puts you at risk. But if no one uses OSS, then what's .... the ... point? Oh crap.

    29. Re:OPC by phantomfive · · Score: 1

      Some CPU architectures have a test-if-zero opcode, so iterating down to zero can save an instruction or two on every loop. In most cases the difference is unlikely to be measurable, something on the order of a nano-second for a single loop

      --
      "First they came for the slanderers and i said nothing."
    30. Re: OPC by Anonymous Coward · · Score: 0

      Well reading the license agreement the issuer can at any time make changes to the license and disallow your use of it. I've actually done that to a guy, I hated what he used my code for. He was a dick. He couldn't continue using the code, so his company couldn't provide the agreed service to their clients. One of the clients sued , he lost his assets when he couldn't pay the bank. For a bit it looked like he might go to jail but fate had other plans. Last I heard was he became a druggy and then found Jesus. I would have preferred him getting raped in jail. God I hate script kiddies. Things probably would have worked out the same for him (it takes a lot for someone's life to collapse like that) but it gives me a warm fuzzy feeling that I was the one who had a hand in that.

    31. Re:OPC by K.+S.+Kyosuke · · Score: 1

      Don't current large microarchitectures (that include current x86/AMD64 breeds) include logic to process common patterns such as "test against a value, and then perform a conditional jump" very quickly anyway?

      --
      Ezekiel 23:20
    32. Re: OPC by Anonymous Coward · · Score: 0

      Keep in mind that on x86 instructions take different amount of time.

    33. Re:OPC by Cro+Magnon · · Score: 1

      OPC, IMO, is fine. But when OPC is on OPS (other persons server), that when you run into trouble.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    34. Re:OPC by lgw · · Score: 1

      Effectively all processors have a test-if-0. Almost all processors (anything modern code is likely to touch) have a test-against-value instruction. The former was a little bit faster on some CPUs. None of that matters at all on modern instruction pipelining, out-of-order execution CPUs.

      This was an important thing 20-30 years ago. These days, the optimizer will figure out what's better (or in some cases the microcode will), and hand-optimization of this kind is pointless, since the optimizer will do what it wants whichever way you type it.

      Many older C programmers still code exactly the same way they did 20-30 years ago, oblivious to how the world has changed. I'm sure that will be true of Java programmers soon enough (once people have been doing it for 20-30 years).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    35. Re:OPC by Anonymous Coward · · Score: 0

      It is still bullshit.

      Eclipse being a prime example.

      As long as there is no product confusion there isn't a trademark violation.

    36. Re:OPC by Anonymous Coward · · Score: 0

      The problem was not "import an external dependency". The problem was failure to store that dependency in a permanent fashion in your build environment rather then constantly fetching it from upstream.

    37. Re:OPC by phantomfive · · Score: 3, Insightful

      You got me interested, and with efficiency you can never be sure until you time it, so I wrote a program to time it. Looping from zero to a billion, with an assignment inbetween. Then I recompiled and ran it again, this time going backwards to zero. Here are some times (in milliseconds):

      Going up: 32453 / 32536 / 32232 / 32604
      Going down: 32587 / 32416 / 32216 / 32466

      There seems to be no difference at all in either direction. Code is here.

      --
      "First they came for the slanderers and i said nothing."
    38. Re:OPC by phantomfive · · Score: 1

      Discussed further in this direction.
      You never know for sure what a compiler is going to do. Not long ago I found out this is rather slow compared to hoisting the strlen() out of the loop:

      for(int i=0;i<strlen(s);i++) {

      I thought the compiler would optimize it, but neither GCC nor clang did with any options I could find.

      --
      "First they came for the slanderers and i said nothing."
    39. Re:OPC by ChrisMaple · · Score: 1

      But what lazy-assed devs would import an external dependency for something as trivial as padding a string?

      Almost all C programs have as external dependencies many of the standard libraries. Many of the functions in the standard libraries are trivial. You seem to be proposing that C programmers should rewrite the portion of the standard libraries they use, each time they use them.

      --
      Contribute to civilization: ari.aynrand.org/donate
    40. Re:OPC by mhotchin · · Score: 1

      Probably depends on what you are doing with 's' in the loop. For example, if 's' is used as the parameter to a function, then it can't be hoisted, since the function *might* change 's' to be a different length.

    41. Re:OPC by Anonymous Coward · · Score: 0

      This was an example of taking a runtime dependency on the future actions of an untrustworthy developer. They should have made the dependency static (eg. by including a copy of the function locally), and had a system to merge in any updates from upstream.

      This is not a reason to re-write code. It's a reason to do dependencies properly.

    42. Re:OPC by K.+S.+Kyosuke · · Score: 1

      I would have thought the compiler can't do anything with it even if it weren't used as a parameter anywhere (excepting the strlen() call, of course) simply because even if the compiler understood what strlen() does, it can't infer memory contents at compile time in this case. Any other code placing a binary zero somewhere in memory could effectively shorten the string by hitting it in the middle. The s is not the only way of accessing the data in question.

      --
      Ezekiel 23:20
    43. Re:OPC by phantomfive · · Score: 1

      It didn't. At first I tried using it as a parameter to a function, then I changed it so it wasn't. There is no way I could think of to change it that would cause it to be optimized.

      --
      "First they came for the slanderers and i said nothing."
    44. Re:OPC by phantomfive · · Score: 1

      That's the use case the 'volatile' keyword was created to solve.

      --
      "First they came for the slanderers and i said nothing."
    45. Re:OPC by mwvdlee · · Score: 1

      The point is not whether one is faster, the point is that the little snippet provided by the GP does nothing in itself, therefore it is missing significant code.
      We're not seeing the part that actually does something with the i and/or len variables. It's as likely as not that the direction of the loop makes a difference to what is inside the loop.
      Simply optimizing the loop construct like this, without acknowledging what happens inside the loop, is a reliable way to shoot yourself in the foot.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    46. Re: OPC by Anonymous Coward · · Score: 0

      C has exactly one standard library. And, oh, it's standard, so we, programmers, just use it.

    47. Re:OPC by SharpFang · · Score: 1

      The compiler won't optimize it because it doesn't know what strlen() is at the compile time. It just knows it's a function that takes a string and produces an integer, but for all it's worth it could be listening to network traffic and returning the number of occurrences of characters provided by that string, which would be changing with each call of the function = every iteration.

      Only at linking time the actual assembly responsible for strlen() is included (if not dynamically linked) and then it's far too late for such optimizations.

      This is one of reasons why projects like SQLite bundle all the source files into one huge file and compile it whole, instead of producing thousands of object files and then linking them. This allows the compiler to perform far deeper optimizations as it knows all the functions that could be inlined, all the loops that can be unrolled, and all the code duplication that could be de-duplicated when it still matters.

      Just try:

      int f1() { static int x = 0; return ++x; }

      int f2() { int sum=0; for(int i=0; i100; i++){ sum += f1(); }; printf("sum: %d",sum) }

      Make these functions in two different files, separately compiled, with a forward declaration of f1 in the file of f2, and linked later. You'll get O(n) time depending on the number of iterations. Then put them both in a single file and compile again. You'll have O(0). The compiler will not even inline the function. It won't even unroll the loop. It will precalculate the result and replace the whole body of f2 with equivalent of printf("sum: %d",5050);.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    48. Re:OPC by SharpFang · · Score: 1

      > Well, I suppose that still means his library has fewer flaws than OpenSSL does

      Just wait till he's done with the 9999999 security flaws he's fixing currently.

      99 little bugs in the code
      99 little bugs in the code
      Take one down, patch it around
      117 little bugs in the code.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    49. Re:OPC by SharpFang · · Score: 1

      Personally, I'm finding it very annoying if I hear I have to pull a 20KB library, update the build, include the library, initialize the library object and call the object's method, just to acquire functionality I can write myself in 5 lines of code.

      Yes, reinventing the wheel may be preferable if your alternative is to manage a cargo ship of car parts (including wheels) from Korea, just because you need a single wheel.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    50. Re:OPC by phantomfive · · Score: 1

      The compiler won't optimize it because it doesn't know what strlen() is at the compile time.

      The compiler can and does recognize functions in the standard library. For example, if you call printf() without including stdio.h, in clang it will give you this error:

      warning: implicitly declaring library function 'printf'

      Which is a different error than you would get for a normal undefined function.

      --
      "First they came for the slanderers and i said nothing."
    51. Re:OPC by K.+S.+Kyosuke · · Score: 1

      "Volatile" can't possibly have deep properties with respect to pointers passed to functions, never mind the fact that it works in exactly the opposite way. The only real way of solving this is a reasonable data model, for example immutable values and definitely no pointer arithmetics. Otherwise you can't assume that a function applied to a value returns always the same number.

      --
      Ezekiel 23:20
    52. Re:OPC by phantomfive · · Score: 1

      "Volatile" can't possibly have deep properties with respect to pointers passed to functions, never mind the fact that it works in exactly the opposite way.

      Things marked non-volatile can be considered non-volatile by the compiler. That's the point of the keyword.

      --
      "First they came for the slanderers and i said nothing."
    53. Re: OPC by rthille · · Score: 1

      I mapped that to F-11

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    54. Re:OPC by hcs_$reboot · · Score: 1

      My point is not that the code is buggy, the original few lines are in TFS here. And the code works.
      The point is that even such a simple padding algorithm uses unnecessary variable and, all in all, is not well written.

      Aaah, have to explain everything ..

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    55. Re:OPC by K.+S.+Kyosuke · · Score: 1

      And that is sufficient to influence the behavior of strlen(), or a loop with it? I think not.

      --
      Ezekiel 23:20
    56. Re:OPC by phantomfive · · Score: 1

      Clearly it isn't in practical terms. But at least one expert compiler writer has told me that it should be optimized automatically.

      --
      "First they came for the slanderers and i said nothing."
    57. Re:OPC by Anonymous Coward · · Score: 0

      whoosh

      Way to misunderstand the comment.

      He said the compiler doesn't know what strlen() returns at compile time, implicitly since he mentioned that the compiler will know what strlen() is.

    58. Re: OPC by vilanye · · Score: 1

      According to some posters here it is still "other people's code".

      If you are against other people's code, not even C's standard library is usable since it has bugs and many implementations and versions.

      Using other people's code is a good thing, as long as it is tested and you don't do something stupid like not store it locally.

      What happened in the article only impacts people that pulled the code remotely. If you already had the code before he pulled it, you obviously still have it and it still works.

    59. Re:OPC by vilanye · · Score: 1

      It is amazing how so many people don't get this.

      It seems to have started with people linking to external JS libraries in HTML files instead of serving them from their server and things rolled downhill from there.

      I use my kiln account to store and manage my dependencies.

    60. Re: OPC by Anonymous Coward · · Score: 0

      You can't retroactively change licenses.

    61. Re:OPC by PatientZero · · Score: 1

      No, we shouldn't roll our own bigmath libraries, or nosql implementations. But what lazy-assed devs would import an external dependency for something as trivial as padding a string?

      So you're okay with risking the sudden loss of a multi-thousand line library, but God forbid someone risk having to rewrite eleven lines?

      Obviously, the solution is to make a copy of all dependencies. Problem solved.

      --
      Freedom to fear. Freedom from thought. Freedom to kill.
      I guess the War on Terror really is about freedom!
    62. Re:OPC by Anonymous Coward · · Score: 0

      The compiler can and does recognize functions in the standard library. For example, if you call printf() without including stdio.h, in clang it will give you this error:

      warning: implicitly declaring library function 'printf'

      Which is a different error than you would get for a normal undefined function.

      Lexing and parsing is generally far removed from optimization.

    63. Re:OPC by Anonymous Coward · · Score: 0

      You should have kept reading.

      It just knows it's a function that takes a string and produces an integer

      The compiler doesn't and can't know the value of strlen()

    64. Re:OPC by SharpFang · · Score: 1

      While - after very specific additions - the compiler could be taught "strlen is the kind of function, that fed a constant string returns a constant, and so could be moved outside the loop", the case is not nearly as simple, especially if you'd need to trace the string to origin.

      Imagine this: it's a multi-threaded program. One thread affects the data stored as string. The other monitors it for a timeout. The timeout is proportional to the data size (a common approach; max time to process a unit of data times number of units of data). Since the data can be truncated on the fly, the timeout value may grow or shrink, regardless of the clock ticking in the meantime, one tick per iteration (that contains some 'sleep' inside). In this case you WANT the strlen evaluated each iteration, to make sure the string didn't shrink below the timeout value.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  20. Kik's briefs told him to take down the module by rudy_wayne · · Score: 2

    Damn bossy underwear!!!

  21. Payback time? Sue Kik by Anonymous Coward · · Score: 0

    For all those who had their modules broken, get a class action lawsuit and sue Kik.

    They want to use their landsharks to be bullies? Well, bully them right back!

  22. Re:Great. THAT was that bug I ran into 2 days ago. by __aaclcg7560 · · Score: 2

    Does anyone know when this gets fixed and what the plan is?

    You could try to read the article.

    To fix the internet, Laurie Voss, CTO and cofounder of NPM, took the "unprecedented" step of restoring the unpublished left-pad 0.0.3 that apps required. Normally, when a particular version is unpublished, it's gone and cannot be restored. Now NPM has forcibly resurrected that particular version to keep everyone's stuff building and running as expected.

  23. Re:What a strange name for an IM app... by gstoddart · · Score: 5, Funny

    And your nick is one character away from including the word "reamer", and two letters away from being "screamer".

    It is simply not possible to exclude every word which is one or two letters away from offending some random idiot who thinks being one letter away is the same thing.

    People can give something a name which is totally innocuous to them and which someone else is going to get into a hissy fit about.

    So, what's more likely, he had no idea some random guy on the interwebs would make the comparison to a racial slur, or he used a word which sounded cool to him?

    --
    Lost at C:>. Found at C.
  24. D'oh by tekrat · · Score: 2

    If you write *anything* that assumes the perpetual existence of a linked library from somewhere on the internet, you deserve what you get.

    Most kids these days don't remember a time where internet access required a dial-up modem -- or it wasn't a 100% certainty it would be available.

    --
    If telephones are outlawed, then only outlaws will have telephones.
  25. Re:Unavoidable if you're LAZY by Lisandro · · Score: 4, Insightful

    Nonsense. Laughable, even. Quality programmers can build anything. If they're wise, they will.

    I guess you never worked with code then, eh? It is not about whether they can or cannot - is about the resources involved. Writing and testing a production-level software library is not a trivial task. It takes time.

    Again, this does not apply to string padding, which is usually resolved on a couple lines of code on the language of your choice...

  26. JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 3, Insightful

    It's fucking unbelievable how much trouble JavaScript has caused for so many people.

    Let's ignore how fundamentally broken it is, as a programming language, in almost every respect. That includes its fucking awful type system, its total lack of real OO (sorry, prototypes are complete shit), its ultra shitty standard library (which is why NPM and this problem exist in the first place), and similar problems.

    JavaScript has allowed too many unskilled cranks to shit out way too much broken code. It was one thing when they did it client-side, where it was isolated. Now it's being done server-side, and it's a motherfucking disaster!

    Worse, JavaScript has enabled the web advertising industry. JavaScript makes it trivial for them to track your every move online. If you don't want to fall victim to it, then you have to waste your time disabling it everywhere by default, and selectively enabling it where you need it.

    JavaScript needs to go.

    If you really need to use a scripting language server-side, use Lua, or Python, or even goddamn Tcl. All three of them are better than JavaScript in every way.

    1. Re:JAVASCRIPT NEEDS TO GO! by rwven · · Score: 2

      JS/Node/NPM are the new PHP.

    2. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      You're adorable. No matter how much you bitch about javascript, guess what - it's not going anywhere.

    3. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      The only "unskilled crank" in this conversation is you, Stallman sucker.

    4. Re:JAVASCRIPT NEEDS TO GO! by Penguinisto · · Score: 4, Insightful

      ...and Docker is the new Solaris Zones. Err, okay?

      The point isn't that node.js sucks (personal opinion - it kinda does when mishandled, just like PHP), it's that like any tool, you have to use it correctly and try not to make it do shit that it wasn't designed to do.

      We see this shit in Puppet-land, where so-called DevOps people rely on external github (not puppetforge, but random github) modules to run their servers. They never pull a local copy, but instead use something like Librarian to pull it in dynamically... never realizing that if the guy maintaining $randomModule says 'fuck it' and pulls his project (or even just breaks his module), suddenly you're stuck with a broken model and a potential outage.

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    5. Re:JAVASCRIPT NEEDS TO GO! by null+etc. · · Score: 1

      If you really need to use a scripting language server-side, use Lua, or Python, or even goddamn Tcl. All three of them are better than JavaScript in every way.

      Wow, I must be using a different version of Lua than you. The version of Lua that I'm using (5.3.2) is like JavaScript, except that it uses meta-table chaining for object-oriented programming, instead of JavaScript's prototype chaining.

      Oh, didn't you know, Lua doesn't have "real OO" (which seems to be one of your gripes against JavaScript.) That's right, YOU HAVE TO IMPLEMENT YOUR OWN OO STRATEGY IN LUA.

      Dork.

    6. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      Sorry dude, Your troll license is hereby revoked. You just got served by a plumber!

    7. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      Why the actual titty-f&%@ing hell was this revisionist nonsese upvoted?

      Prototyping is provably better than class objects in every way, especially on resource use. Sorry, you are (provably) wrong.
      JavaScript, the one you probably know, is not JavaScript now. That died forever ago.
      JavaScript is perfectly fine now. The only issues are some hardware crap to attempt a replace of Flash, and some whiny developers moaning about file formats for VIDEO STILL.
      Web Ads existed long before JS was used and useful. JS ads are extremely minor compared to static or flash ads. JS Ads are only just now becoming a thing, and they will quickly die off because everyone hate things like video ads and knows how to block them since adblocking has become popular.

      The only people that see it as fundamentally broken are retards that do not know how JavaScript actually works and demanded syntactic sugar because "whaa it's too hard!".
      People that learn JS through bullshit sites like W3Schools and copy-paste similarly crap code from Stackoverflow are the problem.
      People that don't read the actual JS specification are the problem.

      There is worse things on the server-side, like any server that uses that hilarious disaster called PHP that absolutely does need a library to function because PHP, BY DESIGN, is insecure and it still has not been fixed because idiots want to keep backwards compatibility.
      Unless you have knowledge of the entire spec, and all these different flags and server setups, your code is almost certainly insecure somewhere. Don't get me started on SQL. Holy fuck.
      At least JS 1.6 is dropping backwards compatibility. All those Stackoverflow skiddies are going to be so lost.

      Visual Basic has done more damage to the entire industry, as well as VBA. But none of these have come close to idiots being allowed online without knowing some basics of how computers work, as well as Microsoft hiding file extensions for a decade by default, which caught out even (supposed) smart people.
      There are worse disasters written in C and C++, more than every JS project COMBINED.
      The amount of buffer overflows even today is embarrassing. The amount of checking NOT done on user input today is embarrassing. No JavaScript needed.
      There are well over a 100 million machines online right now that are completely insecure via server-scripts alone.

      Sorry, but no, most JS on sites is not broken or insecure. The community are the problem, the idiotic community depending on the cloud.
      Cloudtards do not make JS broken. Your opinion is invalid because that is the basis of your argument.
      If you were to take out the package managing server for every Linux Distro, how would you feel then?
      How would you feel if Google just up and left? Got your bookmarks ready?
      Human error is the only problem.

    8. Re:JAVASCRIPT NEEDS TO GO! by Luthair · · Score: 1

      Lets be honest, server side scripting was already capable of tracking your every move.

    9. Re:JAVASCRIPT NEEDS TO GO! by HiThere · · Score: 1

      But this kind of unsustainable dependency management is baked into Go and Rust, and even considered an advantage.

      In fact, the same thing is baked into every system that depends on the cloud.

      N.B.: If you don't find this trivially obvious, then you're abstracting from this example in a different way than I am. The basic problem is depending on access to particular remote resources at runtime. The specific nature of those resources is almost irrelevant.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    10. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      A-FUCKINGMEN!
      I dropped JavaScript years ago and went to Python - FAR superior scripting language!

    11. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      > Lua, or Python, or even goddamn Tcl. All three of them are better than JavaScript in every way.

      So wrong.

      TCL is one of the worst languages ever invented.
      python is a horrible compromise mess that cant decide whether it is static or dynamic, strict or loose.
      Lua has nearly no usage.

      JS is very close to lambda calculus, and makes writing state machines easier than any other language yet devised.
      Its truly one of the best dynamic languages.

      If you dont like JS, the problem is in you.

    12. Re:JAVASCRIPT NEEDS TO GO! by ShawnX · · Score: 1

      That's why we don't let developers manage/code any puppet and we run our own yum repos (for version specific packages), the Platform DevOps side :)

      --
      Everyone wants a Tux in their life.
    13. Re:JAVASCRIPT NEEDS TO GO! by drinkypoo · · Score: 1

      Lets be honest, server side scripting was already capable of tracking your every move.

      Before JS you could just change your IP and maybe one or two browser settings and be anonymous again. After JS, you can't do that any more. So... wrong.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    14. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      > The point isn't that node.js sucks (personal opinion - it kinda does when mishandled, just like PHP), it's that like any tool, you have to use it correctly and try not to make it do shit that it wasn't designed to do.

      This argument needs to die, it's like trying to keep a demented rabid lion as a pet and saying "It doesn't suck as a pet, it's just when you mishandle it you have problems" as if everyone who has been eaten and killed by it simply mishandled it, rather than the simple fact it's a fucking wild uncontrollable animal where the possible triggers of it going native and eating you are so numerous that no person could ever hope to account for them all all the time, and when alternatives are available, like a gold fish, that isn't going to eat you, ever, because it's tame, and easy to put down if it even fucking tries.

      And you know what? This article fucking proves how fallacious "You're doing it wrong" argument is for a language like Javascript (or PHP) - here we have the fucking goddamn masters of Javascript, people who live it, breathe it, and get paid for it being bitten on the ass by it. If even the people who have spent the most time with it and are the greatest experts in the field on it can't get it right then how the fuck can anyone else be expected to? Other languages just haven't had these problems, because they're designed for large scale software development from the outset, everything in Javascript is tacked on and when it inevitably goes wrong, it goes horribly fucking wrong as it has here.

      The "It's fine because I've never worked with any system even remotely worthwhile to witness the failings of this technology" fallacy is stupid and tiresome, so please, drop it.

    15. Re:JAVASCRIPT NEEDS TO GO! by dave420 · · Score: 1

      Nearly. Header fingerprinting doesn't rely on Javascript and can deliver some excellent results. You are both right to a certain degree - it was (and still is) possible to track people server-side. It was also possible to change some settings to screw that over. It was always possible to use other aspects to track individual users across a site regardless of their desire for anonymity.

    16. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      PHP), it's that like any tool, you have to use it correctly and try not to make it do shit

      I was wondering how long it would take for the "right tool for the job" clowns to get out of their clown-car.

      http://blog.codinghorror.com/content/images/uploads/2012/06/6a0120a85dcdae970b017742d249d5970d-800wi.jpg

    17. Re:JAVASCRIPT NEEDS TO GO! by Anonymous Coward · · Score: 0

      If you can make something "do shit that it wasn't designed to do" you can call that thing shit.
      This, of course, leads to each thing being called shit when the next thing comes out to replace it and eliminates those shit things from the old thing. Thus, everything is shit. You live in a world of shit.

  27. The world is better off without that code by Anonymous Coward · · Score: 0

    That's the most amatuerish piece of crap code I've seen in a while. Shame
    on the JS people for tolerating such an implementation! It's about the most
    inefficient solution you could contrive without simulated annealing.

    This is a new interview question: "write left_pad() for me." If I get shit like
    the code in dispute, NO JOB!!

    1. Re: The world is better off without that code by Anonymous Coward · · Score: 0

      If it's so shit then show us a better example dick head. Right now all I am hearing is a bunch of bullshit coming out of the side of your mouth.

      Paste the code or stfu.

      Also, why do you think the code is so bad? Please give us some examples. Enlighten us please with your infinite wisdom.

      Dickhead.

  28. Popular has never meant "smart" by fyngyrz · · Score: 1

    It also prevents versionitis: where the package didn't go away, but was changed in such a way that it no longer works the way it used to.

    Your stance may not be "popular", but it is 100% correct — and very smart.

    We can still be hosed by irresponsible changes in the underlying language, and/or irresponsible changes in the underlying OS (if there is one... not always the case.)

    Python and Perl have both outright broken older code that was designed to the language spec. Windows and OS X have both broken APIs that were used properly to spec. I'm sure the lists are much, much longer than that -- those are just the cases I'm personally aware of.

    And we should take very seriously the idiot "X has been deprecated" warnings in a language or an OS API, because that means some lame-ass bonehead is thinking about doing that very thing to us. Javascript, c libraries, OS APIs...

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:Popular has never meant "smart" by Luthair · · Score: 1

      The trouble with this approach is over time you can lose track of whether this file is precisely the released version, a snapshot or was tweaked locally for some reason.

      For business you probably want to start using a caching repository manager.

    2. Re:Popular has never meant "smart" by fyngyrz · · Score: 1

      No. It doesn't matter if done properly. All dependencies should be local to the application. It's using the one the author intended. End of story. You don't overwrite system files. If you upgrade your package, you (a) make sure it doesn't overwrite your old version, and (b) it carries its own set of dependencies that don't screw up the previous install.

      We're in a time of considerable available and inexpensive storage. This is one of the best possible uses of that storage, particularly in an environment where not only developers, but OS vendors also are likely to "reach out and break something" for no damned good reason at all. The more stable and isolated you can make an application, the better for everyone.

      If I could say only one thing to all developers everywhere that they would actually pay attention to, it would definitely be "Do not break my stuff. Not my ability to load and use my data, not my ability to load and use my applications, not my languages, not my OS features. DO NOT BREAK MY STUFF."

      As it stands, when a dev breaks my stuff, they go directly on my shitlist. Along with Apple, Microsoft, and a huge collection host of their minions. I am certainly not alone in this.

      --
      I've fallen off your lawn, and I can't get up.
    3. Re: Popular has never meant "smart" by Anonymous Coward · · Score: 0

      Systemd !

    4. Re: Popular has never meant "smart" by Anonymous Coward · · Score: 0

      That's all great until you hand over the app to operations and they start pulling their hair out because they need to update OpenSSL and every single app have their own copy of it. Oh yeah right the solution is of course to just not apply security updates, how stupid of me to forget that.

    5. Re: Popular has never meant "smart" by fyngyrz · · Score: 1

      There are, of course, exceptions. But the implication that all applications have those kinds of security concerns is invalid on its face.

      Further, OS components are not what I am referring to here. An OS is not an application; The net is not the computer; "applications" does not imply large company models or otherwise significant separation between the developer and the app; and finally, if your application depends upon OPC and that takes down everything because you have chosen not to manage your own dependencies and write your own solutions, your application's failure is your failure.

      Sometimes the underlying OS breaks. Accidentally, as with various unspotted vulnerabilities and bugs, or intentionally, as with Apple and Microsoft killing off or mangling existing APIs. The best developers are agile enough to deal with most such events; depending on fixes that (hopefully) will arrive in OPC is one of the primary ways to undermine achieving that level of agility.

      For example: Both Microsoft and Apple have, at various points in time, broken their file selection dialogs. The first time it happened (Microsoft) it took my company two days to create, and then make available to our customers, a considerably-more-functional and not-broken replacement. The second time (Apple), it took one day. We gave customers a switch so they could switch back if (a) they were willing to tolerate the problems the broken OS dialogs inflicted upon them or (b) the OS vendor actually fixed the problem [Microsoft did; Apple didn't.]

      You do what you can; ideally, you arrange things from day one such that you have the fewest possible dependencies upon the actions, errors, and whims of others. If you don't, then you, and your customers, are subject to a considerably higher risk of problems. Some things — almost always at the OS level — you have to assume will work. I have found, however, over a long career of building non-trivial applications, that those things are actually very few in number.

      --
      I've fallen off your lawn, and I can't get up.
  29. HAHA! by Anonymous Coward · · Score: 0

    And you just publicly debased yourself by betraying any knowledge of "social" media.

    1. Re:HAHA! by Anonymous Coward · · Score: 0

      It's a pretty common betrayal, at least. Another year or two and I'm going to have a vague idea of how twitter works, whether I like it or not.

  30. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    A wise programmer also knows that you do not need to write a new libc because you are starting a new project. Wisdom is knowing that well tested, debugged code is quite likely going to be better than the newly reinvented wheel. That isn't to say he couldn't reinvent said wheel, but the time would be far more productively spent writing the actual project.

    In short, you've described not invented here syndrome.

  31. Look at me mama!This name, "KIK" I'm so creative! by Anonymous Coward · · Score: 0

    What the f**k is that lame kik app BTW??!! Yet Another Chat App??!
    I guess people should start naming open source projects using random strings...
    This is so stupid...
    Look at me mama! This name! "KIK" i'm so creative!!!!

  32. Re:What a strange name for an IM app... by __aaclcg7560 · · Score: 3, Funny

    And your nick is one character away from including the word "reamer", and two letters away from being "screamer".

    I got the nickname "Reamer the Screamer" in the engineering class at junior high school. My model car required a larger opening to fit the CO2 cartridge ("reamer") and it whistled down the string ("screamer"). I never liked that nickname as it fit the reputations of several girls quite well.

  33. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 1

    Wise people and quality programmers don't waste their time reimplementing functionality that has been written, improved, reviewed, and tested by a large number of people.

  34. Re:Unavoidable if you're LAZY by Njorthbiatr · · Score: 0

    Nah, this is a fallacious way of approaching software development. You only need to learn what you only need to learn.

    1) You're never going to master it all or even most of it.
    2) What you do write isn't going to be as good as what someone spends a large majority of their time perfecting.
    3) Resource constraints.

    So while you're hammering away building everything from scratch, someone else will have a finished product. So not that wise, eh?

  35. Improper assertion of trademark? by Steve1952 · · Score: 2

    Ironically, it may be Kik's attorneys that acted improperly here. Trademark law allows similar names to be reused for different fields of use, so long as there is not a possibility of confusion/loss of market. Here I seriously doubt that anyone would confuse a Javascript module with a chat application. So quite possibly this was a bogus assertion in the first place, which ended up causing serious damage to a lot of folks.

    1. Re:Improper assertion of trademark? by Anonymous Coward · · Score: 0

      The lawyers sent threatening letters. That's the purpose of lawyers. The people who acted improperly were NPM, taking down the module without consulting the author, despite there being no infringement of trademark.
      The author ignored the trademark demand, saying essentially 'see you in court'. That should have been the end of it unless Kik decided to pursue legal action. The repository had no business taking down the content and should have simply passed the demand on to the author.

    2. Re:Improper assertion of trademark? by mwvdlee · · Score: 2

      This begs a question; is NPM (or a package manager in general) legally responsible for the hosted content?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    3. Re:Improper assertion of trademark? by iggie · · Score: 1

      Well,for a long time chat applications seemed to be about the only examples of node.js in use, so maybe they have a point.

    4. Re:Improper assertion of trademark? by Anonymous Coward · · Score: 0

      "...for a long time..." as in "not even from the first demo app written using node.js"? Boy that is a 'long time'!

    5. Re:Improper assertion of trademark? by Anonymous Coward · · Score: 0

      Here I seriously doubt that anyone would confuse a Javascript module with a chat application.

      Here? No. In a court of law? They're both "on a computer" and that will be enough to confuse 12 members of the jury, 47 prosecuting lawyers and the judge.

    6. Re:Improper assertion of trademark? by cbhacking · · Score: 1

      If there was a requirement to stop distributing the JS module under that name, probably. Once trademark infringement has been legally determined to be occurring, continuing to distribute the infringing service or product could open them to legal action. (IANAL)

      Of course, there was no such requirement and no guarantee that the IM application could have secured one. As people have pointed out, a library and an application aren't the same thing and unless the library concerned messaging in some way I doubt anybody would confuse them. At that point, while NPM is probably not legally required to continue hosting the package, they sure as hell aren't required to take it down. This isn't copyright, with its bullshit DMCA takedown notices.

      --
      There's no place I could be, since I've found Serenity...
    7. Re:Improper assertion of trademark? by david_thornley · · Score: 1

      If it's a copyright issue, NPM can obey the takedown notice and be legally in the clear. I don't know that there's similar safe harbor for trademark infringements, so NPM might have been in legal danger just from hosting the thing.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    8. Re:Improper assertion of trademark? by phantomfive · · Score: 1

      Ironically, it may be Kik's attorneys that acted improperly here.

      The attorney wasn't involved. Here's the conversation.
      I can tell you, I plan to never use Kik.

      --
      "First they came for the slanderers and i said nothing."
    9. Re:Improper assertion of trademark? by Steve1952 · · Score: 1

      So it is more of an unauthorized practice of law sort of thing...

    10. Re:Improper assertion of trademark? by phantomfive · · Score: 1

      Yeah. I don't know if that counts as 'unauthorized' since he wasn't an attorney, but it certainly was making legal threats without having consulted an attorney first.

      --
      "First they came for the slanderers and i said nothing."
  36. This happens more often by johanw · · Score: 1

    I follow the development of Signal (https://github.com/WhisperSystems/Signal-Android) and its fork SMSSecure (https://github.com/SMSSecure/SMSSecure). They had a similar problem too, where the developer of material-dialogs decided to remove all old versions of his library after an interface change, resulting in breaking builds (https://github.com/WhisperSystems/Signal-Android/issues/4138). Both projects solved it initially by hosting their own version, and then remove the library completely.

  37. That's why I host all my dependencies myself. by Qbertino · · Score: 1

    That's why I host all my dependencies myself, per project and on all my projects.
    Special font? Self-hosted.
    jQuery? Self-hosted.
    CSS Toolkit? Self-hosted.
    Massive monster webapp lib (like Googles Polymer)? Download, adjust URLs, move to project subdir, host yourself.
    Some other lib? Downloaded, stashed and hosted in the project too.

    Dependencies are fine, but should always have them under your control.
    I'd do the same with binary code.
    This is, btw., one of the big problems with many Linux programms.

    --
    We suffer more in our imagination than in reality. - Seneca
  38. Build a mirror for your dependencies! by damaki · · Score: 5, Insightful

    Thou shalt always mirror your dependencies. Never assume that everything will always be available. That's continuous integration 101.
    Second paradigm: mirror even your dependencies source code, if you can.

    --
    Stupidity is the root of all evil.
    1. Re:Build a mirror for your dependencies! by Anonymous Coward · · Score: 0

      It's lazy development. Any professional will ensure the relevant libs are hosted locally and are set at specific thoroughly tested version. It's the gen-ME "coders" that are copy/pasting hacks and cludges they find in forums to make a site operate, then wonder why their sites are down when there's a functional change or version bump.

  39. So now NPN is willfully violating their trademark by 0xdeaddead · · Score: 1

    and Azer's unpublished code, along with desiring it not be hosted @NPM on github.

    uh oh.

  40. Literally Everybody Is Doing It Wrong by Anonymous Coward · · Score: 0

    Everybody is taking the lazy route and/or trying to save bandwidth by loading their libraries from foreign sources. Node.js , Google Hosted Libraries(jquery, angular...)

    If you make yourself dependent on third parties, you'll get fucked.

    1. Re:Literally Everybody Is Doing It Wrong by 110010001000 · · Score: 1

      No everyone. The smart people create their own branches. That is what git is for.

  41. Re:What a strange name for an IM app... by Anonymous Coward · · Score: 0

    Quit being such a nagger.

  42. It could have been worse by DrXym · · Score: 1

    He could have updated the module to delete and format the contents of every machine it was run on. I'm kind of surprised this hasn't happened before considering how many modern environments have such slapdash dependency systems. At the very least a packaging system should by default generate and use a lock file which contains a version and a hash of the dependent package. Npm supports a "shrinkwrap" flag but it should be the default.

    1. Re:It could have been worse by kbmccarty · · Score: 1

      He could have updated the module to delete and format the contents of every machine it was run on. I'm kind of surprised this hasn't happened before considering how many modern environments have such slapdash dependency systems.

      It looks like this is still within the realm of possibility: http://www.drinchev.com/blog/a...

      --
      - Kevin B. McCarty
  43. Re:What a strange name for an IM app... by Anonymous Coward · · Score: 0

    I'm pretty randomly spamming the keyboard will get you an actual word in Welsh.

  44. Re:Unavoidable if you're LAZY by Gr8Apes · · Score: 1

    I work with lots of code. I include 3rd party components. However, I am not dependent upon any external sources for that third party code. IOW, you can have dependencies, just make sure you own the servicing of said dependencies internally, and not some unknown 3rd party. It's even better if you have the source for all third party dependencies and build the artifacts yourself. Yes, this takes a little more time, but it significantly lowers the potential problems you may encounter later, plus your codebase will be guaranteed repeatable builds, which cannot be stated for the lazy approach.

    --
    The cesspool just got a check and balance.
  45. Re:Unavoidable if you're LAZY by Lisandro · · Score: 1

    Yes, this takes a little more time, but it significantly lowers the potential problems you may encounter later, plus your codebase will be guaranteed repeatable builds, which cannot be stated for the lazy approach.

    Much agreed. And sadly, this is not the node.js way...

  46. Don't blame the coder, it is stupidity the cause by jtayon · · Score: 1

    WTF!
    The coder did what was totally normal for a coder. Just enforce is moral rights. The stuff every authors should defend because that is why our income are that high compared to manual laborers!

    Everyone out of JS told them that there was a problem with DEPENDENCY hell.

    They said no. The problem is unsound technical practices where basically the assumption that all will go well is made to build everything.

    The removal of a module was expectable like a lot of other things still bound to happen. But JS community did not cared to protect for such a small potential problem.

    The problem is never someone doing what he is entitled to. It is people using code without understanding licenses and taking stupid risks.

     

  47. PLUMBING NEEDS TO GO! by Pseudonymous+Powers · · Score: 5, Funny

    It's fucking unbelievable how much trouble plumbing has caused for so many people.

    Let's ignore how fundamentally broken it is, as a technology, in almost every respect. That includes its fucking awful historical association with toxic lead, its total lack of real modularity (sorry, reservoirs are complete shit), its ultra shitty set of mutually incompatible pipe sizes, materials, and connections (which is this problem exist in the first place), and similar problems.

    Plumbing has allowed too many unskilled cranks to shit out way too many leaky pipes. It was one thing when they did it in Ancient Rome, where it was isolated to a fountain in the town square. Now it's being done in people's houses, and it's a motherfucking disaster!

    Worse, plumbing has enabled the for-profit water supply industry. Plumbing makes it trivial for them to track every drop of water you use. If you don't want to fall victim to it, then you have to waste your time turning off a bunch of valves, and digging wells everywhere.

    Plumbing needs to go.

    If you really need to use a water delivery technology, use a river, or a pond, or even a goddamn barrel . All three of them are better than plumbing in every way.

    1. Re:PLUMBING NEEDS TO GO! by 93+Escort+Wagon · · Score: 1

      That reminds me... I need to submit a pull request to FloHawks for the contents of my septic tank.

      --
      #DeleteChrome
    2. Re:PLUMBING NEEDS TO GO! by AmiMoJo · · Score: 4, Informative

      Do you work in the water industry? This is actually spot on!

      It's so bad we don't even know where half the damn pipes are. We know where the ends are, but if there is a leak in the middle we are fucked. Even in the best countries 25% of the water leaks out, and in some places it's over 50%. Even better, the last 20% just isn't even worth fixing... If a leak is costing the company 5 bucks a month, they ain't gonna send someone to dig up the road and fix it.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    3. Re:PLUMBING NEEDS TO GO! by stooo · · Score: 1

      the humans built up a water distributionm system for 2500 ans, and put a lot of effort into it, only for morons to go carry water in bottles.

      --
      aaaaaaa
    4. Re:PLUMBING NEEDS TO GO! by Anonymous Coward · · Score: 0

      If a leak is costing the company 5 bucks a month, they ain't gonna send someone to dig up the road and fix it.

      Dammit! You need to fix those leaks right now!
      I build/repair roads for a living, and my kids need new shoes.

    5. Re:PLUMBING NEEDS TO GO! by NormalVisual · · Score: 2

      Interestingly, I'm dealing with that problem now. The place I'm renting has a bad slab leak, and rather than bust up the floor to fix it, the landlord decided it's going to be better to put new pipe in the walls, meaning that one bedroom, a closet, both bathrooms, and the kitchen are going to get the walls ripped up to put the new plumbing in. I'm *so* looking forward to the next few days, and then cleaning up all of the dust when everyone involved is done.

      I'd almost rather deal with Javascript. Almost.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
    6. Re:PLUMBING NEEDS TO GO! by cas2000 · · Score: 2

      unfortunately for you, the rant against javascript was not equivalent to a rant against plumbing, it was equivalent to a rant against using plain cardboard for pipes rather than, say, copper or stainless steel or plastic.

    7. Re:PLUMBING NEEDS TO GO! by drinkypoo · · Score: 1

      Interestingly, I'm dealing with that problem now. The place I'm renting has a bad slab leak, and rather than bust up the floor to fix it, the landlord decided it's going to be better to put new pipe in the walls,

      And this is why nobody does slabs any more. It's all curtain walls and footings. The pipes are attached to the bottoms of the joists and you can actually maintain them.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  48. Serious Question by darkain · · Score: 1

    Serious question, guys. Why do people use NPM or other dependency managers in the first place? Each and every language seems to have their own different dependency manager with its own quirks and problems, such as the one described in TFA. In my company, we just use git with submodules for dependencies. This allows us to easily pull in dependencies regardless of programming language used, or which online git repository their in,our own or open source. Since we're already using git to manage our own source code, this just made perfect sense from day-one, using a single tool to manage all of the source code. So, seriously, what's so great about fragmenting to multiple tools that all do the same job, only for different programming languages, when there is already a centralized tool that we're already using (git) along with these other tools (NPM or otherwise)? Why not just drop these other tools entirely, and avoid the issues mentioned?

    1. Re:Serious Question by flink · · Score: 1

      Because tracking down all your dependencies' dependencies (and their deps, (and their deps, ad infinitum)) can get to be a huge hassle. This is especially true if you need to bump up to a newer version of a lib you depend on and it has a ripple effect throughout the dependency tree. For example, in one of my java projects, if you include transitive deps, there are 192 jars required at runtime. This count goes up if you include stuff that is part of the build scaffolding.

      What we do is use Ivy to manage deps and Ivy is configured to point at only at a private Nexus server that we run. The Nexus server in turn proxies for Maven central and whatever other repos we need to pull from. We can also manually add stuff to the Nexus repo if there are one off deps that aren't available from an existing repo. The private Nexus repo itself is backed up on a regular bases so we are completely isolated from any shenanigans that are happening on other repos except when we have to update a dependency.

      In your case where you add deps as git sub modules, how do you mitigate the fact the the third party lib you are pulling in as a git module might itself use a dependency manager and be pulling things in from the internet as part of its build process? Or do you rewrite the builds of all your first order deps to include the transitive deps as sub-sub modules?

  49. It's the "Hipster False Switcheroo" fallacy! by Anonymous Coward · · Score: 0, Insightful

    Your comment is a superb specimen of the Hipster False Switcheroo fallacy!

    It has all of the main characteristics.

    Firstly, it involves a topic that hipsters hold dear: JavaScript.

    Secondly, you've taken what was a sane, reasonable argument, and switched the words around to turn it into a failed, off-topic, irrelevant "argument" that's factually wrong.

    Thirdly, you're oblivious to how your "argument" is failed, off-topic, and irrelevant.

    Fourthly, you got wrongfully upmodded by some other hipster fool here.

    What a fine specimen, indeed! It's almost like you went through a checklist to finely craft it.

    Wait, that's a newly-discovered fifth characteristic!

    Fifthly, you've put more effort into creating your failed, off-topic, and irrelevant "argument" than you've put into the artisanal bread you attempt to bake.

    1. Re:It's the "Hipster False Switcheroo" fallacy! by Pseudonymous+Powers · · Score: 3, Informative

      Yes, it's the Hipster False Switcheroo Fallacy. Also known as satire.

      "Mr. Swift, cease this frippery at once! I fail to see what infant cannibalism has to do with wealth inequality and class relations in Ireland!"

      And how dare you, sir or madam or other. I'll have you know I've put countless man-or-woman-or-other-hours into my artisanal gluten-free bread.

      Also, how dare you, Slashdot! Putting a squiggly red underline under "artisanal" in 2016. This is disappointingly regressive!

    2. Re:It's the "Hipster False Switcheroo" fallacy! by Anonymous Coward · · Score: 0

      No, there's a big difference. Satirical comments are insightful and funny. Comments committing the Hipster False Switcheroo fallacy are just dumb.

      Your comment is clearly not satire.

      If your comment had been insightful or funny in some way, then it would have been satire. But your comment was neither, so it is an example of the Hipster False Switcheroo fallacy.

    3. Re:It's the "Hipster False Switcheroo" fallacy! by amicusNYCL · · Score: 1

      It looks like the comment is moderated funny, and I agree.

      Don't look now, but the hipster might be you.

      --
      "Our two-party system is like a bowl of shit looking at itself in a mirror." - Lewis Black
    4. Re:It's the "Hipster False Switcheroo" fallacy! by Oligonicella · · Score: 1

      Yeah, it was satire. No, satire doesn't need to meet your checklist.

  50. Why does a package manager have a CTO? by michaelmalak · · Score: 1

    To fix the internet, Laurie Voss, CTO and cofounder of NPM, took the "unprecedented" step of restoring the unpublished left-pad 0.0.3 that apps required.

    Wait, what? A package manager has a CTO? Why is there a SPF in the Javascript world? In the Java world, you would just add an additional repository to your Maven pom.xml and move on. (Or even better, you would already have had your own Artifactory listed, with all your required libraries mirrored there.)

  51. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    On one end of the scale you've got "not invented here syndrome" and on the other end you have "cargo cult programming". The average person tends to be one of the extremes.

  52. Silly names by mwvdlee · · Score: 1

    Just one more reason to hate dumbshit "hip" project names instead of actual descriptive names.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  53. External hosted libraries are always bad by kbg · · Score: 1

    Number one rule of programming is you never rely on external libraries being hosted somewhere else. You can't rely on those libraries being available for the lifetime of the project. It is the same using for example Maven to rely on external libraries. This is something you should never do. Always have the libraries local.

  54. Re:Unavoidable if you're LAZY by Bengie · · Score: 1

    Depends on your definition of "mastery". A good programmer with 6 months of experience is on average just as good as someone with 10+ years of experience. The reason for this is the average programmer will never reach mastery no matter how much time they spend. Most people don't get 10 years of experience, they repeat the first year of experience 10 times.

    Stuff you don't want to reinvent is security, datetime, or fundamental libraries. And never use any code that you don't understand how it works. Not at the operation level, but characteristics and edge cases. I can't tell you how many times I've seen people unable to debug their issues because of some complex interaction between some "free library" that is popular. Rule of thumb. If someone contrives a hypothetical case, you should be able to tell them how your code will work. If you can't answer the question, then you didn't program, you threw code at a wall and it passed some crappy unit tests.

  55. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    Wise people and quality programmers don't waste their time reimplementing functionality that has been written, improved, reviewed, and tested by a large number of people.

    Yes, yes. Wasting time programming and learning ones craft is sooo tedious and a total waste of time dude. Hiding your cell-phone in ones tiny lap and playing Clash of Clans 4 hours a day at work is FAR MOAR important. True story by the way, and for more than one script-kiddie I've been forced to work with. And the real laugh-riot is they were using company phones to do it.

    Apparently any 17 year old kid with a github account is a far better programmer than these guys as well. Because they are desperate to not "re-invent the wheel." Too bad they drive around in big-wheels with square tires.

  56. Re:Unavoidable if you're LAZY by istartedi · · Score: 2

    Try writing an application that handles all the common image file formats, (at least JPEG, GIF, PNG and BMP) and get back to us.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  57. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    > Most people don't get 10 years of experience, they
    > repeat the first year of experience 10 times.

    Some do. Most? Bullshit.

  58. Re:What a strange name for an IM app... by Curunir_wolf · · Score: 1

    Kik is one letter short of being kike (a racist name for a Jewish person). How brilliant.

    It's pronounced "kick" (which is also one letter away). This is how companies create trademarks these days. They take a normal, everyday word, misspell it, then trademark it. Let's see.. "SyFy", "Cuore", "Stihl" (an original!), "Lite", "Lync", "Google" even (the spelling of the big number is "googol").

    --
    "Somebody has to do something. It's just incredibly pathetic it has to be us."
    --- Jerry Garcia
  59. Re:What a strange name for an IM app... by Anonymous Coward · · Score: 0

    Go fly a kite.

  60. Re:What a strange name for an IM app... by gman003 · · Score: 1

    Nah, if it's random, there's a chance you might get two vowels in a single word.

  61. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    Depends on your definition of "mastery". A good programmer with 6 months of experience is on average just as good as someone with 10+ years of experience.

    A good programmer with 6 months of experience is on average just as good as someone with 10+ years of experience.

    A good programmer with 6 months of experience is on average just as good as someone with 10+ years of experience.

    A good programmer with 6 months of experience is on average just as good as someone with 10+ years of experience.

    And that, right there, is why academia is a complete fantasy land.

  62. not sure what's worse by Anonymous Coward · · Score: 0

    the laziness of dev who can't write the one-liner that should be left-pad or the horrible implementation that everyone seems to have settled on.

  63. One problem is dependency hell by mpercy · · Score: 1

    It's one thing to say if I need to use SSL encryption, or some other sure-to-have-been-developed-already function, I should use a library.

    But it seems more and more that library developers suck at the fundamentals of API development, and will indeed import some whiz-bango 3rd, 4th, and 5th-party libraries, each for one tiny function. And the extra libraries will always called something like sheboyganMarmoset.

    The same holds for applications and package managers. How many RPMs in RHEL carry a dependency on ModemManager, despite the fact the virtually no one still uses modems? Installing one RPM often carries 50 cascaded dependencies on far-flung libraries or applications.

  64. YOUR MOTHER NEEDS TO GO! by Anonymous Coward · · Score: 0, Insightful

    It's fucking unbelievable how much trouble your mother has caused for so many people.

    Let's ignore how fundamentally broken it is, as a mother, in almost every respect. That includes its fucking awful tit system, its total lack of real OO (sorry, implants are complete shit), its ultra shitty standard library (which is why she can't read in the first place), and similar problems.

    your mother has allowed too many unskilled cranks to shit out way too much broken fuck. It was one thing when they did it client-side, where it was isolated. Now it's being done mother-side, and it's a mother fucking disaster!

    Worse, your mother has enabled the web advertising industry. your mother makes it trivial for them to track your every move online. If you don't want to fall victim to it, then you have to waste your time disabling it everywhere by default, and selectively enabling it where you need it.

    your mother needs to go.

    If you really need to use a mother, use Lua, or Python, or even goddamn Tcl. All three of them are better than your mother in every way.

  65. park analogy by derrickoswald · · Score: 1

    I make the analogy between the software dependency tree and the public park. Hundreds of people use it, and walk their dogs, and clean up after them, but it only takes one dog owner who doesn't to stop you and your kids from rolling around in the grass. Unless your dependency tree is locked down completely, you're just waiting for the one piece of s**t to ruin it. And laughing at node while using maven or APT or any other public repo system is hypocrisy.

  66. And a Million.... by Anonymous Coward · · Score: 0

    ....applications cried out in pain and were suddenly silenced......

    Just trying to make you happy.... ;)

  67. Re:Unavoidable if you're LAZY by phantomfive · · Score: 2

    FYI, to give an idea of how long that would take, I did that a while ago for GIF, and between understanding the documentation and writing the code and debugging, it took 40 hours (my original estimate was ~8 hours ha!). So extrapolating based on that, the time required for the total collection would be 160 hours, pad it up to 200 hours to account for complications. Given the relative stability of the image libraries, it's unlikely to be worth re-implementing them.

    --
    "First they came for the slanderers and i said nothing."
  68. Real Programmers React Responsibly by Etherwalk · · Score: 1

    The initial programmer didn't respond professionally; neither did NPM.

    This was a cease-and-desist letter over a trademark. The programmer's public statement about the guy being a patent lawyer, even if it's true, it's irrelevant.

    All they had to do was either (1) have a lawyer send back a letter saying there was no likelihood of confusion and nobody in their right mind was going to think a node module was an instant messaging app and the like, or (2) change the name--did they even have a lawyer call back *explain* the problem with a name change and ask the Trademark holder to let them mark it as deprecated for a year? Or (if they cannot afford an hour or three from a lawyer) do it themselves?

    And when withdrawing his packages, the programmer should have been responsible to the open source community and, again, marked packages as deprecated for a period of time before withdrawing them. This was just irresponsible.

    1. Re: Real Programmers React Responsibly by Anonymous Coward · · Score: 0

      So all the developers that had their build system depend on some (unsigned?) pieces of code being available forever of the net were responsible?

  69. Re:Unavoidable if you're LAZY by Gr8Apes · · Score: 1

    I just did the deep dive on NodeJS, Javascript libraries, and build tools in general.... my thoughts are "run.. run away". It reminds me of the early days of Smalltalk, except less organized and completely without discipline. And that's stating it in nice terms. Unfortunately, for some components I need, I'll be using some of these tools because I'm not rewriting them from scratch, although I am attempting to influence some library maintainers to incorporate some bug fixes that would help me. I'd rather have that than me maintaining those fixes.

    --
    The cesspool just got a check and balance.
  70. sores by Anonymous Coward · · Score: 0

    go gadget open sores.

  71. Re:Unavoidable if you're LAZY by TheRaven64 · · Score: 1
    GIF is pretty simple. PNG is more complex. JPEG is a little more complex than GIF, if you can do even the core mathematical libraries for JPEG2000 in 160 hours I'd be moderately impressed. TIFF includes vast numbers of possible image encodings, including some weird and wonderful uncompressed encodings (floating point channels, weird channel interleavings) and many compressed variants (including embedded other formats, layers, different resolution previews, and so on). Oh, and most existing image libraries have been reasonably well fuzz-tested recently and had hundreds of security holes fixed, because parsing binary formats in C without introducing exploits turns out to be hard.

    it's unlikely to be worth re-implementing them

    Very true.

    --
    I am TheRaven on Soylent News
  72. Re:FORUMS NEEDS TO GO! by waTeim · · Score: 1

    It's fucking unbelievable how much trouble people interacting with other people on the internet has caused for so many people.

    Let's ignore how fundamentally broken it is, as a technology, in almost every respect. That includes its fucking awful historical association with trolls, its total lack of real insight (sorry, Anonymous' are opinions complete shit), its ultra shitty set of mutually incompatible ideas, memes, and non sequitur invective (WHICH IS THIS SHOUT SHOUTY SHO), and similar problems.

    Typing stuff on the Internet has allowed too many unskilled cranks to shit out way too many words. It was one thing when they did it in Ancient Rome, Cicero or Julius Caesar #vinividivici. Awesome. Now it's being done in people's basements, and it's a motherfucking disaster!

    Worse, communication has enabled the for-profit media industry. Google makes it trivial for them to track every word you type. If you don't want to fall victim to it, then you have to use a VPN or anonymous mode or TOR or something, I don't know who cares? Just give me my groupon, OK?

    Forums need to go.

    If you really need to use an idea delivery technology, use a letter, or a parchment, or even a goddamn cave painting . All three of them are better than Internet in every way.

  73. Re:Unavoidable if you're LAZY by phantomfive · · Score: 1

    Oh, and most existing image libraries have been reasonably well fuzz-tested recently and had hundreds of security holes fixed, because parsing binary formats in C without introducing exploits turns out to be hard.

    If you want to avoid security holes you need to have the security mindset from the beginning, thinking about how to avoid security holes. You can't 'reasonably well fuzz-test' a project like that......if you've fixed 100 security holes, then most likely there were more than 100 and you've missed some. Having worked with the source code for libjpeg and libpng, I am certain I can write more secure code if that is the goal. I would probably double the time estimate, though.

    Incidentally, glibc is another library that worries me for security because of its ubiquitous nature.

    --
    "First they came for the slanderers and i said nothing."
  74. Javascript is broken anyway by Anonymous Coward · · Score: 0

    It doesn't really hurt much to make javascript even more broken. I hardly thought it was even possible. There is no proper standard library, the language is a mess. There is no proper type system (there are barely a set of useful types), lots of totally random problems with scoping, there are no proper object oriented features, and it relies on a mashup of terrible technologies, all badly implemented and totally inconsistent to be used for anything.
    I look forward to being able to compile sensible languages to web assembly, so that this horror can die a much desired death.
    Incidentally, java seems to be plagued by a similar dependency rash. A typical java project may have over 100 libraries, making it completely unmaintainable. Nobody without a huge team, can test, check security issues, and validate such a huge collection of components. Simply not viable for production quality deployment.

    1. Re:Javascript is broken anyway by Anonymous Coward · · Score: 0

      It doesn't really hurt much to make javascript even more broken. I hardly thought it was even possible. There is no proper standard library, the language is a mess. There is no proper type system (there are barely a set of useful types), lots of totally random problems with scoping, there are no proper object oriented features, and it relies on a mashup of terrible technologies, all badly implemented and totally inconsistent to be used for anything.

      But it was written in a weekend, so it has that going for it.

      I look forward to being able to compile sensible languages to web assembly, so that this horror can die a much desired death.

      I was totally excited about Web Assembly and talked it up a bunch. I then encountered complete apathy from people who always do the "I am faster, better, smarter than you 'cos I use Javascript and node.js Fer-EVA!" crowd. Uh, so now they have become the 'grandpa's' who refuse to use anything but the only 'language' they can cut-and-paste in. One-trick ponies. They've become the very thing they profess to hate: Luddites.

      It's one big reason I've gone back to embedded programming in C++. The cut-and-paste posers are quickly revealed.

  75. Re:What a strange name for an IM app... by Anonymous Coward · · Score: 0

    Ya totally just cemented owning that laughable nickname by your own compete lack of understanding and usage of it. Good job! :)

  76. Re:What a strange name for an IM app... by __aaclcg7560 · · Score: 1

    Ya totally just cemented owning that laughable nickname by your own compete lack of understanding and usage of it.

    I understand perfectly what it meant. But people who give me a negative nickname become uncomfortable when I take ownership of the nickname, turn it around and wear it as a badge of honor. I used to be called "Tortuga" (Spanish for turtle) when I worked in a restaurant. I got removed from working the line as captain after a month because I worked the Latinos too hard and too fast.

  77. S3... Shit, shit, shit. by Anonymous Coward · · Score: 0

    Reliance on S3 and the inherent flakiness therein meant running an npm install was rolling the dice as to whether or not your modules would actually download and install.

    Anybody who wasn't playing amateur hour already mirrored or had an npm cache in place.

  78. Re:What a strange name for an IM app... by BlueLightning · · Score: 1

    Yeah, except Stihl was the founder's name; it's also a German company so no relation to the English word.

  79. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    "resolved IN a couple lines of code IN the language of your choice..."

    Fucking American idiot. Those two letter prepositions are just SO difficult to remember, aren't they...

  80. Astonishing by Anonymous Coward · · Score: 0

    It's absolutely astonishing to me that anyone would deploy JavaScript that depends on the stability of an external library outside of their control.

    I had no idea a developer would even consider doing this.

    Grabbing a local copy is so easy to do, and the extra disk space/bandwidth is so insignificant -- and the payoff is so high because it eliminates a likely source of instability. What possible justification is there for not doing it?

    What is the future of the profession of web development, given that the quality of the developers is obviously so low?

  81. Re:What a strange name for an IM app... by __aaclcg7560 · · Score: 1

    Yeah, except Stihl was the founder's name; it's also a German company so no relation to the English word.

    Can't be German. It's too short. :)

  82. Re:What a strange name for an IM app... by steveha · · Score: 1

    I remember the controversy about the WingDings TrueType font that Microsoft made. It had a bunch of random little pictograms, and as this was long before Unicode support was common, it had the pictures mapped to random characters.

    Someone noticed that if you typed "NYC" and then changed the font to WingDings the result was a skull-and-crossbones, a Star of David, and a hand making a thumbs-up gesture. So obviously, this was a shorthand way of saying: death to Jews in New York City is a good thing. And obviously, this was done on purpose by some black-hearted person at Microsoft.

    http://www.snopes.com/rumors/wingdings.asp

    The moral of the story: no matter what you do, someone will find a way to get upset by it.

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
  83. http://www.kik.de/ by Anonymous Coward · · Score: 0

    The apps dev should also sue this site. Some folks might not be able to distinct between yet another chat app and clothing shop.

  84. The consensus seems to be... by DavidHumus · · Score: 1

    ...use external libraries so you're not re-inventing the wheel but keep your own copy of those libraries. So, you end up with your own unique island of code, basically cut-and-paste writ large?

  85. Re:This is hilarious, open source more than just c by Luthair · · Score: 1

    I'd say the person who needs to learn a lesson is the author, not Node.

  86. It's a shitty left-pad in a shitty language by laddiebuck · · Score: 1

    The best thing about this?

    1. It's a shitty algorithm because it does repeated string concatenation. It runs in fucking exponential time.
    2. In any reasonable fucking language, this is printf("%Ns", str)

    It's a shitty ecosystem.

    1. Re:It's a shitty left-pad in a shitty language by david_thornley · · Score: 1

      1. That "printf" won't do anything useful in Common Lisp or Forth.
      2. Where do I get a fucking language, anyway?

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    2. Re:It's a shitty left-pad in a shitty language by laddiebuck · · Score: 1

      (format nil "~12d" "a")

      Fuck you for being pedantic though.

  87. Irony by teknosapien · · Score: 1

    Would be if the messaging app that had it yanked down used his code and that was rendered unusable now

    --
    no matter how good it is, it is human nature always wants to make things better
  88. An eye opening moment... by ndykman · · Score: 1

    Let me be upfront about my biases first: Node is trying to a solve a problem that really doesn't need to exist: To write everything in one language. It's amazing how much demand there is for it. It's clear that the core libraries and language just can't keep up with developer demands and the number of libraries to fill those demands has exploded out of control. Npm is packed to the gills with vanity projects that are made as a resume item for developers. Sure, there's plenty of these in other ecosystems, but it's amazing what has come to depend on them.

    The Node ecosystem is amazingly fragile and it's going to get worse and worse. I fully expect there will be lots of work in the future unwinding the messes people made with it and replacing it with a more appropriate platform.

  89. The tower of Babel by Anonymous Coward · · Score: 0

    "And thousands of projects including Node and Babel relied on it."

    So you're saying the tower of Babel fell?

  90. Irony? by TinyTheBrontosaurus · · Score: 1

    In one fell swoop, this person did exactly what free software is trying to prevent: a single overpowered entity who decides to leave and take his ball home with him, thus ruining it for everyone else. Power to the People? Only if our benevolent dictator also gets his way.

  91. I NEED TO GO! by Anonymous Coward · · Score: 0

    It's fucking unbelievable how much trouble I have caused for so many people.
    Let's ignore how fundamentally broken I am, as a human, in almost every respect. That includes my fucking awful humor system, my total lack of real life (sorry, facebook posts are complete shit), my ultra shitty set of unforgiven excuses and misconceptions (which is the cause of all this in the first place), and similar problems.

    I have allowed too many unskilled cranks to shit out way too much from my broken life. It was one thing when I did it to myself, where it was isolated. Now it's being done to everybody, and it's a motherfucking disaster!

    Worse, I have enabled the crazy dudes. I make it trivial for them to call you and keep you on the line. If you don't want to fall victim to it, then you have to waste your time blocking your calls everywhere by default, and selectively enabling the calls where you need it.

    I need to go.

    If you really need me, use Trump, or Francisco, or even goddamn Mickey. All three of them are better than me in every way.

  92. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    Worse then that, because you probably didn't check for security issues and all the corner cases that other libraries developed over 2+ decades have dealt with.

  93. Kik on the secure messaging scorecard... by Anonymous Coward · · Score: 0

    See here. No one should be using this anyway.

  94. Re:Unavoidable if you're LAZY by phantomfive · · Score: 2

    Worse then that, because you probably didn't check for security issues and all the corner cases that other libraries developed over 2+ decades have dealt with.

    No, I would take an approach similar to formal verification.

    --
    "First they came for the slanderers and i said nothing."
  95. Node.js by Anonymous Coward · · Score: 0

    Am I the only one left who absolutely despises Node.js?

    Node.js code looks like unmaintainable garbage, like the worst Perl code from the 1990's.

    Another developer in my company brought in a dependency upon Node.js recently, and I'm not happy about it. I won't work on the code.

    Software is not supposed to be write-once, throw away. Software is meant to be a communication to the next computer programmer, of unknown skill level, of your intentions and the limitations of what you have done. Software always has to be modified, so it has to be readable. If you happen to live in a Western nation, reading code should read like reading a novel and then editing a novel in your language. It should not be a ridiculous mess of punctuation marks, either your code or a novel.

    The situation with this package manager is indicative of a don't give a shit attitute, gross inexperience, or simply people who think that they're clever because they have mastered a shit language/environment/syntax/whatever and have cobbled together a shit ecosystem around it.

  96. Re:Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    So you don't use a languages standard library then?

    Dumbass

  97. How'd eating your words taste amicusnycl? by Anonymous Coward · · Score: 0

    It's funnier seeing apk and slashdot users make you eat your words amicusnycl https://slashdot.org/comments.... Apk gives users more speed, security, reliability and anonymity. What have you done better? Nothing! Only mere irrelevant ramblings from an insignificant nobody in yourself is all anyone sees from you. I see nobody speak well of work you do. They do of apk in that link above. I found it hilarious in your little failed 'campaign' to try stop apk posting that you lose there too. Apk's posting as much as ever and you are sitting here with egg on your face. Hahahahahaha! HOW EMBARASSING FOR YOU amicusnycl in you shooting your big mouth off to have it slapped shut by apk.

  98. So... NPM has that right? by Anonymous Coward · · Score: 0

    How does NPM have the right to restore the module?

    Something stinks. Is that you NPM? Bowing to lawyers? How weak.

  99. Reminds me of the minecraft issue by Maxo-Texas · · Score: 1

    If developers are working under a license where they can withdraw their source, there is risk to anyone using their code downstream.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  100. Re:Unavoidable if you're LAZY by Darinbob · · Score: 1

    Wait, I implemented a new libc when I started a project, because the existing one was too large. Not entirely from scratch though, there was a lot of copying of our earlier code followed by a lot of slash and burn. Seriously, newlib was too big and had incompatible design choices. Not that we use a lot of libc, but you do need a small handful of basic functions.

  101. You know? by Anonymous Coward · · Score: 0

    Since long I have avoided US-based software and its absurd non-export list. What if I know someone from Cuba and want to exchange some ideas? Well, the best thing is to avoid US repos entirely, I thought.

    Just now I discovered another nastiness in the US: lawyers.

    Cross the street when you see one. Just to be on the safe side...

  102. Re:Unavoidable if you're LAZY by Darinbob · · Score: 1

    Unless the functionality doesn't work or does not meet your requirements. It's called programming. If the only thing you've ever done is call libraries but are unable to write code similar to what a library routine does, then that's not really programming.

    Remember, actual human beings with less than divine powers wrote those libraries! I may be a good rule of thumb or guideline for novice programmers to not reinvent the wheel but it should not be an absolute taboo for all programmers of all skill levels and all projects. If there is no wheel that you can find or afford for your project then by necessity you must create one; it's not even reinventing the wheel but instead reimplementing to match the requirements.

    Bignum math libraries may be a good example as mentioned earlier. You may not be able to find one that is affordable and not burdened with some open source license that your legal team feels is safe to use (you can not just copy GPL code willy nilly and stick into your proprietary product). They often come with cryptographic libraries but may be too large for your actual system or have runtime requirements that are unacceptible (need 1KB stack or more). It is reasonably common to find optimized variants of such libraries making use of inline assembler for key routines. You will also find a handful of such libraries and need to be able to decide which one is appropriate (ie, read the source code, run tests, do measurements). Libraries are very often overly general purpose and bloated with unnecessary features.

  103. Re:Unavoidable if you're LAZY by Darinbob · · Score: 1

    I've implemented some of all those categories. Security because there's rarely a security library that does just what you want, or because the library you do have is too slow or too large (seriously there are some very poorly written SHA algorithms in professional libraries). Datetime because the system had a bad library that we had to replace and I would not just steal code from GPL and break their license, BSD was a guideline to start but had it's own issues because of historical system issues. And fundamental libraries because we needed much much smaller versions of things like memmove, strtoul, and the like that were optimized for severe space requirements. Sometimes you have a requirement of "make it boot in less than half a second" and then you find you can achieve that by optimizing the libraries. Sometimes a lot of commercial stuff comes with really bad libraries; there are network stacks or operating systems that decide to stick in their own basic C libraries for some stuff that are of very dubious quality.

    People don't have to do this, but they should at least know how if they ever need to and should be able to recognize when it is needed. Like when your JavaScript library to pad out strings vanishes overnight.

  104. Re:Unavoidable if you're LAZY by Darinbob · · Score: 1

    (for security I should mention that we vetted all of this and the changes and fixes to the original commercial library, we weren't just cocky people thinking we knew better than the experts)

  105. Re:So now NPN is willfully violating their tradema by Anonymous Coward · · Score: 0

    The code is presumably open source, meaning that NPM can still distribute whatever version they still have. Also, the trademark dispute regards a package named "kik", and not the left fill script the story pertains to.

  106. Re: Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    At this point, if he isn't creating his own language, he's a hypocrite.

  107. Fuck kik by Anonymous Coward · · Score: 0

    A bunch of faggots who use it anyway

  108. Re:Great. THAT was that bug I ran into 2 days ago. by drinkypoo · · Score: 1

    Yeah, the article says "gone and can not be restored" when it's clearly "will not be restored" since they clearly CAN do it. Logic fail.

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  109. Re: Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    Ah, found a couple super-sensitive, cut-and-paste, trail-and-error Clash of Clan players.

    Wipe the tears from your face child, you'll get moar gems someday. At work I suspect.

  110. Full (of shit) Stack Javascript by Anonymous Coward · · Score: 0

    WTF is behind this JavaScript everywhere bit? Who is pushing this and why?

  111. Re:What a strange name for an IM app... by shutdown+-p+now · · Score: 1

    So obviously, this was a shorthand way of saying: death to Jews in New York City is a good thing.

    It depends on who you ask. Some said that it meant "Jews did it".

  112. Freedom = #BernieSanders by Anonymous Coward · · Score: 0

    Yet another tale of Citizens-United-type bullying. Freedom = #BernieSanders

  113. Re:Great. THAT was that bug I ran into 2 days ago. by __aaclcg7560 · · Score: 1

    Yeah, the article says "gone and can not be restored" when it's clearly "will not be restored" since they clearly CAN do it. Logic fail.

    It's a common policy statement to avoid being inundated with requests to recover deleted files. The website did have backups and was able to recover that deleted file.

  114. Re:Great. THAT was that bug I ran into 2 days ago. by drinkypoo · · Score: 1

    It's a common policy statement to avoid being inundated with requests to recover deleted files. The website did have backups and was able to recover that deleted file.

    Yep. They negotiated once, now they will have to do it again next time or be called liars. What dumbasses. Almost as big dumbasses as the people linking external scripts

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  115. Re: Unavoidable if you're LAZY by Anonymous Coward · · Score: 0

    If you aren't starting from a computer system with no software, not even a BIOS, you are a hypocrite.