Make Your Game Easy, Then Make It Easier - <AUTHOR> http://jeff-vogel.blogspot.com/2009/11/make-your-game-easy-then-make-it-easier.html <comment><USER3> As a counterexample, take Nethack. Probably largely reserved for more of the hard-core gamer type, but I don't consider myself to be a hard-core gamer any more. In fact, difficult games that force me to repeat a failure over and over I will push to the side due to lack of time. Nethack, however, has continued to fascinate me over the years. Its randomly generated content and creative ways of killing you (usually) keep you from dying repeatedly in the same exact circumstances, and you come out of it feeling that you learned something and are developing a worthwhile skill in terms of the game. Dying in Nethack is practically positive reinforcement rather than pointless repetition.

<comment><USER4> And despite the pervasive RNG skewing every outcome, death is always the player's fault, _and the player knows it_.

<comment><USER5> Sometimes it's bad luck. "You fall into a pit! The spikes were poisoned! The poison was deadly! You die..." before you could get poison resistance, for example. The classic example is the early-game gnome that gets generated with wand of death, which you have no defense against at that stage.

<comment><USER4> Over the course of many hundreds of deaths, I've had that happen to me maybe a couple times, like a falling rock trap on turn 5. Occasionally epic shit like this happens: <http://alt.org/nethack/player-all.php?player=Ascension> \-- but more common is early unavoidable pet deaths.

But as you pass the first few hundred turns, the probability that your death is going to be entirely the fault of something you decided to do in the last few turns rapidly approaches one. You can acquire resistances and detection mechanisms quite early, plus your pet is so very useful in that period too.

Once you know what you're doing, every decision is an explicit trade, especially in hindsight.

</comment></comment></comment></comment><comment><USER6> I think Vogel's advice loses something in the phrasing. Having multiple difficulties is important, but making the "default" mode the easy one _encourages the developers to design with the easy version of the game in mind_. this is important in strategy/RPG/puzzle games, where the difficulty corresponds directly to how much thinking is involved. If you start with the easy mode and then tack on the hard mode after the actual game mechanics and content are set, the hard mode will usually just end up as a set of statistical skews and extra "hard quests" that are _quantitatively_ more demanding, but don't leave you with any _qualitative_ feeling of added difficulty, only of frustration. For examples, think of the speed increases in Tetris, or the Weapons in FF7.

By comparison, if you design in difficulty from the start, the difficulty will be interwoven with the game design. You can always make the game easier later, but you'll still have the areas that require Advanced Thinking to surmount—you'll just have a shortcut available as well, if you wish. For one example, the Mario series is designed such that every stage can be beaten as "small" Mario. Every power-up is, in ways, a shortcut—if you want to experience the game at its cleverest, play without them.

</comment><comment><USER7> One of the best things I've read in past relating to this topic dealt with the playtesting that Valve held for (I think) Half Life 2. If anyone could supply me with my lost source, it would be greatly appreciated.

They would sit a wide range of users down in front of a new level or scene, and silently watch them play, with no help, and with analytics running in the background. If they noticed players taking too long on certain puzzles, dying too often from certain monsters, or just not grasping the expected flow of events, there was further work to be done; likewise, if players blew through a level or puzzle too quickly, didn't have any troubles with a "boss", there was also work to be done.

<comment><USER8> The Director's Commentary in Portal and Episode 2 is particularly revealing. One major lesson: it's impossible to teach players to look up.

Bungie had a laboratory for testing players playing Halo 3. I remember seeing heat maps of where players died the most frequently.

<comment><USER9> Heatmaps in HL2:

[http://www.steampowered.com/status/ep2/death_maps/ep2_outlan...](http://www.steampowered.com/status/ep2/death_maps/ep2_outland_08_deaths.jpg)

<http://www.steampowered.com/status/ep2/ep2_stats.php>

Interestingly, they provide them for TF2 maps as well:

<http://www.steampowered.com/status/tf2/tf2_stats.php>

</comment></comment></comment><comment><USER10> People often confuse "making a game easy" with "making a game rewarding". The worst thing you can do is make your game too easy, the best thing you can do is reinforce every single correct user action with positive feedback and a reward.

The almighty example: Peggle.

<comment><USER11> _People often confuse "making a game easy" with "making a game rewarding". The worst thing you can do is make your game too easy_

Maybe I misread, but what you wrote is exactly the opposite of the point Jeff makes. Jeff is respected in the indie games community, and has created shareware games since 1994, while you just graduated college this year. I bring that up because he wrote a whole article explaining his point, while you simply wrote a statement saying it is the worst thing. Why?

 _the best thing you can do is reinforce every single correct user action with positive feedback and a reward._

Rewarding as many user actions as possible is known to be an important tactic and is not something the author disagreed with (and is likely something he believes as well.) Why was it used as a counter point?

Also, why do you believe that reinforcing every "correct" user action is on the opposite end of the spectrum of making games easy?

Rewarding user actions with points and spiffy effects is actually a part of making the game very easy. People want to feel successful for doing anything at all in casual games, and giving rewards and accolades for easy-to- accomplish tasks (as seen in games like Peggle) is part of making the game easy.

And what you call "correct" user actions in casual games such as Peggle would be better called "rewarded" actions. As players click around the screen, they are rewarded for coming closer to a goal, often having no idea why they got those points. Additionally, many successful casual games are designed so that even user actions that are completely ineffective are rewarded with points to the point that this is an inside joke between casual game developers. That is what I mean when I say that making games easy is correlated, not the opposite of, rewarding players often, and also why games are not necessarily about rewarding user behaviors as much as keeping them feeling confident and playing. Finally, this is also what I believe Jeff is talking about.

<comment><USER10> Sure, you can try to discredit me because I just graduated from grad school this spring, but I have been making games for a while. To be honest I have never heard of Jeff Vogel before nor have I heard of Spiderweb Software, therefore I have not played any of his games. This is not an attack on him, he seems to be a successful indie game developer.

I realize he wrote a whole article, I did not read it all, just the bold stuff. This sort of idea about difficulty has been sprouting up since casual games hit the main stream a few years ago. Most people seem to think casual games got so popular because they are so easy, I totally disagree. That is what my comment was based on.

As for making the game "too easy" (notice I said "too easy") being the worst thing, how much fun is it to play an 8 year old in basketball? How fun is it to play chess against someone that has never played before? How many games have you been bored with because they are too easy. Making a game too easy is bad, it will just make players stop playing. The key is finding the balance between difficulty and skill (go ahead and graph it based on your playtesting surveys) and riding that curve up and to the right the entire way.

The reward can be independent of difficulty. The reward is juicy feedback. It is empowering. The problem is most people assume the reward must be something relevant to the game mechanics, like a bigger sword, but that is not true. The reason I used Peggle as an example is because user feedback basically has nothing to do with the actual game. The fireworks, soundtrack, bling-y graphics, all of that is what puts the game over the top. You think that the extravaganza that happens at the end of each level has any impact on the difficulty of the game? No, it just makes the player feel awesome. Sure, it is not as tough as Ikaruga, but have you tried the Master Levels? They are not easy. The feedback is not part of the difficulty.

As for the actual bold parts of that article:

"People will forgive a game for being too easy. They will never forgive it for being too hard." (I switched it since he disagrees with the opposite)

Eh, I guess. But there have been times when I have died while playing the game and I did not blame the game, I blamed my skill. It was not the game's fault. It is bad to make a game too difficult, just as bad as it is to make a game too easy.

"People will happily forgive a game for being too easy, because it makes them feel badass. If a game is too hard, they will get angry, ragequit, hold a grudge, and never buy your games again."

My whole argument is that you do not need to make the game easy to make the player feel badass. Even then, if the game is too easy players will think it is pedestrian and not play it.

"When a player is on the default difficult level, has built his or her characters poorly, and is playing straight through the main storyline with mediocre tactics, that player should almost never be killed."

I would think this is a problem with the tutorial or how complicated the game is. It should be straight forward to see progression of most players and know roughly at what point they would be at throughout the game. If they do not know how to play (have mediocre tactics) that is probably not a difficulty problem. I would look at what made the player think those choices were good, and then try to figure out how you can reinforce the right ones with juicy feedback.

TOO LONG DID NOT READ VERSION: Your game might not be too difficult, it might just need more/better feedback for the user to make them feel awesome. If your game is too easy it will fail, probably the same way if it is too hard.

</comment></comment></comment><comment><USER12> Wrong on both counts: A game should have a difficulty curve that guides the player through the course of the game, but presents them with enjoyable challenges that they must escalate their skill to as they progress.

It's no good having a game that's _too_ easy, because then it is boring. Conversely, if the game is too hard with no way to provide the player feedback necessary for them to improve their capacity, then there is no purpose in playing.

When Jeff is talking about games that are easy or games that are hard that are still satisfying, he's referring to the fact that both types of games provide adequate feedback to the player. The easy games that are good will still quickly defeat the player if he does not interact in an appropriate and effective manner even though the player still knows exactly how to engage in those interactions. A hard game that is good is _fair_ about its difficulty and the skill challenges provide the player a way to attune their play to the required interaction with coherent and consistent feedback.

</comment><comment><USER13> I doubt I'm the only one, but I completely disagree. I hold grudges against games being _too_ easy, because they're _not_ enjoyable. If I want a leisurely stroll through a dungeon, I pick up a game more designed for such a thing - <USER2> casual game. If I want a _challenge_ , something to get my adrenaline going, to make me WANT to win, difficulty is where it's at. Difficulty is addictive, ease isn't.

In its defense, it's saying that you shouldn't kill your player too much on the default difficulty. That's good advice, but it's missing what I believe to be the real kernel of truth: death shouldn't be excessively _costly_. Having to play through a long-ass level to fight the 99%-indestructible boss just because he got a lucky shot in will definitely turn people off.

<comment><AUTHOR> What Jeff Vogel says (in the comments, I think) to this point is that there are harder difficulty levels if you want to do this. His games do tend to have them.

Another commenter replies that the difficulty levels should probably be better documented in this case, so you can tell who they're intended for. Fair enough.

<comment><USER14> A good example of this was Torchlight which I picked up this weekend. I was all set to play it on Normal but the tooltip said that this was a good setting for people new to Action Adventures (or soemthing like that - not 100% sure how the makers categorized it). I proceeded to Hard mode which was described as being good for people with some experience with these kinds of games. My next run through I'll probably give Very Hard mode a try.

The idea though is that you want to make things accessible. If you start out with ANY product targeting the top 1% you're going to either have to charge ALOT or just not expect to make much money. Having the default mode be not very challenging for newcomers lets them get their feet wet while providing a way to challenge themselves down the road, should they be looking for a challenge.

</comment></comment></comment><comment><USER8> I think the article is oversimplifying the issue, but it's still an important and relevant view that a lot of gamers don't want to believe. Most people don't play games for the challenge, we play it for the fun. Overcoming obstacles is one way, of several, to achieve this.

Ninja Gaiden is fine. It's a good game. It's hard, but it's not hard just for hardness' sake, it's not a jackass about it (usually). Ninja Gaiden was the best example I've seen of a game that makes the player rise to the challenge and become better at the game. There are a lot of games I've seen that are simply cheap and frustrating, losing sight of the 'fun & games' aspect of gaming just to raise the difficulty bar. These games shoot themselves in the foot by severely restricting their appeal. For example, the Medal of Honor series never interested me because too often, it uses the 'challenge' of making the player memorize with millimeter-precision a route through the level, with no way to find the path without getting shot in the face a statistically significant number of times.

However, the issue isn't really about how hard or easy the game is. The issue is appealing to different audiences. How do you appeal to the hardcore and casual audiences at the same time? One way is by offering difficulty levels (another is auto-adjusting the difficulty, like Max Payne), although some absurd fraction of people just choose "medium" and be done with it. Another way is having a more continuous range of success available, with different difficulties. This is why achievement systems are such a good idea. They let the user cherry-pick how much challenge they want to deal with, as well as when and which types.

This is not to say that hardcore tough-as-nail games shouldn't exist. They have a right to exist. However, they should be made with the awareness that they're niche products, and that the majority of the game-buying public (now that the majority of the public buys games) is looking for some entertainment and not a lifestyle.

There's also a lot that can be done to make difficult games more palatable, and even appealing. As as said above, Ninja Gaiden does a good job of making the player better at the game. Giving the appearance of progress is important, even if the player is nominally failing, they'll feel better if they're getting closer to succeeding. The most important quality is simply the appearance of fairness, which varies wildly and is totally subjective. Quite simply, if the player blames the game for being hard he'll quit, but if he thinks do better and beat it he'll most likely continue.

</comment><comment><USER15> Another reasonable option is to avoid making the player pick an inappropriate level by picking for them. Off the top of my head, one example is Quake Live, which puts every new player in a little test area; first, it challenges them to see if they can jump accurately; then, it challenges them to rocket jump; then, it challenges them to strafe jump. Finally, it puts them in an first- to-15 deathmatch against a bot opponent with adaptive difficulty (so if you start out pwning the bot, it will rapidly get better until it starts evening the score.) By doing so, it forms a good picture of the player's skills so that it can match them evenly against other players immediately. The process takes about 15 minutes, but it certainly saves people a lot of poorly-balanced games.

It would be hard to do the same thing in an RPG without a longer test period, but it would be really easy to do so in a more action-oriented game, or a platformer. Of course, one would want to be able to override the "autodetected" difficulty level, but it would simultaneously address the problem of casual gamers getting frustrated because the default is too hard, and the problem of tough-as-nails gamers getting frustrated because they picked one that turned out to be too easy.

<comment><USER16> with that, sometimes you get better players pretending that they're not as good, so they can prey on weaker players when they're categorized as a bad player when they're really not.

</comment></comment><comment><USER17> A game should be difficult. It should even be hella difficult. But the game should be so crafted such that the player should feel in complete control at all times, and if he loses it's always his fault and not the game's. _Mega Man_ series games did this brilliantly.

<comment><USER4> See also: _nethack_

It's an object lesson in humility! In every death after the first few hundred turns, you instantly realize the entire chain of totally avoidable bad decisions based on bravado.

</comment></comment><comment><USER18> I think "deceitful design" is the best way to phrase this. When the player starts the game they have zero knowledge of what kind of fun, immersive experiences the game holds, and they have no reason to expend effort into seeking out those experiences for themselves; "beat the game" is usually all they're out to do when they start playing. Therefore, they have zero tolerance for a learning curve that forces them to "sink or swim," because it will feel arbitrary and pointless - an elitist barrier to "beating the game" that is likely to make them unhappy and stop playing immediately. Games which are built to a preexisting genre and mechanics can cheat and be hard from the very first instant on the expectation of an existing player base knowing - more or less - how things are going to work. But games with substantial original ideas can't rely on this, and it isn't a good idea in any case.

So the problem for the game designer is not to make the game easy so much as it is to make the player feel confident - even overconfident - so that they are willing to see all of the game's features, and then to gradually slip in the challenging elements to disrupt those confident feelings without completely shattering them.

Reward-focused design happens to be the best way to go about this - "you can't fail but you can always do better," where the game puts a lot of emphasis on achievements of skill without making them a barrier to game progression, or at least makes it so that even if skill limits progression(as in most arcade games, or games like Nethack), opportunities are presented to polish up play at earlier points and reap rewards for it later. Resource bonuses like powerups or extra lives are particularly good for this, but even measurements like combo counts or accuracy can serve this purpose if the feedback is immediate and given regularly.

Designing all the game content around the introduction and tutorialization of mechanics, which Portal did, is another strategy, and it can work in tandem with reward-focused design.

</comment><comment><USER19> I really think it's best to have a good variety of easy and difficult challenges in a game (and you need challenges). People will never forgive a game for being too easy, or for being too hard. A nice middle ground needs to be found.

This reminds me of the "Iwata Asks" article recently on HN, and I think they have a better take on the issue. <http://news.ycombinator.com/item?id=970566> A couple quotes:

Iwata: So you wanted to know what it was that made players insert another 100 yen coin once the game was over and have another go?

Miyamoto: Right. And basically, I concluded that this was born of the players being mad at themselves.

...

Miyamoto: Well, since you've purchased it, it's surely better to be able to see the ending.

</comment><comment><USER20> Call of duty. This was one of the easiest games I've played. You could literally just let your computer ai beat the game for you on normal difficulty. Grand theft auto is similar. It was easy as long as you didn't do the missions. These two games also happen to be the most popular games ever. I've been dying for gamemakers to recognize the fact that easy is good. If I wanted to get frustrated by difficulty I'd go do some work, but a game should be an enjoyable pasttime, not a placeholder for work. If it's hard, then it should at least reward adequately. Knowing you wasted 5 hours dominating real people online is rewarding. But knowing you wasted 5 hours beating a computer is a waste of time.

<comment><USER21> I'd like to point out that the Call of Duty series is not famous for its single-player campaign (especially the critically-acclaimed versions).

Its call to fame is the multi-player aspect where the level of difficulty can be as hard if not harder than what's available at the hardest difficulty setting for the single-player campaign (veteran difficulty).

<comment><USER20> Call of Duty's campaign's are extremely short. They don't do much repetition.

For me personally Call of Duty is one of the few games I actually went through the campaign. It felt satisfying.

But like I said, if there must be a challenge, it should be against other players, and Call of Duty got that right too.

</comment></comment></comment><comment><USER22> I'm actually trying this now with a Facebook game... a game for people who find Mafia Wars and Farmville too challenging. The gameplay for those games is already almost-non existent, so why not abstract away the meaningless clicking?

<comment><USER23> You should take inspiration from Progress Quest: <http://www.progressquest.com/> They've masterfully abstracted away every part of your standard MMORPG that doesn't require thinking.

<comment><USER22> :) Definitely, cloning Progress Quest was my original idea. Since then the design has gotten a bit more ambitious, but I still think a mostly straight clone of Idle RPG or Progress Quest could work as a Facebook App. I wouldn't be offended if someone else takes that idea.

</comment></comment></comment><comment><USER24> Counterexample: <http://www.notdoppler.com/theunfairplatformer.php>

This is a game which is totally built around the concept of being impossibly hard, but still succeeds.

<comment><USER25> How does that succeed? It's not on their top 10 list, and I found it to be personally a giant pain in the ass. I quit after a few minutes.

<comment><USER24> [http://www.google.com/search?hl=en&q=the+unfair+platform...](http://www.google.com/search?hl=en&q=the+unfair+platformer&aq=f&oq=&aqi=g-c7) 2 million hits on google, hundreds of thousands of hits on websites like armorgames and kongregate. Pretty good for a flash game.

</comment></comment></comment><comment><USER26> This is why games suck now.

'Make a game easy' is what you do when you can't design good gameplay mechanics that work at multiple skill levels. If your game can only work at one skill level, you have to make that skill level really easy if you want to keep as many people as you can playing it after their first try.

The downside is that there is no reward for improving at the game. You play it a few times, and you do not improve. There's no newer corners of the game to explore, no new approaches to playing it.

Some games are so good that you can re-release them over and over for years with just a few changes and maybe some new content, and people will keep buying and playing it. Tetris. Puyo-puyo. Super Mario. _Those_ are the games you should try to idolize, not games like Gears of War or Halo or random- indie-game-that-wishes-it-were-Braid #455321.

You can brute-force a game that sells a lot by playtesting it with countless focus groups, paying Hollywood-level for game assets, and marketing it to death on Gamespot and whatever, but that's the equivalent of hiring a giant workforce and grinding out your web app in some old Java enterprise WebPortletComponentModelerFactory thing.

Be agile, try small fun stuff and wander around until you get something that's fun to play, and then think up a way to make a full game out of it. Don't start the other way around, with the desire for 'some game' but no way to fill it out with the fun part.

Addendum: Don't be afraid to let the player _die_. That's why there are multiple lives (if your game works like that, I mean.) Most games I see today go as far as possible to prevent a player from dying during normal gameplay, to the point where you can clear many games on your first try without any sort of negative feedback -- Assassin's Creed 2, for example.

To learn to play Super Mario Bros., you had to die or watch someone else die. If you're setting out from the beginning in your design with "I never want the player to die", then just don't have lives and death at all, like Braid. It's ridiculous when you have a lives system in a game but contort your game mechanics to never use it. You end up creating an environment where a player never really gets negative feedback on when to not do something, and you have to constantly push them in the right direction with obvious and uncouth hints in order to prevent them from making an 'accident'. You're preventing your player from learning. Stop it!

</comment><comment><USER27> A good game should be comparable to a good book or movie. Nearly all modern games are like Dan Brown pieces.

I'm 29 and get off my lawn!</comment>


Don't press any key to continue - <AUTHOR> http://interuserface.net/2010/03/dont-press-any-key-to-continue/

<comment><USER2> I use this in a project I'm working on. The comment and post delete buttons turn into deactivatable countdowns when pressed, so if you misclick you can click again to prevent the transaction. So far people have responded positively, but your mileage may vary.

<comment><USER3> That's a really neat solution to where to put the countdowns.

</comment></comment><comment><USER4> The delayed email sending is exactly what Gmail's 'Undo Send' labs feature does. It's really useful.

<comment><USER5> Yes, the best way to deal with irrevocable actions is ... to make them as revocable as possible. Switching from deleting files to putting them in the trash is a classic example.

<comment><USER6> No, a versioned filesystem is the classic example. Once you empty trash, those files are gone forever. When you delete a file from a versioned store, it's only gone until you remember you want it again.

<comment><USER7> I much prefer a filesystem where I can actually delete things (including shredding it).

</comment></comment></comment></comment><comment><USER8> The e-mail queue reminds me of my days at the college radio station, where the output of the broadcast booth passed through a 5-second delay before going out to the transmitter. That way, if something "bad" happened (f'rinstance, a caller dropped the f-bomb), you could dump the delay before it went out over the airwaves.

Thinking about it more, I'm a little surprised that this hasn't made its way into standard e-mail clients, at least as a feature.

<comment><USER9> In gmail it did: the "friday night you are drunk and shouldn't send this email" feature.

</comment></comment><comment><USER10> I love this idea, confirmation dialogs are the bane of ui design, and having undo is much much better than asking "are you sure" all the time, but for irreversable actions not much has been done.

the mockup looks good too

</comment><comment><USER11> The final email suggestion is a lot like gmail labs' "undo send" feature [1]. It allows you to 'undo' sending an email by not sending it for five seconds.

[1] [http://gmailblog.blogspot.com/2009/03/new-in-labs-undo- send....](http://gmailblog.blogspot.com/2009/03/new-in-labs-undo-send.html)

</comment><comment><USER12> I've had a friend with an iPhone how to cancel sending an email - she's inadvertently hit the send button presumably several times when composing an email there.

Having a "sending in 10 seconds" option may well be useful in her case.

In my case I sometimes squeeze out an email at a subway station just before my connection cuts off as we head on to the next station.</comment>


What is the Insurrection Act that Trump is threatening to invoke? - <AUTHOR> https://www.npr.org/2020/06/01/867467714/what-is-the-insurrection-act-that-trump-is-threatening-to-invoke <comment><AUTHOR> Photo in the story [0], taken late today, is of Trump with the highest-ranking military officer in the US Armed Forces (on the right, [1]) - and the US Attorney General (on the left, [2]).

Trump intentionally left the White House to force his way through the protesters.

It appears likely it is only matter of time before Trump deploys the military.

[0] [https://media.npr.org/assets/img/2020/06/01/gettyimages-1216...](https://media.npr.org/assets/img/2020/06/01/gettyimages-1216828184_custom- cfc599051b68e6558e330ca621acb266cff86ff4-s1100-c15.jpg)

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

[2] [https://en.wikipedia.org/wiki/William_Barr](https://en.wikipedia.org/wiki/William_Barr)</comment>


How important is it to reduce the number of lines in code? - <AUTHOR> http://programmers.stackexchange.com/questions/185925/how-important-is-it-to-reduce-the-number-of-lines-in-code

<comment><USER2> The #1 most important factor in coding is:

Will I be able to read my code tomorrow or next week and know what in the heck I did?

<comment><USER3> Which really means: did I spend the time to write good comments?

People will go to endless lengths to make their code more terse and/or "self- documenting", but almost nobody takes the five extra minutes it takes to write an intelligent comment. The comments are far more important.

<comment><USER4> I don't really agree. Which is to say, good comments are helpful, but they are a flashlight in a dark room. If there's lots of furniture and clutter in the room, you still might trip over something.

How many times in your codebase have you seen a comment like:

        // This exists because that dumb thing happened,
        // and during the migration from Y to Z we had to
        // support these two systems simultaneously. This
        // component mediates between the two . . .

And someone had added some common logic into the mediator, then someone else had hooked into that, and now there's a snarl.

The most important thing is that the system be as simple as it can while still performing its intended functions. We have all made a first cut at something that ended up being three times as verbose or complicated as our second. You want a system made out of pieces of the second kind. That's even more important than comments.

I can definitely understand the desire to reduce lines of code, because it's often a good _proxy_ for understanding how complicated a system is. Not always, but most of the time, something a quarter as long that does the same job is doing it a simpler way.

<comment><USER3> That's an easy question: it almost never happens. The most frequent occurrence (by far) is that there are no comments at all, just a wall of indecipherable code. Even an old comment describing intent and usage is better than no comments at all.

In your example, even if that comment is outdated, it's still _incredibly_ useful. It tells you, in under 5 seconds, the _original intent_ of a piece of code, and how it was supposed to fit into the entire system. That's something you'll never get without a comprehensive understanding of the project, which takes far more than 5 seconds of reading. The real problem here is not that there is a comment -- the problem is that a bad coder _fucked up_ by not updating the comment. There's no excuse.

That all of the commenters below will spend _paragraphs_ explaining how they shouldn't have to document their code with the occasional descriptive comment is an amazing testament to the overwhelming power of human laziness and self- delusion.

<comment><USER4> My point is not that this comment is unhelpful. My point is that it would be better if the _reason_ for this comment's existence were eliminated. I.e. that the removal of unnecessary complication in the system is an even more laudable goal than commenting well.

Obviously, both will have a part in any well written an maintained system. But the person I'm responding to held good comments up as _the most important_ aspect of system maintainability, and that is simply not the case.

<comment><USER3> You were responding to me, and no, that's not what I meant. ;-)

I'm not saying that comments are the "most important" aspect of system maintainability, but that they're one of a few things that are all of top importance.

Obviously, if you write spaghetti code, your system won't be maintainable, no matter how many comments you write. But that's a false dichotomy: you need to write good code _and_ you need to write good comments. Neglecting either one leads to unmaintainable systems.

</comment></comment></comment></comment></comment></comment><comment><USER5> Every line of code is a constraint working against you.

<comment><USER6> .split("/n").join(";")

<comment><USER7> sorry for being pedantic, but should'nt it be "\n" ?

<comment><USER8> sorry for being pedantic, but should'nt it be shouldn't?

</comment></comment></comment></comment><comment><USER9> Things are complicated, but it's a well-known fact that lines-of-code is literally the worst metric of source-code health. Lines-of-code have been previously used as a productivity metric and as an efficiency metric, but in the past several decades, LOC has been debunked as virtually worthless in both cases.

In other words, if you're thinking "that guy must be productive, he wrote twice as many lines as this other guy" or "this code must be slower since it's 3 times longer than that code" you're most likely wrong in both cases. Or, in the best case, very naive.

And what's up with Ars Technica just copy-pasting SO (or prog.SE) answers into an article?

</comment><comment><USER10> It has everything to do with context, and the ultimate goal should be clarity for the reader. But, I also don't think you should ever compromise any non- trivial design for the worse to 'make it more readable'. Sometimes clever code can't be easily avoided, whether it's due to language limitations or the general design pattern itself, so proceed with caution and use lots of comments in those cases. A quick example here would be a factory method: since you're often referring to abstracted resources, you can't really make a non- clever factory without entirely defeating the purpose of the factory.

Another example would be from PHP, where you can many times do tasks in several different ways, and so you may have this code (straight from the manual) for reading the contents of a file:

        $filename = "/usr/local/something.txt";
        $handle = fopen($filename, "r");
        $contents = fread($handle, filesize($filename));
        fclose($handle);

And this isn't even very descriptive, unless you have a background in other languages such as C to grok that filesize($filename) might mean "read to the end of the file".

OTOH, this code does the exact same thing and is extremely explicit about what it's doing:

        $contents = file_get_contents("/usr/local/something.txt");

</comment><comment><USER11> Reducing the number of lines isn't important. Unless you're code golfing or otherwise competing to fit within a certain code/binary size, you should never care about line count at all.

The only thing it will do is cause you to crush your lines wherever possible and code horizontally instead of vertically, which generally conflicts with readability. In fact, I'd actually impose a limit on line length to prevent just that.

Instead, write code that makes sense when you read it. Avoid cleverness, and DRY. Repeating yourself in the way that violates DRY principles can often make reading code more difficult because you're essentially forced to re-read repetitive code because you can't assume it's all identical.

The only exception to this is code standards for consistency in the code base that make sense, such as use a '{' on the same line as the definition or omit the '{}' block if the body is just 1 statement in cases where you won't violate a width constraint, etc. Anything that isn't completely reasonable as a code standard is optimizing for line count and is probably the wrong thing to do.

<comment><USER11> Downvotes on this?

Be thankful downvotes are anonymous. You are very likely incredibly incompetent, and I fear for anyone who has to read your code or worse, _use it_.

</comment></comment><comment><USER12> personally, i think that when you're programming, not just pondering how to make your code simpler and shorter but also concentrating on patterns that repeat and packing them into a catchall solution can do a lot towards making code more readable and maintainable. I suppose this is what is usually meant by DRY, but I unfortunately still see an aweful lot of code that doesnt follow this principle. And i think it has to do with the fact that many (myself included) programmers think about solving the problem at hand and we sometimes allow our thoughts about abstracting what we're doing into overarching reusuable procedures to slip into the background.

for instance, say you notice you've got multiple for loops iterating over matrixes of pixel data and running transformation functions on member elements. The first level would be to abstract this into an each function taking the array and the function to call, the next step would be to pack the each into an even more general function, and now all those lines have been compacted into a single call pixel_data.update_array_matrix.

</comment><comment><USER13> Depends. Does it make it cleaner, faster, and more readable? Go for it. Does it just use syntactic sugar to cram stuff into one line? Don't do it.

</comment><comment><USER14> Following quote comes to mind (Dijkstra) "...we have to keep it crisp, disentangled, and simple if we refuse to be crushed by the complexities of our own making..."

I found his use of the word "crisp" very interesting. I believe it means to keep your code short and to the point, without any extra embellishment.

</comment><comment><USER15> I have actually been programming since I was a kid (I got access to computers around 1962). I used to write _huge_ blocks of comments, and even simpler programs had a high LOC count.

I work differently now. I mostly work in Clojure and I write very few comments but I like long and descriptive function and variable names. I think that a concise language like Clojure or Ruby, combined with very good semantic naming works much better for me. I can look at year old code, and fall right into it.

</comment><comment><USER16> LOC is also used as a "maintainability" metric. Don't know how useful it is. I assume it would need to be massaged with some other metrics - or at least placed in proper context, whatever that means in your environment. Also, if your code verges on throw-away, maintainability would not be a consideration.

</comment><comment><USER17> The only metric you should work on reducing in your program is complexity.

Of course, some complexity/warts will be needed.

</comment><comment><USER18> What exactly did Ars Technica contribute to this discussion? It looks like a copy-paste job.</comment>


How I build my minimum viable products - <AUTHOR> https://levels.io/how-i-build-my-minimum-viable-products/ <comment><AUTHOR> Reading it I was thinking I should hack stuff together with the basics in preference to learning too much fancy frameworks.</comment>


Notion is a tiling, tabbed window manager - <AUTHOR> http://notion.sourceforge.net/ <comment><AUTHOR> chunkwm came up today and I thought I'd offer up my own preferred tiling wm that I've been using for ... er, ever, and never seems to get enough love :)

They manage their source code through Github now (not SF): [https://github.com/notionwm/notion](https://github.com/notionwm/notion)</comment>


Lupa integrates the LuaJIT2 runtime into CPython - <AUTHOR> http://pypi.python.org/pypi/lupa/0.18 <comment><USER2> One thing I've been considering lately is taking my Python->Javascript compiler and tying it in with V8, to create a desktop Python interpreter replacement. With a bit of work, it could be ridiculously fast. Might be worth looking into.

</comment><comment><USER3> That's fantastic.

I love faster things you can plug into python when you need to, and this would be much preferred to weave.inline (embedded C++ code) for some project teams.</comment>


Poll:  Would patents be more readable with claims written in shorter sentences? - <AUTHOR> http://www.oncontracts.com/poll-would-patent-claims-be-easier-to-read-if-written-inmultiple-shorter-sentences/

<comment><USER2> Sure, in a perfect world the patent application for software would consist of submitting all the lines of your source code. It would be granted automatically as long as it was not a copy itself. The source code would not have to be disclosed to the public. Anyone found copying your source code or compiler output verbatim would be prima facie infringing but all others would be free to compete with your "invention" via their own development effort.

<comment><AUTHOR> What you're talking about is essentially the copyright system (plus or minus).

<comment><USER2> Yep. I believe it's the only reasonable approach to IP protection for software.</comment></comment></comment>


Information Geometry - <AUTHOR> http://math.ucr.edu/home/baez/information/ <comment><USER2> Information geometry is a very interesting research topic. In essence it allows to define a metric (and therefore a measure of distance) between probability distributions.

As a results, it has a lot of practical application in machine learning and has been use successfully for classification in Neuroscience, Radar signal processing and computer vision.

we can also note that Information Geometry can be seen as a sub-field of Riemannian Geometry, with some equivalence between metric. For example, the cannonical metric for symetric and positive definite (SPD) matrices in Riemannian geometry is actually equivalent to the metric for multivariate normal distribution obtained with Information geometry.

For some application, IG is very efficient. it has been used for multivariate time-series for classification of EEG signal and was at the center of the winning solution of 3 kaggle challenges : [https://github.com/alexandrebarachant](https://github.com/alexandrebarachant)

<comment><USER3> There's also an interesting set of applications in statistical physics: many systems can be modelled by Markov chains whose rate parameters can change through time. Changing these parameters non-quasistatically (i.e. so that the system does not relax to the appropriate steady state) gives rise to distances on parameter space that are related to the amount of energy dissipated along the path through parameter space [0,1].

What's nice about this is that the derivation of a suitable metric allows us to compute trajectories that minimise quantities we care about (e.g. minimise energy dissipated), so this has clear potential to be useful. Some cool examples are in spin systems [2] and a harmonic trap [3].

For any differential geometers reading this: it seems to me that a good geometric way to think about this is as a fibre bundle, with the parameter space being the base space and the simplex being a vector bundle over it (see [4] on the simplex being a vector space).

[0] [https://arxiv.org/pdf/0706.0559v2.pdf](https://arxiv.org/pdf/0706.0559v2.pdf) [1] [https://arxiv.org/pdf/1201.4166.pdf](https://arxiv.org/pdf/1201.4166.pdf) [2] [https://arxiv.org/pdf/1607.07425v1.pdf](https://arxiv.org/pdf/1607.07425v1.pdf) [3] [http://journals.aps.org/pre/abstract/10.1103/PhysRevE.86.041...](http://journals.aps.org/pre/abstract/10.1103/PhysRevE.86.041148) [4] [https://golem.ph.utexas.edu/category/2016/06/how_the_simplex...](https://golem.ph.utexas.edu/category/2016/06/how_the_simplex_is_a_vector_sp.html)

</comment></comment><comment><USER4> Skilling wrote a nice critique of information geometry that's worth reading:

[http://djafari.free.fr/MaxEnt2014/papers/Tutorial4_paper.pdf](http://djafari.free.fr/MaxEnt2014/papers/Tutorial4_paper.pdf)

The main point is that KL-divergence is not a metric, so imagining it as a distance in a space may give you some wrong intuitions. Its matrix of 2nd derivatives, the Fischer Information, works as a local metric, but then many people want to draw global pictures that try to extend this back to a global metric, which doesn't actually work.

<comment><USER5> As a complete layman reading that paper, Skilling's arguments seem quite damning of IG. In particular, Amari's fundamental assumption seems to be refuted:

" _For inference, the only acceptable value for the Rényi-Tsallis parameter is α = 1, which is the correct information. That negates the generalisation to α != 1 which underlies Amari's "α-divergences" in information geometry._ "

Have any IG proponents responded to or refuted Skilling's critiques? This is interesting because Shun'ichi Amari is credited amongst others with advancing the field in the 80's[1].

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

</comment></comment><comment><USER6> Not an expert in the field. But I liked Centsov's theorem (when a metric comes from IG in the discrete case). I have not found a similar theorem for the general case. Amari's book is hard to follow. There is a serious lack of pedagogical intro to the subject, something like a starter : The main ideas + achievements of the theory + how to use it. There is something in the theory very deep but Amari just scratches the surface.

Can you imagine if GR metrics come from IG?

<comment><USER7> Have you heard about recent proposals that spacetime may emerge from quantum information measures? [https://www.quantamagazine.org/20150428-how-quantum- pairs-st...](https://www.quantamagazine.org/20150428-how-quantum-pairs-stitch- space-time/)

In the article, entanglement is a precise mathematical notion that is like an information based metric measuring the distance of a quantum state tensor (wavefunction) from the manifold of rank 1 tensors.

<comment><USER6> Nope, thank you miles7

If you have more material, just put it for all.

</comment></comment></comment><comment><USER8> Much of this is due to Amari, who got really into merging theoretical neuroscience and IG, e.g. [http://www.mitpressjournals.org/doi/abs/10.1162/089976602602...](http://www.mitpressjournals.org/doi/abs/10.1162/08997660260293238#.WF4QE7YrKAw)

</comment><comment><USER9> Some interesting discussion here, particularly the refs in (6): [http://mathoverflow.net/questions/215984/research- situation-...](http://mathoverflow.net/questions/215984/research-situation-in- the-field-of-information-geometry)

</comment><comment><USER10> From out of left field, or thereabouts, see also pseudometric space and "Geometry of Logic": [http://finitegeometry.org/sc/16/logic.html](http://finitegeometry.org/sc/16/logic.html) ...

While there seems like a potential well-balanced in-between to these complementing/contrasting philosophies and layers of view points, I feel partly well-suited to vent that from what I've seen, statistical data analysis seems to zealously want to gain understanding by using brute force, where self-ordering "shapes" simply want to flow which shows their Nature.</comment>


How To Be a Consultant, a freelancer or an independent contractor (2009) - <AUTHOR> http://jacquesmattheij.com/be-consultant+/ <comment><USER2> I'm starting to think there's some sort of conspiracy to keep jacquesm from leaving through daily submissions from his blog.

<comment><USER3> Continuing to deliver value from beyond the 'HN grave' - as long as he doesn't pull a _why. (And to be fair to Jacques, he did say he would continue his blog and community relationships etc, just than HN had reached a limit for him.)

</comment></comment><comment><USER4> Great summary

</comment><comment><USER5> ini</comment>


Ask HN: Is Fortress programming language still in use? - <AUTHOR> <comment><USER2> I wondered if it was related to the game Dwarf Fortress. It's not.

[https://en.wikipedia.org/wiki/Fortress_(programming_language...](https://en.wikipedia.org/wiki/Fortress_\(programming_language\))

[https://github.com/stokito/fortress- lang](https://github.com/stokito/fortress-lang)</comment>


Flappy Bird creator may have lost name on App Store thanks to Apple's rules - <AUTHOR> http://venturebeat.com/2014/03/14/even-a-copyright-couldnt-help-flappy-bird-creator-to-get-his-hits-name-back-thanks-to-apples-rules/ <comment><AUTHOR> tl;dr When you delete an app, per Apple, you can't re-use it in a later app. Someone else can - Mobile Media Partners (who has a Flappy Bird clone) did, and even has a trademark pending on the name.</comment>


Major linux bug allows root shell by holding enter key - <AUTHOR> http://www.zdnet.com/article/major-linux-security-hole-gapes-open/ <comment><USER2> The impact of this bug is rather limited. It only matters when an attacker has a (local, not SSH) access to the console and simultaneously does not have an access to the hard disk.

When you have a physical access to the hard disk, you can do the same things without exploiting this bug.

<comment><USER3> Isn't that a common setup for "lights off" servers, where you use something like IMPI to get virtual "local" access to your console?

Now, you should have this sort of access seriously locked down, since hardware vendors are _very_ bad at creating secure IMPI ports, but some people don't last time I checked, which was a few years ago. And someone compromising your system for that (e.g. the firewall in front of them, the VPN to it, or your systems you use to access it) could also get in.

</comment></comment><comment><AUTHOR> [http://hmarco.org/bugs/CVE-2016-4484/CVE-2016-4484_cryptsetu...](http://hmarco.org/bugs/CVE-2016-4484/CVE-2016-4484_cryptsetup_initrd_shell.html)

If you use Debian, Ubuntu, Fedora and have encrypted the system partition you are potentially vunerable.

To exploit, reboot server, hold down enter key for 70+ seconds and you'll be dropped into a root shell.</comment>


Why Customers Overlook Your Startup (Even When You're Doing the Right Stuff) - <AUTHOR> http://www.bootstrappingindependence.com/bootstrapping/why-customers-overlook-your-startup-even-when-youre-doing-the-right-stuff/

<comment><USER2> Good article, which is more for the case when you know your customers and when your sales process already kinda works (although not optimally).

For most startups though, the problem is that they don't know their customers, have an imaginary idea of what customers might need and create a product based on guesses.

Customer development (or other methods such as compiling/filtering data from forums/blogs) helps with figuring those and create powerful value propositions.

<comment><AUTHOR> No argument from me there - that is definitely the number one problem. In the future, I'll be tackling some of those topics on how to know your customer, since it is so critically important to business success. It's harder to fix existing sites if they haven't done that legwork up front :)

</comment></comment><comment><USER3> I see this exact issue a lot as well when consulting with customers. It isn't so much a startup problem as a website problem, when a site is over-designed and not built to sell.

</comment><comment><USER4> An example would show better what the author meant.

<comment><USER5> I agree. Interestingly, there is a link in the article to another article that shows several examples.

ETA link: [http://copyhackers.com/2013/02/your-most-overlooked-home- pag...](http://copyhackers.com/2013/02/your-most-overlooked-home-page- opportunity/)

<comment><AUTHOR> I tried to give one solid example, but the copyhackers link is a must read.

</comment></comment></comment><comment><USER6> Good article. I actually saw their post asking for advice on r/entrepreneur.

I would have liked to see what you could have done with their messaging tho, if only to show the thought process behind it.</comment>


Opencart illegally stripping license and attribution from reused code - <AUTHOR> https://github.com/opencart/opencart/issues/1286

<comment><USER2> The reaction is far worse than the license violation. It really undermines any credibility the project for being "professional and reliable".

</comment><comment><USER3> While the author does react quite unprofessionally, there has been a commit adding the license to the required position: [https://github.com/opencart- ce/opencart-ce/commit/dfaf2e8fb4...](https://github.com/opencart-ce/opencart- ce/commit/dfaf2e8fb43f85457efcc629c7b1980762222a71)

<comment><AUTHOR> OpenCart-CE is a community-edition fork, not the official repo.

</comment></comment><comment><USER4> Is it really a function with a single line of code? O_o

<comment><USER5> A function can be licensed in the same respect as a class or library.</comment></comment>


It's a great time to be a programmer in the UK, part 2 - <AUTHOR> http://cvmountain.com/2012/04/its-a-good-time-to-be-a-programmer-in-the-uk-part-2/

<comment><USER2> There might be more vacancies but the salaries are still abysmal compared to the US. I'd be skint if I weren't self employed :-)

London is more expensive than the Bay Area yet the number of full time, salaried developers picking up anything like $100k is small.</comment>


Ask HN: How long before new developer starts contributing code in your company? - <AUTHOR> Or is expected to start contributing meaningfully. <comment><USER2> It would be good if people started adding team size, project size, codebase size, complexity of assigned work, etc to their answers to provide a bit more context.

I'm currently working in a team of roughly 60 developers on a 2-3 million loc system.

First contribution is usually within 2 weeks. We tend to start new developers on straightforward feature work.

We used to start new developers on bugs but found there was far too much tribal knowledge required. We couldn't use bugs to gauge if there was a skills gap.

For senior developers it usually takes around 12 months for them to be performing at a senior level.

</comment><comment><USER3> I was expected to implement production code (features for the main product, not bug fixes) from day 1, as a new grad. It was a horrible experience.

</comment><comment><USER4> Generally within the first two weeks. The variance here is usually based on familiarity and affinity for our technology stack, as well as experience level. I also try to make sure all new engineers have a team mentor available to ask questions and help them along with their tasks, code review, and first deployments. I make it clear to the mentor about my expectations around their time investment in making their new teammate successful.

More than two weeks suggests the dev environment is suboptimal and requires too much tribal knowledge to get things done. It also suggests the new developer isn't being setup for success by their mentor or the tasks aren't well thought out.

More than four weeks, and you have to look at the new developer and see if they are the right fit. Getting signals from their mentor is really important in gauging this.

</comment><comment><USER5> Very quickly.

Minor bug fixes and tweaks, inside the first week.

Substantial features are usually deployed within the first month. This is limited by our development process.

</comment><comment><USER6> I usually work where pairing is the norm, and people start pairing and writing code from day 1.

Of course, there is more learning than contributing on day 1, but even though you don't know anything specific about the system then, you can help with writing or changing when your pair has explained/figured out what it should do.

</comment><comment><USER7> We are soooo small, usually the first week, but we also never hire juniors and our stack is pretty common and therefore new developers don't have much to learn besides the usual technical debt.</comment>


Chromium Blog: Release Early, Release Often - <AUTHOR> http://blog.chromium.org/2010/07/release-early-release-often.html <comment><USER2> Chrome's pace of major version releases is already faster than any other desktop software I'm aware of, but I'm glad they're not stopping there.

Other projects should learn from Chrome: remove all user interaction from your automatic update process and you can release new versions as often as you want.

<comment><USER3> I keep getting burned by chrome's automatic updates. They have twice killed xmltree extension I use and I have to wait for the extension owner to update it.

<comment><USER4> You can block their updates if you like (by editing your HOSTS file I imagine), but then you'd be running out-of-date software.

I don't think that you can blame Chrome's updates for breaking that extension. It's much more likely that the extension is broken.

<comment><USER5> In this case it was our (Chrome team's) fault. We broke an API, which we try to never do. The bug is: <http://crbug.com/47726>. I actually thought this had already been rolled to stable, but it hasn't yet. I will check if we can get it done more quickly.

</comment></comment></comment></comment><comment><USER6> I think this is probably an excellent example of what can be done with a comprehensive set of automatic regression and performance tests. I'm guessing most bugs are caught immediately after each build, and they can be fairly confident releasing stuff without doing much manual testing.

<comment><AUTHOR> Also, I think there are quite a few people using beta and dev channel and chrome developers are continuously getting feedback on features being added on those channel.

I have been exclusively using dev channel for 6 months, never had a problem and it updates every week.

</comment></comment><comment><USER7> Nice view of Chrome's marketshare after each major update: [http://getclicky.com/marketshare/global/web- browsers/google-...](http://getclicky.com/marketshare/global/web- browsers/google-chrome/)

</comment><comment><USER8> Outside of my code editor, Chrome is the piece of software I spend the majority of my time using.

I've been running the bleeding edge versions since the first public releases, pretty much, and last saw the sad face in 2.x series, I think.

It's such a great example of how to execute, reminds me of the IE team in the early days when they still cared.

I've converted most of the office to using it, even die-hard Firefox and IE (yes, IE) users. My nagging gets them to try it, the performance keeps them :)

I hope they never give up or lose inertia like IE did.</comment>


Ask HN: How many people know the "secret sauce" of the Google search algorithm? - <AUTHOR>

A friend asked me this the other day and I have been unable to come up with a reasonable answer. It's curious that it hasn't come up on HN, at least recently, so feel free to enlighten me. <comment><USER2> I'd guess that there isn't one single person at google who knows all of it. They do base a lot of their stuff on LSA (I think probably more generally just NLP), but they have so many filters and minor adjustments that the whole thing is like a really complex ball of string.

I doubt there's one person who knows how the whole thing is exactly put together.

</comment><comment><USER3> dare I say 42?

</comment><comment><USER4> latent semantic analysis? Stat friend told me this...</comment>


Watch Microsoft's Surface Tablet Freeze in the Middle of a Presentation - <AUTHOR> http://betabeat.com/2012/06/watch-microsofts-surface-tablet-freeze-in-the-middle-of-a-presentation/

<comment><USER2> The presenter handled it well, and considering this is a demo of an unreleased product, the audience must have expected that it's not going be perfect quite yet.

<comment><USER3> Seems like a rushed presentation perhaps to get enterprise markets to hold off on iPad acquisitions.

Balmer and Sinofsky underwhelmed - the other presenter was excellent I thought.

Design needs some work, looks more like a 3 month project rushed through ASUS or another manufacturer.

Smells like the XBox1 of tablets. They will build a big market because they will pour money into this whatever it takes. But buyer beware on the first version - this is a rush job.

</comment></comment><comment><USER4> At least there was no BSOD. :P I can give them a little bit of leeway since it's prerelease.

However I have the feeling that Windows 8 is not going to be just rushed out the door, but pushed kicking and screaming. This is not a good sign!

</comment><comment><USER5> This happens to everybody. If Microsoft had announced the surface and planned on selling it right away, it would be a big deal, but beta software having bugs? Would have never guessed.

</comment><comment><USER6> It looked responsive at the end of the presentation. More abuse of the word "bricked".

<comment><USER7> Looks like he grabbed another unit. Not a big deal given that it was a presentation of an as of yet unreleased product with beta software.

</comment></comment><comment><USER8> Just keep desperately trying to find something to complain about!

</comment><comment><USER9> Someone linked this the other day.

An old Apple keynote bloopers video:

<http://www.youtube.com/watch?v=vVprvnYaQYo></comment>


WSJ: What a Biden-Harris White House Could Mean for Tech Policy - <AUTHOR> https://www.wsj.com/articles/what-a-biden-harris-white-house-could-mean-for-tech-policy-11597358935 <comment><USER2> Hopefully the subject of tech policy gets brought up in the first debate, I'd love to see Trump and Biden argue about a subject that neither of them understands in the least.</comment>


When the business model is the privacy violation - <AUTHOR> https://freedom-to-tinker.com/2018/04/12/when-the-business-model-is-the-privacy-violation/ <comment><USER2> One argument he raised in the House hearing was that collecting data on users allowed more targeted ads which in turn made ads more efficient and therefore more economical, which levels the playing field more for small businesses versus large ones in terms of advertising.

However, that is an argument favoring the customer, i.e., the advertiser, not the product, i.e., the user.

During the Senate hearing, he was asked about Ms. Sandberg's comment that if there were no ads then users would have to pay. Mr. Zuckerberg pointed out that users can opt-out of ad targeting/data collection,[1] making the ads they receive more generic and less "relevant", but currently Facebook _offers no option for users to pay not to receive any ads at all_.

The still unasked question is, "Why not?"

If some users could not afford to pay, as Mr. Zuckerberg suggested in both hearings, then they could opt-in to advertising. How would this affect the business model?

Further, if those users were disappointed at how the ads they were being shown were not "relevant", then they could opt-in to ad targeting/data collection.

1\. The default setting is opt-in. As we know, most users do not change default settings.

<comment> default-kramer I have been thinking about what would happen if all browsers had perfect ad blockers enabled by default, starting tomorrow. I think years later we would look back and decide that it was the right thing to do, despite the immediate short-term economic damage.

<comment><USER3> I like pretty much everyone else dislikes advertising, but it is a genuine source for a company to generate revenue.

I really don't know any other real alternatives other than making the user pay, which would in turn make the internet just basically one big subscription model. The majority of the "free" services which many people enjoy now, like YouTube, Facebook, etc probably could not exist as they do.

What is needed is some clear boundaries (legislation), and education. I believe without advertising that the internet would not have been what it is today, and I don't think it would have exponentially better.

<comment><USER4> Do we know how much Youtube, Facebook, etc. make in ad revenue per user? It can't be much. If micro-payments are an option, the ability to pay $0.75 a month for an ad-free social network would be fantastic.

<comment><USER3> I think the problem behind this is that ad revenue is not the same as a subscription revenue. You cannot assume that if a user was worth $3 a month in ad revenue that that would translate to a $3 a month subscription.

For example, I would have no doubt the the customer acquisition cost for an "free" application with advertising is a lot lower than trying to sell that same user a membership.

When it comes to social networks I would suggest that the stickiness is because your friends/family etc are on the same network. It's not if you are willing to pay, it is only really worth it, if your friends are willing to pay.

If you are talking more about a paid and free version, then there are already services out there like YouTube Red (available in some areas for $9.99+ USD). There are always options out there.

<comment><USER5> What about all the work that goes into maintaining the ad network and distribution, advertiser acquisition etc? That isn't free either.

</comment></comment></comment></comment></comment></comment><comment><USER6> I just wanna say one thing about this, when I found out that FB was looking to find healthcare data from hospitals and other providers to like to peoples profile it sent the chills up my spine. that is seriously creepy. if something like is available then probability of it being abused is almost 1. right now my facebook usage is fairly low but I'll delete my account for sure if there is any truth to that.

<comment><USER7> That sounds like an explicit HIPA violation and is very much against the law for both the hospital to share the data and Facebook to do that linking. It sounds tin foil hat conspiracy to me.

<comment><USER8> There is no evidence that any hospitals agreed, but it is no fantasy or conspiracy that Facebook tried.

[https://www.theverge.com/2018/4/5/17203262/facebook- medical-...](https://www.theverge.com/2018/4/5/17203262/facebook-medical-data- sharing-plan-healthcare)

</comment></comment></comment><comment><USER9> I think this op-ed is very relevant to this [1]. There's no doubt the internet companies will aggressively oppose any attempt to pass privacy legislation in the US, but there's no reason why that needs to be all tech companies. Apple, Microsoft, IBM, etc could play a major role in balancing their influence.

[1] [https://www.nytimes.com/2018/04/11/opinion/silicon-valley- lo...](https://www.nytimes.com/2018/04/11/opinion/silicon-valley-lobbyists- privacy.html)

</comment><comment><USER10> A more accurate title would be: the government revenue model is the privacy violation.

Governments cannot be genuine allies of the people against corporate surveillance, and for example, encourage privacy technology like public key cryptography, and client-side encryption, when their primary sources of revenue: the income and sales tax, depend on rampant and overt criminalization of privacy (KYC laws, income disclosure laws, record keeping mandates on the private activity of private citizens, etc).

</comment><comment><USER11> Spyware and adware 10 years ago were considered extremely shady and unacceptable and certainly not in the mainstream like now with Google and Facebook.

Who would have thought then it would take these shady practices a mere 5 years to transition into the mainstream.

Advertising via textual context and immediate location is ok. Everything else is a dark pattern and incentivizes uncontrolled surveillance, profiling and data hoarding and should automatically be disallowed in a civilized society.

</comment><comment><USER12> Is it fair to say that privacy violation as the business model is generally more profitable than privacy as the business model?

<comment><USER13> If information is power, then that is like asking if having more power is more profitable than having less power.

</comment></comment><comment><USER14> Funny story, i have never seen any ad anywhere in the internet or never clicked on any one for sure. i wonder why product makers pay so much for advertisement to google n fb.

i have seen advertisement in tv when i used to watch tv a lot and am sure i have never bought those stuff jus because they advertised them, most of time we will just swap channels for few mins and advertisement wud b gone away.

And in internet it is very effortless to jus scroll past stuff that we are not paying attention to, i guess i most of the time ended up scrolling thru ads, thats y i dont remember buying anything because i saw some ad.

</comment><comment><USER15> > Thus, hashing completely fails to address the underlying privacy concerns

I don't understand their argument against pseudonomous identifiers (well, part of the problem is they present it without a lot of argument). Are they arguing that companies will reverse the hash, or that they will de-anonymise it using additional data? Otherwise it seems harmful to me to tell people that using a different identifier per web site is useless (a bit like telling everybody that locking your car is useless because a determined thief would break in anyway...)

</comment><comment><USER16> My Google DoubleClick Mozilla essay talks about this exact topic: [http://yuhongbao.blogspot.ca/2018/04/google-doubleclick- mozi...](http://yuhongbao.blogspot.ca/2018/04/google-doubleclick-mozilla- essay-final.html)

<comment><USER7> An interesting if rather long read. However I'm not sure if your solutions of voluntary donations and cryptocurincies have viability. Voluntary donations have high friction to get a user to start donating (You don't want to donate to a site you only visit twice and who knows if you will visit the site in the future). Cryptocurincies are unproven at this point.

You also don't mention how targeted advertising is critical to many small business. If you have niche or specalized product it can be very difficult to find people that want to buy it, you are limited to only places where those people are in high concentrations, it is quite reasonable to expect that the elimination of targeted advertising would quietly erase these business as they are no longer able to find their consumers. Diffrent payment models don't address this.

<comment><USER16> It is unfortunate that it is not more famous. I did mention that there are sites that depends on targeted advertising that would be affected in the final version of the essay, though there is not much detail about it. Feel free to come up with other solutions BTW. I have a Google Group you can join: [https://groups.google.com/forum/#!forum/google-mozilla- probl...](https://groups.google.com/forum/#!forum/google-mozilla-problems)

</comment></comment></comment><comment><USER17> I think every website should comply with [https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Sec...](https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard#History)

</comment><comment><USER18> With new regulations like GDPR coming online FB's business model is basically kaput. They're going to need to rethink their whole stance if the world follows EU's lead. Given that Zuckerberg was called to testify in front of congress, I think we're probably going to see much more action.

<comment><USER19> On the contrary, the GDPR helps Facebook. As background, I am a product manager dealing with GDPR issues right now. The requirements are quite onerous, but they are not intractable. I am sure that Facebook, with their army of engineers and lawyers will be able to find a way.

Facebook already has traction, and if push comes to shove can anonymize their data so it is at least still somewhat valuable.

However, the window is closing for any new social networks to get started, because the startup costs are simply too high and you can't growth hack like you used to.

What I am saying is that it is quite reasonable to assume that Facebook will be the last social network out there, that they will survive and no new competitors can emerge. If any hope of competition gets removed, then that benefits FB.

<comment><USER7> 100% to this. I'm an enginer also working on GDPR and you sound exactly like my product manager. GDPR is likelly to result in the number of advertising technology companies going from thousands to dozens. One of the requirements is that you inform users who you are sharing the data with. If you have a list of ~10 companies is allowed under GDPR, but a constantly change it list of 500 companies is not. The result massive consolidation.

This is very ironic because one the the complaints of the EU against companies like Facebook or Google is that they are monopolies in the advertising space, and then they passed a law that will have the effect of force it their competion out of the market place.

It's a real shame that no one is really covering this aspect of GDPR.

<comment><USER20> > One of the requirements is that you inform users who you are sharing the > data with. If you have a list of ~10 companies is allowed under GDPR, but a > constantly change it list of 500 companies is not. The result massive > consolidation.

Are you saying that GDPR puts a limit of between 10 and 500 on the number of companies you share data with, or are you saying that it's impractical to share a constantly changing list of 500 companies with the user?

The latter seems easy to do: Just create a webpage and keep adding the names of new companies. Email a link or the list to the user as needed. Do I misunderstand?

<comment><USER21> As the adtech data sharing usually doesn't fall under any other legal reasons that would allow you to use that data, you need to get _consent_ for the new companies. If the user ignores your email and takes no action (doesn't opt in), you don't have their consent, and can't share their data with the new companies.

But IMHO that's the whole point, the legislation is a response to users saying that they don't really want such companies to exist - the business practice of taking my private data and sharing it to the world 500 companies will now require my explicit opt-in _freely given_ consent (i.e no "we'll refuse service if you don't consent"). The expectation and intent of this law is that I and pretty much every one else will simply not provide that consent, and that business practice will become impractical and die out, as it should.</comment></comment></comment></comment></comment>


Ask HN: Why is there no stopping Apple's monopoly of tablet/phone's browsers? - <AUTHOR>

If there is lawsuit after lawsuit against microsoft for things such as, e.g., having Internet Explorer pre-installed, bundling their media player with the operating system, etc., then why the fuck hasn't there been anything done about the fact iOS, as now more than ever, being in a dominant position in the tablet/smartphone market offers literally NO alternatives of browsers or outlets with which to install software (App Store)?<p>Have they built something that slots perfectly in a loophole which prevents any kind of requirement of freedom of choice for browsers, and indeed all software? <comment><USER2> Because they're _not_ a monopoly on smartphones/tablets. Android is doing pretty well, by most accounts. Blackberry still isn't dead (though not for lack of RIM's trying). The IE antitrust case against Microsoft was because they held a monopoly on desktop computers, and tried to use that to build a monopoly on Internet Browsers.

Apple a monopoly on Apple devices, but that's fine. Saying that they have a "monopoly" here is like saying that Coke has a monopoly on the contents of Coke bottles, and they should be forced to fill some with Pepsi. Perhaps less glibly, that things like XBox should be forced to ship Mario, or that Microsoft must release Halo for the PS3. Just because we're used to anything with a CPU being "free for all developers to ship whatever they like onto" doesn't make it a right enforceable by law. If that's your preference, great - buy devices that support this. We do _not_ want the government dictating policy in an area so young, and highly competitive.

If, in a few years, the iPad has become the tablet computer with 99% of the marketshare, there might be an argument for an antitrust case against App Store policies. But that looks very unlikely to be the case.

</comment><comment><USER3> When the antitrust/monopoly ruling came down from on high Microsoft held something like 90% of the home computer market. That's a dominant position. Apple maintains a solid percentage of phones, and the tablet market is too small to notice.

There's no loophole, Apple is small enough in percentages and there's that much more choice that they can't be classed as a monopoly. Don't like it? Don't buy the product. The issue was with Windows there was only one game in town for the vast majority.

</comment><comment><USER4> Monopoly isn't illegal, it is the anti-trust or anti-competition that got MS in trouble. If MS didn't try all the scare tactics that they did, then they would still be allowed to keep IE bundled just like Apple.

Because MS got convicted, they're forced to make up for all sort of things and that is why MS is getting all sort of attentions about the browsers, they're still regulated by the governments due to the laws that MS broke.

Apple hasn't done any of that, so there are no regulations and Apple is fully in its right to do what it wants.

</comment><comment><USER5> Obligatory car analogy: Apple's position in tablets and phones is similar to Ford's position in cars. Ford will not sell you a car with a Chevy engine. Ford is in the complete car market, and an engine is an essential part of a complete car.

Antitrust law tries to be reasonable. This means that for those things that are the main or essential components of a produce, the manufacturer should be free to choose those components.

If antitrust law looked too deeply into individual components, costs for everyone would go way up. Imagine the manufacturing nightmare if, say, Dell had to worry that if they used capacitors from Dielectric Laboratories in their motherboards, they might get sued for not also offering the choice of capacitors from Johnson Dielectrics, ROHM Products, or Illinois Capacitor.

For tablets and smartphones, internet browsing is practically one of the defining features of the product. A typical consumer who bought a tablet and found it had no browser preinstalled would be about as shocked as someone who bought a Ford and found no engine installed.

</comment><comment><USER6> Microsoft also said they would drop licensing to companies like dell, toshiba, if they were to include netscape in the PCs that they sold

<comment><AUTHOR> Still doesn't answer my question.

<comment><USER5> Monopolies are not illegal under antitrust. What is illegal are certain practices designed to lead to monopoly, including using dominance in one market to try to gain power in another, unrelated market.

By bundling the browser and penalizing manufacturers who wanted to bundle a different browser in addition or instead of Microsoft's, Microsoft was using their dominance in one market (desktop operating systems for x86 PCs) to try to gain power in an unrelated market (internet browsing applications that run on Windows). Hence, they ran into antitrust problems.

In tablets and smartphones, there has not really been a separate market for internet browsing applications. The market for tablets and smartphones has been for complete internet devices (hardware, OS, and browser) from the start.

</comment></comment></comment><comment><USER7> It's reaaaaaaaly hard to claim monopoly and restraint of trade when your are the highest priced thing in the market. The platform is also not locked down, in the sense that it can be jailbroken and apps (without QA or other oversight) can be bought, sought, installed and used. Yes, they have a commanding position in key areas of their markets, but plenty of folks are willing to pay a premium and plenty of other folks are willing to write apps under Apple guidelines and restrictions. There are too many ways to distinguish the Apple of today with the US Steel of yesterday. The problem is, the headstart grabbed by Apple isn't something any other single COMPANY (Android isn't a company) has been able to counter. This is all legit competition and it is lethal. Apple has just confiscated market participants formerly belonging to RIM, Nokia, MS, Dell, HP. Their stupidity is not legal grounds to oppose Apple's success.

</comment><comment><USER8> I think the key here is that phones were for a long time "embeded devices". It is protected platform that can not be 'tinkered' with. This was how iPhone 1.0 was. That is point one to ponder.

Point two: Original intent of sales. iPhones and Android and other phones are sold as a smart phone. As long as it is not sold as a computer, the vendors are free to dictate what is possible and what is not.

NB: While Android does has third party browsers, it should be noted that the default Browser.app can not be recreated using the Android SDK as it relies on private APIs.

</comment><comment><USER9> iOS is not in a dominant position in the smartphone market. Android is bigger. iOS is rather dominant in the tablet market, but the market is arguably too nascent to be concerned yet - there's no reason to believe that Android tablets won't eventually become popular.

Fundamentally, monopoly regulation (like that which affected microsoft) is for monopolies. I really dislike Apple's lock-down-heavy policies, but as long as there are credible alternatives out there there's little reason to be concerned.

</comment><comment><USER10> The tablet market didn't exist few years ago and the govt is slow to notice things. They do not dominate the smart phone market, android has a larger market share.

</comment><comment><USER11> I'm seeing a lot of replies about Apple not having a majority market share in devices, so therefor they can't be considered a monopoly.

I'm curious about if Apple did have a majority market share, would they then be classified as monopolistic?

I understand Apple's point in terms of securing the OS, but allowing mobile safari to have higher access privileges over 3rd party browsers seems unfair, no?

</comment><comment><USER12> There are multiple alternate browser choices for iOS devices. Apple distributes Chrome and Opera for iOS through the app store. Mozilla has chosen to not support iOS.

<comment><AUTHOR> No, they are all forced to render using Apple's Webkit, there might be a different skin on top, but the underlying technology is STRICTLY no-touchy. Its a monopoly of the worst kind.

<comment><USER13> If Apple was the dominant OS for all portable devices manufactured by everyone then I would agree. However, Apple only controls the OS for devices they produce. I don't see that as a monopoly of the worst kind.

If you go into any non-Apple electronics store you can buy many devices which don't use iOS. When everyone made the big stink about Microsoft's monopoly it was almost impossible to buy a computer without Windows installed from any major retailer or manufacturer.

</comment></comment></comment><comment><USER14> i can't understand any part of your argument that would be legally supportable that wouldn't make every single kind of embedded system illegal. consoles? right out. dumbphones? illegal. gps? nope. atms? gotta be hackable. mp3 players? can't.

</comment><comment><USER15> iOS is far from a monopoly. It's not even quite a majority</comment>


The Professional Coworker - <AUTHOR> http://mikecr.it/ramblings/the-professional-coworker

<comment><USER2> First I like a lot of this article. Thinking about one's role in the community of the company, and the responsibilites product, is important and valiable.

That said:

Maybe it's nitpicking, but responding to every IM or email in an hour or less?

If communication is key, it's much better to set up clear times when you are available for talking then to respond quickly to emails, at least for things that don't require repeated interactions. One might also up expectations for urgent replies that can interrupt you, but you will have communicated expectations. You can have a give and take with the above, but in general, you will respond more effectively if you chunk your reading and sending e-mail.

Then, absolutely be available at the set times, and respond to messages during them.

<comment><AUTHOR> OP here. I sincerely don't understand why it's difficult for some people to respond within the hour.

Even if you just set aside 5 minutes per hour to respond to whatever came in in the last hour, that's still vastly more helpful to your coworkers than boxing out specific areas of your day where you will respond and expecting them to be attentive to that.

Where's the reluctance? Honest question.

<comment><USER2> hmm... thought I replied from mobile, but I guess it failed to post.

I guess it's because I find it hard to focus, or rather to shift focus. I'd much rather chunk my time (and get economies of scale), rather then shift between two discrete tasks.

They don't have to be attentive. Heck, they can put URGENT in an email, and I can make my computer beep the moment that comes in. But most e-mails can wait.</comment></comment></comment>


3-year employment contract advice - <AUTHOR>

I need your advice, a film/tv production company wants me to sign a 3-year employment contract (full time sr software dev position). What terms do you suggest I negotiate?  What if I want to leave before three years? <comment><USER2> I would advise you to talk to a lawyer and go over the contract with him and ask the questions you have to him.

Employment contracts should not be taken lightly and 3 years is a lot to ask for; the Lawyer can help you make suggestions to amend/change so if you want to leave it's not such a burden.

</comment><comment><USER3> That is ridiculous. Why even bother?</comment>


Show HN: Hacker News Extension for Google Chrome - <AUTHOR> https://chrome.google.com/webstore/detail/hacker-news/mofibfpfhdmamlelhoabjckdkpdhnbnm <comment><AUTHOR> This is a simple extension for Google Chrome Browser that let you read the top news from Y Combinator Hacker News.

This extension was created using the official Hacker News Api: [https://github.com/HackerNews/API](https://github.com/HackerNews/API)

</comment><comment><USER2> There is any advantage of it over conventional browsing HN ?</comment>


The World Will Never Run Out Of Oil - <AUTHOR> http://news.yahoo.com/world-never-run-oil-might-price-tank-201456256.html

<comment><USER2> This article is _wrong_.

      As oil becomes scarce, consumers will necessarily turn to
      an alternative before the supply runs out.

When something has become so scarce that it is necessary for everybody to turn to an alternative, you've run out of it. Yes, the world will always have oil, but it will gradually become so expensive that you can't buy it for any reasonable amount of money. We'll run out of oil in the same way that we've run out of bottles of wine from the 1600's: some will exist, but nobody can do anything with it because it's so rare and hard to get.

<comment><USER3> This article is /right/.

We won't wake up one day and be all "oh shit we ran out of oil". These things work on a gradient, yo.

As the market prices in upcoming oil scarcity, so prices will initially rise. The price of oil today prices in future scarcity. As the price gradually increases, other alternatives start to come online from a financial viability perspective. As more money is spent on those alternatives, so economies of scale start to kick on, so new R&D resource is spent on alternatives, so governments jumpy about energy security subsidize, etc.

If you want a natural resource to get all paranoid about, in ~20 years, South East Asia will have a 300m person gender imbalance - there will be 300m men who can't find a wife, can't start a family, can't settle down, and can't get laid. I wanna see how the market solves /that/ one.

<comment><USER4> About the gender imbalance, it's easy - dowry is still very prevalent in India and other parts of Asia. Which is what skews the numbers in favor of men (people abort female babies on a regular basis to avoid paying dowry when they grow up). When people realize there aren't that many females to go around, the dowry concept will reverse, it will be men paying to get married. Then the economic incentives will reverse, and the ratios will balance. That's how the market solves it. Hopefully by then rising prosperity and gender equality will eliminate this practice before the scales tip the other way again.

<comment><USER3> Longer term, yes, absolutely. Also: rising personal wealth tends to sort the problem out too...

But, the children who are going to cause this problem have already been born. Takes 14-18 years to grow a girl of marriageable age, depending on where you live...

Maybe a sophisticated market in wife futures will emerge.

</comment></comment></comment></comment><comment><USER5> This article is very absurd.

Everyone knows that oil (and other material resource on Earth) is a finite resource - which means at some point, the planet will run out of it.

Economics would dictate that other energy sources would be developed (and is already prevalent) that would take away oil away from the big part of the equation.

</comment><comment><USER6> OK, fine. We won't run out of oil, it will just be prohibitively expensive, especially for fuel applications.

(I've always thought it was a shame to burn such an interesting chemical feedstock anyway.)

</comment><comment><USER7> The world will never run out of oil because once we realize that we are running out of oil, we'll try to stop using oil.</comment>


Mining Twitter follower network of 36 million users - <AUTHOR> http://www.akshaybhat.com/LPMR

<comment><USER2> I'm curious about how these classifications were done. I graduated from the MIT Media Lab a few years back, and after looking through the result set titled:

"A small community of users associated with MIT Media lab detected using the algorithm after 7th iteration"

I saw a handful of MIT undergrads listed, many of which I'm certain had no affiliation with the Media lab, while nearly all of the others I do not recognize, even as an active Twitter user. I chose two random entries from this list: 'RFheargaile' and 'realduedate', and found both to be of extremely dubious authenticity.

<comment><AUTHOR> I agree they are not very high confidence classifications. Due to random nature of the algorithm, It is very hard to correctly label a community. Also since for most users explicit permission to follow is not required which leads to dubious/spam users. Since the data was collected in June 2009, it is possible that a lot of users might have blocked spam profiles from following them.

I guess I need to clarify this point.

</comment></comment><comment><USER3> why is the com in the title of this post in capitals, when it links to lowercase .com and the site has no redirect to .COM in place.

<comment><AUTHOR> I made a mistake in typing the url.

</comment></comment><comment><USER4> This is really cool stuff! Did you come across any interesting retweeters and spam rings?</comment>