GetSatisfaction's open letter to Jason Fried - <AUTHOR> http://blog.getsatisfaction.com/2009/03/31/open-letter-to-jason-fried/

<comment><USER2> I think i'll buy into the fact that they're dedicated and willing to fix this when they will have links to the official support page, and changed again this banner to something like :

"37signals decided to handle their web-support by themselves. You can reach them at <url>".

Their site is build upon a conception about "big evil companies", thor said that himself in the so called open letter. So it makes every company on their site that hasn't suscribed to their thing an evil one by definition.

Now don't get me wrong, this can be very good, when it is true. And very bad and harmfull when it isn't

This is not a technical issue. This is a structural flaw into the conceptual design of their website, so maybe they meant no harm, but that's not the point at all.

If they can't fix it, it would probably be better for everyone if they went down. On a brighter note, it's probably not that hard to fix. But it needs to be taken very seriously.

Also i don't buy the garrett dimon line, even if i understand his motivations. Those companies also leave in a world where they have very real possibilities of harming each others.

So in the end, the fact that they're "really good people" is totally emotional and strictly not related to the issue in place here.

And the fact that they're willing to fix, while a good thing, is also tied in my opinion with the fact they did a mistake that could have hurt anybody in the community.

So this is not 'nice' of them, it's just well, the regular attitude to have !

<comment><AUTHOR> _This is not a technical issue. This is a structural flaw into the conceptual design of their website, so maybe they meant no harm, but that's not the point at all._

Of course that is the point!

Intention is important, not just actions. It makes a world of difference.

Every business is "flawed" in some sort of way - if only because they all aim to trounce their competition and make money. But there's a whole lot of difference between a business that willfully takes unethical steps that they know are morally wrong, and one that merely makes a mistake.

Until I see proof that the GetSatisfaction team is actually a collection of thugs, I will believe the various reports that indicate they're just like the rest of us - nice, smart guys trying to solve a real problem as well as they can.

<comment><USER2> Well i believe someone said "With great power comes great responsibilities"

I'm not saying intentions are not important. I'm saying what you get as an outside observer is the facts, not the intentions.

GS business is directly built upon the existence of other societies, particularly internet related ones. It's actually the whole purpose of the site. So , as nice as they may be, they DO have a responsability about what they do with the image of theses societies, and a way bigger one than anyone's else site wich is not making added value with the society's technical support, or lack thereof.

This responsability is real, and they failed at assuming it. That doesn't make them thugs, or mafia or anything, unless we have proof of such things ;)

But it does make them pretty irresponsible people, since they failed on the particular point that is supposed to be the key of their business !

Now i'm not saying it's dramatic or anything. They're probably nice people. I'm just saying than saying sorry, even with the nicest of attitudes,and changing this banner, isn't gonna cut it until they make all the changes needed to adress every point made on 37s.

Also i don't think it's particularly nice to play the card of "We're a nice little harmless startup, we're struggling, don't throw bad words at us".

They did real harm. In what proportions, that is difficult to estimate. I probably would have thought along the same lines as the guys from 37s, wich do not have a duty to play nicely with people that , besides all you could say about their niceness, still potentially harmed their business.

<comment><AUTHOR> _"With great power comes great responsibilities"_

Taking a leaf from that book, 37-Signals do have great power, with SvN, which is a very influential blog read by many people in the start-up ecosystem. They should then also have the responsibility to use that influence for good, not evil. Viciously attacking another start-up without warning is not a good action.

A big difference between GS and 37S there is that GS can plausibly suggest that this was unintentional, whereas 37S actively published this attack on their blog.

So where intention is concerned, 37S are the bad guys.

<comment><USER3> Are you saying you're in Jason Fried's head?

<http://news.ycombinator.com/item?id=541696>

</comment></comment></comment></comment></comment><comment><USER4> > I only wish that you hadn't implied inethical motives with words like > "extortion," "mafia shakedown," etc. _The fact is, many people hear those > words and nothing else, and it compromises years of work by our small but > committed team._

Well, at least now they know how Jason (and potentially thousands of other committed teams) felt.

<comment><USER5> Can we please (as a race or at least the HN community) grow out of this eye- for-an-eye, two wrongs make a right crap?

OT: It reminds me of Obama's response when criticized about spending explosion: "Well, my critics clearly have short memories. The republicans increased spending dramatically, too!"

<comment><USER3> Could you please explain why it is "wrong" to publicly criticize a company that is misbehaving, particularly one that centers its business largely around being a venue for public criticisms of other companies?

This premise keeps being bandied around by GS defenders here and elsewhere, and I'd really like to hear the logic behind it.

<comment><USER5> Sure-- though I think saying that GS is "centered" around "public criticism" is wrong. It's centered around getting help and being heard.

I separate willful misbehaving from bad judgment and mistakes. Startups are like children- they flail around and make mistakes (lord knows mine does!). If a child/startup does something bad without intending to do evil, I think a quiet correction is a good idea.

Example: A child spills juice all over the floor in a classroom. Is it right for an influential classmate announce his clumsiness to the class and lecture the class on how sticky juice on the floor is a terribly thing, inconveniencing everyone? If spilled juice is a big deal, you could STILL go public with a, "Hey, Billy didn't mean it-- but this is a good opportunity to discuss the perils of spilled juice and why we should be so careful with out juiceboxes".

If the act was a result of malice or shameful neglect, then I think a public thrashing is more appropriate. GS clearly fucked up, but I think there are plenty of scenarios where that fuckup could've been a result of a hurried design/review process, an errant employee, or just plain bad judgment. You can read the founder's letter describing how the design decisions happened ( [http://blog.getsatisfaction.com/2009/03/31/open-letter-to- ja...](http://blog.getsatisfaction.com/2009/03/31/open-letter-to-jason-fried/) ). It's a pretty credible story.

It doesn't excuse the mistake, but it should make us lean towards leniency in the punishment-- especially considering that all of us are in the same boat (37s, HN Founders, etc).

A lot of it comes down the the style of the attack by 37s and the influence they wield. Vigilante mobs are easy to summon but hard to dismiss. The internet is forever, so if you damage a party (or damage them way more than they deserve), it's very hard to repair.

IMO, one of the biggest problems with the human race is that we don't seek to understand before we condemn. I'd kinda hoped that the HN community would give a startup that's pretty clearly trying NOT to be evil here the benefit of the doubt.

<comment><USER3> "It's centered around getting help and being heard." By _airing complaints in a public forum_.

I'm afraid that to me the whole scenario and fallout more resembles one child poking another in the eye with a pencil, followed by all the child's friends complaining about how the kid totally cried and went to the teacher...and the first kid griping about tattle-tales even as he promises to be more careful with his pencil in the future.

GS has gotten bad press for actual things that it has done. It doesn't matter that they're just a few guys, or that they're a bunch of awesome people who mean no wrong, as many of their defenders insist. They did things that quite fairly deserve askance looks and criticism, and their burden will be to correct those things and attempt to earn back any lost confidence. Comparing this to a "vigilante mob" is hyperbolic, distasteful, and rather fanboyish.

EDIT: Or, to put it another way - nobody likes having their business criticized. People even dislike seeing businesses they really like criticized. When the criticisms are valid, though, it's time to stop arguing against them, even in the passive aggressive manner of saying things like "We all know what it's like to _feel_ manipulated," (emphasis in original) and just promise to do better.

</comment></comment></comment></comment></comment><comment><USER6> Not once in that entire letter do they say the word "sorry". You'd think a company so experienced with corporate indifference would have the courage to admit they made a mistake, say I'm sorry, state their next actions to fix the problem and move forward.

I know these situations are tough, but Thor spends way too much in the letter promoting and PRing instead of apologizing and fixing.

<comment><USER3> For all the complaints about how Jason Fried should have given them a holler and jawed it out person-to-person, none of GS's defenders note that they aren't doing what one person would do upon accidentally wronging another: _apologize_.

Of course, there's a very good reason for that: saying "Sorry" can be cited as a possible admission of guilt. Really, it looks like GS is trying to establish a public record that they acted quickly to resolve these problems _without_ admitting wrongdoing at any point.

That isn't behavior that's very consistent with "smart, but naive guys at a startup". If they _didn't_ run out and get a lawyer and have him/her start looking over their copy and responses to the blog post, then they're more sophisticated than their defenders give them credit for.

<comment><USER5> Except here: "Thanks for the feedback, and I'm sorry for the hassle." [http://www.37signals.com/svn/posts/1650-get-satisfaction- or-...](http://www.37signals.com/svn/posts/1650-get-satisfaction-or- else#comment_41863)

Do you have to use the word "sorry" to express regret/"mea culpa"? All of that stuff felt pretty apologetic to me (comments, blog posts, etc).

<comment><USER3> You're right. Muller's comment there is head and shoulders above later remarks by GS (and much of the arguments made on their behalf).

As to your question, yes, you _do_ have to say "sorry" or "I apologize". You also have to avoid criticizing those you've wronged while doing so and in subsequent statements on the matter.

<comment><USER3> Specifically, you have to avoid saying things like this:

"I have to be honest: All of these charges of extortion are distressing for someone who has worked so hard to try and encourage open and honest communication between companies and customers. I know that the pile-on effect is in effect here, but to hear it told in these comments, we're evil people who are trying to exploit people in the worst way. We've always been simply trying to help improve the way companies do their customer service and make it more human. We apparently need to be better at explaining the way it works, I suppose.

"And now, I'll step aside and dodge the bottle I see sailing through the air in my direction."

[http://www.37signals.com/svn/posts/1650-get-satisfaction- or-...](http://www.37signals.com/svn/posts/1650-get-satisfaction-or- else#comment_42097)

It's the attempts to evoke pity for them and cast any criticism as mindless persecution by people who aren't smart enough to _get_ them that create more hostility. When you're in the wrong, it's just not time to go on about how you feel hurt by people being critical of you.

More appropriate would be, "We work very hard at trying to encourage open and honest communication between companies and customers. For that reason, I find it very distressing that our efforts could strike people as evil or extortionate. That is not in any way our intent, and we are looking at ways to better explain how what we do works."

</comment></comment></comment></comment></comment><comment><USER7> I would bet that this is yet another example of a startup pushing things to the edge. For example, Youtube/Scribd/etc. have hosted copyrighted material in their early days. This clearly benefits them while they make baby steps towards compliance. Startups will do what they can get away with, not that I know anything about this.

<comment><USER8> I'm willing to bet that most of the people on the GS side didn't realize that someone could see their actions in as sinister a light as Jason Fried obviously did.

It's interesting the extent to which emotions and self-control are the deciding factors here; it's clearly important to be seen to feel, but also to be in control of your emotions.

<comment><USER9> I'd actually suspect it was part of the business model. They're banking on companies paying for reputation management. After the recent Yelp discussion (and some other older examples of a similar issue), I was not surprised at all about Jason's post.

</comment></comment></comment><comment><USER10> People keep saying these guys are awesome at PR and are doing a pitch-perfect job of handling this crisis. But the second graf of this letter just shovels more coal onto the fire. If you made mistakes, apologize and move on. Don't ask the people you offended to apologize.

<comment><USER3> I'm actually pleasantly surprised at the amount of skepticism people are showing towards the defenses of GS around the web.

<comment><USER5> Have you MET the internet? You're surprised that people are quick to attack, slow to defend, and assume the worst about every other human being alive?

<comment><USER10> Not sure it's 37s's fault that the behavior observed here is _really easy to characterize_.

</comment></comment></comment></comment><comment><AUTHOR> Also worth reading is the article from Garrett Dimon at the end: <http://garrettdimon.com/archives/2009/3/31/handling_things/>

Makes some good points about what would have been a better way to handle this, including this particularly important truism:

 _Never attribute to malice that which can be explained by ignorance._

<comment><USER11> "Never attribute to malice that which can be explained by ignorance."

What if something can't be adequately explained by ignorance?

<comment><USER12> Perhaps it should be, "Assume ignorance before malice".

</comment></comment></comment><comment><USER13> They still use the 37Signals logo and fail to link to the official 37Signals support channels.

<comment><AUTHOR> Apparently, using someone's public logo to refer to them is fair use.

Anyway, that's not the point.

<comment><USER13> Really? The way they were using the logo on their page made it look like it was an official 37s service. That isn't fair use.

<comment><USER14> Not fair use at all: In many jurisdictions it's called passing off.

</comment></comment></comment></comment><comment><USER15> So, where is GS's CEO in all of this? Isn't she the "leader"? Why is the CTO/Founder doing the PR campaign?

This whole thing leads me to believe that GS operates a little on the shady side. Everything from the poorly worded "box" to the competitor's ads to the clipped logos and trademarks seems designed to stick it to the companies in question in a manner that is borderline extortion.

It seems that instead of seeing companies as clients and selling them a service they can use, they're operating a giant defamation board where anything goes, and perpetrating the "us against them" mentality that seems popular these days with consumers.

Bad karma begets bad karma, and the whole business case of GS seems to be designed to generate bad karma. Once GS gets big enough to rankle a company with big enough legal pockets, it's going to go the way of the dodo.

</comment><comment><USER16> In Get Satisfaction You have to pay a ridiculous amount of money to remove your competitors from a support page you didn't even create on the first place? HOW IS THAT NOT BLACK MAIL?

</comment><comment><USER17> I wonder why they're using Hype Machine's logo on their front page..

</comment><comment><USER18> I think it's time for an open source getsatisfaction.

</comment><comment><USER19> Thor Muller wrote:

You were angry, and honestly I don't blame you. We all know what it's like to feel manipulated. And while I would have preferred you sending us a note, or even posting it somewhere less trafficked than your popular blog, the fact is that Get Satisfaction is a huge proponent of public airing of grievances. You were right to bring it to our attention any way you saw fit. I only wish that you hadn't implied inethical motives with words like "extortion," "mafia shakedown," etc. The fact is, many people hear those words and nothing else, and it compromises years of work by our small but committed team.

"Inethical"? That's not even a word!

<comment><USER20> Please stop doing that. Paul will never fix this bug, which gives any commenter the ability to force everyone to scroll horizontally.

Edit: I see that this style is in place, which should work:

      pre {
          overflow: hidden;
      }

but Mr. Graham's insistence on table-based layout thwarts this attempt to control user content (table cells stretch to accommodate their content).

<comment><USER21> Is it just me or has this bug been addressed after the parent comment was posted? The page (as I see it) does not require horizontal scrolling any longer.

<comment><USER22> I think the comment was edited because looking at it now I don't see any long part that would potentially force scrolling.</comment></comment></comment></comment>


Reversing an n-bit number in O(log n) time - <AUTHOR> https://medium.com/@ehudt/reversing-an-n-bit-number-in-o-log-n-time-9bf69363d452 <comment><USER2> There is a very good art of computer programming book that has a discussion of bit reversal algorithms</comment>


Contracts vs Coding - <AUTHOR> http://blog.ipselex.com/?q=node/2

<comment><AUTHOR> I'm interested if anyone has experience of agent-based programming languages.</comment>


Opinionated Rundown of JS Frameworks for Single Page Apps - <AUTHOR> http://blog.andyet.com/2014/08/13/opinionated-rundown-of-js-frameworks

<comment><USER2> Despite the potential developer productivity costs associated with custom frameworks, I've decided not to use some of the bigger frameworks for the following reasons:

\- Performance is a feature. I like less magic, more clarity on how data flows through my system. $digest cycles, ng-repeat will keep me up at night. I sleep better when I know what code is doing exactly what. \- Hiring becomes easier, i.e. do not have to screen for certain framework experience. Know JS? Good, that's all you need!

Of course, writing your own custom application framework is no walk in the park, but like the article said, you'll have ultimate flexibility. In my experience, writing your own custom app framework, you have to ensure:

\- Proper dependency management, use AMD or CommonJS. The alternative: Spaghetti jquery code.

\- Enforcing class responsiblities, e.g. ViewModels are for data transformation and validation only. Views are for DOM management. HTML is for layout only. CSS for styles.

\- Proper risk/reward evaluation of third party libraries. Usually, the leaner the library the better imo.

<comment><USER3> _Hiring becomes easier, i.e. do not have to screen for certain framework experience. Know JS? Good, that 's all you need!_

How is training someone on your custom framework any less arduous than training them on an existing framework?

<comment><USER2> It is true that your own custom framework will need to be taught as well, but the difference between a custom framework and using a pre-existing mammoth one is that of clarity.

I will have a better idea of how data flows through my system so that if the new developer creates a bug, I have a better idea of where the problem may be and be able to isolate it better. Whereas, if you use a heavy pre-existing framework, you run the risk of not knowing. The subtle bugs can be pretty dangerous.

In the case of hiring, if I have a good JS developer, I can show him easily how data flows through the system because it is more clear (if architected properly). If I used a heavy framework, I may have to expect him to know the subtleties of these external frameworks, and may even have to act in the role of an "architect" to dissect it.

It's a balance to achieve between speed and productivity. My personal style is to err on clarity and not magic.</comment></comment></comment>


The Workers Who Bring You Black Friday - <AUTHOR> http://www.thenation.com/article/177377/holiday-crush?page=full <comment><USER2> > After waiting twenty minutes, we are ushered into a room upstairs. A woman > from the agency hands each of us a time sheet. For the sign-in, she tells us > to write 8:30. "I know you were told to be here at 8:15," she says, > anticipating a protest that never comes, "but that was just to make sure you > got here early." And, like that, fifteen minutes are lopped from our > paycheck. It's a small but important lesson in what it means to be a > "flexible" worker.

> But there are significant challenges to organizing the industry. "Because of > the temp nature of work, it's very easy for a worker who speaks out to be > retaliated against," says Palma. "They might not be called back to work the > following day, or have their hours decreased." That's exactly what happened > to Rodriguez, according to the WWU. After he spoke to the media and > participated in strikes over unsafe workplace conditions—leading Cal/OSHA to > fine the warehouse nearly $30,000—he was fired earlier this year. Federal > charges have been filed against the company, alleging retaliation, and an > investigation is under way.

I'm not a fan of labor unions, but I'm not sure what else can be done about this sort of thing. Litigation can only tackle small parts of the problem, and class action settlements leave the lawyers as the only winners. Fines are never high enough to disincentivize the activity. There's a high chance of not getting caught, and even when you do get caught the fine is barely higher than the cost of complying in the first place. Maybe a punishment of public floggings for executives at companies who violate labor laws?[1]

[1] There's a lot of Singapore worship among certain circles, so they shouldn't mind adopting some of their customs: [http://en.wikipedia.org/wiki/Caning_in_Singapore](http://en.wikipedia.org/wiki/Caning_in_Singapore).

<comment><USER3> Unfortunately, the power is in the hands of the temp workers.... if they all stick together. If they all collectively demanded better working conditions and better pay, they could succeed. After all, the work won't get done if they don't do it. Management certainly isn't going to dirty their hands in this kind of job.

And after all what we see, it really is have-nots (proletariat) versus the haves(capitalists/managers).

<comment><USER4> Or be replaced by robots. All I could think of reading that is why they haven't figured out how to fold and tape a cardboard box with a robot yet.

They should get on that, and then those people won't have to be subjected to those conditions anymore.

<comment><USER5> Agreed. The automobile manufacturers were very successful in improving quality and efficiency via robotics, and were also encouraged to do so by enormous drags from labor unions. Warehouses have also increased automation, but clearly they can improve more. Beyond the warehouse, I'm eager to see their deployment in retail stores and fast-food. Consumers will benefit from efficiencies, and the unhappy workers will be free to find jobs more to their liking.

<comment><USER6> Keep in mind, a negative income tax/minimum basic income plan only has problems passing until a majority of the population can't find work. History has taught us the results of "Let them eat cake".

</comment></comment></comment></comment></comment><comment><USER7> I don't see a big issue here.

It's not the fault of the industry that certain kinds of labor are cheap. In fact it's nobody's fault, it's just the nature of the market.

The only kinds of response to this situation that make sense are to increase welfare (and reduce the barriers/conditions to obtaining it) and decrease taxes for people on low incomes. Anything else misses the essence of the problem, which is that a large number of people, for whatever reasons, do not produce enough value to earn a decent wage.

Enforcing various laws might help too, but given that all manual work is by nature dangerous, it's not clear that this industry is especially bad.

</comment><comment><USER8> This is easier to read: [http://www.thenation.com/article/177377/holiday- crush?page=f...](http://www.thenation.com/article/177377/holiday- crush?page=full)

<comment><AUTHOR> oh most definitely - thanks!

</comment></comment><comment><USER9> Every year the same article. No one is forced to work at a temp agency or retail. If it sucks so much, find a different job.

Yes, yes, I know, it's not that easy. But it actually is.

<comment><USER10> _But it actually is._

Hell yeah. Get off your lazy ass, and go spend tens of thousands of dollars getting an education that makes you employable (just put aside for the moment the fact that your years of compulsory education left you good for nothing better than packing boxes). It's that easy, everyone. Economy down? Well maybe you should invest massively in industry and spark a boom so there are more jobs. If you aren't doing that, you're just not trying.

<comment><USER11> Why don't they just move into the tech industry, an industry filled with those that proclaim the worthlessness of a degree and a low barrier to entry?

Or are they not fit for tech? Is there something that sets them apart and makes them lesser than your typical dot commer?

</comment></comment></comment><comment><USER12> I guess this is how seeds of a revolution are sown.

I know that no system is perfect. And that capitalism* is better than many others which have been tried so far. But if enough people are frustrated with the given system, all it needs is a trigger to vent out that frustration.

* I guess main problem with capitalism is inheritance. When everyone is on equal footing, a "loser" may not mind the "winner" getting rich either through hard work, or even through occasional luck. But after 3-4 generations, when children of rich parents have inherent advantages (education, connections etc) which are extremely hard to overcome, this system starts becoming unstable.

</comment><comment><USER13> If you think Capitalism is bad, just try Socialism. Instead of making X amount of people miserable, it makes almost everyone miserable.

The world is not perfect, there is no utopia, and whatever you might think, Capitalism is about as good of product/market fit (human-nature/society-type fit) as you can get in a world that's not based on small hunter/gatherer groups.

It's also keeps us in a state of competition, which is the driving force for innovation and progress like nothing else is.

But don't believe me, just check how all the previous Marxsist and Socialist societies in history turned out.

<comment><USER14> The balance is of course somewhere in the middle. The good parts of capitalism with the good parts of socialism. You get a much nicer society than with either one t the extreme.

<comment><USER15> How do you get just the good parts of X (for any X), without the bad parts? In most cases, you just get X as a package.

<comment><USER14> Sometimes, but not in this case. Plenty of northern European countries (Sweden is a popular example) mix the good bits of capitalism and socialism just fine, while avoiding the worst excesses. It's not perfect, but they're certainly on a much more productive path than either socialist or capitalist extremists.

</comment></comment></comment></comment><comment><USER16> This whole schpiel just made me keep thinking: "I wonder how these people will feel when robots replace them in these kinds of jobs"...

<comment><USER6> Something along the lines of, "Who do we lynch first? The robotics? Or the owner?"

</comment></comment><comment><USER17> This is so horrifying to read. Is there anything we can do to help?

<comment><USER18> Amazon acquired Kiva Systems to employ robots [1] to replace people for these various tasks. Although taking away a viable source of income for low-income earners during the holiday season probably isn't viewed as "help" by most of them.

[1] [http://www.youtube.com/watch?v=6KRjuuEVEZs](http://www.youtube.com/watch?v=6KRjuuEVEZs)

</comment></comment><comment><USER19> Perhaps Amazon could add a checkbox to the shopping cart: [] pay 10% more that will go directly into the pockets of the packers.

I wouldn't even mind a picture gallery of everybody who handled my package.

<comment><USER20> Unfortunately, the theory of tax/cost incidence shows what can go wrong with this: since it results in above-market effective wages, that simply intensifies the competition for those positions, probably to the point that workers will offer to do them for less than the current wage Amazon is paying, since they know they'll still make the same from such donations.

Here's a discussion that covered the question in the context of allowing people to tip McDonald's cashiers directly, but the same analysis applies:

[http://econlog.econlib.org/archives/2013/08/what_if_tipping_...](http://econlog.econlib.org/archives/2013/08/what_if_tipping_1.html)

"Who benefits" is determined by the shape of the supply/demand curves, not who is being handed the dollars.

<comment><USER7> Nice point. Even if the money did get to the workers, I don't see why most people would really want to do this, since is equivalent to donating $10 to people who happen to be working that particular job. Wouldn't most people rather donate that money to a charity, whose recipients are presumable more needy than people who at least have jobs.</comment></comment></comment>


The Wisdom and Magic of Strings - <AUTHOR> http://blog.wekeroad.com/code/are-friends-immutable <comment><USER2> What an uninformative article. Couldn't it all be summarized by saying, "Scrupulous replacement of special string values by enums is no proof of completeness and correctness"? Who was making the counter argument in the first place?</comment>


Ad Blocking: The Digital Double-Edged Sword - <AUTHOR> https://www.hpematter.com/issue-no-8-winter-2016/digital-double-edged-sword-ad-blocking <comment><USER2> This article is a poster child for the issue. The page hits _seven_ external metric sites (per Ghostery) _and_ hits you with a subscription popup midway through that also scrolls you back to the top, making you lose your place. _Winning!_

<comment><AUTHOR> I'm seeing 11 trackers (6 advertising, 1 essential, 2 analytics & 2 social media) per Ghostery, but didn't receive any popups.

The "how much have you read?" indicator is pretty neat.

</comment></comment><comment><USER3> "Google users don't block search ads because they are useful."

Nice joke Larry Page !

I go back to my uBlock origin ad safe browser</comment>


Why Software Engineering Sucks - <AUTHOR> http://nerdlife.net/2009/01/23/why-software-engineering-sucks/

<comment><USER2> The authors paints with a brush that is entirely too wide for the canvas.

He's a student with no real world experience in putting together a system. Because of that, it's easy to conclude that drones create software from reams of paperwork and ninjas wing it and hack it out in a few days with Coca-cola and Ramen.

The real reality is that neither extremes is useful or done exclusively. Sitting down and putting at least some of the architecture down on paper can be useful. If you have a team larger than two people, it might be necessary to document some of the process so that people know what part they are playing.

I wish him the best of luck -- he will be tempered to neither extreme after he's spent some time working in various places.

<comment><USER3> His second example seems to be closer to reality than the first one. In reality you are likely to have a set of programmers (more than two) with varying levels and communication skills. Added to that as somebody else mentioned, this is just a "job" to most people and you are likely to have a team change over time (people move on or get laid off etc).

Given this scenario it is more beneficial to have

\- Well defined initial requirements \- Every item speced out \- Proper class diagrams \- Functional requirements \- So much detail that even X can code it (where X is a current/future employee with a variable technical and communication skill and interest level).

He additionally cites the case where he has personally observed "100 person companies" that manages to hire Group 1's. I am more interested in hearing about this case rather than read about his personal principles.

"My personal principle is that if you're not smart enough to be able to communicate well and produce good code without a strict formal process, I don't want to be working with you."

I am still trying to figure out how somebody could use a strict formal process to overcome the disability to produce good code.

</comment></comment><comment><USER4> There is another distinguishing factor about the Group 2s that I really wish the article had brought up; some of them honestly don't give a damn about the product. The product is an end-point, and after that they either need to find another project to work on or they become unemployed. Even if there will always be more work, the risk of appearing idle during a project transition, and thus redundant, looms always. So, the goal becomes pushing out that end- point as far as possible without making the project so impractical that it is canceled.

This pile of process and paper is not a necessary evil to them, but something they want to actively encourage. If they could spend anywhere between 3 and 24 months having meetings, doing design specs, fleshing out requirements, and going through 2^n revisions of the same, they'll push for 24 months regardless. They don't do this to be actively malicious to the company or the product, but because they don't care about the company or the product. To them, it is just another job, and the point then becomes to keep it and get paid for doing it as long as possible.

</comment><comment><USER5> The author seems to confuse waterfall method with software engineering. Engineering means having a process not a specific process.

His first example sounds very close to the team I currently work with if you add in constantly touching base with the origional stake holders. But we are still engineering, we still make controlled changes that we, as a team, determine are the best fit for the problem.

</comment><comment><USER6> While he might be right, it's still not practical to group things in this way, and when working on a project with more than one person, you should always document things correctly etc. If not, it will allow what he calls 'mediocre' programmers to determine that they are brilliant, and quit documenting.

</comment><comment><USER7> Software Engineering != Software Science

</comment><comment><USER8> Most of the brilliant teams I have worked with have a process but they are intelligent enough to follow things that make sense to them. Mindlessly applying a fat process without understanding why to any project is obviously illogical and bound to ruin the project.</comment>


2 Questions about RoR - <AUTHOR>

1. Can anyone recommend any good books on beginning Ruby on Rails? I have good general programming knowledge (I can do ASP/ASP.NET/PHP etc) but I've never used Ruby and I want to add it as another string to my bow.<p>2. How come RoR has taken off so much with startups? Admittedly I can only name Justin.tv and Twitter off the top of my head right now, but it seems to be the startup language of choice at the moment. Why is this? <comment><USER2> 1\. Agile Web Development with Rails

2\. Because it's been designed by smart people who "get it" with regards to agile development, which is what startups need. In addition, the community has a "culture" which many startups identify with.

<comment><USER3> +1 for Agile Web development with Rails.

Getting the Programming Ruby 'Pickaxe' book for Ruby is good too.

</comment></comment><comment><USER4> I just got 'The Rails Way' and my first impressions are that it is a definitive reference work (covering Rails 2 no less). I already prefer what I have seen to a lot of other Rails books I have gone through.

In particular I am not a fan of the Agile Web Development with Rails book; apart from anything else it is way behind the state of the art at this stage.

I actually like to learn from reference books; maybe its just me.

<comment><USER5> I looked into 'The Rails Way' over the weekend. As vdm correctly says, its definitely a very comprehensive reference. And it makes as a good book, but you definitely need to work with a basic tutorial to get you up and running quickly. I would recommend "Agile Web Development with Rails" but with Rails 2.0 although its a little behind the curve, its not a bad book.

I am currently reading "Practical Social Networking Sites with Rails", and although its a decent book, the author tends to skip some of the most important details, leaving you wondering how something came about. I would not recommend it.

I have read 'Ruby for Rails', and its definitely a good book. David Black is a very good author and teaches you Ruby and shows you how a lot of the 'black- magic' in Rails happens.

Here is someone else's review of some of the books - <http://antoniocangiano.com/rails-books/>

For Ruby, I would recommend Peter Cooper's book over Programming Ruby any day... especially if you are new to Ruby and/or OOP in general.

</comment></comment><comment><USER6> I'd highly recommend "Ruby For Rails" if you're learning Ruby and Rails at the same time.

<comment><USER7> Definitely. Learning the advanced features of Ruby will give you a big boost using Rails -- especially metaprogramming, which is something that few other frameworks employ.

</comment></comment><comment><USER8> 1) I've never gotten much utility out of Rails books. I've generally gotten much more use out of the API docs and blogs. That said, the Agile Web Development with Rails book is pretty much standard, and Rails Recipes is good for code examples. However, if you're doing something in Rails Recipes, there's probably a plugin for it by now.

2) Because it is very easy to implement an idea in a day and see if it sticks. More than that, when you're faced with a task that might not have much reward, it is easier to do if it doesn't feel like work. Programming in PHP/Java/C#/etc generally feels like work. Programming in Ruby generally feels like fun.

<comment><USER9> "Programming in Ruby generally feels like fun" Thank you. That does it. I am going to buy a laptop (probably the Asus EEE, not the MacBook Air) and start learning Ruby on Rails code during my 53 minute train ride. I bought "The Rails Way" because Zed recommended it at the end of his rant, and it's pretty Greek to me. I'll start with beginningrails.com and the Pick-Axe book (Zed's criticism about it, aside)

</comment></comment><comment><USER10> And don't touch Ruby on Rails for Dummies with a 10ft pole. That book is horrible.

Here's my liveblogging take of my first three weeks with Rails:

<http://internetducttape.com/category/ruby-on-rails/>

</comment><comment><USER11> Hey,

Books are not always the easiest thing to learn from. I found screencasts to be an excellent way to pick up all sorts of stuff for Rails.

Check out peepcode.com, railscasts.com and showmedo.com for starters.

Some content is free (railscasts), others not so free.

</comment><comment><USER12> 1) I've used the Agile Ruby on Rails book along with the free Why's (Poignant) Guide to Ruby online. (Cartoon Foxes!) I suggest checking out Why's Guide first and learn Ruby before you hit Rails. Ruby's a fairly easy language to learn while Rails is a totally different programming scheme you may be unfamiliar with (ActiveRecord).

Look at CakePHP to get familiar with ActiveRecord for PHP. I don't really recommend CakePHP as a development platform, but it's a great way to understand Rails if Ruby+Rails at the same time is too complicated.

2) My opinion of why RoR has taken off is because ActiveRecord makes normal day-to-day activities simple. Verification is already handled. Although PHP and Ruby are roughly equal in speed (Ruby 2.0 is going to be a lot faster though!), Rails isn't. But once you're done, built-in caching features help it scale at least a little bit. Of course if you're worried about scalability, just program the whole thing in C. :P (That's what Amazon does!)

</comment><comment><USER13> Justin.tv is alllll python. Not Ruby. Python baby.

</comment><comment><USER10> Agile Web Development with Rails is a little too old now. I'd follow the other people and go with the Rails Way instead.

And don't bother with RESTful Web Services.. if you're using Rails 2.x then you only need a half page tutorial on how to use REST, not an entire book.

<comment><USER14> I like the RESTful Web Services book because it discussed how to design an API and why, not just the functions you'd need to wire an API together.

</comment></comment><comment><USER15> I strongly recommend Beginning Rails by Jeffrey Hardy. I liked it even more than AWDWR. Here's the companion site: <http://beginningrails.com/>. The author is active on the Google mailing list for this book as well.

</comment><comment><USER16> 1) I highly recommend Agile Web Development with Ruby on Rails. I also recommend the Pick Axe (Pragmatic Programmers Ruby book). I do not recommend Ruby for Rails. I bought it and skimmed it to realize I already knew everything in it after reading the other two.

2) B/c it has a great ORM layer (ActiveRecord) and strong ajax libraries (integration with prototype/script.aculo.us) which make it easy to quickly put together a very well organized app that has a lot of UI sizzle.

I also expect Merb to continue to gather steam, especially for people who "get" rails and who want to take it in specialized directions.

</comment><comment><USER17> Take a look at RailsSpace, which is an extended tutorial introduction to Rails. As one of the authors, I'm biased, but the Amazon reviews are pretty good: <http://www.amazon.com/dp/0321480791>

N.B. As with virtually all Rails books, it's a bit out of date (despite having only just come out last summer!), but we focus on general techniques that are plenty useful in Rails 2. I'm currently building a site with some of the same features as the book application, and I often find myself referring to the book for guidance.

</comment><comment><USER18> 1) Beginning Ruby by Peter Cooper is a good one for learning Ruby, the Pickaxe book is a great reference for Ruby as well. Agile Web development with Rails is good, also the Rails Way is good for Rails 2.0.

</comment><comment><USER19> 1) RailsSpace by Hartl and The Rails Way by Fernandez are the best books out there right now.

2) Right time, right place. Rails came out around the same time the second wave of web startups picked up.

Also the argument is that Rails allows a smaller team (or even just one person) to write more functionality in less time. Whether that's true or not for you may vary.

</comment><comment><USER20> Just as an FYI, but I believe Justin.tv switched to Python.

<comment><AUTHOR> Actually I think you're right. Didn't they develop their own flash server with python?

But they started with RoR didn't they?

<comment><USER21> You're both semi-wrong. The website, justin.tv, is written in RoR and always was. Their flash server, PMS (Python Media Server), is written in Python. It was always in Python. PMS replaces the need to run Adobe's Flash server.

<comment><USER22> That's correct. Thanks for clearing that up!

</comment></comment></comment></comment><comment><USER23> I'll have to check out some of these listed books, if only to have a reference around.

Like with PHP, ASP, Perl and others, I learned the language simply by looking at existing apps, hacking them up, then sitting down and making something of my own and all the fun trial and error that gives.

I find it a much nicer way to learn a language than from a book. But then, I'm a very hands-on person.</comment>


iPhone 7/7+ Phone Case with Built in Secure AirPod Storage - <AUTHOR> http://www.kalyxdesigns.com <comment><USER2> This is seriously ugly design. It adds bulkiness to the phone, removes Earpods charging (which the official case does), removes automatic pairing after opening the case, and it just looks ridicules. I don't know whats wrong about carrying around iPhone and Earpods in a case.</comment>


Projecting the globe onto regular solids - <AUTHOR> https://www.johndcook.com/blog/2018/08/22/globe-regular-solids/ <comment><USER2> Side Tangent:

In games and VR we encounter the problem of projecting an image onto a sphere all the time. There are many approaches, from wrapping a plane into a sphere to simply normalizing the vertices of a cube with an image on each face. One of the best ways to do this is to take an icosahedron, tessellate the faces into smaller triangles and then normalize all the vertices of the triangles. This is commonly known as an icosphere. It can be more dificult to "unwrap" but it gives the most even distribution of vertices that a triangle mesh representing a sphere can have.</comment>


Ask HN: Best mathematics courses for programming and intrigue? - <AUTHOR>

What college courses did you take that you found to apply to programming (e.g. algorithms, logic) or found to be genuinely interesting?<p>FWIW: I'm a philosophy major with many courses in medicine, but it turns out RIT doesn't have a medically-related minor. So I'm turning to math. I start my math minor in a month. I've taken calculus and biostats previously. I know Perl, PHP, JavaScript, R, SQL, shell scripting and CSS/HTML. I do computational biology research with a professor and I hope to translate coding skills into an intro level job at a startup like Comprehend.com or Automattic.com. <comment><USER2> Linear algebra can be useful depending on what you plan to work with (SUPER useful for graphics, not so useful for building a simple online game)

Probability and Statistics. A MUST if you want to look into AI or machine learning.

Discrete math was cool, but I have found it largely not useful in my career thus far. But I think a large part of that is me being a programmer as opposed to a computer scientist, and also not someone who works with circuits. Neat class though.

That's all I can personally speak to.

</comment><comment><USER3> I suggest the following:

Combinatorics [1]. I took it in college and was really interested and the professor made us program in Mathematica as well.

Probability and Statistics

[1] [http://en.wikipedia.org/wiki/Combinatorics](http://en.wikipedia.org/wiki/Combinatorics)

</comment><comment><USER4> Just off the top of my head:

Boolean Logic

Automata + Computability

Statistics

Relational Algebra

</comment><comment><USER5> Discrete Mathematics

Logic, Set Theory, & Proofs

Linear Algebra I/II

</comment><comment><USER6> You might consider taking linear algebra.</comment>


Millionaires Flee California After Tax Hike - <AUTHOR> https://www.forbes.com/sites/patrickgleason/2018/07/06/millionaires-flee-california-after-tax-hike/#596e61944189 <comment><USER2> I'm enjoying the contrast between the title of this article and the first sentence of the article that it links to:

> California lost a very small but statistically significant percentage of > high-income residents after voters approved Proposition 30

I wish it was possible to talk about important and interesting issues like optimal tax levels without everything being an ideological battle. I don't care if you think taxes are too high on high income earners. You might be right. But you should be curious about the possibility that you're wrong.

<comment><USER3> > I wish it was possible to talk about important and interesting issues like > optimal tax levels without everything being an ideological battle. I don't > care if you think taxes are too high

Irony meter off the charts.

most people don't understand they are likely tax consumers, not providers. As a thought experiment, it must be true that at some income level a person uses more taxes than they provide. Quantifying the exact number is difficult and locality dependent, but it clearly exists. Who do you think the major tax revenue providers are? Corporations and rich people. I don't understand why anyone thinks they're not paying their fair share when they are almost the only ones paying.

The top 10% of us wage earners account for over 70% of personal income tax revenue, while the bottom 50% (under 40k/year) contribute <3%

[https://www.ntu.org/foundation/tax-page/who-pays-income- taxe...](https://www.ntu.org/foundation/tax-page/who-pays-income-taxes)

<comment><USER4> The reason people see it as unfair is because the wealth in the United States goes disproportionately to the top. Of course they are going to be the ones paying they are the only ones left with anything of value and any real disposable income. The money they pay mostly goes to services that benefit themselves anyways. There's a reason that wealthier areas have nicer schools, better roads, always get plowed first. I mean come on if the top 10 percent are only paying 70% then they are underpaying based on the fact that they hold 77% of American wealth. Let's not get into the world. [https://billmoyers.com/story/top-10-percent- wealth/](https://billmoyers.com/story/top-10-percent-wealth/)

<comment><USER5> Pareto distributions occur in all skill dependent distributions from musicians and academics. You say it like it's some evil conspiracy or that the rich only become rich by making others poor.

<comment><USER4> It's not that rich people are evil. Rich people control the systems by which money is made and logically reserve as large a portion of that pie as they can for themselves. The problem is that as a group they have made it so that there is not enough at the bottom and policy needs to be changed to reflect that. It's like saying you have a group of two people in a room with a pump that keeps giving them air, but the pump is fed by a room full of 50 people who keep having a dwindling supply of air to breathe. The only thing keeping those two rooms apart is an unlocked door. At some point either the people with all the air share it, or the people in the room without it will open the door by force. It's just a statement of human nature. Imbalanced systems have a way of achieving balance.

<comment><USER3> > Imbalanced systems have a way of achieving balance.

You glossed over that like there is some ideal system we're being kept from by evil rich people. What exactly is this unlocked door we open and everything is solved?

</comment></comment></comment></comment></comment></comment><comment><USER6> Would love to see the numbers on millionaires created by California who choose to stay. If the California economy is good enough those numbers could offset the lack of millionaires moving to California.

<comment><USER7> It's nothing. From a neutral article without an axe to grind or a political message to send:

>The state lost an estimated 138 high-income individuals, or about 0.04 percent of the roughly 312,000 people subject to the tax increase, said co- author Charles Varner, associate director of the Stanford Center on Poverty and Inequality.

[https://www.sfchronicle.com/business/networth/article/Dozens...](https://www.sfchronicle.com/business/networth/article/Dozens- of-millionaires-fled-California-after-2012-13053135.php)

Ideally, the mods would replace the top link with the SFChronicle one that puts the number in context and gives way more details, but it may not be worth it.

<comment><USER8> Political axe aside, the tax rate is foremost in entrepreneurs minds when they decide to build a company in CA. Maybe even more so than labor costs.

You don't obsess and negotiate over 0.1% increases in option pools and ignore the silent 15%/25%/35% partner in the room.

CA eliminating the QSBS Section 1202 exemption is an equally glaring wart on establishing CA residency for entrepreneurs.

<comment><USER9> "...the tax rate is foremost in entrepreneurs minds when they decide to build a company in CA..."

???

No horse in the California tax race personally, but if taxes are your foremost consideration when launching your startup, you should really rethink your plans. That advice is not specific to California startups. If taxes are the foremost consideration for a prospective startup anywhere in the US, you should sit down with someone to talk through your plan. Just to ensure that it makes sense.

If I heard that from a prospective startup here in Wisconsin? I have to say, just on first blush, something would sound off about that.

</comment></comment></comment></comment><comment><USER10> "Going back to California's high tax burden, Varner's new research backs up the old adage that when you tax something you get less of it. That applies whether the thing being taxed is cigarettes, booze, or, in California's case, millionaires. "

I would say this is fake logic. No-one is going to stop trying to be a millionaire because of taxes.

Though they may try to move to a another state to avoid them.

That just highlights that the tax system needs to be less fragmented and "service oriented". Individual states may charge taxes based on the services they provide, but taxation at large should be about balancing the wealth distribution.

</comment><comment><USER11> You have to wonder about people against any taxes where do they think roads, schools, military, police, fire etc. all come from. They just pop into existence?

<comment><USER12> From others, obviously.

</comment></comment><comment><USER13> I'd like to see increased taxes targeted at the entertainment industry.

Entertainment seems to given an oversized voice in influencing politics. It would be right for the industry to contribute a corresponding amount of money to help fund the issues espoused.

</comment><comment><USER14> Surprised it took so long. Come here to Texas and start up some companies here.

</comment><comment><USER15> Left SF. Not willing to be a tax donkey any more. Not only because of this, but also housing cost vs value and Trump tax plan limit on limiting state tax.

Washington has been great! At least a 13% raise!

</comment><comment><USER16> I just stopped working. Between state and local taxes, I only got to keep 46 cents of every additional dollar I earned. I shut down my business, let 6 people go, and stopped.

<comment><USER17> What do you do now?</comment></comment>


Ask HN: Which Support tools do you use? - <AUTHOR>

I am looking for a support tool, to communicate with my customers. I like the way Intercom does it, but it has no reasonable pricing model if you don't need user-tracking and have a lot of inactive users. <comment><USER2> have you checked out Helpjuice.com?

I'm the founder of it, and would be more than happy to answer some questions, if you have any!

</comment><comment><USER3> Are you looking for live chat or support help desk platform?

For help desk, you can check out zendesk.com, desk.com, happyfox.com

</comment><comment><USER4> HelpScout + Olark is what we use for support. I especially love HelpScout.</comment>


Better battery life with Microsoft Edge - <AUTHOR> https://blogs.windows.com/msedgedev/2017/04/14/better-battery-life-microsoft-edge/ <comment><USER2> Props to the Edge team :)

Only complaint I have about Edge is how Windows pushes it down your throat. You get while setting a different browser and even AFTER setting a default browser

More details: [https://github.com/brave/browser- laptop/issues/7287#issuecom...](https://github.com/brave/browser- laptop/issues/7287#issuecomment-293642151)

<comment><USER3> Microsoft can't seem to make something people want, so they have to shove it down your throat.

Apple built a walled garden to lure people in.

Microsoft is building a walled prison to trap people.

<comment><USER4> There's also no ability to uninstall Edge, the current way of doing it appears to be to delete all of the binaries in a specific folder.

<comment><USER5> That's a fairly normal thing though, generally every operating system ensures there is a browser that can always be used for internal functions. Android has chrome (previously webview I think).

</comment></comment></comment></comment><comment><USER6> But does Windows still keep being a weirdo and notify every time in the notification bar when I use Google Chrome? It really feels like its stalking and makes me irritate.

[http://www.theverge.com/2016/8/3/12369326/microsoft- windows-...](http://www.theverge.com/2016/8/3/12369326/microsoft- windows-10-chrome-battery-life-notifications)

<comment><USER7> I mean, as the article points out, I can't help but feel Google brought this one on themselves with browser ads on the google homepage...

<comment><USER8> not to forget keeps bugging me to make google my default search engine. i mean if my default was set to ask.com maybe, if i set my default to ddg, it was probably on purpose..

and on that note, why/how are they able to detect that google isnt my default search anyway?

<comment><USER5> I've seen that message even when google is my default search engine. So I think it might just be something that shows up for everyone. I was using firefox though, perhaps Chrome + Default google will get rid of the message.

</comment></comment></comment></comment><comment><USER9> Independent reviews need to be done. I can only assume bias with this post.

<comment><USER10> > These tests are repeatable by other browsers or curious users, backed by > methodology documents and open source code.

[https://github.com/MicrosoftEdge/BrowserEfficiencyTest/](https://github.com/MicrosoftEdge/BrowserEfficiencyTest/)

They have released their test methodology and code, so you can independently review to your hearts content.

Despite obviously wanting to be the market leader, they seem to be genuinely interested in helping everybody else up their game too. It's nice to see from such a large company

<comment><USER11> > _they seem to be genuinely interested in helping everybody else up their > game too_

No, they are not.

The speed of Microsoft's transformation from universally hated evil FUD masters to white and fluffy friends of everyone really boggles one's mind. Just as does the gullibility and naivete of those taking it all for face value. Microsoft may be missing Balmer as a head figure, but it is the same old corporation that doesn't give a flying fuck about anything or anyone except for its own interests, which has been made abundantly clear by their past and prsent Windows 10 shenannigans. "We hear you loud and clear, you want to have better control over telemetry, so we included a choice of vaseline flavours in Creators Update." But, yeah, let's focus on their fresh coat of marketing paint with liberal sprinkle of github repos and assume that all these surely come from some other Board of directors and CEO.

Fish rots from the head. Microsoft has never been an ethical company and it still is not.

<comment><USER10> > it is the same old corporation that doesn't give a flying fuck about > anything or anyone except for its own interests

No, I don't believe it is. Their actions help themselves, their competitors _and_ their users. That's really as good as you can hope for with a profit- driven company.

<comment><USER12> It's marketing.

<comment><USER10> Yes, but they're marketing something which benefits users and competitors. Unlike, for example, Google's constant in-your-face marketing when you use any of their services from outside Chrome. That doesn't benefit anybody but Google (assuming it even benefits them - in my case it causes a loss of respect which means nobody sees any benefit)

Companies will _always_ engage in marketing and other profit-driven, competitive activities. Some companies manage to do so while having a positive effect on the world around them, some do not. Most long-lived companies (such as MS) will go through all the possible phases at various stages of their life.

Right now, MS is being a good player. They are releasing useful products and doing so in a way that benefits more than just themselves. They haven't always been like this, and won't always be like this, but deserve credit when they are. Like all other companies.

</comment></comment></comment></comment></comment></comment><comment><USER13> Pretty awesome to see all the hard work they did just to optimize battery usage.

</comment><comment><USER14> My problem with Edge is that even if it did currently work better than Firefox and Chrome, I still wouldn't use it, because I don't believe they will respond to new technology requirements well. They are non-responsive and have a long history of not doing what users want, but rather doing what they want. The fact that Edge and IE to this day lack very basic functionality that most users want but has other whack ass functionality that users don't want is a testament to this.

Also their handling of security flaws is often terrible.

</comment><comment><USER15> Edge browser is very fast on low-end devices (e.g. Bay Trail Intel Atom), with super smooth scroll, and very responsive UI. Better experience than Chrome and Firefox, on devices with 1GB of RAM.

</comment><comment><USER16> Microsoft's marketing strategy is kind of annoying to me: longer battery life is not even close to being in my top three reasons for choosing a browser.

How about getting somewhere close to supporting U2F? Not even close to becoming a reality[0]. Working with popular password management solutions in order to get them to make an Edge extension? Asking the developers for more extensions?

Any of those three would make Edge seem like a more viable browser in the future and might actually make me try it out. Battery life? Nice to have, but nowhere close to being an essential thing to me.

0 - [https://github.com/MicrosoftEdge/Status/issues/358](https://github.com/MicrosoftEdge/Status/issues/358)

</comment><comment><USER17> It's good to see a focus on battery life, but:

1\. using a microsoft computer for the test seems a little unfair. I should hope that a microsoft browser on a microsoft OS and a microsoft computer can get the best battery life.

2\. Edge does less than the other browsers. It's not really a fair test when it's a less capable browser. When they implement ServiceWorker, Shared Web Workers, WebRTC Data Channels, shadow DOM and position:sticky then let's see how they do. As long we are comparing two browsers that don't have the same functionality, i can get even better battery life by turning my computer off and putting it on a shelf.

</comment><comment><USER18> I would use Edge a lot more if Google Docs weren't such a mess on it. I would like to drop Google Docs altogether (I hate products that are tied to one browser like Google's are), but that isn't feasible right now.

<comment><USER19> Interesting. How bad is it? I rely a lot on Google Docs, and for this very reason (and extensions) I stick with Chrome. But that said, GSuite is such a CPU/memory hog. Gmail, in particular, has been terrible recently to the point where I went back to using Outlook for the first time in 7-8 years.

<comment><USER18> All of the icons are wrong on Edge. Makes it difficult to navigate around. Weird UX edge (ha ha ha nope) cases that exist on Edge but not on Chrome or Firefox.

</comment></comment></comment><comment><USER20> I am glad to see that there was no auto-update and auto-force-restart during the time when you are not interacting with the computer in the battery test. It is the single most annoying feature I have ever seen.

<comment><USER21> I can't stand how Windows makes its own decisions about when to reboot my laptop. Windows shouldn't be empowered with making this decision. As the owner of the laptop, it's my call.

</comment></comment><comment><USER22> How long before Microsoft releases edge on other OSes? Edge for OSX/Linux? I'd try it.

<comment><USER14> You will never see that. I'm not criticizing Microsoft by saying that.

</comment></comment><comment><USER23> Someone should look into what kind of impact EME have on battery life.

</comment><comment><USER24> Can we change the URL to [https://blogs.windows.com/msedgedev/2017/04/14/better- batter...](https://blogs.windows.com/msedgedev/2017/04/14/better-battery-life- microsoft-edge/) ? It's got technical details for us technical types :)

<comment><USER25> Ok, changed from [https://blogs.microsoft.com/firehose/2017/04/14/with- windows...](https://blogs.microsoft.com/firehose/2017/04/14/with- windows-10-creators-update-microsoft-edge-gives-you-longer-battery-life/).

</comment></comment><comment><USER26> Very happy to see they've stopped using Channel 9.

<comment><USER27> Serious question – what was wrong with Channel 9?

<comment><USER26> The player was worse than that of youtube, and the CDN was worse than that of youtube.

</comment></comment></comment><comment><USER28> Of course they'd find a way to make the battery last longer, that way they can collect more data.</comment>


My Hacker School Pairing Interview (2013) - <AUTHOR> https://dpb.bitbucket.io/my-hacker-school-pairing-interview.html <comment><USER2> I just "never graduated" from an RC batch. It's also a mid-career shift, and my experience was very similar. I also spent the day of the interview dejected assuming I didn't get in.

About all that's changed is the name and borough!

I highly recommend this program.

<comment><USER3> Well hello, Dan! Nikhil here. It's always nice to get a reminder that the internet can be a small place.

(Dan and I were at RC concurrently for the second half of his batch.)

I'll echo the sentiment: RC is a really cool and unique place. I was somewhat atypical, I think, in that I came in with a very defined and niche project that I wanted to work on (hacking on gccgo), but the RC format is flexible enough to be amenable to that. It's nice to be surrounded by a community of folks united by a love (or at least appreciation?) of programming, even if you're not actively working on a project together.

I'm a bit sad that I missed out on some of the more social/collaborative side of RC by focusing so heavily on one project, but I'm told this is a common sentiment: it's hard to strike a balance between being people-driven and being project-driven.

<comment><USER4> It is indeed hard to strike that balance. I've not properly written up my return statement but based on my experiences I would recommend not trying to do a hugely ambitious project, expect the experience to be social, and, if you're already a senior programmer, expect do to mentoring.

RC is definitely a cool and unique place! One thing people might not recognize if they're not keeping track is that there's usually about one item by a Recurser on the front page of HN.

</comment></comment></comment><comment><USER5> Currently at the Recurse Center (formerly Hacker School) and happy to answer any questions about it! I imagine a few alums are reading :)

</comment><comment><USER6> My pairing interview for RC was with the author of this blog post :). Also happy to answer questions other people might have!</comment>


Ask HN: How much has your college GPA played a role in your career? - <AUTHOR> <comment><USER3> I didn't finish graduating. I left school with 8 or so credits remaining (I already had a job lined up) and something like a 3.0 GPA.

Hasn't affected me in the slightest. To be fair, I also had multiple top tier internships through college and led a bunch of events on campus. I disregarded GPA entirely while in school and focused on what I felt was impactful and important (internships, community, etc). It doesn't mean I slacked off in school though - I definitely learned the same material and put a lot of effort into doing so. I just took the tests and assessments less seriously and applied the 80/20 rule aggressively.

Today I have a fantastic career at a Unicorn startup while multiple top tier companies contact me every quarter trying to poach me away. My parents were initially very skeptical and were pushing me to finish school but now that they've seen the results, they don't care anymore either.

The real lesson here is that GPA matters initially because companies have nothing else to frame your experience with. If you give them something else, then you'll find that they're more than willing to overlook GPA. If you don't give them something to anchor your skill on AND your GPA is bad, it will be rough finding a job initially. Once you've had quality experience under your belt, GPA should cease to become a factor.

</comment><comment><USER4> I had a GPA of roughly 2.4, from a top Australian university. Australian scale is very different, where good students would get about 3.0, and 4.0 would be extremely rare, about A+ levels.

My country had a good dose of grade inflation, so no matter how good the university was, the number itself meant that I didn't get pass the grade filter most organizations had.

Interestingly, bosses with ivy league level credentials would recognize the university and offer me jobs. So I got into a good starting job, rather than working for some corpotation like IBM or Sony like my friends.

That starting job gave me a lot of room to learn and it was a small enough company that I managed to get to know the company's clients well.

But if I had a strong GPA, it's possible I could be VP of some moderate sized tech company by 30 instead of being a top rate consultant.

</comment><comment><USER5> Not on the U.S GPA grade, but I have two top grade degrees in the U.K. - <USER2> Undergraduate (1:1) and one Masters (Distinction) - known as Grad school in the U.S.

It comes up quite often in interviews and I think it gives me a strong foundation to get roles that I might not be as qualified for as someone else who doesn't have the academic qualifications. I believe the reason for this is that the academic qualifications demonstrate that I can adapt to a wide range of disciplines whilst also being able to understand those disciplines on a deep level.

</comment><comment><USER6> Medium.

I had a 3.2 in Computer Science which was just enough to let other things shine when I was getting out of undergrad in a lukewarm economy. Later it was enough to not hinder my getting into a name brand grad school, which was a big benefit. (Signaling and networking more than anything else) I was never asked about GPA outside those cases.

I suspect if I got a 2.0 I may not have learned enough along the way.

</comment><comment><USER7> Basically none. Perhaps it would have been harder to get that first job out of college with a resume listing a GPA below 3.0/4 (in the US, where grade inflation is rampant; I had a 3.7 IIRC).

A point or two makes no difference whatsoever; and especially if you're going into a field other than what you directly studied, it's at best a weak signal that suggests (in the absence of work history) that either you have a good work ethic or you're good at determining minimum viable output.

It's also a weak signal because the factors like whether one had to work to pay for college introduce a lot of noise.

After that first job I never even listed it.

</comment><comment><USER8> It only matters for your first job because it's your only credential. If you keep it above a 3.0 you should be fine. If you're below that then just make a couple portfolio projects to impress interviewers.

<comment><USER9> I second this.

Blog, Github and highlight your small projects. That is worth more than a high gpa.

I don't hire 4.0 students because I like to have a good social atmosphere.

<comment><USER10> _> I don't hire 4.0 students because I like to have a good social atmosphere._

That seems both judgemental and poorly considered as a hiring heuristic.

I could flip this on you to make an equally invalid assessment of people: I don't hire people who have a lot of GitHub projects because it means they have no social life.

That doesn't seem very fair, does it?

</comment></comment></comment><comment><USER11> Had a career prior, so my 1.whatever GPA didn't matter. I pretty much stopped going to class within a month of starting and dropped out before first finals. Everything since has been relationships. Key for me was to define my skill set and evolve accordingly.

</comment><comment><USER12> makes a noticeable impact here in India, we had CGPA (out of 10).. many companies coming for placements have a cut-off to even be allowed to sit for tests.. some allow to bypass the test if you've got higher CGPA..

I topped my class and got the job I wanted.. however looking back, I could see issues with this - I was good at memorizing stuff and motivated enough to get good grades even for subjects I didn't like.. there's just too many subjects and students that the college life was mostly about mugging up and not oriented towards practical aspects of engineering.. even implementing open- book tests would help to improve our way of thinking..

and during my time, most students got placed in IT despite studying ECE/EEE/Mech/etc

</comment><comment><USER13> Exactly zero. I've been asked about my non-existent formal education about 3 times in 20 years.

</comment><comment><USER14> GPA? Zero impact. Building things aside played a huge role though. It's the main reason why I'm where I'm at today. I'd say aim for average score, spend your extra hours building things aside. Your real GPA is the positive impact you have on people.

</comment><comment><USER15> Not having a good GPA does set you back temporarily, in the form of less access to graduate schools or an initial job. Which in turn lessen chances of some traditional advancements, like fast track management, doctors and lawyers, or finance careers.

Everyone else, zippo.

</comment><comment><USER16> Never. Never finished college, left with 1.5 semesters to go (kinda asked to leave really because of poor attendance) and just got straight into working. Connected with good people who cared more about ability than credentials and never looked back.

</comment><comment><USER17> Absolutely nothing.

I can tell you however when we see candidates that list their GPA it's kind of a turn off. Even coming out of school you should have some more interesting stuff to put on there.

</comment><comment><USER18> Zero. I've never listed it on a resume and no one has ever asked.

</comment><comment><USER19> Very little, 3.1 GPA and I'm in accounting, where GPA actually is important for internships and first jobs.

Got a job with Deloitte in consulting.

Now an incoming PhD student.

GPA means nothing if you have an ounce of personal skills.

</comment><comment><USER20> Nothing. I was a quite good student but no one asked about college in interviews. I tried to bring it up but no one seemed to care. (France)

</comment><comment><USER21> It might have helped me get my first job. After that, I don't think anybody cared. (But it was on my resume for decades, just in case...)

</comment><comment><USER22> Very little. I don't think I have ever been asked about it. Usually focus is on skills, experience, and fit.

</comment><comment><USER23> Didn't graduate, make 250k a year at 26.

<comment><USER24> what do you do?

<comment><USER23> Freelance Marketing consultant, used to manage online marketing in house

</comment></comment></comment><comment><USER25> I didn't get my CS degree so none. But I also don't have an amazing career, there may be a connection.

</comment><comment><USER26> The same as my GPA.

0

</comment><comment><USER27> None, no one has ever asked for a transcript when I apply for jobs.

</comment><comment><USER28> Zero in the U.S. Maybe a bit in India.</comment>


36 Hours is Not a Proper Response Time - <AUTHOR> http://shenglong.posterous.com/36-hours-is-not-a-proper-response-time

<comment><USER2> While I generally agree with this sentiment: "if it's important, I'll probably call you before I text you, and text you before I email you."

The combination of the 2-2-2 rule and this sentence - "Needless to say, I've been told to screw off on many occasions :)" - leads me to believe that the author needs a little advice on human interaction. If you're the only one who DOESN'T think that you're an a--hole, then maybe you should get used to the fact that you're an a--hole.

<comment><AUTHOR> It's meant to be a bit of humor, and a little entertaining. My human interaction is very much fine.

</comment></comment><comment><USER3> I'm sorry, but 2-2-2 is absurd. I can't get my phone out of my pocket in 2 seconds to answer it, I can't get texts reliably enough to respond in 2 minutes, and quite frankly, despite spending 90% of my time in front of a computer, 2 hours is neither enough to formulate a complete response to (some) emails, nor is it sufficient time to get to a computer to type such a response.

<comment><USER4> 2-2-2 is fine or not fine. As a practical matter, if anyone is counting minutes to response for a text, it doesn't always work. There are often minutes of delay between transmission and reception.

It's like trying to count rings and hang up, as some sort of free, coded message transmission. The thing that makes rings on your end is independent of the thing that makes rings on their end.</comment></comment>


Writing a Game Boy emulator - <AUTHOR> https://cturt.github.io/cinoop.html <comment><USER2> I mentioned this already in another thread, but if you are interested in emulating hardware or just how CPUs and hardware work in general, writing a Game Boy emulator is about the most fun and educational project you can take.

The Game Boy hardware is, on its surface, extremely simple (as an example, there is no "operating system", only a 256 byte (!) boot ROM that pretty much only serves to display and validate the Nintendo logo shown at start), and it has a vast library of games available for it that make use of that hardware to varying degrees.

This means that you can get really good results really fast. Especially the earlier games, like Tetris, don't rely on fine grained implementation details too much, so even a sloppy, quickly put together emulation can run them well.

But if you then strive for accuracy or just being able to run more complex games, you can take things to almost arbitrarily detailed levels of this somewhat "fractal" complexity, uncovering and implementing all sorts of interesting hardware intricacies.

Contrast this with even slightly more recent game consoles, where you will have a lot of busywork ahead of you to even get the system past any reasonable definition of "booting", without any gratifying visual feedback. With the Game Boy on the other hand, getting to a game's title screen, with working buttons and all, is actually pretty simple.

<comment><USER3> I actually started C programming on Game Boy back in the days, but for me the Game Boy Advance really hit the sweet spot. ARM (nicer instruction set) and all of the close-to-the-metal characteristics you name above.

If you want to write a complete emulator, I can imagine that the Game Boy Advance can be a bit more of an undertaking with the different alternative graphics modes.

<comment><USER4> I haven't written a GBA emulator, but GBA got me into ARM. Tonc's old guide to ARM[1] I'll still send to people who want to learn ARM.

[1] [https://www.coranac.com/tonc/text/asm.htm](https://www.coranac.com/tonc/text/asm.htm)

</comment></comment></comment><comment><USER5> > I also had plans to port to Mac OS X, but like with PS2, this proved too > difficult since I was unable to install a working C compiler and development > environment on Mac OS X.

I am surprised by this statement, as it's generally as easy as _xcode-select --install_ to install the CLT (or failing that, installing full-blown Xcode). Slightly up in the article there is mention of Lion, so maybe this is related.

<comment><USER6> While this is true, I have a few major gripes with the toolchain that comes with XCode. For instance, I was recently working on a project using C++17 features. It works correctly on linux and windows, but making it compile on macOS was nigh impossible. The clang compiler that comes bundled with macOS has a "special" version that makes it very hard to know where exactly it stands compared to the normal LLVM repository.

Then there's the problem of libraries. You have to use homebrew or whatever to install libraries in /usr/local. Some libraries would conflict with the system though, so you have to fiddle with env variables to make the build system find it.

Overall, building on MacOS/Xcode is a frustrating experience. I ended up installing nixos and using its toolchain for my work...

<comment><USER7> The documentation for the macOS version of clang seems to be non-existent as well (sans the man/info page - but even that seems incorrect as some flags simply don't work).

</comment></comment></comment><comment><USER8> I've been developing a Game Boy emulator with a friend as well, and struggling a lot with the poor documentation. There's a very thorough PDF with lots of information online but when it comes to Opcodes (and cpu flags) it's quite inaccurate. Most often than not I have to skim through several github projects to check that the implementations match. (which sometimes don't)

Perhaps we'll start doing a Nintendo64 emulator instead which is more complex but from what I've heard/read has much better documentation.

<comment><USER9> While playing with the result (working emulator) can be exciting, the process of developing itself sounds quite mundane.

<comment><USER2> What makes you say that? Writing a Game Boy emulator is essentially implementing _a whole computer system_ , in the case of the Game Boy one that can quickly give you gratifying results, but allows you to dive almost arbitrarily deep.

I'd state the opposite and claim that it's actually one of the most fun and interesting things I've ever undertaken. In fact, I am more interested in the process than the actual product. There are tons of well working Game Boy emulators already.

<comment><USER9> But you're not creating a new computer system, you're not designing it. You have to exactly follow the specs, and the things mentioned by parent. Seems more like mundane and housekeeping stuff rather than creative.

<comment><USER10> Implementing a well-documented spec is fairly mundane, but figuring out that spec on your own is a fascinating puzzle. Emulators are full of curious little edge cases that can drive people to the point of obsession.

[https://mgba.io/2017/05/29/holy-grail-bugs/](https://mgba.io/2017/05/29/holy- grail-bugs/)

</comment></comment></comment></comment></comment><comment><USER11> This would make a great undergraduate computer science class. I particularly like where author is somewhat forced by circumstances to fashion their own bespoke tooling. Rapid prototyping of minimal tools is a very real-world developer skillset.

</comment><comment><USER12> If you are interested in this post, you might want to have a look at an older post on hackernews that gained some traction back then (see [https://news.ycombinator.com/item?id=17134668](https://news.ycombinator.com/item?id=17134668)). In contrast to this post, the aforementioned emulator was written in Java instead of C.

</comment><comment><USER13> _This is one of the more unique aspects of my emulator; since most other Game Boy emulators were written in an older C standard, (or an undesirable alternative like C++), they didn 't have access to anonymous structs or unions_

...unless you use MSVC, which has had that as an extension for a _very_ long time (since MSVC6 at least.) I wonder if MS was the one who got that into C11.

<comment><USER14> You got to be kidding! The MSVC impl is a incompatible incomplete joke and everyone knows it. Even MS is investing more and more in llvm tooling because of this.

<comment><USER15> you can have anon structs an unions on gcc:

[https://gcc.gnu.org/onlinedocs/gcc/Unnamed- Fields.html](https://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html)

</comment></comment></comment><comment><USER16> Honestly, writing a Game Boy emulator was the most instructive project I ever did on how computers work. Probably learned more on that project than from my OS and embedded systems classes combined.

</comment><comment><USER17> >The Game Boy has eight 8 bit registers: A, B, C, D, E, F, H, and L

Why these letters? I'm assuming I, J and K are reserved for specific uses... is G likewise?

<comment><USER18> It's less that other letters are reserved, and more that there are only eight general-purpose registers, and four of them already have special meanings.

A is the accumulator, F is flags, and as the sibling comment mentioned, H and L represent the high and low bytes of HL, which is the only 16-bit register you can use for indirect memory access in most instructions. It's also used in some control-flow instructions.

That leaves four remaining registers, which just so happen to fit perfectly into the remaining space: B, C, D, and E. (They can also be accessed as BC and DE with 16-bit instructions.)

</comment></comment><comment><USER19> > I used C11's anonymous structs and unions so that I could access individual > registers, or grouped registers straight from the root structure: > registers.a or registers.af for example.

That's excellent, when I wrote mine I wasn't aware of this feature and used a kludge of macros to handle it instead.

</comment><comment><USER20> A usefull shortcut not highlighted in the article: Instead of implenting an emulator for the LCD display hardware, the author simply peaked at the frambuffer and dumped the contents.

For most target hardware, this shortcut provides a reasonable approximation of the intended output image. However, some older hardware relied upon specific characteristics of CRT displays to enhance the graphics. For example, some clever developers found that they could create extra colors by swapping the palate during the vertical blanking interval on interlaced NTSC video.

Of course, some of the earliest video game consoles don't have a framebuffer since RAM was to expensive. For these consoles, you will be stuck writing a video display emulator.

</comment><comment><USER21> > The GameCube emulator I used for testing, gcube, doesn't support reading > files from the memory card

Just curious, why use anything except dolphin for emulating gamecube?</comment>


RLgraph: Robust, incrementally testable reinforcement learning - <AUTHOR> https://rlgraph.github.io/rlgraph/2019/01/04/introducing-rlgraph.html <comment><USER2> This is going to sound cynical, but I recently invested a week in rllib for a project before discovering that much of the under-the-hood implementation was horribly confusing, poorly documented and missing critical functionality (for instance, their IMPALA implementation only works with discrete action spaces). Does this library conceal similar problems?

<comment><USER3> Regarding our IMPALA implementation: It currently also only supports discrete actions. However, our SAC algo is extremely strong. It learned (continuous) Pendulum-v0 within only a few dozen episodes, so you could try that one instead. As for ease of use: We believe our code is quite user friendly (take a look at our example scripts and configs) and also well extendable due to the strictly enforced modularity of our components and our abstract data flow definitions inside an algorithm.

<comment><USER4> I also found extremely hard to understand and extend the under-the-hood implementation. Couldn't grasp how the separation of concerns was split between the different classes. The documentation is lacking examples on how one of the algorithms (e.g. IMPALA, SAC, PPO) was built from scratch.

</comment></comment></comment><comment><USER5> Regarding testability, what kinds of properties do the tests actually assert?</comment>