I translated your comment in the following manner: There is not, and never will be, a single generic resolution for arguments such as this. In this case there is no question, yet people are giving answers. This blog post did not say "Should we or should we not comment our code." A generic guideline such as that suggested by the blog author should be tailored to the environment, based on the workflow and expectations. Take a stranger's advice with a grain of salt, in other words, because you are just as strange to him as he is to you.
So then people post rants about how they've seen badly commented code, or completely without comments, or that they don't comment things that should be obvious and everyone has a soapbox. The original intent of the blog post was, as I understand it, to remind people of the importance of keeping your code in good order - in this case by including comments where needed, and excluding where not needed. Seems fairly simple, but here we are with hundreds of comments. Le sigh.
Rewriting a core GNU tool function because you don't understand it simply will not happen at this point - too many downstream distro maintainers will simply bypass the work. If you're the lone gun on inherited code, rewriting it is probably a lot more justifiable. If you're the app owner and lead dev, and no one else uses your code (except maybe unmodified) you can do as you please. In fact, under these scenarios, the degree of commenting required is going to be different. If you write your own code for yourself, you might not need comments. If you intend to maybe someday release the source, you might need to comment things that seem obvious to you.
I don't understand the confusion here, unless people are just taking advantage of the opportunity to vent here instead of at their own jobs, where it would do more good. What would happen if everyone who commented read every single 0-or-above comment? Would opinions change?
To supplement my comment elsewhere, what you're suggesting can be more easily documented in a tech design type of document, not inline. It's easier to find that way, and you can include pretty pictures too.
Re:One person's myth is another person's fact.
on
Myths About Code Comments
·
· Score: 2, Interesting
My opinion is you're a stubborn idiot.
Allow me to explain. I'd love to see some concrete evidence that commenting is "pretty well proven" as well as a quantified "price of maintaining comment-free code" which you think is "well-known." The very existence of this post, and all of its replies, suggests differently. This has been argued on both sides since the idea of comments first came up. Sure there are commando style morons who refuse to type one comment, just like there were countless commandos who optimized by bypassing the operating system and going directly to the BIOS in the early days. There always will be.
After decades of software engineering, we moved from spaghetti coded ASM to readable C to object-oriented, class-based programming. Lessons learned early on don't necessarily apply. In fact, the higher level the language, the less documentation seems to be required. If data-hiding is always enforced, there are page after page of code which require absolutely zero comments because they are just get/set methods. The odd "setting this has side effects, which is why we do it this way" is an exception, not the rule.
The real exception is when you get into complicated event-driven models supported by objects. It's sometimes impossible to tell, looking at your single file where you need to make a change, which object uses this feature, or which event ultimately triggers this method. I've read some of that code, Java being my favorite example, and it's usually very difficult to see where something gets kicked off. Usually I solve it by making a breakpoint and checking the stack trace - but you can't require that someone reading your code have a working dev environment they can just open the code into and start debugging - it has to be understandable while being read, not executed. That stuff needs documentation - but it might be better done in external tech design type docs, not inline.
Very few programmers are of the hotshot variety - you might be misinterpreting a little. If I build a bridge and someone tears it down and builds a functionally equivalent version, I tend to take it personally. I'm no hotshot and I don't think that person should stay away from my perfect code, but it's something I created being thrown away or altered for no apparent reason. "[I]f you are not a hotshot you have no business touching [my] code" has little to do with the real world because it is rarely seen in the real world. No one gets permanent ownership of a file or block of code, and if you run your ship that way it's your own fault. Set up the environment so that's not even possible. Cross-training someone to be your backup is a relatively common thing to do, and eliminates the possibility of having that hotshot, so if he/she exists, it's management's fault for either enabling or not firing that employee.
Throwing away code because it's "not maintainable" simply due to lack of comments is laughable. Worse than laughable, it's cryable. Requiring that everything be commented so you can put a check mark in the "my team always comments their code" box makes you sound like the coder's worst nightmare. Creating work for no reason is absurd, but it allows management to claim they are understaffed and need a bigger team. That's the way management promotes itself, seems like - require a bigger team, then use that to show you can handle a bigger team, and it keeps growing because you have people 25% dedicated to commenting code. You're completely missing the point.
We have had requirements as a result of ISO 9001 and CMM qualification which were just as blind as you are, and as a result have code which does not match the comments at all. The functionality is clear based on context, but in the rush to get a feature out by a client commitment date (that is not within our control) sometimes these things get overlooked. It is far better to reserve comments for when they are needed. And if they are not needed, they should not exist. You want a theoretical team which updates comment
Which makes this job a trap. "Linux and Open Office Compete Lead, US Subsidiary (CSI Lead)" is supposed to change perceptions of Microsoft in the open source ecosystem. But it's an impossible task because every slight misstep will put them back at zero. While part of the company wants to do the right thing, the other part is tethered to its old ways, and can't be moved.
Do a good thing like CodePlex, then essentially forget about it (or intentionally let it drop) and you have a net NEGATIVE on the perception gain. You have to commit to compete or to embrace (without the other two E's). No middle ground.
The more I think about it, the more I believe recordings should be promo materials only. Payola scandals demonstrate that recording companies want their music heard, for free, and are willing to pay to get that music heard at no cost. It's for promotional reasons - to make you go buy the album that contains the song you hear 30 times a day.
It's actually more complicated, they pay for play so that a single appears on Top 20 lists as reported by SoundScan or whatever else tracks airplay. Then the recording artists are billed as having a "top 10 hit single" and it's the same old peer pressure "bandwagon" advertising scheme.
So they are giving something away for free, to entice you to buy it. Once you've heard "Hit me baby one more time" enough, say every half hour for weeks at a time, you no longer want it.
Here's what I say. Any record company investigated for payola with any wrongdoing found, temporarily loses copyright on whatever they are trying to get played. Skip the part where you pay radio stations to play it - you don't pay the radio, I don't pay you, so no one's out any money. That money can go towards other things. That will end most of the manufactured pop tarts.
If Britney Spears isn't even going to *sing* at her concerts, what's the draw? Here's a recording, you can experience a modified, re-recorded version of this at high volume while drinking alcohol in a large room with one or two of your friends and thousands of strangers who don't mind spilling things on you. The spectacle, of course, is the draw. So why not make that their primary source of income? Record something, make it popular by having it be good enough to be put on youtube or some p2p network and get word around. Then people come hear you when you "go to work" at the concert.
gp's point was more along the lines of: If you're going to copy the way Windows looks by using parts of real Windows, you're not much closer to having a legit product. The summary suggests this is a way around MS cracking down on XP copying. If that is the case, then MS will just start cracking down on GUI knockoffs that use the same graphics.
Your point was more along the lines of: cracking down on IP rights is hard in China. These are not mutually exclusive. Genuine Advantage type things make it easier for MS to "crack down" on Windows copies, but if anyone sells this as real Windows, MS is going to go through the roof with copyright, trademark, and any other kind of infringement claims they can find. Make sure you understand this part - they don't care if it results in legal wins, they will just want to scare people who like to say on the legit side of things into paying MS for real Windows instead of buying the knockoff.
As an aside, to the user the graphics that represent the OS actually IS the OS. I click the red fox looking thing in a circle, and the Internet starts. I don't care that the FireFox icon is just a clickable region within the Shell, which is a relatively simple (if unique) application running on the Windows OS. To me, that's what Windows looks like. Using a competitor's parts to make your product look like the competitor's is one of those things that is tolerated until someone makes a fuss, both in USA and China. Look at all of the GPL violation lawsuits - including BusyBox makes several products appear very similar, until someone complains about all of that unlicensed source code (the terms of the license were not met so the license was revoked). It's all fine until someone uses strings and sees familiar text in places and then makes a stink. That's where we are right now, waiting for MS to make a stink.
Windows User: I want do change my ip address (for whatever reason). Where do I start? Oh, Start button. I want to control something. Oh, control panel. IP Address is something about networking, so Networking. Connecting things? Ah, TCP/IP contains that magic IP thing I'm looking for. No settings I see here, what else can I do? Is there a place for Advanced users? Aha, advanced, here it is. Enter info, click OK a bunch of times.
Linux user: I want do change my ip address (for whatever reason). Where do I start? $ip ip: command not found $network network: command not found $help network help: (insert usage text) $sod off you monkey licker sod: command not found
OK, back into the windows of Linux. Where's the web browser? Something that says WEB or INTERNET or something? Oh screw it, let's just borrow Jeff's copy of XP and install it.
I have Crohn's disease, and no colon. If I have to poop, it's going to be with little warning, runny, and warm. If I have to go, you get the choice of allowing me or cleaning up the mess I leave. And it will be messy, since it's going straight down my pants leg into my socks and onto the ground, immediately.
That said, I have a card from the Crohn's and Colitis foundation which explains this, and I have a note from my doctor, written on prescription paper, which outlines this. I produce both items and say "It's your choice - I'll just stand here while you decide, or alternatively I'll let you know when no decision needs made."
If you have medical problems, get it documented and have it ready with you. Or else you'll probably get shot by an air marshall for being human.
What's with the negativity? Even if most = 99.9%, there's still enough potential support to make asking for help a worthy effort, especially since it didn't cost anything. So just read gp post again, and ggp, and see if there's anything new in your comment.
In fact, since the entire purpose of the site is to protect most people from those few who try to keep secrets, times like these are when help is needed the most.
Sharepoint is a webserver and portal, so you don't have to write code (unless you want to, to get around some retarded limitation inherent in Sharepoint, which you will have to do at some point anyway).
You can set up a portal, link with AD credentials, include plugin "web parts" to do specific functionality, all kinds of stuff without having the first clue what a web server is.
That's why it's Apache killer. It also kills the servers, the users, the users' files, the admin's overall quality of life, and darkens the sky for blocks around. But those are clearly listed as features.
C++ WxWidgets was a niche solution for a temporary problem. It's basically a portable copy of MFC with a few extra features.
I got all excited about cross-platform GUI work, bought the book, got 3 chapters in, and all of a sudden had a huge WTF moment. Seriously, it was like looking at a painting of attractive women bathing, then you realize they are guys, and they are having sex and killing each other in the most creative ways imaginable. Wondering how I misinterpreted it at first, trying to see the original conception again, and feeling suddenly awkward about the erection is about as close of a metaphor as I can give to that moment.
With scripting languages I'm sure it's all cool and stuff, but for C++ you'd be better off holding someone's grandmother for a Linux GUI ransom. Or, if you're really super crazy, try Qt instead.
The "Safe Harbor" defense is a red herring. That doesn't apply because IsoHunt wasn't hosting material and then taking it down when asked. It was inducing users to click links which allowed copyright infringement.
The Berne Convention agreement, in conjunction with a closed court case, makes it very likely that Canadia will throw the book at this guy.
Basically, this is the final patch of the legal loophole that allows linking to content as long as you're not hosting it. You have to be a generic search engine, not one dedicated to finding illegal software. (The name "ISO Hunt" does not have that many non-infringing connotations, especially the comments made on the site about being the best place for juarez).
Call and complain. Average cost per call, considering overhead, is anywhere from $20-$40 in the call center industry, even more if you have dedicated in-house support.
Prepare a complaint and read it, word for word, to the person you are talking to. Remember you are not talking to the person who made the policy, so refrain from profanity, yelling, and personal insults.
But do take the time, at length, to voice your displeasure. If you're the only one who calls, at least you tried. If a million others also call, they are going to look for what's driving all of these calls and fix it ASAP. Cos no one wants to pay for call center overtime, or ramping up staffing.
The trick is, let someone know you're unhappy and it might change. Keeping quiet guarantees it won't. Example: "Dear abby, I have a problem but I haven't told anyone about it because of some arbitrary reason. Answer: Tell them, simply and directly." It's in the newspaper every day - try it out once.
I have the DVD version of Coraline, assuming you meant that not the theater. Playing 720x480 DVD source on a full 1080 TV with the proper color temperature setting was an extremely pleasant experience. My gf hates 3D, but loved the way they did this one. They chose a color palette which matched their glasses, so you could actually see red objects being red, instead of seeing them as half-present ghosting.
I wish 3D movies came with an 'optimize your TV' setting like the THX demo DVDs have - adjust the temperature until you can see a single line, close one eye and move to the next chapter to continue.... but even then, people have different sensitivities to colors, so even calibrating the TV correctly might give an imperfect picture because you'll unbalance the red when you adjust the blue. Knowing that, Coraline in 3D was *still* a monumental achievement.
The trick is to always see it in the theater, with polarization. I have only seen Captain EO that way, and I'm not going to see another until I have polarized 3D at home, so it doesn't ruin the experience when I regress to colored video.
Projectors are getting cheap these days, you can get some crappy ones with a polarizing filter, all you need is a dual-output video card and a silver screen and you get polarized 3D at home. Not exactly cheap, but very cool.
I'm getting tired of the "buy a new library" argument already. Do you really purchase every VHS movie on DVD and then Blu-Ray? Do you purchase every LP on cassette tape, CD, SACD, DVD-Audio?
There might be a few I'm willing to upgrade, assuming the new version is remastered. The amount of work Warner put in remastering its old Technicolor library made it almost a requirement that you get the latest Special Collector's Edition of Wizard of Oz, because it has never, even in first-run theaters, been that clear. Mostly, there is no reason to upgrade unless your player stops working. And at that point, do you really want to hear that music, or just whine about not being able to? Format shifting is nearly automatic at this point, you can digitize tapes and records, and everything else is digital anyway. Just convert it or have someone convert it for you - don't re-purchase it.
Personally, I download most stuff in the new format because the record company sold me a license to listen, not a physical product, according to statements made under oath in p2p trials. I have that license to listen and already paid for the product, so I feel I can mount a decent defense if accused of downloading. Uploading is something I try to prevent of course because I don't have a license for that.
I develop software for a living. Here's how we do it. A customer wants something, we tell them to pay us a number of dollars. Pretty simple really.
If you're developing free software just because it doesn't exist, or you have an itch to scratch, or whatever reason, you are doing it for yourself and everyone else can benefit.
Developing software for a living means making a product people want to buy. If you want to create something and hope people buy it, that's your choice. If you want to develop on-demand, you can produce the functionality and still open the code.
Point is, traditional software companies make a product and then try to sell infinite copies. Developing software for a living means writing code that does something because someone needs that functionality. Those are two completely different things.
It's easier to make a product and put it on shelves or make it available for download, but that's business and marketing and all the stuff I hate. It's not software development.
There are lots of open-source projects which give away the code and sell support contracts. SAP makes money by selling a nonexistent package and then selling customization work. Shareware authors give away their work and ask people to send money in exchange for usage. ID releases source code for their old gaming engines when they have an improved version to charge for.
Now, consider that you develop functionality as requested by your employer. The circle is closed at that point, what they do with it is entirely up to them.
I would claim that basing your business model on selling something which is easily copied is a terrible business model. Analogous to music, give away the CDs but charge admission for the show. This requires that you get more work, instead of resting on your laurels. But you would rather sell a million copies of something than do more work, or at least your company would, right?
You can earn money just for writing software. Microsoft could easily take bribes to add or fix functionality. Right now they'd tell you to take a hike, but change the business model and now whatever you want Windows to have, it has. I'll pay one million dollars for this feature, $40k for fixing this, $20k for updating that.
Or another way, if everyone goes off development to pump gas, eventually someone would crawl begging PLEASE I have to have this software done, I'll pay anything you want. And now you get paid to WORK instead of to fill out TPS reports and monitor and documentation and blah blah.
Information is not aware of what it wants, and as far as I know we cannot ascertain its desires. I'd suggest not prefacing comments with this type of silliness.
It makes more sense to say that it's natural for someone to come up with a better mousetrap and then say "Hey y'all, look what I did." And then everyone uses the better mouse trap. "How silly for someone to ask for royalties on such an obvious idea!" one might exclaim. But if it were obvious, everyone would already be doing it.
The point is, people share ideas all the time, it's natural. Information itself doesn't sit on a hard drive yelling "download me!" It's just pure silliness, a catchphrase. But it doesn't sound so awesome when you say "humans naturally share ideas" does it?
Brian May is an astrophysics Doctor of some type isn't he? What did Queen know and when? How did they know about radio GaGa? How did they write Bohemian Rhapsody to fit a movie that wasn't even scripted at the time? I bet they knew Freddie has gay before anyone else did. How could they have known that "Flash.... ohhhhhhh, saviour of the universe!" would be the most insidious earwig ever? WHAT ARE THEY HIDING!?
Sounds like a rant for a 911 truther, not a lost mail archive discussion. It's clear from the closed-door meetings and other stifling that the Bush administration wanted as much privacy as possible. I'm sure they were trying to achieve the bare minimum allowed records archive, but not capture everything. Rove's non-governmental coverage, used for government work, is the best example.
Yes they tried to cover up a lot, no they weren't good at it. Doesn't change the fact that they were extremely closed to the public.
When any argument is taken to the extreme, it becomes ridiculous. At that point you have to stand back and get some real facts. Based on the facts at hand we can say: If the Bush administration could have done everything in complete privacy, it seems like they would have done so. Good and bad, conspiracy or no. Mislabeling e-mails so they can be recovered if threatened with prison time sounds plausible compared to planning multiple hijackings, yes?
The problem is the administration played everything so close to the chest, it's impossible to tell what was intentional and what was ineptitude.
If you believe you have been wronged, you have the right to request your argument be heard. It's up to your lawyer to inform you if you are an idiot, because s/he can be sanctioned and ultimately disbarred for bringing frivolous suits.
Since McD had already settled similar suits for approximately $500k, it seems reasonable to award punitive damages in that amount, and punish McD's for fighting something they had already (essentially) admitted to in other cases. That's what happened in a nutshell. $160k to cover medical and legal bills, and $400k or so punitive.
This is the same principle the Indian court is using - entities with large amounts of money for defense shouldn't mount a defense simply because they can afford it, or make it more difficult than it should be to have your argument heard.
There's no question the woman was at fault, the jury said her responsibility was 20%. The case was presented because the coffee was way hotter than a reasonable customer would expect, and she did require medical treatment as a result of a product offered. Skin grafts are a pretty severe requirement, regardless of whether it's a third degree burn.
Her lawyers successfully argued that the coffee was unreasonably hot, and were a potential safety problem just like exposed electrical wiring on Christmas lights. Essentially, the argument was that McD's was handing out an unsafe product, and there were already several other similar suits, some of which McD's settled, providing evidence that McD's should have been aware of the problem. There are differing opinions on how hot coffee should be, especially since it is pre-made, sits around, and then is poured into a cup, cooled by cream and/or sugar and/or sitting in the car. Customers don't want cold coffee by the time they are ready to drink it.
Basically the case comes down to what the restaurant should plan for, and what the customer should expect. This particular jury sided with the plaintiff based on evidence presented. All she wanted was coverage of medical costs, McD's offered a token amount, and the final award from the jury was mostly punitive because they believed McD had plenty of chances and reason to settle pre-trial, but mounted a defense instead.
Basically they said the suit was frivolous, not from the plaintiff's side but because it should have already been settled by McD's based on other cases. $2.7 million was reduced by the judge to under $500k, and finally McD's settled (after appeals) for under $600k. Rather reasonable in that context, I'd say.
It seems to be up to the judge to determine a reasonable fee. That's just based on me reading multiple RIAA cases. Can't remember which one, but RIAA asked for their entire bill to be covered and the judge reduced the grant to a small percentage of that, with a comment that the defendant could not be expected to foot the entire bill.
Oddly enough, the judge didn't touch the question of whether a fleet of highly paid, dedicated lawyers would provide a better argument than a single lawyer working on multiple cases at the same time. Also, if the defendant had the money to spend on RIAA's legal fees, he probably should have spent it on his own defense instead.
I know, citation needed. But since law is all contextual anyway, it would server you better to find it yourself than for me to look it up.
Code reuse is the more likely problem. The biggest problem is that each component has to assume there is no UI. It could be in a GUI, or commandline, or silent mode, or a service, or whatever else, so it doesn't pop up an error message - it just returns a value.
You tell your handy security library to use the internet library to connect to the microsoft server thingie, and the internet library doesn't have any reason to know about certificates. The security library assumes the certificate will always be valid (or the network will take care of that), so it doesn't have a "bad certificate" return value. Then the app doesn't check the return values (only success/fail), or it's not in the list of things to check.
Detailing your actions makes it easier to disassemble and comprehend, so lots of proprietary coders don't do that. Bubbling up an exception could have a detailed description of why something failed, but proprietary coders don't want end users to see the gory details of what their code is doing. "Confusing error messages" is one of those things Windows users hate, so they generally either detail what you might do to fix it or, if it's too detailed or on a server instead, just skip that part.
It's nothing the user can do anything about, so why bother reporting it? Plus you need to make translations and test cases to ensure your message pops up in all languages when the cert is expired... more work when you could just ship it, and list a known risk that the server team has to keep the cert up to date.
I know, tldr. Black box programming combined with allowing ignorant users peace of mind will result in this type scenario every time. I always chuckle when I see "Table or view does not exist" errors in Oracle SQL when I can see the table in the list of ALL_USER_TABLES or similar. I don't have access to it, and revealing that it exists but I'm, not allowed to read from it might be a security violation the same way "bad username" vs "bad password" gives brute-force people more information to work with so you say "bad username/password combination" and now they don't know if the user exists. Maybe they thought of that, or maybe they tried to select, got 'denied' return code, and translated that into one they do have a text string for.
So many possibilities, of which yours is the least likely. Exceptions can be done well, there just aren't enough good examples out there so it takes a serious debugging headache before someone looks at a better way of doing it. Then Management says the errors are too wordy and you're back to "Unexpected error" meaning everything from "Network down" to "I crapped my pants".
I translated your comment in the following manner: There is not, and never will be, a single generic resolution for arguments such as this. In this case there is no question, yet people are giving answers. This blog post did not say "Should we or should we not comment our code." A generic guideline such as that suggested by the blog author should be tailored to the environment, based on the workflow and expectations. Take a stranger's advice with a grain of salt, in other words, because you are just as strange to him as he is to you.
So then people post rants about how they've seen badly commented code, or completely without comments, or that they don't comment things that should be obvious and everyone has a soapbox. The original intent of the blog post was, as I understand it, to remind people of the importance of keeping your code in good order - in this case by including comments where needed, and excluding where not needed. Seems fairly simple, but here we are with hundreds of comments. Le sigh.
Rewriting a core GNU tool function because you don't understand it simply will not happen at this point - too many downstream distro maintainers will simply bypass the work. If you're the lone gun on inherited code, rewriting it is probably a lot more justifiable. If you're the app owner and lead dev, and no one else uses your code (except maybe unmodified) you can do as you please. In fact, under these scenarios, the degree of commenting required is going to be different. If you write your own code for yourself, you might not need comments. If you intend to maybe someday release the source, you might need to comment things that seem obvious to you.
I don't understand the confusion here, unless people are just taking advantage of the opportunity to vent here instead of at their own jobs, where it would do more good. What would happen if everyone who commented read every single 0-or-above comment? Would opinions change?
To supplement my comment elsewhere, what you're suggesting can be more easily documented in a tech design type of document, not inline. It's easier to find that way, and you can include pretty pictures too.
My opinion is you're a stubborn idiot.
Allow me to explain. I'd love to see some concrete evidence that commenting is "pretty well proven" as well as a quantified "price of maintaining comment-free code" which you think is "well-known." The very existence of this post, and all of its replies, suggests differently. This has been argued on both sides since the idea of comments first came up. Sure there are commando style morons who refuse to type one comment, just like there were countless commandos who optimized by bypassing the operating system and going directly to the BIOS in the early days. There always will be.
After decades of software engineering, we moved from spaghetti coded ASM to readable C to object-oriented, class-based programming. Lessons learned early on don't necessarily apply. In fact, the higher level the language, the less documentation seems to be required. If data-hiding is always enforced, there are page after page of code which require absolutely zero comments because they are just get/set methods. The odd "setting this has side effects, which is why we do it this way" is an exception, not the rule.
The real exception is when you get into complicated event-driven models supported by objects. It's sometimes impossible to tell, looking at your single file where you need to make a change, which object uses this feature, or which event ultimately triggers this method. I've read some of that code, Java being my favorite example, and it's usually very difficult to see where something gets kicked off. Usually I solve it by making a breakpoint and checking the stack trace - but you can't require that someone reading your code have a working dev environment they can just open the code into and start debugging - it has to be understandable while being read, not executed. That stuff needs documentation - but it might be better done in external tech design type docs, not inline.
Very few programmers are of the hotshot variety - you might be misinterpreting a little. If I build a bridge and someone tears it down and builds a functionally equivalent version, I tend to take it personally. I'm no hotshot and I don't think that person should stay away from my perfect code, but it's something I created being thrown away or altered for no apparent reason. "[I]f you are not a hotshot you have no business touching [my] code" has little to do with the real world because it is rarely seen in the real world. No one gets permanent ownership of a file or block of code, and if you run your ship that way it's your own fault. Set up the environment so that's not even possible. Cross-training someone to be your backup is a relatively common thing to do, and eliminates the possibility of having that hotshot, so if he/she exists, it's management's fault for either enabling or not firing that employee.
Throwing away code because it's "not maintainable" simply due to lack of comments is laughable. Worse than laughable, it's cryable. Requiring that everything be commented so you can put a check mark in the "my team always comments their code" box makes you sound like the coder's worst nightmare. Creating work for no reason is absurd, but it allows management to claim they are understaffed and need a bigger team. That's the way management promotes itself, seems like - require a bigger team, then use that to show you can handle a bigger team, and it keeps growing because you have people 25% dedicated to commenting code. You're completely missing the point.
We have had requirements as a result of ISO 9001 and CMM qualification which were just as blind as you are, and as a result have code which does not match the comments at all. The functionality is clear based on context, but in the rush to get a feature out by a client commitment date (that is not within our control) sometimes these things get overlooked. It is far better to reserve comments for when they are needed. And if they are not needed, they should not exist. You want a theoretical team which updates comment
Which makes this job a trap. "Linux and Open Office Compete Lead, US Subsidiary (CSI Lead)" is supposed to change perceptions of Microsoft in the open source ecosystem. But it's an impossible task because every slight misstep will put them back at zero. While part of the company wants to do the right thing, the other part is tethered to its old ways, and can't be moved.
Do a good thing like CodePlex, then essentially forget about it (or intentionally let it drop) and you have a net NEGATIVE on the perception gain. You have to commit to compete or to embrace (without the other two E's). No middle ground.
https://careers.microsoft.com/JobDetails.aspx?ss=&pg=0&so=&rw=1&jid=9914&jlang=EN
The more I think about it, the more I believe recordings should be promo materials only. Payola scandals demonstrate that recording companies want their music heard, for free, and are willing to pay to get that music heard at no cost. It's for promotional reasons - to make you go buy the album that contains the song you hear 30 times a day.
It's actually more complicated, they pay for play so that a single appears on Top 20 lists as reported by SoundScan or whatever else tracks airplay. Then the recording artists are billed as having a "top 10 hit single" and it's the same old peer pressure "bandwagon" advertising scheme.
So they are giving something away for free, to entice you to buy it. Once you've heard "Hit me baby one more time" enough, say every half hour for weeks at a time, you no longer want it.
Here's what I say. Any record company investigated for payola with any wrongdoing found, temporarily loses copyright on whatever they are trying to get played. Skip the part where you pay radio stations to play it - you don't pay the radio, I don't pay you, so no one's out any money. That money can go towards other things. That will end most of the manufactured pop tarts.
If Britney Spears isn't even going to *sing* at her concerts, what's the draw? Here's a recording, you can experience a modified, re-recorded version of this at high volume while drinking alcohol in a large room with one or two of your friends and thousands of strangers who don't mind spilling things on you. The spectacle, of course, is the draw. So why not make that their primary source of income? Record something, make it popular by having it be good enough to be put on youtube or some p2p network and get word around. Then people come hear you when you "go to work" at the concert.
gp's point was more along the lines of: If you're going to copy the way Windows looks by using parts of real Windows, you're not much closer to having a legit product. The summary suggests this is a way around MS cracking down on XP copying. If that is the case, then MS will just start cracking down on GUI knockoffs that use the same graphics.
Your point was more along the lines of: cracking down on IP rights is hard in China. These are not mutually exclusive. Genuine Advantage type things make it easier for MS to "crack down" on Windows copies, but if anyone sells this as real Windows, MS is going to go through the roof with copyright, trademark, and any other kind of infringement claims they can find. Make sure you understand this part - they don't care if it results in legal wins, they will just want to scare people who like to say on the legit side of things into paying MS for real Windows instead of buying the knockoff.
As an aside, to the user the graphics that represent the OS actually IS the OS. I click the red fox looking thing in a circle, and the Internet starts. I don't care that the FireFox icon is just a clickable region within the Shell, which is a relatively simple (if unique) application running on the Windows OS. To me, that's what Windows looks like. Using a competitor's parts to make your product look like the competitor's is one of those things that is tolerated until someone makes a fuss, both in USA and China. Look at all of the GPL violation lawsuits - including BusyBox makes several products appear very similar, until someone complains about all of that unlicensed source code (the terms of the license were not met so the license was revoked). It's all fine until someone uses strings and sees familiar text in places and then makes a stink. That's where we are right now, waiting for MS to make a stink.
Windows User:
I want do change my ip address (for whatever reason).
Where do I start? Oh, Start button.
I want to control something. Oh, control panel.
IP Address is something about networking, so Networking.
Connecting things? Ah, TCP/IP contains that magic IP thing I'm looking for.
No settings I see here, what else can I do? Is there a place for Advanced users?
Aha, advanced, here it is. Enter info, click OK a bunch of times.
Linux user:
I want do change my ip address (for whatever reason).
Where do I start?
$ip
ip: command not found
$network
network: command not found
$help network
help: (insert usage text)
$sod off you monkey licker
sod: command not found
OK, back into the windows of Linux. Where's the web browser? Something that says WEB or INTERNET or something? Oh screw it, let's just borrow Jeff's copy of XP and install it.
I have Crohn's disease, and no colon. If I have to poop, it's going to be with little warning, runny, and warm. If I have to go, you get the choice of allowing me or cleaning up the mess I leave. And it will be messy, since it's going straight down my pants leg into my socks and onto the ground, immediately.
That said, I have a card from the Crohn's and Colitis foundation which explains this, and I have a note from my doctor, written on prescription paper, which outlines this. I produce both items and say "It's your choice - I'll just stand here while you decide, or alternatively I'll let you know when no decision needs made."
If you have medical problems, get it documented and have it ready with you. Or else you'll probably get shot by an air marshall for being human.
What's with the negativity? Even if most = 99.9%, there's still enough potential support to make asking for help a worthy effort, especially since it didn't cost anything. So just read gp post again, and ggp, and see if there's anything new in your comment.
In fact, since the entire purpose of the site is to protect most people from those few who try to keep secrets, times like these are when help is needed the most.
Sharepoint is a webserver and portal, so you don't have to write code (unless you want to, to get around some retarded limitation inherent in Sharepoint, which you will have to do at some point anyway).
You can set up a portal, link with AD credentials, include plugin "web parts" to do specific functionality, all kinds of stuff without having the first clue what a web server is.
That's why it's Apache killer. It also kills the servers, the users, the users' files, the admin's overall quality of life, and darkens the sky for blocks around. But those are clearly listed as features.
C++ WxWidgets was a niche solution for a temporary problem. It's basically a portable copy of MFC with a few extra features.
I got all excited about cross-platform GUI work, bought the book, got 3 chapters in, and all of a sudden had a huge WTF moment. Seriously, it was like looking at a painting of attractive women bathing, then you realize they are guys, and they are having sex and killing each other in the most creative ways imaginable. Wondering how I misinterpreted it at first, trying to see the original conception again, and feeling suddenly awkward about the erection is about as close of a metaphor as I can give to that moment.
With scripting languages I'm sure it's all cool and stuff, but for C++ you'd be better off holding someone's grandmother for a Linux GUI ransom. Or, if you're really super crazy, try Qt instead.
Grokster does apply, because it created the precedent of "inducement".
http://w2.eff.org/IP/P2P/MGM_v_Grokster/
The "Safe Harbor" defense is a red herring. That doesn't apply because IsoHunt wasn't hosting material and then taking it down when asked. It was inducing users to click links which allowed copyright infringement.
The Berne Convention agreement, in conjunction with a closed court case, makes it very likely that Canadia will throw the book at this guy.
Basically, this is the final patch of the legal loophole that allows linking to content as long as you're not hosting it. You have to be a generic search engine, not one dedicated to finding illegal software. (The name "ISO Hunt" does not have that many non-infringing connotations, especially the comments made on the site about being the best place for juarez).
Call and complain. Average cost per call, considering overhead, is anywhere from $20-$40 in the call center industry, even more if you have dedicated in-house support.
Prepare a complaint and read it, word for word, to the person you are talking to. Remember you are not talking to the person who made the policy, so refrain from profanity, yelling, and personal insults.
But do take the time, at length, to voice your displeasure. If you're the only one who calls, at least you tried. If a million others also call, they are going to look for what's driving all of these calls and fix it ASAP. Cos no one wants to pay for call center overtime, or ramping up staffing.
The trick is, let someone know you're unhappy and it might change. Keeping quiet guarantees it won't. Example: "Dear abby, I have a problem but I haven't told anyone about it because of some arbitrary reason. Answer: Tell them, simply and directly." It's in the newspaper every day - try it out once.
I have the DVD version of Coraline, assuming you meant that not the theater. Playing 720x480 DVD source on a full 1080 TV with the proper color temperature setting was an extremely pleasant experience. My gf hates 3D, but loved the way they did this one. They chose a color palette which matched their glasses, so you could actually see red objects being red, instead of seeing them as half-present ghosting.
I wish 3D movies came with an 'optimize your TV' setting like the THX demo DVDs have - adjust the temperature until you can see a single line, close one eye and move to the next chapter to continue.... but even then, people have different sensitivities to colors, so even calibrating the TV correctly might give an imperfect picture because you'll unbalance the red when you adjust the blue. Knowing that, Coraline in 3D was *still* a monumental achievement.
The trick is to always see it in the theater, with polarization. I have only seen Captain EO that way, and I'm not going to see another until I have polarized 3D at home, so it doesn't ruin the experience when I regress to colored video.
Projectors are getting cheap these days, you can get some crappy ones with a polarizing filter, all you need is a dual-output video card and a silver screen and you get polarized 3D at home. Not exactly cheap, but very cool.
I'm getting tired of the "buy a new library" argument already. Do you really purchase every VHS movie on DVD and then Blu-Ray? Do you purchase every LP on cassette tape, CD, SACD, DVD-Audio?
There might be a few I'm willing to upgrade, assuming the new version is remastered. The amount of work Warner put in remastering its old Technicolor library made it almost a requirement that you get the latest Special Collector's Edition of Wizard of Oz, because it has never, even in first-run theaters, been that clear. Mostly, there is no reason to upgrade unless your player stops working. And at that point, do you really want to hear that music, or just whine about not being able to? Format shifting is nearly automatic at this point, you can digitize tapes and records, and everything else is digital anyway. Just convert it or have someone convert it for you - don't re-purchase it.
Personally, I download most stuff in the new format because the record company sold me a license to listen, not a physical product, according to statements made under oath in p2p trials. I have that license to listen and already paid for the product, so I feel I can mount a decent defense if accused of downloading. Uploading is something I try to prevent of course because I don't have a license for that.
decaf.exe.config - no disassembly needed.
<setting name="NotifyUser" serializeAs="String">
<value>False</value>
</setting>
<setting name="CustomMessage" serializeAs="String">
<value>Yay!</value>
</setting>
<setting name="DropperPath" serializeAs="String">
<value>c:\calc.exe</value>
</setting>
<setting name="LDSPhoneHome" serializeAs="String">
<value>True</value>
</setting>
<setting name="LDSKillProcs" serializeAs="String">
<value>False</value>
</setting>
<setting name="LDSDisableNetwork" serializeAs="String">
<value>False</value>
</setting>
It's .NET and they ran Dotfuscator over it, so it's not that simple. At this point it's pretty damned obscure.
It's .NET and they ran Dotfuscator over it, so you're going to have to graduate past bovine intelligence on this one.
I develop software for a living. Here's how we do it. A customer wants something, we tell them to pay us a number of dollars. Pretty simple really.
If you're developing free software just because it doesn't exist, or you have an itch to scratch, or whatever reason, you are doing it for yourself and everyone else can benefit.
Developing software for a living means making a product people want to buy. If you want to create something and hope people buy it, that's your choice. If you want to develop on-demand, you can produce the functionality and still open the code.
Point is, traditional software companies make a product and then try to sell infinite copies. Developing software for a living means writing code that does something because someone needs that functionality. Those are two completely different things.
It's easier to make a product and put it on shelves or make it available for download, but that's business and marketing and all the stuff I hate. It's not software development.
There are lots of open-source projects which give away the code and sell support contracts. SAP makes money by selling a nonexistent package and then selling customization work. Shareware authors give away their work and ask people to send money in exchange for usage. ID releases source code for their old gaming engines when they have an improved version to charge for.
Now, consider that you develop functionality as requested by your employer. The circle is closed at that point, what they do with it is entirely up to them.
I would claim that basing your business model on selling something which is easily copied is a terrible business model. Analogous to music, give away the CDs but charge admission for the show. This requires that you get more work, instead of resting on your laurels. But you would rather sell a million copies of something than do more work, or at least your company would, right?
You can earn money just for writing software. Microsoft could easily take bribes to add or fix functionality. Right now they'd tell you to take a hike, but change the business model and now whatever you want Windows to have, it has. I'll pay one million dollars for this feature, $40k for fixing this, $20k for updating that.
Or another way, if everyone goes off development to pump gas, eventually someone would crawl begging PLEASE I have to have this software done, I'll pay anything you want. And now you get paid to WORK instead of to fill out TPS reports and monitor and documentation and blah blah.
Information is not aware of what it wants, and as far as I know we cannot ascertain its desires. I'd suggest not prefacing comments with this type of silliness.
It makes more sense to say that it's natural for someone to come up with a better mousetrap and then say "Hey y'all, look what I did." And then everyone uses the better mouse trap. "How silly for someone to ask for royalties on such an obvious idea!" one might exclaim. But if it were obvious, everyone would already be doing it.
The point is, people share ideas all the time, it's natural. Information itself doesn't sit on a hard drive yelling "download me!" It's just pure silliness, a catchphrase. But it doesn't sound so awesome when you say "humans naturally share ideas" does it?
Brian May is an astrophysics Doctor of some type isn't he? What did Queen know and when? How did they know about radio GaGa? How did they write Bohemian Rhapsody to fit a movie that wasn't even scripted at the time? I bet they knew Freddie has gay before anyone else did. How could they have known that "Flash.... ohhhhhhh, saviour of the universe!" would be the most insidious earwig ever? WHAT ARE THEY HIDING!?
Sounds like a rant for a 911 truther, not a lost mail archive discussion. It's clear from the closed-door meetings and other stifling that the Bush administration wanted as much privacy as possible. I'm sure they were trying to achieve the bare minimum allowed records archive, but not capture everything. Rove's non-governmental coverage, used for government work, is the best example.
Yes they tried to cover up a lot, no they weren't good at it. Doesn't change the fact that they were extremely closed to the public.
When any argument is taken to the extreme, it becomes ridiculous. At that point you have to stand back and get some real facts. Based on the facts at hand we can say: If the Bush administration could have done everything in complete privacy, it seems like they would have done so. Good and bad, conspiracy or no. Mislabeling e-mails so they can be recovered if threatened with prison time sounds plausible compared to planning multiple hijackings, yes?
The problem is the administration played everything so close to the chest, it's impossible to tell what was intentional and what was ineptitude.
If you believe you have been wronged, you have the right to request your argument be heard. It's up to your lawyer to inform you if you are an idiot, because s/he can be sanctioned and ultimately disbarred for bringing frivolous suits.
Since McD had already settled similar suits for approximately $500k, it seems reasonable to award punitive damages in that amount, and punish McD's for fighting something they had already (essentially) admitted to in other cases. That's what happened in a nutshell. $160k to cover medical and legal bills, and $400k or so punitive.
This is the same principle the Indian court is using - entities with large amounts of money for defense shouldn't mount a defense simply because they can afford it, or make it more difficult than it should be to have your argument heard.
There's no question the woman was at fault, the jury said her responsibility was 20%. The case was presented because the coffee was way hotter than a reasonable customer would expect, and she did require medical treatment as a result of a product offered. Skin grafts are a pretty severe requirement, regardless of whether it's a third degree burn.
Her lawyers successfully argued that the coffee was unreasonably hot, and were a potential safety problem just like exposed electrical wiring on Christmas lights. Essentially, the argument was that McD's was handing out an unsafe product, and there were already several other similar suits, some of which McD's settled, providing evidence that McD's should have been aware of the problem. There are differing opinions on how hot coffee should be, especially since it is pre-made, sits around, and then is poured into a cup, cooled by cream and/or sugar and/or sitting in the car. Customers don't want cold coffee by the time they are ready to drink it.
Basically the case comes down to what the restaurant should plan for, and what the customer should expect. This particular jury sided with the plaintiff based on evidence presented. All she wanted was coverage of medical costs, McD's offered a token amount, and the final award from the jury was mostly punitive because they believed McD had plenty of chances and reason to settle pre-trial, but mounted a defense instead.
Basically they said the suit was frivolous, not from the plaintiff's side but because it should have already been settled by McD's based on other cases. $2.7 million was reduced by the judge to under $500k, and finally McD's settled (after appeals) for under $600k. Rather reasonable in that context, I'd say.
I know it's wiki, but:
http://en.wikipedia.org/wiki/Liebeck_v._McDonald's_Restaurants
It seems to be up to the judge to determine a reasonable fee. That's just based on me reading multiple RIAA cases. Can't remember which one, but RIAA asked for their entire bill to be covered and the judge reduced the grant to a small percentage of that, with a comment that the defendant could not be expected to foot the entire bill.
Oddly enough, the judge didn't touch the question of whether a fleet of highly paid, dedicated lawyers would provide a better argument than a single lawyer working on multiple cases at the same time. Also, if the defendant had the money to spend on RIAA's legal fees, he probably should have spent it on his own defense instead.
I know, citation needed. But since law is all contextual anyway, it would server you better to find it yourself than for me to look it up.
Code reuse is the more likely problem. The biggest problem is that each component has to assume there is no UI. It could be in a GUI, or commandline, or silent mode, or a service, or whatever else, so it doesn't pop up an error message - it just returns a value.
You tell your handy security library to use the internet library to connect to the microsoft server thingie, and the internet library doesn't have any reason to know about certificates. The security library assumes the certificate will always be valid (or the network will take care of that), so it doesn't have a "bad certificate" return value. Then the app doesn't check the return values (only success/fail), or it's not in the list of things to check.
Detailing your actions makes it easier to disassemble and comprehend, so lots of proprietary coders don't do that. Bubbling up an exception could have a detailed description of why something failed, but proprietary coders don't want end users to see the gory details of what their code is doing. "Confusing error messages" is one of those things Windows users hate, so they generally either detail what you might do to fix it or, if it's too detailed or on a server instead, just skip that part.
It's nothing the user can do anything about, so why bother reporting it? Plus you need to make translations and test cases to ensure your message pops up in all languages when the cert is expired... more work when you could just ship it, and list a known risk that the server team has to keep the cert up to date.
I know, tldr. Black box programming combined with allowing ignorant users peace of mind will result in this type scenario every time. I always chuckle when I see "Table or view does not exist" errors in Oracle SQL when I can see the table in the list of ALL_USER_TABLES or similar. I don't have access to it, and revealing that it exists but I'm, not allowed to read from it might be a security violation the same way "bad username" vs "bad password" gives brute-force people more information to work with so you say "bad username/password combination" and now they don't know if the user exists. Maybe they thought of that, or maybe they tried to select, got 'denied' return code, and translated that into one they do have a text string for.
So many possibilities, of which yours is the least likely. Exceptions can be done well, there just aren't enough good examples out there so it takes a serious debugging headache before someone looks at a better way of doing it. Then Management says the errors are too wordy and you're back to "Unexpected error" meaning everything from "Network down" to "I crapped my pants".