I didn't feel like that was bad discussion, per se. You were getting ganged up on for having a counter opinion (one that would have been accepted at face value on HN a year ago) and responded poorly, but overall good points were made.
This is overly cynical. When people say "Why don't they just...", it is a sincere question, not a rhetorical statement. "Oh radiation...that makes sense". "Oh they had to bake the tech for 8 years". Etc.
Sidenote - "Why don't they just" shield the electronics rather than making the electronics itself radiation proof? I ask that knowing that there is a legitimate reason (shielding weight?), but it is something I have sincerely often wondered.
'Radiation' is not a single unified thing. You can shield some things chicken wire with multi inch holes in it. Other can travel though the earth before hitting you. On of the basic problems is some of the things that help you vs one type of radiation makes other things worse. Also, Mars missions are multi year affairs so even at background radiation levels on earth you are going to have problems.
PS: If you added up the entire mass of everything ever put into orbit you would not be able to make a shield to guarantee normal equipment would be able to stand a 5 year mission in space.
The problem is that you can't fully control the meaning that someone takes from your statement. As a spacecraft enginner that knows many of the possible justifications for these "why don't they just"s, it's the negative connotation that springs to mind first, even without the "just". I think it is because that phrase is often used in the imperative sense, and not in a knowledge-seeking sense. Google autocomplete for "why don't you" suggests "stay", "get a job", "love me", and "do right" and if someone were to ask me any of those questions, I would not assume they were sincerely wondering anything.
Now, if you're wondering how better to phrase your questions of this sort, I'm afraid I don't have any specifics, because I'm not sure if I'm just as guilty of this, or if I've successfully rephrased my questions of this sort. What I do is try to imagine that I've spent years designing, building, and debugging the thing in question, and gone through multiple reviews by outside organizations where every design decision was scrutinized, and had many meetings with coworkers (formal and informal) to discuss the thing in question. And then I ask my question in the affirmative, rather than in the negative, such as:
"Why did you do X, would Y also work?"
"I would have done Y. What is it about X or Y that I am missing?"
I think you're wrong for one simple reason: business logic.
Business logic is complicated and rarely defined by a developer but by a product manager. Often you can understand what's being done in the code, but the WHY is necessary to understand why it's there and what it is trying to do. I believe giving a brief synopsis of the business logic in a method comment and, if it's not super straightforward, a brief overview of the steps or algorithm, is incredibly useful.
I guarantee you won't be able to figure out what your program is doing by looking through years old wikis left by product managers no longer at your company.
Just to be clear, the person I responded said, in effect, that the code did X. They made code that did Y, and then realized it didn't do X. That is the story of a million ill conceived code rewrites.
That the code did X is clear by the code: No amount of words can refute or change that the code does X. The danger is replacing code is always in the behavior of the code, and never simplified descriptions of its actions.
To business logic, as someone who has worked heavily with business code for years (laughable commentary from imbeciles to the contrary), business logic in comments is one of the worst choices a team can make because it is an escape hatch. It negates the need for verbose, traceable code. It negates the need for vastly superior external proof.
I'll happily be "so brave" and reiterate a simple truism of software development -- comments are the battle cry of terrible developers.
They are the crutch of people who can't read code: "Add more comments because otherwise I can't make sense of what the statements are doing." It is the English speaker demanding that every French passage have an English translation, rather than simply learning French.
They are the crutch of people who can't write code. "My code is a gigantic, illiterate mess, so instead read the comment at the top that has no guarantee of being robust or accurate."
Bringing up mathematicians and Knuth are both irrelevant distractions. Software development in the modern world is a very structure, self-describing affair, or at least it should be. Comments are the short-circuit from having to figure out how to do that.
I'd like you to offer some examples of code that successfully documents its own raison d'être - in a way that a comment couldn't do better - instead of repeating this 'crutch of poor developers' rhetoric.
I mean, I can write self documenting code without any comments, and it's perfectly understandable.
self.count + 1
That code fails to tell the programmer why it's in the application logic and not defined in the database schema. What should I do instead, so I can code without crutches?
self.count + 1
That's not a great deal better, it's still just saying what it does, not why it's there in the first place.
self.count + 1
I'm now curious to know what you would have written for documentation.
Though, I think your example turned out to be a great one because it highlights that not everyone reads code the same way. Personally, I load large segments of code into memory and then mentally step through. You left me wanting more to see the context in which the method was to be executed, but I didn't really feel the need for comments.
However, with just the one method that you wrote in your example, that seems to indicate that you read just one function at a time. If you are not observing the code as whole, I guess a comment would help. I often find them taxing though, as they have to be read into memory as well.
I think that discrepancy is why the comments vs. self-documenting code debate exists.
The problem was I initially hinted at the context in my first example, with a call to Rails' `before_create` callback method. I then omitted it from every other example, thinking it'd be inferred. Evidently that wasn't very clear.
But the way in which people read code is an interesting point, which I actually think might be worthy of its own discussion. Looking at the psychology behind this would be good, I think.
Actually, I would say your intent there was quite clear, which is where I came to realize that the code did nothing. Without that context, one could assume the method was used for its return value where the code could very well have had purpose as written.
What wasn't clear was how the count attribute was intended to be used throughout the rest of application. In the real world I would start to build a mental model around the uses of count, which was not available from your example. In terms of self-documenting code, I liken a short code snippet like your example to a sentence fragment in english. The entire sentence, or statement if you will, encompasses much more of the codebase.
This is definitely an fascinating topic, but unfortunately one that is very difficult to discuss for many reasons. I wonder how we can dig into the physiology aspects that you raise without the prevalent "my way is the only true way" attitude?
Do you have github/sourceforge? I'd love to read some of your non-trivial code.
Read almost any non-trivial successful project for good examples. The Linux kernel. Firefox. etc. The frequency and verbosity of comments tends to have a direct correlation with the simplicity of the code (which is the exact opposite of normal expectations).
Two projects that are enormous successes, both with more contributors than any code that you've ever touched, I would wager. "Messes". Indeed.
To your questions, while you're rhetorically asking, trying to wink to the crowd in the implication that the answers are telling, yes, actually I have. To very good effect. I'm speaking from actual experience here, not just the hilarious patter of the bottomfeeder that is far too typical on HN.
Why do you think Chrome is eating Firefox's lunch?
Humorous given that both webkit and from that Chromium are largely comment free. What nonsense are you arguing again?
I've worked on FreeBSD, Mac OS X, and an assortment of smaller widely used software projects, including user-facing applications.
"Worked on" in HN parlance means "I did a coop term and wrote some test cases for some irrelevant little utility". Given your comical claims about Linux and Firefox re: Chrome, I have enough information about your skills.
You clearly have no idea what you're talking about. I hope I never get stuck cleaning up your messes, but chances are that someone as intellectually lazy as you -- if not you -- will leave me an uncommented code base to maintain.
The fact that you actively advocate intellectual laziness is distressing.
Intellectually lazy? That's a mighty big term for someone like you.
Further it's utterly astonishing that you would equate writing clear and non-ambiguous code rather than nebulous code of uncertain purpose -- like the example Chromium code you linked -- is "intellectual laziness". That you hold good coding as deficient compared to lazy commenting is hardly surprising given your comments.
Failing to document code is to the detriment of future maintainers. Anyone that claims their code is clear and ambiguous without comments is lying to everyone, including themselves, as a means to justify their intellectual laziness.
"I don't need to comment" is really "I don't want to document my work because that's boring and I'm much too smart to need to do that".
You're not that smart. If you were, you'd realize just how dumb everyone is, and thus, just how necessary comments are.
Making the machine check as much as possible about your code is a worthy and practical goal. I often try long and hard to capture as many invariants as possible in the type system. And even though the language that we are using, Haskell, has one of the strongest typesystems you can find, that's still not very much logic guaranteed by the compiler. Of course, run time checks can catch a few more errors, but I'd rather catch mistakes as early as possible.
You seem to have lots of experience with expressing intent in code, and making that intent 'canonical'. How do you make the machine check the accuracy of your code? What language are you using for that?
Now that you mention it, the idea of a computing device being ready for casual use by those one might affectionately term "lusers" but not for heavy-duty professional use by computer people is so backwards it makes my head spin. Things sure have changed.
I ran a fairly successful blog (front paged here a number of times). I recently cut the cord and abandoned it. The blogging tail is getting shorter and shorter as more and more people move to the closed and walled gardens.
I shut it down because it was the illusion of accomplishment: every time I got a hit entry I would assure myself that I've moved forward in some way, achieved something, etc. Whenever I thought about doing something actually beneficial, the easiest procrastination was to just go do a blog post instead, imagining that every hit actually meant something. That I was somehow accumulating assets in something worthwhile.
It achieves nothing, at least if you're already established. If you're new to the industry and unproven then it's a good way of trying to fake it before you make it, but if you're professionally grounded, it's a liability as much as a benefit.
Worse there is a tendency for readership to start to control what you write about, which is one reason I moved to more free-form content on a walled garden: I'll write about a caterpillar in the yard, my new lawn tractor, and some new development in Android, all because I no longer fool myself into thinking the blog is a business. It's just some random thoughts, whether read or not.
The time spent writing it -- even if you're pretty successful at it -- would almost always be better spent on other endeavours. To bring up some examples oft cited on here, John Gruber is one of the most successful bloggers, as is Marco Arment. They're reduced to trying to pitch t-shirts and affiliate links. Neither of them -- despite volumes of words spilled onto epaper -- change anything in the industry through their respective blogs. A lot of words evaporating into the ether, the converted incited into a chorus of the echo chamber.
I'm far more distracted/upset by large groups of people laughing or yelling - teens/adults/whatever - than I am by someone talking on their phone.
People really have a highly selective ability to be annoyed by things that they are judgmental about/think that they are better than -- or even worse that they think make people better than them -- especially if it triggers their jealousy/resentment. If someone is getting texts or calls, that's incredibly annoying to someone who gets no texts or calls for obvious reasons.
Some years back we took our young children out with their grandparents to a family restaurant. It was mid evening on a Saturday night and the place was full and very loud, with escalating conversations, people having fun, etc.
My infant daughter dropped her fork. I happened to catch a woman nearby -- likely barren and fervently vengeful -- giving the most hateful, glaring look I've ever seen, and I would imagine she went forth to declare how her night was ruined by our much quieter than average table. I recall this experience whenever I hear some railing about children on airplanes, etc -- I imagine that much of it is selective, desperate clutching for offense, and it's much the same regarding people and their anti-smartphone spiels.
If I am at dinner and I decide that I want to keep on top of my device (I have four children and a very busy professional life), those with me have to deal with it. Most of the time my phone is more important than the discardable conversation happening over a meal.
It doesn't make me more important than them, though maybe it means that I have different values.
I generally veer away from these sorts of conversations because they tend to be dominated by angry people who are essentially trying to control other people ("you should do this and you should do that and I will forever be judging and disapproving or approving". You don't hear people living in the real world declaring that everyone must check their phone constantly)
Your post is similarly charged and you get more confrontational during this thread I think, although I think it may be a cultural thing. In the UK, swearing isn't a big deal, but table manners can be.
Part of basic courtesy (for me) is to pay attention to the person that you're eating with; if you don't want to be here, then don't accept or offer an invitation. There's nothing wrong with that, but if we're out at a restaurant together then it's because I want to be there with you...not because I need to consume a meal. I won't watch television, read a book or do routine paperwork during dinner with someone. I consider messing with texts, checking email or taking a phone call to be similar activities.
For what it's worth, with close friends over a snack, I really don't mind. But with new acquaintances, I do expect a certain level of formality and table manners. There is a large swathe of people who would not watch TV, read a book or do paperwork at a table over dinner but they would mess with a phone.
I'd have absolutely no problems whatsoever with geebee's behaviour as described in this thread; (s)he seems polite, considerate and like someone it'd be nice to share a meal with. Noticing that you've got a potentially important message and leaving the table to check would be fine to me! Fiddling with facebook, taking routine calls or texts would seem inconsiderate. Having the phone on the table, but firmly ignored, isn't all that bad, I guess...but I'd rather leave it in a jacket pocket and not have the potential distraction personally.
If that comes over as controlling, well fair enough. Horses for courses, etc. But if my behaviour comes across as controlling and judging, I must say that yours comes across as self-absorbed and somewhat arrogant. But like I said at the start, that may just be a cultural thing.
What is considered "basic courtesy" changes, from person to person, region to region, and time period to time period. It's unwise to allow yourself to be offended or bothered by people with different ideas about what constitutes "basic courtesy." Unless you want to be perpetually unhappy, either choose to not be offended, or choose to avoid encounters with people of another ilk than yourself. Personally, I recommend the former.
There's nothing inherently angry or controlling about what nagrom posted. I feel the same way nagrom does, and I don't waste any of my time trying to change others and it doesn't make me mad if they need Facebook open to make it through dinner. I just avoid going out with them as much as possible, in exactly the same way that I avoid eating with people who don't close their mouth when they chew.
I agree with huggyface. The parent post was ridden with angry sentiments by the original poster. In my case, I consider good manners towards all the patrons to keep your phone in silence/vibrate in a restaurant/movie theater/bar because it might impact the ambient slash "moment" of other people that surround you. That doesn't mean I'm not taking a call if I deem it important, and depending on the place I might go outside to take said call. I might even need to keep my phone on the table to actually notice the call because of the noise inherent on some types of businesses.
Browsing Facebook while having dinner with someone is very offensive, I agree. It is also offensive to get "angry" because I took a call from my neighbor telling me that my grandma fell on the stairs, my work because the servers imploded and we're loosing thousands of dollars a minute, or my brother calling to tell me his girlfriend said yes to his marriage proposal.
My family, livelihood, and friends are all going to be more important to me than someone's arbitrary definition of table/movie-theater manners. I'll take steps to minimize the amount of inconvenience caused by having to be reachable during such events, but I will not apologize (actually I will as a courtesy, apples to oranges I guess) to having to interrupt whatever small talk I'm having because I got a call I deem more important.
It's your prerogative to not go out with people like me I suppose, but guess what, it would be mine to not go out with people that believe they're so much more important than other people's needs and wants.
"but I'm really hoping for a distraction."...."socially acceptable to fuck around with phones"..."I guess that rewards for not being a dick are more popular than explicit punishments for being a dick?"
Their post was littered with resentment and anger.
I just avoid going out with them as much as possible
Good for you. Those are the choices you get to make, controlling yourself instead of controlling others. It's probably a welcome gesture by the other party, given that they've clearly indicated that you are less important to them regardless.
Do you think those are contrasting points? There is a subtle wording difference that means the world.
If I'm at dinner with a casual friend or workplace peer, my family and even critical professional activities are more important than them to me. That doesn't make me more important than them, though, which is what enrages so many people, sure that they need to put people in their place.
No matter what subtleties you wrap the difference in, relative importance is what you're communicating to everyone else at the table whether you intend to or not. If that's your priority then so be it, but don't be surprised if people who prioritized being present at dinner aren't fond of your choice.
I'm not trying to change you though. Like I said before, I just wouldn't want to eat dinner with you if you couldn't leave the phone alone.
"If I'm at dinner with a casual friend or workplace peer, my family and even critical professional activities are more important than them to me. That doesn't make me more important than them, though, which is what enrages so many people, sure that they need to put people in their place."
I think it is a confusion of expectations that creates the conflict. You expect it to be understood that this is how you prioritize. Others may not have expected the same priorities.
Id say it means that you generally don't value the time spent with the person you are in the physical presence of. There are always exceptions, but if you agree to meet me for lunch or dinner it is because I value that interaction. If you blow me off for some routine call or SMS/MMS, expect me not to invite you or accept an invitation in the future.
I'd argue that even though I might value your time and inherent effort of meeting me somewhere, I also would also establish that there are things more important than anyone's company and small talk over dinner. I would feel like a total jackass if I complain (even to myself, without voicing my distaste verbally/publicly) about you taking a call or message, and then you telling me that you have to leave because your father is in the hospital.
Sure I agree it's distasteful to answer a random sms while we're having a beer, and I would never do such a thing - but it's also very distasteful to voice concerns/annoyance about the value of any current interaction versus whatever inherent need a person has to be reachable for communication.
If you tell me that a I'm a jerk for answering a random call and interrupting for 5 minutes while talking to my girlfriend about trivial or banal stuff, I would totally agree. But that kind of sentiment should generally be saved for when you realize someone is being a jerk, not to immediately label a person for having his phone reachable or before an explanation of the reason for taking a call or message.
I'll give it to you that you aren't a hypocrite - you have no problem with cell phone conversations at the table, and you'd grant other people the right to do this in exchange for your own right to do it.
It doesn't work, though. What you're proposing essentially allows the lowest common denominator to impose a low standard of basic courtesy on everyone else.
Can you think of anything you wouldn't want someone else doing at the table, even in exchange for your own right to do it?
you have no problem with cell phone conversations at the table
It isn't the lowest common denominator. It is the evolution of society, empowered by new communication methods. I need to know if the nanny has an issue, just as I need to react to critical professional demands, as quickly as possible. Modern technology has made that possible. If someone is personally offended because I keep my smartphone with me and check if I receive priority messages, that's rather quaint and traditionalist, but it doesn't blend with the real world.
I said earlier that I never field a call at the table. That isn't completely true. I (discretely, I hope) noticed that the green light was flashing, and I went outside to listen to the message, because it was from an unlisted number and like you I have kids, one in school, one in daycare.
I guess the big difference is that I don't say "deal with it". I actually felt I owed my colleagues a quick explanation and apology.
Think of how different the reaction would have been if instead of writing this:
"If I am at dinner and I decide that I want to keep on top of my device (I have four children and a very busy professional life), those with me have to deal with it. Most of the time my phone is more important than the discardable conversation happening over a meal."
you'd written something like this instead:
"Because I have four children and I want to be reachable in an emergency, I do keep an eye on my phone and occasionally take a call outside. But I try to do this in a way that minimizes the disruption to the people at the table. I hope that people can understand the distinction between putting your phone on the table and fielding casual conversations."
People are generally pretty nice and understanding if you're respectful rather than telling them to deal with it.
My experience with people who like to cite edge cases for their habits is that those cases are either extremely rare, or that issues of less importance are "artificially escalated" to high importance to support their case.
This is exactly it. This submission is about a restaurant removing the smartphone from one's person, and the post I replied to took significant issue with people putting their smartphone on the table (which they usually do if they have a notification LED and want to essentially forget about it -- it is actually the least interrupting mechanism of using a phone). So many seem to have taken my reply as some blanket endorsement of endless smartphone use, presenting it as a extremes when it is nothing of the sort.
The issue isn't about angry people controlling others, or about the balance of who regards who as "more important", a point that I think you've mistakenly identified as the crux of the issue. It's about manners and social courtesy.
If the people you dine with are "getting angry" and trying to "control" your actions, the likely reason is that you're being offensively rude, and are missing the social signals of people's frustration and displeasure.
There's a time and place for everything, and much like farts and taking a piss, using your phone should only follow an "Excuse me" as you leave the dinner table.
Ever turn your phone off for the duration of a movie, concert, or show? You only use your phone in the lobby, or at the more casual bookends of an event. This isn't rocket science.
Folks who dine with someone who is constantly dropping the conversation of a shared meal to look down at their phone will indeed "deal with it". They'll simply think of you as overwhelmed and rude, and will hesitate to invite you again.
It's very strange how you think you're setting me straight. I wonder if you really think you're enlightening me here.
I am very aware of social nuances and cues. I have no lack of people who want to repeatedly go to dinner with me. I also have a busy life, however, so simplified caricatures of the utility of modern conveniences give me a little chuckle, hence my original post. This story is a restaurant capitalizing on the resentment of the few.
Given how short a timeframe (4 months) Google gave the development of the Nexus 7
The Nexus 7 is a rebranded Asus device that was talked about last year. Then consider the Galaxy Tab, and the basic fundamental that Android has never dictated the sizes of devices.
Only Apple so tightly coupled their API with very precise, specific form factors and sizes. It is impossible to view Apple's move (especially after widely criticizing a 7" tablet -- recall the sandpapered fingers nonsense) as anything but a me too maneuver.
I'm being pedantic, but wouldn't the Air be a more appropriate netbook comparison?
As for the sandpapered finger thing, I imagine that you're right, but at the time, I wouldn't necessarily think the sandpapered fingers comment was just blowing smoke.
I'd guess that Jobs was simply conveying his findings at the time. Obviously, this is purely speculation, but the in years leading up to the iPhone and iPad touchscreens and software weren't that great and users weren't familiar with them either. I'd wager that the testing that went into touch-target optimization led to results that made Apple/Jobs uncomfortable with releasing a 7-inch.
>I'm being pedantic, but wouldn't the Air be a more appropriate netbook comparison?
The Air predates the brief netbook craze. The netbook was supposed to be the cheap computer you can take everywhere. People were surfing the net from their couch, using it on long commutes, and bringing them everywhere. The iPad pretty much killed the nascent netbook market.
The Mac Air took a couple iterations to get popular, but it's now cannibalizing the college kid/small business person's laptop. The Air might be as light as a netbook, but it's not a cheap compromise, like the netbooks were.
I'd guess that Jobs was simply conveying his findings at the time
Apple had itself pretty tied up with two form factors, with no near term hopes of coming out with a form factor between the two. Jobs was simply trying to undermine Samsung's efforts (though Android succeeded in doing that for him). Seriously, if 7" doesn't make sense for a touchscreen interface, how could a 3.5" screen possibly make sense? Only in Apple world is a 7" tablet simply a 10" shrunken.
I wonder if some of his gentler tone has to do with Apple's success. It's easier to be gracious when you feel you are on a winning/popular side, and there are certainly fewer reasons for Apple users/fans to feel persecuted by misinformed pundits nowadays.
I would observe that it has been exactly the opposite -- it was at the height of Apple's success, during the period when they essentially owned the market, that Gruber got that obnoxious swagger and ill suited confidence. With Apple becoming a player instead of the player, Gruber seems to be maintaining relevance by removing the attitude, to very good effect.