Maybe Agile Is the Problem - <AUTHOR> https://www.infoq.com/articles/agile-agile-blah-blah/ <comment><USER2> The core issue, I think, is that software development remains unpredictable in many very common situations (for a whole lot of reasons, most of which are not technical). Management and planning requires predictability, so we devise systems like Agile to attempt to impose predictability. This addresses the wrong problem: the work itself is unpredictable, no matter how predictably your sprints start and end and how well you fit X% of a project into each sprint. Things improve (in many cases thanks to systems like Agile) until they hit a local maximum constrained by that fundamental unpredictability, at which point planners and management are still unhappy, so more process is imposed, abd eventually we end up in the situation described by this article.

Usually,causes of the fundamental unpredictability remain unacknowledged and unaddressed beyond a superficial level.

<comment><USER3> I wonder how Apple gets round this?

<comment><USER4> By never announcing things before they're ready?

<comment><USER3> This seems to work very well. Why doesn't everyone do it?

<comment><USER4> You get a short-term boost out of announcing something. Some companies feel they cannot wait for that boost until they're done.

</comment></comment></comment></comment></comment><comment><USER5> All these new nonsenses are a problem. Those who understand them can also see that they are nonsenses, and those who do not understand them think that they are superior methodologies.

</comment><comment><USER6> Following the "12 principles" blindly is just as bad as letting your organization be rolled by the "agile industrial complex".

The idea of breaking work up into little chunks is great -- it is in no way contradictory to the ideas in the "Project Management Body of Knowledge" it is just putting them together in a different way.

In fact, those ideas need to be put together in a way that works for a particular organization.

In some cases the most important practice is the reduction of "work in progress", that is, a simple kanban board without a lot of effort into estimates and deadlines. If you have good build and deployment practices you should be able to deploy "whenever the business needs it" and not have to wait for a sprint to finish.

The biggest problem I see is a lack of trust between management and engineering. If that trust is not there it doesn't matter much which management methods you use. With agile you will bring conflicts up quicker, but that just might cause you to burn people out and spin your wheels. If you work on a longer timescale some people might be able to get work done despite the dysfunction.

</comment><comment><USER7> No, corporate "agile" is the problem. Politics, resistance to change, and power struggles are what's fatiguing. True Agile is liberating and invigorating, but unfortunately rare.

<comment><USER8> So rare that perhaps the meaning of the word has changed irrevocably?

Disclosure masquerading as a plug: I'm writing this at the moment- [https://riskfirst.org](https://riskfirst.org)

</comment></comment><comment><USER9> It's the same old bureaucrats who just changed in the "agile" clothes. Because "agile" is whatever form the bureaucrats want to call "agile".

<comment><USER10> It even shows up as "agile workplaces" these days, where it most often manifests itself as open floor seating with no set arrangements—transient would be the best characterization. FTA, just another example of how the word's lost its meaning, this time to the buzzword wars.

<comment><USER11> What do you mean by FTA? I'm not familiar with that TLA.

<comment><USER10> "From the Article"</comment></comment></comment></comment>


The worst thing about CoffeeScript - <AUTHOR> http://walpurgisriot.github.io/blog/2013/12/16/the-worst-thing-about-coffeescript <comment><USER3> The worst thing about CoffeeScript is that you are used to having scoping work a different way?

Let's extend your example:

        >>> a = 1
        >>> def foo():
              print a
        >>> foo()
        1

So Python does take from the outer scope?

        >>> a = 1
        >>> def foo():
              a = 2
              print a
        >>> foo()
        2

Or not?

        >>> a = 1
        >>> def foo():
              print a
              a = 2
        >>> foo()
        UnboundLocalError: local variable 'a' referenced before assignment

Or it just doesn't work at all?

Next time, pick a better example. The answer to "What does Python do with a variable from outside a function's scope?" is "It depends."

At least CoffeeScript is consistent.

<comment> aaron-lebo It is a bigger issue than lack of familiarity.

It can lead to some really unexpected bugs. There is a reason most languages don't do things this way.

[http://lucumr.pocoo.org/2011/12/22/implicit-scoping-in- coffe...](http://lucumr.pocoo.org/2011/12/22/implicit-scoping-in- coffeescript/)

<comment><USER4> This is also a problem with javascript. Javascript should do automatic variable shadowing but also throw a warning.

</comment></comment></comment><comment><USER5> Certainly, by far the "most controversial thing about CoffeeScript".

Fortunately, CoffeeScript is open-source, and can be both easily changed, and easily forked to suit your fancy. There are very nice versions (LiveScript and Coco, for example), that change this behavior by introducing two different types of assignment — if that sort of thing is your cup of tea.

... and if anyone has a specific proposal about how they'd like to see this feature changed in order to improve it, feel free to open a ticket for discussion — _it could very well happen_. For example, making this:

        topLevelFunction = ->
          path = "a/b/c"

        ... many lines of code go here ...

        path = require('path')

... into a compile-time error, with some sort of "Subsequent variable shadows `path`" warning, that would be something worth talking about.

<comment><USER6> The fact that it's open source doesn't help: using and maintaining a similar but subtly different version of coffeescript is worse than living with this bug since it means your code is now incompatible with the rest of the world's. Not to mention you're likely to train yourself to misread "real" coffeescript.

As to the ticket; A quick search would have revealed there are many tickets on the topic of shadowing: [https://github.com/jashkenas/coffee- script/search?q=shadowin...](https://github.com/jashkenas/coffee- script/search?q=shadowing&ref=cmdform&type=Issues)

And this ticket covers this specifically [https://github.com/jashkenas/coffee- script/issues/2697](https://github.com/jashkenas/coffee-script/issues/2697) and was closed.

<comment><USER7> I think Jeremy is being a bit disingenuous here. There are many good reasons for not wanting to fork a language, and getting a change made to CoffeeScript is frustrating and glacial. To be clear, I understand why this is: bad decisions are hard to reverse. Unfortunately, the specific issue raised at the top is a poster-child for bad decisions that are hard to reverse.

</comment></comment></comment><comment><USER8> I use both javascript and coffeescript extensively and regularly, and I just don't understand how this ever causes real problems to anyone - unless you're writing 5000 line long spaghetti code coffeescript files with ambiguous variable names, in which case lexical scoping is the least of your worries.

<comment><USER9> I have to agree, I will probably write 10k lines of coffeescript in the next year, much of it in reusable and open source libraries, and OPs problem does not seem to cause issues all the much in practice.

People have to distinguish between the simple issues that trip up beginners, and the fundamental issues that plague you for life.

<comment><USER10> > _I have to agree, I will probably write 10k lines of coffeescript in the > next year, much of it in reusable and open source libraries, and OPs problem > does not seem to cause issues all the much in practice._

Whether it causes any issues in practice for some particular programmer or not (and 10K lines is not much even for ONE modern webapp, and you write them broken down in multiple libraries), the thing is the behavior is logically flawed in itself.

Like Javascript needing "var" to NOT make a global variable (instead of defaulting on local vars) is.

Coffescript's behavior on this scoping issue is in the list of bad items that includes goto, global variables and nullity.

</comment></comment></comment><comment><USER11> Raganwald shows an interesting point of view on Coffeescript scoping in relation to javascript [https://github.com/raganwald/homoiconic/blob/master/2012/09/...](https://github.com/raganwald/homoiconic/blob/master/2012/09/actually- YOU-dont-understand-lexical-scope.md)

</comment><comment><USER12> Never had this problem with coffeescript until... today. Some hours after I read this post. Thanks

angular.module("blabla", []).directive "bla", ->

template: """
Whatever

 """ scope: true transclude: true restrict: "E" compile: (element, attributes) -> $input = element.find "input" for attr, value of attributes.$attr $input.attr value, attributes[attr] element[0].removeAttribute value

    		(scope, element, attributes) ->
    			$input = element.find "input"
    			# do something with $input
    			# now $input is global to all directive and that sucks

<comment><USER13> Drop a "space space" in front of every line in your code and it'll format monospace.

</comment></comment><comment><USER14> This is why I don't use it. I know JS well, I can think in JS. Changing the syntax is fine but altering semantics in subtle ways would probably drive me crazy.

<comment><USER15> It doesn't really alter the semantics, if you recognize that CoffeeScript _always_ adds `var` before variable assignments, you can just get around that by attaching a variable you want to share to a higher scope by using `this.whatever = 'foo'`. It's really not as hard as people make it out to be, but there are still plenty of killer reasons not to use CS (for example, if you don't feel like learning it...I mean JS is just as good, it does all the same stuff).

<comment><USER16> CoffeeScript doesn't always add var before assignments though, sometimes it does, sometimes it doesn't, depending on the variables in outer scopes.

This has two assignments, but only one var in the compiled JS:

        a = 1
        -> a = 2

This has two vars:

        -> a = 1
        -> a = 2

<comment><USER6> Much worse is this gotcha:

One variable:

        a = 1
        -> a = 2

Two variables:

        -> a = 2
        a = 1

</comment></comment></comment></comment><comment><USER17> It is funny to see Python in an example of 'good' variable scoping. How exactly would you refer to the outer 'a' in that python example?

<comment><USER18> The "global" keyword in Python binds a name to the scope of the top level of the enclosing module. The "nonlocal" keyword is a Python 3.x feature which binds a name to the next enclosing scope level.

So you would do:

        a = 1

        def contrived():
            global a    # I added this
            a = 2
            return a

        contrived() # 2
        a           # 2

The "nonlocal" keyword would give the same result if the outer scope is the top level of the module. If the entire above code is itself enclosed in a function like so:

        def enclose():
            a = 1

            def contrived():
                nonlocal a
                a = 2
                return a

            contrived() # 2
            a           # 2

You need "nonlocal" to refer to the "a" that's a local variable in enclose(). I.e. "global" gets you the top level, "nonlocal" gets you the next enclosing level.

The keyword is only necessary when you're _assigning to_ an out-of-scope variable. If you remove the assignment statement "a = 2" from the function, the program will correctly read and return the value of a from the enclosing scope.

In other words, by default the set of names considered to be local variables in a function is the set of names that are the target of an assignment statement. Usually the default behavior is what you want, but if you wish to override it, use the "global" or "nonlocal" keyword.

From a design standpoint, I've learned over the years that global / nonlocal keywords are a "smell" that frequently indicates poor architecture, usually of the sort that the oft-cited "global variables are evil" doctrine is intended to protect against. Code that extensively uses these keywords should usually be refactored into a class, with the formerly global names instead being attributes (member variables).

<comment><USER19> Not completely seriously.. This is why some of us prefer Perl ;)

        my $a = 1;

        my $contrived = sub {
            my $a = 2; # new lexical variable $a
            $a = 3; # if the my above wasn't there, outer $a would be 3
            ...
        }

        say $a; # 1

Explicit declaration of the scope of a variable at initialisation is awesome. 'global' and 'nonlocal' feel weird/less consistent/like a workaround. People are used to creating variables 'on the fly' in Python / CoffeeScript - <USER2> break (for a certain value of 'break') certain assumptions in certain circumstances.

I've never heard anyone ever complain about perl's lexical 'my'.. It even catches - with a warning - multiple my declarations that will clobber each other. You don't see that in other languages that often.

<comment><USER18> If you've ever programmed in JavaScript -- and most people have, it's the language of the Web -- you will know that it is _very easy_ to accidentally omit the "var" keyword and unintentionally pollute the global namespace. Such a bug likely will not manifest until someone else writes completely unrelated code that uses the same variable name by coincidence.

Explicit declaration of the scope of a variable at initialization leads to unintended global namespace pollution when omitting the declaration is legal and causes the variable to be placed in the global scope, which can be difficult to diagnose because it is usually completely silent until unrelated code happens to interact by using the same name.

From a language design standpoint, this means that you should either require a declaration which determines scope (C or Java), or have local be the default for variables whose scope is undeclared (Python).

> I've never heard anyone ever complain about perl's lexical 'my'

That's because programmers who care about good syntax in their languages don't use Perl.

<comment><USER19> > Explicit declaration of the scope of a variable at initialization leads to > unintended global namespace pollution when omitting the declaration is legal > and causes the variable to be placed in the global scope

Ah, but it's _not_ legal with 'use strict;' (which _everyone_ uses)

> That's because programmers who care about good syntax in their languages > don't use Perl.

And Lisp has too many parentheses. I clearly just like my code to be illegible.

<comment><USER6> Yeah - back when coffeescript was new this was an argument, but with "use strict", the likelihood of accidental mis-assignments is actually considerably slower in javascript than in coffeescript. In javascript you'll get an error assigning to a non-existant variable you meant to be global; in coffeescript you'll get a local varaible and that means subtly buggy code.

<comment><USER20> I think cursork was talking about 'use strict' in Perl; he said that everyone uses it. 'use strict' in JavaScript is much rarer than it is in Perl, at least in my experience.

<comment><USER6> Well, I _always_ use it when I have the chance: it's easy to turn on, and it catches nasty bugs. Why wouldn't you turn it on? Even if you have a large legacy code base, it's still a a win, since you can turn it on function-by- function.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> you're doing something wrong if this is an issue for you.

I personally would like to apologize to everyone for dissing CoffeeScript in the past, here (thus my low karma) and elsewhere.

I'm working with a new customer now, three weeks already. and they're using CoffeeScript. and I had to get over myself and start using it. and it's amazing. I've been so stubbornly blind to be against it without actually trying it out yet cursing and flaming against it. it's so much faster to work with it, it reduces the boilerplate code, it simplifies everything.

and, yes, I still think you need to be able to know and use JavaScript very good before taking on CoffeeScript -- otherwise topics like the one we're discussing here arise.

<comment><USER10> > _you 're doing something wrong if this is an issue for you._

Of course he's doing something wrong. That's the whole point of TFA. That the language, due to a bad design decision, permits this case of doing something wrong, when it shouldn't.

Like Javascript making variables global by default (unless you use var). If this is an issue to you, you're doing something wrong (namely, you're forgeting to add "var"). But the language does an even bigger mistake by permitting this to happen.

<comment><USER21> all I can say is "use strict";

<comment><USER10> I do! But that's not available in CS, right?

</comment></comment></comment></comment><comment><USER22> For me there is no worst thing in CS. The thing that bothers me now is that there is no practical standard on documenting the code similar to JsDoc. Yes there are a couple of ways to do that, but in fact meta-programming helps not only for cleaner code, but also Closure Compiler, any IDEs ( WebStorm autocomplete ) and also it helps make the code more readable. Anyway in every project that I work I usually try to convince my team to switch to CoffeeScript.

Big thanks to jashkenas, because ... CS is awesome!

</comment><comment><USER23> First of all, that's hardly a bad thing about CoffeeScript. It's very consistent and is a tradeoff of not having to use var everywhere to define your variables.

If you want to complain about CoffeeScript, there are some much more fundamental issues. For example:

\- I can write `foo.bar baz, bat` but if I call it with no arguments I have to use parens. `for.bar` will just return the function. I understand why it's the case, but it sucks.

\- Syntax is so flexible that sometimes it still compiles when you make a mistake.

<comment><USER24> "\- I can write `foo.bar baz, bat` but if I call it with no arguments I have to use parens. `for.bar` will just return the function. I understand why it's the case, but it sucks."

Interestingly, if you write "do foo.bar" you don't need to use parens and it will work as expected. I think this is a bit more idiomatic.

</comment></comment><comment><USER25> Worst thing? I was expecting to see discussion on the use of white-space instead of the obviously superior curly braces! :-)

</comment><comment><USER26> I believe there is a coffeelint plugin that will warn you if you reassign a variable from an outer scope

</comment><comment><USER27> MoonScript introduces a special construct for handling this exact situation: [http://moonscript.org/reference/#the_using_clause_controllin...](http://moonscript.org/reference/#the_using_clause_controlling_destructive_assignment)

</comment><comment><USER28> iirc LiveScript don't have this issue with scoping

<comment><USER29> In LiveScript there's a := operator. From the docs -- "However, unlike CoffeeScript, you must use := to modify variables in upper scopes" \-- I find LiveScript overall a better alternative to CoffeeScript. If you're into CS for the sugar, then you'll love LS.

<comment><USER30> Much love to LS! Been using it almost exclusively for over a year.

</comment></comment></comment><comment><USER31> Is this really news?

</comment><comment><USER32> Don't use semicolons in CoffeeScript!</comment>


Amazon as experiment - <AUTHOR> https://www.ben-evans.com/benedictevans/2019/7/26/amazon-as-experiment <comment><USER2> I've recently been reading through the Amazon letters to shareholders [[https://ir.aboutamazon.com/annual- reports/](https://ir.aboutamazon.com/annual-reports/)].

It's clear from those letters that Amazon is not an experiment, but rather a flawlessly executed plan about how an online retailer can exploit their inherently better capital flows to grow very quickly.

It's almost the opposite of the modern startup approach.

Not: "We need to borrow money and take investment to get big and dominate the market".

Instead: "If we drive our costs down and focus on fast fullfillment or orders/inventory turnover, we'll have all this spare money sloshing around to reinvest, and happy local customers. Therefore we can't help but get big.".

(There's a lot more to it than this.)

The first letter shows that they already understood the economics of web retail very well in 1997!

Accusing them of lacking _pride_ is also definitely missing the mark. Amazon are optimizing customer satisfaction and rate of fullfillment. They enter all these other markets exactly because they are proud enough to believe they'll win. Amazon wouldn't enter a market aiming to be 2nd best.

I haven't gotten to the present yet, so I didn't know that Amazon had opened high-street retail shops. The earlier letters said that they wouldn't do that unless they figured out how to make it scale faster than their expenditures, like their online business.

<comment><USER3> >Amazon are optimizing customer satisfaction and rate of fullfillment.

This isn't just a byproduct of high speed/low drag commerce, they intentionally and aggressively focus on and invest in customer satisfaction.

Anecdotally and most certainly with exception in this very audience they are easily in my top three if not GOAT for direct human to human empathetic and effective customer service. Google in comparison leaves me feeling like I'm twisting random knobs on someone else's lab project.

<comment><USER4> Looking at this now, it's amazing to compare with the public criticism that Werner Vogels gave to the face of the corporate blogging movement back in 2006.

[https://www.allthingsdistributed.com/2006/03/naked_answers.h...](https://www.allthingsdistributed.com/2006/03/naked_answers.html)

Back then when he claimed that Amazon did a very good job of being customer focused, I was thinking: maybe, but whatever, I'm not sure what's special about their customer experience compared to others. Today, I'm thinking: wow, now that's a real example of audacious vision both executed and realized.

<comment><USER5> On a tangent, I recently interviewed with amazon and you can tell everyone's being pushed to go to great lengths when it comes to customer satisfaction. The interview really gave me a sense of what amazons thinking when they give you a 25 dollar discount when you call them about a delayed delivery on a 30 dollar item. From the outside looking in, you think they are crazy but when you've seen the organizational obsession with customer satisfaction, it all makes complete sense.

</comment></comment></comment></comment><comment><USER6> > _All of this reminds me of stories about early Google, and how the company > systematically rethought everything from first principles. Sometimes this > was just a painful waste of time, as it learned the lessons everyone else > had already learned, but sometimes the result was Gmail or Maps._

Didn't Gmail start as someone's 20% project, rather than something that was "systematically rethought from first principles"?

<comment><USER7> _> Didn't Gmail start as someone's 20% project,_

Gmail's creator, Paul Buchheit, said it was _not_ a 20% project:

[https://time.com/43263/gmail-10th- anniversary/](https://time.com/43263/gmail-10th-anniversary/)

excerpt: _> Gmail is often given as a shining example of the fruits of Google's 20 percent time, its legendary policy of allowing engineers to divvy off part of their work hours for personal projects. Paul Buchheit, Gmail's creator, disabused me of this notion. From the very beginning, "it was an official charge," he says. "I was supposed to build an email thing."_

</comment></comment><comment><USER8> > Of course, sometimes "it makes no sense" is the right reaction (remember the > Fire Phone, after all). But when clever people do things that make no sense, > it can be worth looking twice.

Even though Amazon failed with the Fire Phone, I wish they'd try again! I think Amazon is uniquely poised to do this. Have a half-smart phone that includes their back-end services (Alexa, shopping, movies, music, storage for your photos) and a selection of curated apps (Uber, Lyft, some popular games) and a decent browser, and you may have a good phone for older people, people who want a nice phone at, say, a $150 price point but don't want to deal with complexity

<comment><USER9> The Fire Phone is actually a very intriguing topic. If I had to choose out one point in time when Amazon started to change I would take the Fire Phone. What follows is just my personal opinion and impression I had working at Amazon back the day, so take it with grain of salt. I also was not directly involved with the Fire Phone.

The Fire Phone arguably was Jeff's pet project. E.g. the four cameras facing forward were his idea if I remember well. Then it failed. What should have happened, based on leadership principles, would have been for Jeff to own it and admit it (vocally self critical and so on). That didn't happen, my impression was that blame was put on the lower echelons of the organization. For that was, in retrospect, the point when leadership principles started to be used as a political tool by some people. After that, at least for me, the culture changed as well. It took more than a year for that effect to trickle down, so. Amazon was still a good yet challenging place to work, but it felt much more like any other large corp out there.

<comment><USER10> I think the point in time that you see the LPs started being used as a political tool depends solely on how long you've been at Amazon and the level you're at.

Some people truly believe in the LPs. Some people truly believe they can be used to get ahead and justify whatever actions they want to do. I've never worked directly with Jeff, so I have no idea what his approach to them is.

The Fire Phone? That best analogy I've heard for it is that the Fire Phone is to Jeff as the "Homer" car is to Homer Simpson[0].

[0] [https://imgur.com/a/o0Q6fw6](https://imgur.com/a/o0Q6fw6) and [https://simpsons.fandom.com/wiki/The_Homer](https://simpsons.fandom.com/wiki/The_Homer)

<comment><USER11> > Some people truly believe in the LPs. Some people truly believe they can be > used to get ahead and justify whatever actions they want to do.

They can be the same people. There's an incoherence in any ethical system based on a set of values.

The false justification isn't necessarily intentional. Motivated reasoning[1] is a natural cognitive bias, so while you're cherry-picking values that support your desired ends, it doesn't feel like you're doing it.

A better way to approach the LPs is to recognize that they're smart business practices, but that they're subordinate to professional ethics, which in turn are subordinate to a moral code.

[1]: [https://en.wikipedia.org/wiki/Motivated_reasoning](https://en.wikipedia.org/wiki/Motivated_reasoning)

<comment><USER10> > They can be the same people

Oh, sorry, I meant that they are different people. Though I've heard of and met one or two people who might be crazy enough to be both.

</comment></comment></comment></comment></comment><comment><USER12> About the last part,regarding the buying experience:

The way Amazon likes to solve problems is by creating platforms.

So they created FBA, and now others discover products for them.

They also created their affiliate program, and that's a good way(combined with other business Intel methods) to discover online buying experiences with potential, and than scale them.

And when they do see something non-standard with potential, they invest.

For example: printed t-shirts. They copied that idea.

And how do they win here?

A combination of a lot of traffic, the best logistics, and maybe cheaper manufacturing costs(due to scale), combined with Amazon's execution.

And that could be a general method for creating new experiences.

<comment><USER13> You are correct. Moreover,amazon uses one platform to support others. For example the eCommerce platform is supported by AWS. I would rather look at amazon as a portfolio of platforms.

This model is very hard to beat, since usually the emerging platform operate at a loss, which is big barrier to entry.

The key to win here is not to fight the emerging platform but the supporting platform. For example, if one attack AWS, it would likley take down the eCommerce part.

</comment></comment><comment><USER14> I don't think Amazon can roll over supermarkets as easily as the average mall store.

People visit mall stores sporadically enough that they might forget about the bad experience they had or hope it might be different or feel they don't have a choice.

Thus mall stores can damage their brand image for a quick buck; in fact they are often brain washed by their own advertising and have no idea how the customer sees them.

Grocery, on the other hand, has a customer that does back at least once a week, if the brand image is not upheld they can get similar goods elsewhere.

That awful whole foods at union square with the cattle chutes at the checkout might look good compared to the local bodega in NYC, but does not look good compared to a good suburban supermarket (Wegmans). It is one case where urban folk could be out of touch with the broader market.

<comment><USER15> I grew up near that whole foods, and you have to remember that when the store opened there was not a single grocery store near by that was nearly as large and as good as that one. Hell, the mall that it's in might look less high end than the rest of Union Square, but it's far nicer than the department store Bradley's that was there before.

Also worth noting that since that whole foods opened, the grocery situation throughout a lot of manhattan improved in that they opened quite a few more locations that also were rather large compared to the older grocery stores around.

This all said, I think the real market in a place like manhattan is for grocery delivery. Fresh Direct when they opened was tremendously popular right away, and given amazon's hold in the online purchasing space, within manhattan (and other cities/neighborhoods where few people drive), online grocery purchasing experience matters more for the brand than in store experience.

<comment><USER16> I don't know how it works in eg the US but Amazon's online grocery purchasing experience is really poor compared with literally every other competitor here in the UK in my view. The system of "add goods to a box until it's full based on size and pay by the box" just gets in the way as it's so alien compared with most online shopping experiences. The traditional supermarkets charge a fixed fee based on time of your delivery slot and it's much more intuitive (popular times are more expensive to allow supermarkets to smooth the deliveries).

Where I think they do get it right in that sort of space is the Subscribe and Save programme which must cannibalise a fair amount of supermarket purchases. The "set and forget" nature of it works really well for stuff like nappies/diapers (it's a bit more painful for things like toothpaste because the quantities/frequencies aren't quite right).

Historically the quality of their fresh produce was also relatively poor (not particularly fresh and lower grade I think, although that just put them on a par with eg Asda or Morrisons) but I don't know if that's changed since the Whole Foods purchase (I'd like to think so).

</comment></comment></comment><comment><USER17> I guess I took the wrong thing away from this piece — where do I lay my hands on a sweet, sweet physical copy of the 1908 Sears catalog?!

<comment><USER18> From Amazon of course!

[https://www.amazon.co.uk/1908-Sears-Roebuck-Catalogue- Schroe...](https://www.amazon.co.uk/1908-Sears-Roebuck-Catalogue- Schroeder/dp/0873490185)

There's also a copy on the Internet Archive, I've yet to find the portable forge:

[https://archive.org/details/catalogueno11200sear/](https://archive.org/details/catalogueno11200sear/)

<comment><USER18> High grade wagon scales is my favourite find to date:

[https://archive.org/details/catalogueno11200sear/page/760](https://archive.org/details/catalogueno11200sear/page/760)

(Scales is singular, isn't it?)

<comment><USER19> In the same way that pants or trousers are singular, yeah. It's really a pair of pants, trousers or scales. With all these things you need two to make them work.

<comment><USER20> Glasses as well, for two-eyed people.

<comment><USER18> Or four eyed

</comment></comment></comment></comment></comment></comment><comment><USER21> From a profitability standpoint, I am just not seeing how Amazon retail has any chance at the long term success that the market does. Even as they have taken over different verticals, they still had to keep prices down and margins slim. They have no pricing power and have huge fixed cost.

Of course, AWS is a different story.

<comment><USER22> >...huge fixed cost

What fixed costs are you referring to? It seems to me that almost their entire cost structure is variable and quite low, compared to competitors.

<comment><USER21> Retail - warehouses and warehouse workers and automation.

<comment><USER23> Those costs are lowering with automation, green energy/power, and autonomous transportation.

<comment><USER21> Autonomous transportation - the same story that Uber and Lyft are saying as the savior for their businesses that will help them finally turn a profit.

</comment></comment></comment></comment></comment><comment><USER24> > Amazon is so new

Amazon is 25 years old.

I saw a comment on Medium the other day that summed up my feelings on Amazon:

Third, his "business" isn't even a business. Amazon, for 99% of its history, lost more money than it earned. The reason it even still exists today is because it was propped up by truly gigantic loans in the form of stock shares and VC capital. Propping up a non-profitable company until it grows big enough to crush any and all competition is literally the Communist Chinese model of "capitalism."

Fourth, all of Bezos's "wealth" is built on the backs of overworked, underpaid, and horrifically mistreated employees who aren't even allowed enough time to use the bathroom, a sizeable percentage of which are elderly folks who, in a more just society, would be enjoying their retirement.

[https://medium.com/@lifeinromania/jeff-bezos-is-a- fraud-458f...](https://medium.com/@lifeinromania/jeff-bezos-is-a- fraud-458fb8cb4b36)

Another note from another site The Street:

Using this estimate, the overall business, without AWS and Prime, lost about $2 billion last quarter. Although advertising is included here, too, this loss is almost all from the retail side of the business.

[https://www.thestreet.com/opinion/amazon-is-losing-money- fro...](https://www.thestreet.com/opinion/amazon-is-losing-money-from-retail-) operations-14571703

I don't doubt that Bezos is wicked smahhht but it doesn't take a genius to figure out that if you borrow so much money that you can run a business at a loss for decades and undercut everyone that you'll be successful. Except he clearly isn't even able to do that.

<comment><USER25> > The reason it even still exists today is because it was propped up by truly > gigantic loans in the form of stock shares and VC capital

And those people are being rewarded for it..so what?

> Except he clearly isn't even able to do that.

Except he does. They optimize for cash flow, not income, and they're absolutely crushing it in that department.

Let me kindly refer you to Amazon's cash flow statement:

[https://www.marketwatch.com/investing/stock/amzn/financials/...](https://www.marketwatch.com/investing/stock/amzn/financials/cash- flow)

For more fun reading: [https://25iq.com/2014/04/26/a-dozen-things-i-have- learned-fr...](https://25iq.com/2014/04/26/a-dozen-things-i-have-learned-from- jeff-bezos/)

> Fourth, all of Bezos's "wealth" is built

Bezos wealth is built by shareholders who invested in Amazon. What you're referring to is a moral and regulatory criticism, which frankly shouldn't be a criticism of Bezos himself but rather the people who govern his company and wealth.

<comment><USER26> Amazon hasn't raised money from investors since the IPO in 1997. It's had positive free cash flow since 2003.

</comment></comment></comment><comment><USER27> This is the fluffiest BE article i've read.

> So maybe that's the real test of Amazon's pride: can it work out how to let > us shop, rather than just buy?

Why even write this article?</comment>


How Linode Screwed Me - <AUTHOR> http://mufasa.gq/how-linode-screwed-me/ <comment><USER2> I think Linode is totally understandable in what they are doing.

The author and his client however have both been deeply unprofessional. But ultimately the author has the responsibility to do better next time.

Here is where the author could do better.

> Don't mix your personal resources and clients resources. I highly suggest > provisioning the client their own server and Linode account and showing them > how to pay. If you would like to simplify life for the client then use your > own account, pay through your card only after the client has paid you.

> Qualify your customers. A customer who doesn't pay is not a customer. A > customer who is as difficult as the one you are dealing with probably > shouldn't be a customer. I get that you're really desperate, going for 200$ > opportunities but every now and then there is a customer who you should just > say no to.

> Avoid the gig/freelancing space like the plague, it's rarely a place where > you will be adequately rewarded for your time. Get a full time job, remote > or on premise and perhaps in the future you can do high end consulting if > you really like that freedom.

> Please calm down, I get the frustration that got you to write that post but > it has affected your online image far worse than it has Linode's. Most > people will read that post and come away with the idea, that you are > unprofessional, desperate and highly unstable.

<comment><USER3> I agree, but next time please use * or - for the bullet points, because > is usually reserved for quotations.

</comment></comment><comment><USER4> Maybe this should be flagged and removed, but the author is completely in the wrong here.

As far as Linode, or anyone else should care, the guy who is paying for the account, owns the account. If he's the one paying the bills, why wouldn't have access to the account?

<comment><USER5> I don't see how that is true. I own a web hosting business (since 2003). This situation is EXTREMELY common (like 5%-10% of accounts).

I do not see how the payer is the account owner. At all. Can you clarify why that would be?

Legally speaking (in german law): The account owner is the person who opened the account, because that is the person who the provider has made the contract with (except the situation of a "Geschäftsbesorgungsvertrag" or a "Vollmacht" [ letter of authorization, power of authority, idk. whats the english term] where you make the contract for someone else). The payer may have a legal connection to the account owner (will, in 99% of the cases, but must not), but not to the provider.

So legally speaking Linode - at least in german law - Linode is providing unauthorized access to a tzhrid party and will be held accountable for all the damages the account owner suffers. That is a violation of GDPR, too. You'd propbably resolve that by a simple letter from your attorney or a court order if Linode does not comply (taking a few days only because of "emergency conditions").

It's not easy to translate all the legalese, I hope you can follow ;-)

<comment><USER6> I am using OVH since we stopped using our own servers in a closet and had to upgrade our services.

When you rent a server, or a VPS, you have 3 contacts. Administrative, technic and billing. Like for domain names.

That way, when a client wants to directly get his own server, they put me as technical contact (and can revoke me if ever they want).

The main contact is the administrative one. It can change the other contacts.

All is clear, and if problems like OP had happens, then someone did a really worse choice

</comment></comment></comment><comment><USER7> The part I don't get is... Somewhere along the line auhor got clients CC to out into linode...

which then paid for all servers, instead of just client's servers. And author didn't migrate his servers away.

But then auhor complains that client didn't pay, and author didn't charge his CC.

The situation may suck, but as author points out, he made a number of errors trusting client, and author made some additional errors as above.

As author can still ssh to his servers, I'd say he migrates the sites away, and chaulk it up as a lesson learned. Not sure why Linode is the one talking the blame in this tale.

</comment><comment><USER8> When I was younger I had similar experiences with customers who ghosted when their needs to be paid. The lesson I learned is to make sure you keep control over your code / env until the customer has paid. I implemented some mechanism in my sites that when they ghosted me, I just did a special api call which cleared the database and showed in big letters that this website was stolen. Suddenly there is contact again.

</comment><comment><USER9> When you accept that some customers will lock themselves out of their account and you permit an alternative pathway back in, you also accept situations like these.

There are lots of situations where the person who's managing vs paying are different; lots of situations where a web resource that's being managed is so important that no single person should have complete power. That's why Cloudflare provides extra security for those who don't think the convenience of getting back into their account is worth what's essentially a social backdoor.

</comment><comment><USER10> If my credit card is paying for an account, why wouldn't I get access to it?

There's lots to wish about Linode, but them allowing the person paying the bills to manage the account isn't one of them.

<comment><USER5> I laid ot the legal situation above.

</comment></comment><comment><USER11> Nobody mentions that the dude was also paying for his other 2 servers? So how can it not be his account. It's obviously the authors fault

</comment><comment><USER12> The counter to this is AWS. My credit card was not enough to access the account after I lost the password. No way to close the account either. Just cancel the credit card and hope they didn't send debt collectors after me.

Please be smarter than me and keep your AWS account tied to a current email address.

</comment><comment><USER13> I hosted a domain on Linode years ago, this sure brings back memories of that time.</comment>


An important part of science is admitting when we're wrong - <AUTHOR> https://www.theverge.com/21358867/vaccine-clinical-trials-trust-science-wrong <comment><USER3> This is absolutely the case - we need to be happy to admit we're wrong. I think everyone would agree.

But what if your whole paradigm is wrong? What if the entire idea you are labouring under, is mistaken? Can we even consider this and change tack? Can the Verge consider this idea?

No.

I'm indifferent to vaccinations - I don't know if they cause more good than harm. If pushed, I tend to think that the human body is a better handler of disease than doctors, given the right food, water, and general environment.

I do see that the medical industry does stand to benefit from selling vaccines. This is to say that as for a man with a hammer every problem looks like a nail, for the medical industry every problem requires medical intervention. They cannot in good conscience to their shareholders recommend that people eat a better diet, not go to hospital to give birth, nor gain natural immunity. Such answers cannot be leveraged for profit.

I think its fair to say that we have a sickness industry, where all the incentives are to treat sick people. We do not have a health industry - <USER2> someone gets paid for ensuring that we live as long and as well as possible. The incentives are all wrong. Perhaps the industry is happy to have a large pipeline of sick people, or people that they can 'treat'. Of course companies think mostly of profit - but would they even go so far as to create (fake) opportunities to open new markets to the world? Do vaccines that needs to be taken annually, by a global population, perhaps mandated by law, constitute a big enough market to make it worth it? Could such an industry admit a mistake?

<comment><USER4> 10 million deaths prevented between 2010 and 2015 does sound like the good outweighs the harm. [0]

I am not aware of any scientific discussion that says otherwise, perhaps you can provide some additional information to further clarify what you mean?

[0] [https://www.who.int/publications/10-year- review/vaccines/en/](https://www.who.int/publications/10-year- review/vaccines/en/)

<comment><USER3> Well, you don't really know how many deaths were prevented. You have what is effectively public relations arm of the industry computing those numbers.

However, iatrogenic causes are said to be the third largest cause of death in the US. There are various values bandied about, but I think this is in the order of 225,000 deaths per annum. So, this is to say, doctors taking an incorrect action eg prescribing the wrong drug, wrong amount, catching MRSA in hospital, etc, is the third largest cause of death.

I think, but cannot be sure, that this was the case for someone in my family. An elderly relative who had been on the same medication for 40 years, had their medicine changed. Within a month, that person had a stroke, and was dead a year later. Obviously this is anecdotal, and I actually don't think this would even have counted as a iatrogenic death statistic, but it does indicate how this could be the case. And that the actual iatrogenic death numbers could be higher, if it were possible to get accurate breakdowns of causes of death.

<comment><USER4> Are you calling the WHO the public relations arm of the pharmaceutical industry?

Most statistics regarding diseases and disease outcomes are collected by the national health services in a country, not by the pharmaceutical industry.

<comment><USER3> And the statistics are a mess.

With regards to coronavirus, people who die "with" coronavirus and die of say, a heart attack, are being counted as coronavirus deaths. They aren't dying "of" the virus, they just happen to have it. But this doesn't count as a heart attack statistic.

Not to forget, that there are financial incentives for doctors and hospitals to mark deaths as coronavirus deaths.

<comment><USER4> Of course they're a mess, we don't live in a black or white world. It doesn't mean that you should disgard them though.

People don't die of coronavirus. They always die of some other cause like cardiac arrest, internal bleeding, organ failure, ... Let's take your specific example. Where do you draw the line between corona virus and cardiac arrest? In practice there will be many cases where the distinction is not clear cut.

<comment><USER3> Yes. Its not clear cut. But they are all being counted as coronavirus.

The statistics are gamed to prove the case.</comment></comment></comment></comment></comment></comment></comment>


Turkish Government cracks down on Twitter users - <AUTHOR> http://www.thehindu.com/news/international/world/turkey-cracks-down-on-twitter-users/article4784440.ece

<comment><AUTHOR> This is why people should use Bitmessage.</comment>


Can software engineering be meaningful work? - <AUTHOR> https://codewithoutrules.com/2019/04/12/meaningful-programming-work/ <comment><USER2> Generally, I have always found software engineering to be meaningful work. If I didn't find meaning in it, I'd do something else.

Of course, not all software engineering positions are meaningful, but I tend to avoid the ones that that lack meaning for me.</comment>


Canvid.js – tiny library for playing video on canvas elements - <AUTHOR> http://gka.github.io/canvid/ <comment><USER2> Same demo video as mpeg1, 243kb, decoded in JavaScript: [http://phoboslab.org/files/jsmpeg/cat/](http://phoboslab.org/files/jsmpeg/cat/)

Longer demo: [http://phoboslab.org/files/jsmpeg/](http://phoboslab.org/files/jsmpeg/)

<comment><USER3> What are the trade offs in terms of size and processing required?

<comment><USER2> Decoding an MPEG1 video is of course much more taxing on the CPU than scrolling through a large image, but low-res videos shouldn't be a problem even on older mobile devices. jsmpeg uses WebGL to speed up the decoding process a bit. On an iPhone5S, it can decode 720p video in realtime[1].

jsmpeg only unpacks the current frame into memory instead of decoding the whole video at once, so it's memory footprint should be much lower. MPEG1 files are also much smaller than storing individual JPEG frames.

[1] [http://phoboslab.org/files/jsmpeg/benchmark-720p.html](http://phoboslab.org/files/jsmpeg/benchmark-720p.html)

<comment><USER4> > _On an iPhone5S, it can decode 720p video in realtime[1]._

While killing the battery while doing it... Why we don't just expose lower level decoding apis to JS instead, I don't know...

<comment><USER5> because of how easy it would be for the already bloated ad laden mobile web to abuse those powers, and how seriously obnoxious, bandwidth eating, and battery killing the results would be.

<comment><USER4> To ...abuse the powers of having access to an API for decoding video streams?

As we've already established, this can already be done, badly, with native javascript. So adding that access would add nothing new to "abuse" or "eat bandwidth" than what we already have, and will induce even LESS bloat than the current situation.

As for merely playing movies, ads etc (without direct access to low level decoding APIs), obviously javascript can already do that with the HTML5 media api + native encoders. So nothing new here either.

So I can't tell what disastrous "results" you're referring to stemming from what I propose.

Giving JS access to low level movie decoding/encoding would just be something to use to make creating JS-based video editors and such easier and more performant.

<comment><USER5> You can do it, but as you can see, it's not very efficient and eats battery. nobody would actually put this "decode video in javascript" stuff in an ad, as it stands. Making this stuff work well is hard.

make it efficient and easy, and you change the economics of the situation to encourage abuse.

<comment><USER4> > _You can do it, but as you can see, it 's not very efficient and eats > battery. nobody would actually put this "decode video in javascript" stuff > in an ad, as it stands_

No, but they can already show any arbitrary video they want by using Javascript to add any number of videos playing on the website -- that's just plain vanilla HTML5.

Adding hooks to low level decoding doesn't add anything new that they can't already do when it comes to showing ads. For ads they only care for high level decoding.

It only adds something new when it comes to creating video mangling apps in JS.

<comment><USER5> that is on desktop. It is currently not possible to autoplay video on an iphone, and that is in fact the topic of this thread, and (partially) the purpose of this library.

Beyond autoplaying, I can't imagine what you mean about adding "hooks" to low level decoding. What does that actually gain you over the current situation?

<comment><USER4> > _that is on desktop. It is currently not possible to autoplay video on an > iphone, and that is in fact the topic of this thread, and (partially) the > purpose of this library._

Aha, I see, thought that wasn't the case.

Now, having that capability didn't turn out to be much of a problem on the desktop, did it? I mean, regardless of battery concerns etc, do we really see that many autoplayed videos?

> _What does that actually gain you over the current situation?_

The ability to decode individual frames, re-arrange them, add filters to them etc using accelerated native APIs -- much more than some "play()", "skip()" affair.

<comment><USER5> well actually the ability is a huge and obnoxius problem on desktop, particularly for accessibility. there _are_ lots of autoplaying videos. i do not know what web you are on where there isn't. I'd be happy if the deaktop browsers turned off autoplaying video and audio. or at least add that as an option for me, the user who has to jump for the mute button every time some jerk developer thinks they are being clever. aside from that, mobile is a different story- I doubly don't want a loud car salesman voice telling me about his get rich quick scheme on the train ride home- eating my precious mobile bandwidth, costing me real money.

as for your special api abilities, again, you _can_ do all those things now, even on iphone. so again, what more do you actually want?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Here's the massive jpeg sprite they use: [http://gka.github.io/canvid/images/canvid- example.jpg](http://gka.github.io/canvid/images/canvid-example.jpg)

<comment><USER7> Jpeg is massive

The world is in trouble

Ah what we tell dem murdera

</comment></comment><comment><USER8> There is also cssvid ([https://github.com/AndyTheGiant/cssVid](https://github.com/AndyTheGiant/cssVid)). It does the same but with background positioning instead of drawing on a canvas.

<comment><USER9> Why use javascript though? Here's my crude attempt at a CSS only implementation (Using CSS3 animations).

[https://output.jsbin.com/qocefivowa](https://output.jsbin.com/qocefivowa)

<comment><USER3> Nice! Would love to see a benchmark

</comment></comment></comment><comment><USER10> You mention you're limited to short videos due to issues with the maximum size of images on ios. Why not just generate multiple images? That way you could load the video "parts" in parallel as well.

<comment><USER11> On iOS Safari you're limited to 2 parallel HTTP connections at a time so not a huge advantage to the multiple connections. Don't disagree with splitting it up though

</comment></comment><comment><USER12> > Because you can't embed and autoplay HTML5 videos on iOS! Yeah, that sucks.

Are there other legitimate use cases than using this a fallback for iOS? Curious.

<comment><USER13> Could be interesting if you wanted to do client-side filtering/modifications, but a lot of that is probably possible with video files (and maybe WebGL) as well.

</comment></comment><comment><USER14> Pretty fun experiment. I wonder if just having the big sprite sheet in a div and positioning the image with -webkit-translate would perform as good.

</comment><comment><USER15> How does this differ from Apple's launch of iPhone 5 website?

Previously: [https://news.ycombinator.com/item?id=4531088](https://news.ycombinator.com/item?id=4531088)

Teardown: [https://docs.google.com/document/u/1/pub?id=1GWTMLjqQsQS45FW...](https://docs.google.com/document/u/1/pub?id=1GWTMLjqQsQS45FWwqNG9ztQTdGF48hQYpjQHR_d1WsI)

<comment><USER5> Apple's tech dedups 8x8 pixel blocks and creates a jpeg image that is a lookup table of 8x8 pixel blocks, using a json data object to figure out which blocks go where on each frame. this thing just stores full frames in a giant jpeg and displays them.

</comment></comment><comment><USER16> Nice, I did something similar few months a go. [http://stanko.github.io/html- canvas-video-player/](http://stanko.github.io/html-canvas-video-player/)

</comment><comment><USER17> Very cool! Good solution to how gifv's pause background music on iOS too.

</comment><comment><USER5> if you wanted to replicate Apple's technique, there's a neat (but discontinued) app on the mac app store called phosphor that will take in movies or frames and output in the apple-like canvas/json/jpeg 8x8 pixel blob format.

[https://www.divergentmedia.com/phosphor](https://www.divergentmedia.com/phosphor)

Whether you actually _gain_ anything from using this technique as opposed to other simpler techniques like canvid, well, let's just say YMMV

</comment><comment><USER18> Ha, just spent some time figuring out how to do this myself -- going to take a look and compare. Sounds really neat!</comment>


Mozilla CEO: Gay-marriage firestorm could hurt Firefox - <AUTHOR> http://www.cnet.com/news/mozilla-ceo-gay-marriage-firestorm-could-hurt-firefox-cause-q-a/ <comment><USER2> It's ridiculous that people can't join causes because of their political beliefs. So the community is saying we don't want people standing up for free software if they are also against gay marriage. Should we go all-out liberal and say representatives of our cause must be pro-abortion, pro-pot, pro-gun control, pro-socialized healthcare? Hell, the conservatives can do the same thing too! We'll make sure there's only 2 political parties you can vote for and if you like some ideas from one and some from the other, too bad! All your opinions must be grouped together, and the whole world should be divided into 2 opposite ends.

Or we can live in a world where we respect everyone's beliefs. We can allow them to join both liberal and conservative causes, because we're not 2 political parties fighting but individual humans all trying to make the world a better place? It's amazing the mentality with politics these days, where people have to risk their life just for standing up for themselves.

<comment><USER3> > Or we can live in a world where we respect everyone's beliefs.

Why? Some beliefs are stupid and/or harmful. Why should I respect bad ideas?

<comment><USER4> because respecting someone's beliefs == respecting that person. you can think the the beliefs are stupid, but you can still respect them.

<comment><USER5> Finally someone who gets it. Free speech isn't about some abstract right that you can only technically exercise. Everyone also has the right to associate with whoever they chose. But launching public campaigns designed to restrict the speech of someone is not okay in my view, it's like a form of harrassment I think. Launching campaigns to _discredit their ideas_ however, is better I think. Also just launching a campaign to publicize their views is fine, as long as they're backed up with evidence (which they are in this case).

I may be on the wrong side of this issue but I refuse to take part in boycotts because I think they're ineffective and just harmful, unless of course the product itself is harming people in some way.

<comment><USER3> No, neither of you get it. All you have is the right to speech free from _governmental impedance_ ; you do not have any sort of right to speech free from _civil consequences_.

Boycotts are a form of free speech too, you know. How come you're not so antsy to defend those rights, I wonder?

<comment><USER5> While it may not technically be a violation of laws protecting freedom of speech, consider for example...

\- Organizing a group of bookstores to stop selling a certain book because you find it offensive for any reason

\- Using your privileged position at say, a conference, to get other speakers removed because you dislike them

\- as a web service provider, removing a website about a topic you find offensive

None of these have anything to do with the government making a law that infringes on free speech. If they don't violate laws protecting free speech then they certainly piss all over the spirit of it. Or are they only bad when the speech is the "right" kind of speech?

Also as I said elsewhere in the thread, most of the time I find boycotts ineffective, especially when it would only jurt innocent people and when the change it creates is merely cosmetic. You're certainly free to boycott anything you wish, and to ask others to boycott, but you can't expect everyone to agree it's a good idea.

</comment></comment></comment></comment></comment></comment><comment><USER6> I've often found that when an issue divides a group that would otherwise cooperate willingly, the problem is that the two sides are battling over the wrong issue. In this case, the CEO-ship of Brendan Eich has been continually rehashed as an issue of freedom of thought/opinion/speech vs bigotry and exclusion...but that's not the real issue.

The real issue is money as speech.

I'd wager that most of those against Eich's position would not begrudge anyone freedom of opinion, or private speech, or even public speech so long as such opinions or speech did not elevate to action. On the other hand had Eich fired a LGBT staffer based on their sexual orientation, not only would he be in the wrong legally, but I think even those carrying the banner of free speech in this case would agree that his promotion was wrong.

So the real question is: by donating money to the Proposition 8 cause, was Eich exercising his right to free speech? or was he taking a discriminatory action?

Of course, you may note this is exactly the same issue in question with the Citizen's United decision. I think this larger question, is money speech or action, will be one of the most important questions of our time...

<comment><USER7> > So the real question is: by donating money to the Proposition 8 cause, was > Eich exercising his right to free speech? or was he taking a discriminatory > action?

It's clearly free speech. Had he fired or refused to hire someone over their orientation, it would be discriminatory action. That being said, as the CEO of Mozilla, he is the face and voice of Mozilla. So it is natural that people are looking into how he has exercised his speech, not just actions in the past, to see how he will shape Mozilla in the future.

I make my living coding in JavaScript/CoffeeScript and my personal hobbies include hacking 3D UIs in the browser. To say that my life was directly and positively impacted by Eich's past actions is an understatement. On the other hand, there are many people, more than a few in this very community, who were indirectly and negatively impacted by the small part he played when exercising his right to free speech.

To me the bigger question is, can you officially act 'for' when you personally speak 'against' something?

<comment><USER8> I'm curious how many people would stop using javascript because of this. Given all sorts of ads & analytics are all served up with it, I bet many people won't.

It's a slippery slope if we try to paint people as "wholy-bad" or "wholy-good" based on one or two hot-button issues. Human's are flawed, complicated creatures. Trying to pass judgment on their entire career & capabilities based on one or two actions not related and/or affecting their job is a dangerous decision to make.

</comment></comment></comment><comment> TD-Linux What do you guys want out of this? Do you want Eich to step down from CEO to CTO? Quit Mozilla entirely (and never get employment at any other company you use?) Issue a statement publicly renouncing his views?

Would it be better if he publicly lied about his views? Are we promoting an environment where you have to announce all the "correct" political positions to gain employment?

<comment><USER9> _What do you guys want out of this? Do you want Eich to step down from CEO to CTO?_

That would be a fine solution, really.

Is the argument that CEO is a position unlike other positions that hard to grasp? The CEO is the "face" of a company and not just a worker.

<comment><USER10> If Eich stepped down, should future CEO candidates be required to state their position on Prop 8 and same-sex marriage?

</comment></comment></comment><comment><USER11> It really hurts to know that a person is being ostracized for having political views. I think the pro-gay crowd has gone too far when they try to push an individual to support "their" stance, or punish them if they don't. We should be living in world of balance with supporters on both sides, not one in which there is fear for expressing or having expressed belief.

<comment><USER12> >We should be living in world of balance with supporters on both sides,

No, we should not. We should live in a world with correct ideas, full stop. Some ideas are stupid, like racism, creationism, or flat-earth models, and don't deserve "balance". What you call "pro-gay" is actually a human rights issue.

Certainly everyone would be all over him if he was promoting racism, right? Or donating to groups to track down and execute people that have committed apostasy? Certainly Stormfront shouldn't be ostracized for having "political views".

Where do you draw the line? Is disliking gay people to the extent of wanting to deny them rights less important than Mozilla's goals?

Edit: I don't mean to imply that people shouldn't be able to hold incorrect (untrue) beliefs - free speech and thought should be strongly defended. But beliefs are obviously invalid and it should be fair to judge and dismiss people stating untrue things. We don't leap to someone's defense when they say the Earth is flat, why should we defend "two sides" for human rights depending on sexual preference?

<comment> vezzy-fnord _Is disliking gay people to the extent of wanting to deny them rights less important than Mozilla 's goals?_

I'm curious as to how you came to the conclusion that Eich is an overt homophobe. His intentions are still unclear.

<comment><USER13> He donated money to prevent gay marriage. It's not really much of a stretch to conclude he's a homophobe. His intentions are pretty transparently obvious.

<comment><USER8> > homophobe

This is always an interesting word definition to me. Just because someone donated against something, might mean he's against it it, but doesn't mean he's "scared" of it (the definition of "phobia" being "fear").

The equivalence of the two words into it's current meaning has always been interesting to me.

<comment><USER12> I, too, dislike the "phobe" applied to things - it seems like a dirty bit of rhetoric. But despite the definition, it's pretty clear the meaning of homophobe is someone that dislikes/disapproves of homosexuality.

<comment><USER8> I know that & get it, but by choosing that word itself, it becomes a loaded & inaccurate word which hurts the argument (because which many anti-gay marriage people can easily refute the accusation by simply saying "that's ridiculous, I'm not scared of gay people").

<comment><USER13> "I'm not scared of them; I just hate them and don't want them to be married, for no rational reason."

<comment><USER8> Your response indicates you've likely spent little-to-none meaningful time with any of the people you're attributing words to. Very few people I've met that hold those views would say that's an accurate view of their beliefs (WBC not withstanding, but they're outliers).

<comment><USER13> I don't think any time I'd spend with those types of people could ever be meaningful.

Honestly, they can _say_ they're "not scared of gay people" all they want, but the actions of a person who would donate their money or time to get same-sex marriage outlawed speak much, _much_ louder than their words.

<comment><USER8> > I don't think any time I'd spend with those types of people could ever be > meaningful.

That's the same attitude you're accusing them of. It's not helpful on either side of the debate.

There's a difference between being scared & disagreeing. Your refusal to acknowledge the difference says more about your desire to perpetuate your viewpoint of them rather than attempt to understand their background. It's one thing to disagree with someone, it's another to refuse to come to the table with them at all in the first place.

I think we could continue to go back & forth all day, but you don't seem very open to the idea of listening to people with opposing viewpoints :).

<comment><USER13> Not really, I just think you've done a very poor job of equating "a difference of opinion" with "civil rights". And that's really what it boils down to: the anti-same-sex marriage side is just _wrong_ on this one. And wrong opinions don't deserve respect.

<comment><USER8> > And wrong opinions don't deserve respect.

See that's where we fundamentally disagree. I respect all opinions - even if they're wrong, offensive or I disagree with them completely. That's the whole point of free speech

<comment><USER14> This is a wrong and dangerous interpretation of free speech. The whole point of free speech is that people are allowed to hold differing opinions and the need to respect their right to /voice/ such opinions. It is NOT about respecting the opinions themselves, and certainly not about giving equal weight or consideration to all opinions.

This latter interpretation is how we get creationists demanding equal time be given to teaching their "theory" in schools. They certainly have a right to not believe in evolution, and even _shudder_ to promote that opinion, but that doesn't mean that opinion isn't stupid and somehow deserves to be given equal standing to evolution in the public sphere.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> Eich is going to destroy Mozilla over his own ego of wanting to be CEO, when anyone worth their CEO-salt knows that there is no chance in hell that they can effectively lead with this much controversy hanging over their head.

<comment><USER16> Realistically, if anything is going to "destroy" Mozilla, it'll probably have much more to do with their software offerings than with this particular incident.

I'm talking about things like Firefox trying to imitate Chrome at the expense of usability. Or the abandonment of Thunderbird. Or resources wasted on a failed effort like Persona, or wasted on software like Firefox OS that's inherently inferior to its many well-established competitors.

Mozilla's influence is directly related to the number of people using its software products. I see far more of its existing users moving away from its software due to usability problems or a lack of maintenance than I see moving due to purely political anger directed toward Eich.

</comment></comment><comment><USER8> > Eich: Two things. One is -- without getting into my personal beliefs, which > I separate from my Mozilla work -- when people learned of the donation, they > felt pain. I saw that in friends' eyes, [friends] who are LGBT [lesbian, > gay, bisexual, or transgendered]. I saw that in 2012. I am sorry for causing > that pain.

To everyone yelling about bigotry & discrimination, if you actually read the article & those words, those don't sound like the words of a bigot to me.

<comment><USER17> I think the idea that religious extremists are always assholes is convenient but unrealistic. Most of the time, most of them are just normal people, even pleasant ones.

I'm not sure phrasing it as being a bigot or not is helpful, and neither is the money/speech categorization.

Not knowing Mr Eich personally, I'd give him the benefit of doubt. I believe him when he says that he has LGBT friends, and that they were hurt by his actions, and that maybe he was sorry for causing that pain. It must be deeply uncomfortable to believe in something that compels a person to hurt their friends. It's not his religious views per se that got him into hot water, it's the willingness to use legislation to deny a group of people equal rights which still stands as an unethical act.

Speaking as someone who both admires Eich as a technologist but was disappointed by the message Mozilla was conveying by his appointment as CEO, I really don't care that much if he's a religious fanatic. It's not only his right to believe these things, it also doesn't really matter. His achievements can very well stand on their own, and likewise acknowledging the achievements of a person does not imply endorsing all of their beliefs.

Beyond the initial ethics violation, Mr Eich has done nothing wrong that I can see. The fault lies solely with the Mozilla board for appointing him to a position that consists of little else but projecting the public image of the foundation.

<comment><USER8> I just wanted to say I appreciated a well thought out & reasoned comment in a discussion filled with people yelling "bigot", "homophobe" at a person they don't know personally.

There's often several lenses to see things through. People are complicated, messy things.

</comment></comment></comment><comment><USER18> Tldr: inclusive, inclusive, inclusive... Unless you are gay and want to be included as an equal citizen.

<comment><USER4> I really think that people need to understand the difference in personal and professional life. In fact, the tendency to make the two collide is one of the biggest problems with this whole stinking country. People have _personal_ lives, and they have _professional_ lives, and others really don't need to go about trying to confuse the two.

<comment><USER18> Paying money to influence policy that oppresses a group of people isn't your "personal" fucking life. It's personal only if it doesn't affect other people. I really really respect this dude, he's straight up legend. And no, I don't think he should quit as CEO of Moz, that's totally unrelated to his politics, if that was your point. But I do think it's really annoying when bigotry is supported in the name of inclusiveness. You think it's okay to ruin someone's happiness with your megabucks, yet you talk about inclusiveness? Get the fuck out. This interview is bullshit.

</comment></comment></comment><comment><USER19> I was humoured to read that people have boycotted Mozilla, guarantee they don't boycott javascript, which he invented.

<comment><USER20> There's no point to doing that. He can't step down or be removed as the inventor of javascript, but he could step down or be removed as CEO of Mozilla.

<comment><USER19> No point and too inconvenient.

</comment></comment></comment><comment><USER21> i dislike this spin here. boycotting a company, asking for resignations, these are common methods of protest. yet, when LGBT people do the same, we are being "exclusive"? we must accept any kind of views of Mozilla's CEO, otherwise its openness is lost and Firefox will fail? that's just silly.

personally, i'm most tired of this argument, that it's important for "freedom" to let people discriminate me in peace. that i should not complain about being discriminated, lest i ruin the freedom of society.

i love Firefox, and I'm still using it. never got this close to reconsidering that decision before.

</comment><comment><USER22> >A world without Firefox and without Firefox OS and without our approach to putting the user at the center of cloud services instead of having users get pulled into walled gardens -- I think that would be a pretty dark world.

What Eich fails to see that for many people, we are only just moving away from the "dark world" where gay marriage is illegal. I appreciate his work for Mozilla, but it's double-think to advocate "inclusivity" while promoting narrow views of marriage.

<comment><USER23> "Gay marriage" has nothing to do with OSS web browsers. 'tis a dark world where people cannot work toward common goals when their views on completely unrelated subjects differ.

<comment><USER24> If the owner of my neighborhood coffee shop had gone on record as supporting SOPA/PIPA/et al, I would be strongly inclined to stop going to that coffeeshop and giving them any of my money. I would also tell my friends about the situation so that they might also take similar actions if they felt so inclined.

I can tell you that, in the context of this hypothetical situation, any arguments that my actions are uncalled-for because "coffee has nothing to do with the Internet" would not have much impact on me.

<comment><USER8> Are you going to stop using javascript too? He helped invent that.

> > [http://en.wikipedia.org/wiki/Brendan_Eich](http://en.wikipedia.org/wiki/Brendan_Eich)

<comment><USER24> I try to avoid using Javascript whenever possible, though that has nothing to do with Brendan Eich. And just to clarify, my hypothetical was in response to one specific argument. I didn't say that I personally was joining those calling to boycott Firefox. I honestly don't know how I feel, because it's not a simple matter. But I object to those who argue that it is a simple matter.

</comment></comment></comment></comment></comment><comment><USER25> He's not wrong, he's just an arsehole.

</comment><comment><USER26> It says a lot when you have to point to Indonesian homophobes to support your position.

<comment><USER27> Mozilla's mission requires it to serve, and engage into its projects, countries that are still many decades from matching the urban/tech/rich-world consensus on gay rights.

Indonesia is the world's 4th largest country by population, and the most- democratic of all majority-Muslim countries. It's important. And other countries that should be giant parts of open web projects are in similar positions.

Should open-web advocates from these countries, who in their personal lives express the same sort of political views on marriage as Obama did as recently as his 2008 campaign, be excluded from leadership positions at Mozilla? How deep should the proposed purge go?

<comment><USER12> Islam also has death as a penalty for apostasy. If Eich supported that, would it be OK because it's a "personal view"?

I do agree with you though, that Mozilla's work is more important than civil rights. Eventually, it would seem that all people will give up poor, invalid beliefs. It's a near certainty as technology progresses and definitely disproves religions. However an open web is in quite the opposite position.

</comment></comment></comment><comment><USER28> So ... javascript is created by homophobe :(

</comment><comment><USER29> This article reads a bit like a shill piece.

"It's pretty clear that people have latched onto this issue as a way to express their own political beliefs." seems too loaded in Eich's favor to be part of a respectable interview question.

</comment><comment><USER30> Unfortunately for Eich and his supporters, he's now in the awkward position of having to convince everyone that they should tolerate his intolerance.

It's going to take one hell of a silver tongue to do that with your foot wedged firmly in your mouth.

<comment><USER8> It's ironic that people are intolerant of intolerance.

I get the 'tit for tat' argument, but if you're trying to get rid of an oppressive opinion by being oppressive, you're not really getting anywhere.

You can't really "force" anyone to believe anything. If you have to "make" someone believe something by force, then it doesn't seem like your argument is strong enough to stand on your own (a statement that's applicable to both sides of this debate).

</comment></comment><comment><USER13> > Though Eich refuses to discuss his own beliefs explicitly or say whether > they've changed, he disagreed with the assertion that being opposed to gay- > marriage rights is equivalent to being sexist or racist, and he said > political and religious speech is still protected.

Really? _Really??_ This guy's a CEO and yet he can't figure out why he's so dreadfully wrong on this one? Doesn't bode well for the future of Mozilla.</comment>


Show HN: Prouptime – Wordpress Uptime Monitoring and Downtime Alerts - <AUTHOR> https://prouptime.com <comment><AUTHOR> Hi. I made prouptime because my wife runs multiple wordpress blogs and I wanted to quickly add some server monitoring for her. Since I didn't want to make her sign up for yet another service where she needs to remember login data and update her sites, I made my own service that functions as a wordpress plugin.

You simply install the prouptime plugin in wordpress and confirm on the plugin admin page. No need to create an account, enter user data or remember passwords. Your email & url is updated in wordpress settings.

Please give me your feedback!</comment>


Amazon EC2 High-Memory Instances (34 GB, 68 GB) - <AUTHOR> http://aws.amazon.com/about-aws/whats-new/2009/10/27/announcing-amazon-ec2-high-memory-instances/

<comment><USER2> $1.20/hr @ 34 GB, $2.40/hr @ 68 GB

<comment><USER3> Very expensive, unless you only need to use it during peak traffic hours. A month runs you over 700$, and I'm renting a dual quad core with 32GB of RAM, plus bandwidth for 450$ right now.

<comment><USER4> Where from if you don't mind me asking?

<comment><USER3> A small-ish company called 478east(www.478east.com). They offer relatively cheap high-end hardware in their LA point of presence, but lack a fancy control panel like SoftLayer.

<comment><USER5> Their $450/mo offering seems to have only 8GB RAM.

<comment><USER3> It's a custom order, they don't list everything they offer, you have to ask.

</comment></comment></comment></comment></comment></comment><comment><USER6> For Amazon to offer it as an option, they must've got a lot of requests for it. I wonder are machines this scary that common?

<comment><USER7> How are they scary? I had a pair of 64gb quad hexacores in my last role...

</comment></comment><comment><USER8> I'm curious about how they provide this much memory, will this memory all be on one machine, or does Xen provide a way to somehow give a VM access to memory on multiple physical machines.

<comment><USER9> Yeah, the whole 34/68GB is all on a single beefy server. There are systems that let you access remote node's memory in a NUMA type system over fast interconnects, but they're _very_ expensive and have horrible latency.</comment></comment>


The BellKor solution to the Netflix Prize - <AUTHOR> http://www.research.att.com/~volinsky/netflix/ProgressPrize2007BellKorSolution.pdf

<comment><USER2> Interesting that the percentage difference between the winning solution with 107 blended approaches and the close-by solutions using only one approach was on the order of a fraction of a percent in improvement.

<comment><USER3> Do you have a reference describing the single approach?

<comment><USER2> If you click around the links on the leaderboard [<http://www.netflixprize.com/leaderboard>], a lot of folks describe the basics of their approaches.

There are also a few entries (like "When Gravity and Dinosaurs Unite") that are explicit blends between two single approaches from different teams.</comment></comment></comment>


Ask HN: When is the best time of day to post? - <AUTHOR>

For maximum impact, when is the best time of day to post anything ? When is the site more active? Please specify time zones also (EST would be preferred =) ). <comment><USER2> From my experiments

\- As niyazpk mentions, quality is more important than timing. A poor article will always sink, and most of the time a great article (properly promoted) will rise. However...

\- To give your article the best chances, post in the european morning.

Why?

\- The european crowds are generally more discerning, and there is less noise (à la TechCrunch) during the american night.

\- If you can get a decent number of upvotes from the european crowd, chances are you'll still be high on the front page by the time the US HNers come in.

\- Already having 50-100+ votes generally will translate in even more upvotes once the US crowds come in.

That's been my observation, in general. That said, the difference is not really worth worrying about too much. The main difference is that an evening submission requires a little bit more promotion.

</comment><comment><USER3> I assume you are asking about HN.

1) The quality of the post and a good title is more important than the time you post.

2) Luck is a more important factor than the time of the day. Just remember that if there are more visitors in the site, there are more new posts too.</comment>


Amazon EC2 M6g, C6g, and R6g Instances Powered by Next-Gen Arm AWS Graviton2 - <AUTHOR> https://aws.amazon.com/about-aws/whats-new/2019/12/announcing-new-amazon-ec2-m6g-c6g-and-r6g-instances-powered-by-next-generation-arm-based-aws-graviton2-processors/ <comment><USER2> Duplicate of [https://news.ycombinator.com/item?id=21707799](https://news.ycombinator.com/item?id=21707799)</comment>


Silly cord cutter, you will pay for cable.  - <AUTHOR> http://gigaom.com/broadband/silly-cord-cutter-you-will-pay-for-cable-oh-yes/

<comment><USER2> I'd like to say "well, that's fine with me; it just means that Hulu will die and be replaced with something else."

But I guess I should keep in mind that most people _have_ cable, and won't be deterred by this sort of move; the market of cable-cutters alone might not be big enough yet to sustain a Hulu replacement. I guess we'll find out.</comment>


Is it OK to replace optimized code with readable code? - <AUTHOR> http://arstechnica.com/information-technology/2012/08/is-it-ok-to-replace-optimized-code-with-readable-code/

<comment><USER2> I can't believe no one's saying this.

If you're asking, then YES, DO IT.

First of all, I'll assume you're not an idiot. If you're an idiot, and your task requires you to interact with this code, you're fucked no matter what.

So, assuming you're not an idiot, and you've _asked the question_ , means you're already pretty damn confident this code's not on a critical path. And what does that mean? Means some asshole was showing off how clever ey was by prematurely optimizing, and it's already come back to bite you in the form of difficult maintenance. So take a blowtorch to it already.

<comment><USER3> On the other hand, the reverse is true as well.

Most software engineers, smart or not, do not have the skill or experience to even analyze the intent of highly-optimized implementations. The complexity is obvious but the interactions being manipulated are not unless software system optimization is a domain of expertise. It would be like asking me to analyze GUI design.

I have seen many examples of smart engineers being "damn confident" that code was over-engineered and possibly even suboptimal only to make the code simpler, sometimes even faster, and broken. I design high-performance software systems and am the optimization guy. There have been many cases where a smart engineer decides that I am actually "some asshole showing off how clever ey was" and then "fixes" my work. Which then has to be redone when the purpose of the original implementation rematerializes.

The engineers in these cases are not idiots, they simply don't understand the nature of the optimization or why it is happening in a particular place. There are many cases of premature optimization but that is not always the case just because it looks like it. If there are people around that actually understand optimization then at least ask one of them about the code in question, particularly if they wrote it.

<comment><USER4> Exactly. It's too easy to break Zawinsky's first commandment (Thou shalt not break working code) with changes like this. Sure, if the code is _getting in the way_ of a change, then go ahead and change it. But I don't think that's what the questioner is asking. It seems like he or she has noticed this "ugly" code and wants to change it out of a misplaced sense of conscientiousness.

EDIT: I just remembered that something like this happened to me when I was an intern at my first position doing "real" software development. I'd noticed a particular piece of gnarly code and asked my team lead for permission to refactor. He, in turn, told me that for a rarely used code path like the one I was proposing to refactor, the costs of QA and deployment would greatly outweigh any savings my changes would generate for the company. His concluding words were, "Sometimes it's easier to let sleeping dogs lie," and I think that's something that applies to this situation as well.

<comment><USER2> First paragraph:

> Sometimes you run into a situation where you have to extend/improve some > existing code. You see that the old code is very lean, but it's also > difficult to extend, and takes time to read.

Last paragraph:

> Is it a good idea to change such code if you have to touch a small piece of > it either way?

</comment></comment></comment></comment><comment><USER5> 99% of optimized code I saw in my life is optimized as result of process called "performance decoration": optimizing piece of code based on some (mainly faulty) assumptions without tests and profiling.

I think "performance decoration" is defined as a process in which you make software to look fast but without any positive impact on actual delivered performance (there was an article in ACM a while ago about it).

For example, I saw heavily optimized (and convoluted) C++ loops inside I/O heavy code where just increasing block size and enabling direct IO gives 90% performance boost.

So if there is no "performance lifecycle management" explanation related to optimized code (i.e., which test needs to be run, what is dependency, etc.) then the code is probably just "performance decoration". My theory is: if somebody did investigation to show that this is a valid performance optimization he would probably document all needed tests which led him/her to that conclusion.

<comment><USER6> I love this term 'Performance Decoration' and I am going to steal it! Perfectly describes some of the code I have seen in my career.

<comment><USER5> The term was coined by Bart Smaalders in his article "Performance Anti- Patterns", ACM Queue, Vol. 4, No. 1, February 2006.

</comment></comment></comment><comment><USER7> I always optimize new code for readability. If the old code is on a hot path, I'd suggest adding comments explaining why did it end like it did and leaving it alone (unless you readable version is equally fast). If it's not and it's structure starts to interfere with maintenance, replace it with simpler code.

Of course, before you touch it, make sure it's adequately tested and, if not, make it adequately tested.

</comment><comment><USER8> If you ask this question, then no. Otherwise, you know the answer.

Further explanation on #1 You lack the experience required to understand the ramifications, make the judgement, change the code. Gain experience, learn more about this codebase and you will "know" one day.

Given that, one of the "best" ways to gain experience is to make and suffer through recovering from mistakes, change away!

</comment><comment><USER9> I was going to write a detailed explanation of the trade-offs and cases where you might want to make such a change, but turns out, the article did an _excellent_ job of hitting that question from all conceivable sides. Really quite good.

<comment><USER10> Well, naturally. It was originally a popular question on programmers.stackexchange.com, so the answers got a lot of eyes and a lot of editors.

[http://programmers.stackexchange.com/questions/152392/is- it-...](http://programmers.stackexchange.com/questions/152392/is-it-ok-to- replace-optimized-code-with-readable-code)

That covers all the cases, then the second half of the article goes into more depth on the underlying reasons. It's a nice formula for an article.

<comment><USER11> There's a second half of the article? All I see are the top 3 answers copy & pasted into a blog post.

</comment></comment></comment><comment><USER12> It depends.

Are you touching the code because you need to fix a bug in it? If so, then yes.

If you need to maintain this piece of code then you might as well fix it to the best of your ability and knowledge, but please be careful.

Are you touching the code because you came across it, and you don't like how it looks? If so, then no.

It's a shame that unreadable code exists, but you can't save the world. My mom used to tell me "Don't sit in someone else's pile of shit." Meaning, if someone else made a mess, and if you're the last person to touch it, you're going to look like the one who did it. There are bigger fish to fry in any software project than shitty-code-that-hasn't-been-touched-in-a-while-that- works.

</comment><comment><USER13> You realy have to ask why it was optimized in the first place. Now if that optimization has been negated by the enviroment then you can ask yourself the next question. Does the code need to be or envisaged in the near future to need changing for a reason other than making something that works into something that works and is readable but not as fast.

Both question are important and if you answear no to either then your best leaving the change to a time when you have to change it. Reason being that you may have a margin in the enviroment negating the optimization today, but that may change before you need to change the code for a reason of business. You could end up beutifying it and losing that optimization and then end up hitting that wall a few months/years down the line and have to reinvent that optimization.

Over all the most important aspect about reading code is to understand the structure and by that this part does this and that part does that. If your calling a optimized load of code in a function then if that code is sexy looking or not it will still have the same look from anything that calls it.

So as a rule, if you don't have to touch it and don't need to touch it then ask yourself why your touching it and are you workbombing yourself with something in a less busy period that will drag on over into a busy period and cause you regret it down the line. Also make sure your doing it for the right reasons, beyond putting a flag ontop of a mountain so to speak, what are you gaining. If something works and does not need to change then changing it just to make it pretty is like arguing all programmers should be wearing size 0 dress's to many peoples minds.

</comment><comment><USER14> It's a trade-off between optimization for speed of machines and optimization for speed and ability of humans who need to maintain the code over time.

If it has been prematurely optimized for speed, by all mean yes :)

</comment><comment><USER15> As the first answer on ars says, it depends. If it doesn't need to be optimized for speed it should be optimized for maintainability.

</comment><comment><USER16> The best thing is to replace the unreadable code with readable code while preserving or improving its performance characteristics.

Optimized code is often unreadable because the initial implementation didn't forsee the future optimization. A re-write that takes both into account at once is usually at least as fast and much more readable.

</comment><comment><USER17> Over and over again in my career I run into scenarios where code maintenance is the biggest challenge. Only occasionally do I run into issues with code performance. But, I mainly work on business type apps. If I were doing real- time or embedded systems with limited resources I'm sure my experiences would be totally different.

<comment><USER18> I've had to optimize code because it ran too slowly on a Cray supercomputer.

Mind you, I think my optimized version may have been a bit clearer than the original, though more mathy.

</comment></comment><comment><USER19> Is it broken? No? Why are you touching it? Because you didn't write it? Please get off my lawn! ;-)

</comment><comment><USER20> Communicate: ask your team to find out who wrote it, and why. Ideally you're using git and can use git blame to find the author. Benchmark the difference, because maybe there's more going on that you expect at first.

</comment><comment><USER21> Who ever said optimization and readability were mutually exclusive?

If the engineer who develops this (provably optimized) codebase can't read the code, he/she should be replaced with someone who can.

<comment><USER22> Right, an advice with zero practical value. There's such an abundance of great programmers awaiting a job/contract offer ...

</comment></comment><comment><USER23> No. assholes. ever.

</comment><comment><USER24> Arstechnica should be banned for submitting these spammy articles. The content is clearly ripped off from

[http://programmers.stackexchange.com/questions/152392/is- it-...](http://programmers.stackexchange.com/questions/152392/is-it-ok-to- replace-optimized-code-with-readable-code)

<comment><USER25> From the article: _This Q &A is part of a biweekly series of posts highlighting common questions encountered by technophiles and answered by users at Stack Exchange, a free, community-powered network of 80+ Q&A sites._

It's not as if they're trying to hide the source, and the content is presented in an easier to read format than SE. The only question one might ask is why most of hansbo's submissions are for arstechnica.com articles.</comment></comment>