No, RMS will not breathe down your neck
on
The LDP and Debian
·
· Score: 2
Actually, you've only got a problem if you redistribute the code in question, modified or not, and do not comply with the GPL.
But, even in this case, the FSF (RMS himself probably wouldn't get involved), if it holds the copyright on the code, would most likely just ask you to comply.
The worst I've seen is explicit withdrawl of permission by the FSF (on FSF copyright code) to use the code until someone is assigned from within the offender's organization to receive GPL training from the FSF.
Finally, the FSF does not drag your name through the mud, as it were, if you make an honest mistake.
And yes, I speak with some degree of authority on the by RMS to a former employer's developers.
...and not a bogus redial-on-carrier-drop that violated the TOS with my provider.
Disclaimer: This may read like an ad for Internet America. While it is somewhat of a testemonial, I am just a satisfied customer, and receive no financial compensation for saying nice things about them.
In days gone by, I'd dream of an ISDN connection, or even dedicated 56k. But the price/performance just wasn't there: around $100/month for the physical line and connectivity. DSL, of course started to look attractive. I'd never been a fan of cable modems, what with the shared media, dynamic IPs, and generally draconian TOS.
When I moved to a Dallas suburb, I priced various offerings, and ended up with Internet America. I stayed in a month-to-month apartment for about 6 weeks until I bought and closed on a house, and the following factors were important:
I needed dial up access for a short time, month-to-month while I was at the apartment.
I wanted to make sure that the TOS were reasonable. Some are downright insane: pinging remote hosts, even with consent, was considered "hacking" and could get your account suspended. Running any server, even an smtp sink (non-relaying, of course) was verbotten, and forget about a static IP. Often there were stingy traffic quotas.
Naturally, I wanted to make sure that service was likely available in the area where I'd be buying a home.
Internet America fit this bill nicely: dial-up and DSL, reasonable TOS ("Oh, things like SMTP are fine, even a Web server as long as you don't saturate the uplink -- we're geeks, we understand" from tech. support), and various access plans (fast, faster, and fastest, er, duh, I guess).
I was a bit out of range from the CO (15.6 kft) so they couldn't piggyback on the existing POTS service. But, for an extra $15 a month, they'd lease a dry pair and add the cost to my bill. Bottom line is that I've got 768 kbps down by 384 kbps up on a dedicated pair for $74.99 a month, plus tax ($81.18). Not exactly cheap, but they don't appear to be going out of business.
The big plus, though, is service. Static IP? No problem, I get one free. Their tech people admitted to having looked at PPPoE over ATM, and having held their noses, decided it wasn't the way to go. I had a few glitches with billing (like not dropping the dial up charges when I get DSL), and the odd 15 minute outage but these were resolved (actually we're still looking at the outage but as it happens so rarely it isn't a real problem and is hard to track down -- they suspect their DSL modem). They even back-credited me for 2 months of dialup charges while I had DSL -- many providers won't do that under any circumstances, being so eager to nickel and dime their customers.
Now, like most slashdotters, I'm not your typical "one computer plugged into the DSL modem" guy: I've got a headend with the DSL modem, a 10/100 Mb/s 8 port Linksys firewall/router doing NAT, with wired drops to rooms all over the house. I run [GNU/]Linux, sink my own email, plan to provide SSH access, and might run a non-advertised web server (on other than port 80). In short, I use the DSL line as a shared connection for the whole house's traffic, eventually with 3 or 4 computers behind the firewall. As long as I don't excessively saturate the uplink, Internet America is "O.K." with this.
Basically I get DNS delegation (for my domain) from register.com, DNS and secondary MX from iicinternet.com, and am very pleased.
Compare this with my neighbor across the street is in Southwestern Bell Hell: he pays $49.95 a month for draconian TOS with PPPoE. He gets dropped at the strangest times (not just when idle), and his DSL modem requires frequent power cycles because it loses sync. His service is down so much that he retains a dial-up modem and needs it weekly. I'm over there about once every 2-3 weeks resetting his DSL modem, or reconfiguring his networking options. He isn't using a firewall (oops), and I hope his box does not get r()()73d, as they say ('course it's just running Windoze).
Is the extra $25 a month that I pay worth it? Obviously I think so.
Again, this is just a review of my experience with a particular provider. I've heard grumblings about them from others, but am satisfied myself. Naturally, YMMV.
I don't like generic parties beceause I can't stand the inane subjects 95% of the people there bring up. I prefer to hang with my own crowd and am fairly selective.
An example of a fun party for me:
Playing team trivial pursuit (men against women),... where everyone has an I.Q. in excess of 150. Been there, done that, loved it.
and to the guy who had to smile while the vice-pres threw a glass of beer in his face... you didn't have to take that. you could have thrown one back in his face. he's plastered. he won't remember:)
Er, no. The logical response is to kill him so he can't do it again. However, there are legal repurcussions to that. Perhaps a harassment suit might be better. Be glad that people who support the logical response generally avoid situations where it might come to pass.
But what you're suggesting is tantamount to telling the rape victim to fuck the rapist so as to "get even". No sense in that.
Actually, my present employer could exist without me. And I couldn't be happier! But then, they don't have this Christmas party foolishness, and hire top-notch people. A private, non-company-funded party is being held with plenty of opportunity for people to relax alone, in small groups, or participating in inane games, as they wish.
The type of scenario you describe is typical of places the depend on one or two key people who eventually leave out of disgust. How long the company survives after that depends on inertia -- and indeed, it can go on, stagnating for decades.
I'm sure they'll be remembered when the next raise and/or promotion comes around. It behooves people to go to the parties. If anything to just show up, shake a few hands, laugh at some stupid assinine jokes, then leave. More corporate politics goes on at parties than in the workplace.
And smart people quickly realize that when rewards do not go to those that make the company viable, those people leave. Such an environment might feed off of inertia for a while, but it isn't sustainable.
Besides, it is such fun to say, "I can get you out of this mess that will cost you a few million dollars otherwise, but I won't -- you didn't give me a raise"... "DO IT OR YOU'RE FIRED!!"... "And who'll fix it then?" Of course you have to be top-notch to pull that kind of stunt off (but then, you knew the existing plan would fail, how to fix it, but either kept it to yourself, or were ignored when you warned of peril). And, it's best to leave after fixing the problem for, ah, appropriate compensation.
Geeks just need to grasp the concept that their not 'special' or 'irreplacable'. '31331 sKiLz' don't matter as much as how they play the political game.
Ah, but some of us have a known reputation for doing the impossible, saving the company mucho dineros. We're the people who make world's firsts happen. And we are irreplacable because management would rather build an empire of 15 know-nothings than hire one or two of our peers so we'd truely be replacable.
The stupid party is just the place to, perhaps, (and with this crowd I really mean 'perhaps'), meet that cute/attractive person of the opposite sex beyond asking her to take a look at the new bit of code to see if it makes her nipples hard.
Somehow, I find political schmoozers who try to hide their technical incompetence, quite unattractive.
The REAL competition for your job, raises, and promotions WILL be there.
Er, no. The real competition in the marketplace and the company's struggle to survive will happen when I apply my skills elsewhere, and the shell collapses.
Warren Buffet once said something like, "When there is a choice between fantasy and reality, I bet on reality."
I'm using the term "cathedral ceiling" to refer to a 12 foot ceiling as opposed to an 8 to 8-1/2 foot one.
My house has two stories, but the second story has about half the floor space of the first: the unavailable part has an attic over the cathedral ceiling in the family/formal living/formal dining rooms.
...and those 47 pages are worthless the minute someone changes your code and doesn't update the documentation. Unless you're in a literate programming environment, you've just wasted three days that could have been spent getting the dweeb in the next cube out of his bug-ridden hell. I can't see a protocol description taking more than 10 pages for something like that, and if it does, the protocol is probably unnecessarily complex.
If you have the luxery of time when such protocols stablilize, then, by all means, embelish.
The correct code production rates that you need are on the order of 1000-5000 lines of correct code a week, or at least with defect rates over the life of use down to 0.1 line per kloc.
The bottom line is that I've seen people apply best practices and get a correct code production rate of around 6-8 LOC/hour. I've seen (and apply) extreme programming techniques, and routinely beat that by a factor of five, sometimes much more (when the code is routine, like the umpteenth generic marshalling/serialization package you've written, or recursive-descent parser).
And then when your wunderkind has left the company because someone else offered a raise that you can't match, or the star decides to go into business for himself/herself, or dies from a caffeine overdose, and you are left with no documentation, no comments, no variables longer than four letters, and the "talent" isn't returning phone calls, then what?
Of course you don't hire one wunderkind, you hire five or six, and team them up in pairs (a good Extreme Programming tip). But you don't hire 20 average joes. Let the competition hire them and suffer.
Sure the program is efficient and runs like a dream right now. Fat load of good that does you if it breaks or needs to be extended,
If it runs like a dream, you get to sell it right? And make money, right? Out the door, fast, right, make the window of opportunity.
Contrary to popular belief design for extensibility is not hard -- it comes naturally to experienced coders.
If you can throw letters down in Emacs so quickly, why can't you seem to find time to have one line out of 15 be in English?
Perhaps the English would not be as descriptive or useful as the 15 lines of code, and very distracting. The kinds of docs you want are along the lines of "this rebalances a 2-3 tree". You don't want an essay explaining 2-3 trees, but that's what many call for.
You want me to quit? Force me to attend such a party.
Don't get me wrong. I will kill myself trying to help any coworker overcome a technical problem where I have expertise. I don't even have to like them, and might even loathe them because of philosophical differences (I am an NRA-supporting libertarian and defend the ideals in the American Bill of Rights and Constitution) -- but I am paid to get a job done and I do it.
But, to relax, the last thing I want to do is hang out with the guy who took off for a vacation while I cleaned up his code.
I want to hang around with people who, if they weren't coding for a living, would do it for fun anyway. Like many geeks, I eat, sleep, and dream code. For fun, I design architectures to let me stream digital audio/video from a central server in the home to various media terminal set-top boxes (silent, of course). I networked my home myself (nothing like straddling ceiling joists in the attic above the family room with the cathedral ceiling). I freak out the telco people when they see my headend ("Really, it's done, I hooked the DSL pair to the demarc last night when I got the call it was live. Don't touch that -- it's the RJ-31x that lets the alarm system seize the POTS pair: you'll set the siren off if you break the connection.").
In short, what we geeks consider fun is the very thing non-geeks want to avoid.
I suppose you could try to arrange a LAN party, if a lot of your geeks are gamers, but don't try to get geeks to mix socially with non-geeks.
For simple, exercize code, this is true. Once you enter the real development world, this is patently false. Let's examine these one by one:
Clear, Consistent Formatting
Forget about importing free third party code that doesn't adhere to your formatting standard them. you bend to the maintainer of a particular piece of code, and in a large project there may be many major maintainers. It helps of course if all in-house people can agree to a layout style, but you're going to have to deal with foreign code anyway, so don't stess over it.
If it really matters for publication purposes, use a pretty-printer. All decent programmers are not put off by slightly different indentation styles across major code sections so long as there isn't too much stylistic scizophrenia in a given file. And no, you don't want programmers who can't "handle" it touching code -- they mess things up too much.
Hungarian Notation? Ugh. Spare me the need to be ever so explicit about types. Good programming is all about layers of abstraction. It isn't a "pointer to an object with 5 abstract member functions: open, close, read, write, and control". It's a pointer to a DEVICE, damn it! Learn the paradigms and abstractions before delving into the code.
Copious Comments
How many times have you seen, "i += 1;// increment pointer"? Doesn't help, does it? You document the trees but ignore the forest that way. Get the internal abstractions and paradigm out of the way and you're done. "This state machine maps input data and current state to an output message and new state." There! Done!! Documented!!! You don't need the "what's a state machine?" people around.
Documentation
Less is more. Really. The trick is to maximize the ideas communicated per words written. It takes time to think up, time to write, and time to read. At some point there is no excuse for not reading the code. Documentation should be a roadmap, not a novel.
Coders who follow these rules truly are an asset to their company. Geeks who hack, write unreadable code, and utter geek credos about enforcing obfuscation and being purposefully vague have no place in a business environment.
Coders who follow these rules produce what? 3000-6000 lines of code a year? Ain't gonna get product out the door that way. What you get is code with lots of comments about what it is supposed to do, but doesn't because of all the time spent on documentation instead of design and debugging.
As for unreadable code, I've found that good programmers who have low defect rates and high productivity can read code like prose, provided the paradigms ("what was he thinking?") are explained early on. It's the medeocre ones that need the handholding.
These mantras are derived from the belief that coders should be interchangable, that design, and documentation should fit the needs of the lowest common denominator. Well, that's a waste of talent. You're forcing those who can crank out correct code an order of magnitude or more more productively than the average to slow themselves down by a corresponding factor.
Stop hiring idiots. Pay three times the average wage and hire only the best. You'll have much better productivity/cost ratios. So what if 4/5 programmers can't understand the code? The one you've got does the work of 2 to 3. And others like him can pick it up with little or no effort.
"Cancel your service, and you lose the ability to hear *any* of the songs that you've downloaded."
That sentence right there is enough for me to never to sign up for this.
And that gets to the crux of the matter regarding all these so-called protection (really control) schemes. They want to restrict you in ways that are unacceptable (have to listen from PC, can't copy to portable devices, continue to pay for the same content over and over, etc).
Of course, as a libertarian, I support their attempt to get people to sign up for this. I doubt many will, in a free market, with other alternatives.
There are several troubling problems with all such schemes:
1) Often the terms to which one agrees aren't clear. People generally assume fair use rights over copyright material. Furthermore, people assume that what used to work, i.e. playing CDs in a computer will continue to do so. Or, they accept things like forced viewing of ads on DVDs as technologically necessary. Content providers haven't exactly been clear about copy-protected CDs and other restrictions, only that they're "fighting piracy". Too many people don't know that there are no technical reasons for such restrictions, only political ones.
2)A free market would provide different kinds of restrictions from different content providers -- perhaps the most sucessful would permit standard fair use rights, with or without technological measures to ensure this. However, traditional content providers what to make such alternatives illegal, citing that the technology facilitates piracy, and restricting choice in a free market.
3) The choice to buy or rent is always a good one to have. But, in this case, one is renting a static thing (unchanging music), and not access to an on-going service, like continued habitation of a living space. The only thing reasonable to rent here is continued access to new content, not old.
4) It completely ignores, or suggests the illegality of, the value of caching content. Traditionally, content had to be on some physically visible media, that was difficult or costly to copy. But that physical media was valuable to consumers precisely because it held a cache of the content. All that has changed is that modern caches (computer hard disks) are all to willing to give up their content to any destination. The utility of the cache has not gone away. Removing it hurts consumers and renders them vulnerable to the failure of the content provider to remain in business, streaming the "one legal copy".
When chosing between buying or renting, the disadvantages of renting usually are reflected in low on-going costs, as opposed to large capital outlays. Of course, if one wants the use of something long-term, the continued rental costs add up, making buying the smart choice. Lenders know that ownership is desirable and provide financing to those who are low on capital, but have good credit.
A service like this, that provided instant access to a vast library of music, would be handy for a party, with a limitless choice of music (public performance issues aside). It has its place. But to suggest that it replace ownership of cached copies of content, or drive such ownership into the realm of illegality is absurd and misrepresentation of a course of action to get to such a point downright criminal.
We need to educate the public at large. Technical arguments aren't going to do it, or at least they haven't worked yet. However, explaining the possible horrific outcomes of a world where information was owned only by the few, and rented at a high price, should result in a cry, "No! We don't want that world!" From that point one can push back, showing how certain technologies bring us closer to and not further from, that undesirable future.
Re:Will this help Redhat Bloatware?
on
CPU Wars
·
· Score: 2
A lot of the advantages of Linux on the desktop start to disappear when you realize that it takes a lot of power to run it.
True enough. I remember the days, probably up to RH 6.2 when [GNU/]Linux distros were generally snappier than bloated Microsoft offerings, even as the user productivity apps were less mature. It would be a sad day indeed, when standard GUI and productivity apps available under a [GNU/]Linux distro were slower, just to get more features "out there" -- stick to the tried, true, and efficient, until the polished can compete with it's peers on performance.
Re:Will this help Redhat Bloatware?
on
CPU Wars
·
· Score: 2
Point noted, except you're comparing apples to oranges and I compared apples to apples.
In my case, unless I'm doing some long-term processing, the key isn't "fastest", but rather fast enough. I wouldn't spend much $$$ to get a kernel build down to 30 seconds from a minute, for example -- a minute is fine for me for the few times that I build a kernel. 30 minutes, of course, is annoying.
I have a stroller that was "handed down" to my 18 month old from his sister. People here in Texas stare as either my wife or I go down the street with him in it. See, the wheels are twelve inches in diameter, as opposed to more, er, "normal" four inch wheels on such things. The wheels lock forward, that is the rear ones don't swivel to make stearing easy -- you have to balance it on two wheels to turn.
See, we lived in Montreal. We know all about snow.
You need clearance and wheels that won't follow a rut in a stroller, or you won't get very far. Some people have managed ski-type attachments for strollers.
So, yeah, such a thing, in its present form, would be pretty much useless there almost half the year. But that doesn't mean its worthless the other half, nor should people who don't live in such harsh climates be denied it's utility because it is of less value to you. What was that point about arrogance?
For a comparison: I've been running RH 6.2 with Gnome on a P200 with 80 MB RAM for about a year now. Yes, it's slow, but not unusable, unless I try to run Mozilla under RH 7.2 on the same box, and even then it runs, but too slowly for my liking.
Will this help Redhat Bloatware?
on
CPU Wars
·
· Score: 2
Yeah that was a bit of a troll.
I'm currently awaiting my first new PC in a long-time: Soyo Dragon+ mobo, AMD Athlon XP 1600+ with 512 MB DDR RAM, ATA/100 WD 100GB disk (yes,/me likes SCSI, but likes $$$ more), generic DVDROM, and Netstream2000 H/W MPEG2 board. In preparation of it's arrival I downloaded a copy of Red Hat Linux 7.2 with the intention of installing it on an old spare 1.5 GB drive I had free in my old, ailing PC (Intel P200, 80 MB RAM), just to give it a whirl.
Well, things were real tight with the small drive, and my on-board IDE controllers were acting flaky anyway, so I ended up getting a "spare" 20 GB ATA/100 Maxtor drive and Maxtor (re-labeled Promise) ATA/100 PCI controller. The 20 GB Maxtor was now UDAM5 hde on ide2.
The point of all this history is to illustrate that I now have a "soon to be spare" computer where the limiting factor is CPU and to a lesser extent RAM. I go ahead an install RH Linux 7.2 on the new drive.
After a bit of farkling around with kernel boot options (ide2=d000,c802 is your friend!) I boot into RH Linux 7.2, in all it's X 4.0.1 glory.
.... and it struck me as slower than RH 6.2 on the same box, running from a slower drive on a slower, flaky mobo IDE interface (prolly not even ATA/33). Not much slower, but slower nevertheless.
I'm fairly sure that the new box would make the speed difference between RH 6.2 and 7.2 imperceptible, but the experience left me wondering about the extent of bloat in RH Linux releases, not that I'd want to run anything significant on the P200 anymore, but I might want to use it as some type of low-duty server, with an up-to-date kernel. In a nutshell, what got slower?
That's partly it, of course, learning from one's mistakes. But I think the greatest part is "design for error"; IOW, accepting that you will make mistakes, try to predict where they are likely to be (for lack of sufficient specs, understanding, etc.), and design in such a way as to make fixing that part easier in the future.
Now, this isn't perfect: you can't punt everything, and teams that try never finish a design and get to implementation.
Design is a tool to help you minimize error. It isn't perfect but it does have a beneficial effect. So, it stands to reason that application of design processes to try to predict and manage errors will have a beneficial effect, but will not be perfect either.
You can have a rigid set of acceptance standards within an open-ended design. However, it is unlikely that those standards will be complete, even if you think they are, or want them to be.
The point of course, is to guide the evolutionary process by letting it flourish where there is greatest uncertainty. People familiar with animal husbandry (insert ob. ignorant wisecrack comparing this to bestiality) [1] know all about this.
[1] For those now familiar with the term, "animal husbandry" refers, in basic terms, to the breeding of animals for specific traits.
But, even in this case, the FSF (RMS himself probably wouldn't get involved), if it holds the copyright on the code, would most likely just ask you to comply.
The worst I've seen is explicit withdrawl of permission by the FSF (on FSF copyright code) to use the code until someone is assigned from within the offender's organization to receive GPL training from the FSF.
Finally, the FSF does not drag your name through the mud, as it were, if you make an honest mistake.
And yes, I speak with some degree of authority on the by RMS to a former employer's developers.
Disclaimer: This may read like an ad for Internet America. While it is somewhat of a testemonial, I am just a satisfied customer, and receive no financial compensation for saying nice things about them.
In days gone by, I'd dream of an ISDN connection, or even dedicated 56k. But the price/performance just wasn't there: around $100/month for the physical line and connectivity. DSL, of course started to look attractive. I'd never been a fan of cable modems, what with the shared media, dynamic IPs, and generally draconian TOS.
When I moved to a Dallas suburb, I priced various offerings, and ended up with Internet America. I stayed in a month-to-month apartment for about 6 weeks until I bought and closed on a house, and the following factors were important:
I needed dial up access for a short time, month-to-month while I was at the apartment.
I wanted to make sure that the TOS were reasonable. Some are downright insane: pinging remote hosts, even with consent, was considered "hacking" and could get your account suspended. Running any server, even an smtp sink (non-relaying, of course) was verbotten, and forget about a static IP. Often there were stingy traffic quotas.
Naturally, I wanted to make sure that service was likely available in the area where I'd be buying a home.
Internet America fit this bill nicely: dial-up and DSL, reasonable TOS ("Oh, things like SMTP are fine, even a Web server as long as you don't saturate the uplink -- we're geeks, we understand" from tech. support), and various access plans (fast, faster, and fastest, er, duh, I guess).
I was a bit out of range from the CO (15.6 kft) so they couldn't piggyback on the existing POTS service. But, for an extra $15 a month, they'd lease a dry pair and add the cost to my bill. Bottom line is that I've got 768 kbps down by 384 kbps up on a dedicated pair for $74.99 a month, plus tax ($81.18). Not exactly cheap, but they don't appear to be going out of business.
The big plus, though, is service. Static IP? No problem, I get one free. Their tech people admitted to having looked at PPPoE over ATM, and having held their noses, decided it wasn't the way to go. I had a few glitches with billing (like not dropping the dial up charges when I get DSL), and the odd 15 minute outage but these were resolved (actually we're still looking at the outage but as it happens so rarely it isn't a real problem and is hard to track down -- they suspect their DSL modem). They even back-credited me for 2 months of dialup charges while I had DSL -- many providers won't do that under any circumstances, being so eager to nickel and dime their customers.
Now, like most slashdotters, I'm not your typical "one computer plugged into the DSL modem" guy: I've got a headend with the DSL modem, a 10/100 Mb/s 8 port Linksys firewall/router doing NAT, with wired drops to rooms all over the house. I run [GNU/]Linux, sink my own email, plan to provide SSH access, and might run a non-advertised web server (on other than port 80). In short, I use the DSL line as a shared connection for the whole house's traffic, eventually with 3 or 4 computers behind the firewall. As long as I don't excessively saturate the uplink, Internet America is "O.K." with this.
Basically I get DNS delegation (for my domain) from register.com, DNS and secondary MX from iicinternet.com, and am very pleased.
Compare this with my neighbor across the street is in Southwestern Bell Hell: he pays $49.95 a month for draconian TOS with PPPoE. He gets dropped at the strangest times (not just when idle), and his DSL modem requires frequent power cycles because it loses sync. His service is down so much that he retains a dial-up modem and needs it weekly. I'm over there about once every 2-3 weeks resetting his DSL modem, or reconfiguring his networking options. He isn't using a firewall (oops), and I hope his box does not get r()()73d, as they say ('course it's just running Windoze).
Is the extra $25 a month that I pay worth it? Obviously I think so.
Again, this is just a review of my experience with a particular provider. I've heard grumblings about them from others, but am satisfied myself. Naturally, YMMV.
Battery is battery.
I don't like generic parties beceause I can't stand the inane subjects 95% of the people there bring up. I prefer to hang with my own crowd and am fairly selective.
An example of a fun party for me:
Playing team trivial pursuit (men against women),... where everyone has an I.Q. in excess of 150. Been there, done that, loved it.
You have no idea how bad an idea that is.
Er, when some of us get mad enough to hit back, it's with intent to kill. What part of leave me alone don't you understand?
Er, no. The logical response is to kill him so he can't do it again. However, there are legal repurcussions to that. Perhaps a harassment suit might be better. Be glad that people who support the logical response generally avoid situations where it might come to pass.
But what you're suggesting is tantamount to telling the rape victim to fuck the rapist so as to "get even". No sense in that.
The type of scenario you describe is typical of places the depend on one or two key people who eventually leave out of disgust. How long the company survives after that depends on inertia -- and indeed, it can go on, stagnating for decades.
I'd prolly show up, grab the bill, leave, and deposit it in the Salvation Army kettle on my way.
If I had to stay for any length of time, I wouldn't even bother.
And smart people quickly realize that when rewards do not go to those that make the company viable, those people leave. Such an environment might feed off of inertia for a while, but it isn't sustainable.
Besides, it is such fun to say, "I can get you out of this mess that will cost you a few million dollars otherwise, but I won't -- you didn't give me a raise"... "DO IT OR YOU'RE FIRED!!"... "And who'll fix it then?" Of course you have to be top-notch to pull that kind of stunt off (but then, you knew the existing plan would fail, how to fix it, but either kept it to yourself, or were ignored when you warned of peril). And, it's best to leave after fixing the problem for, ah, appropriate compensation.
Geeks just need to grasp the concept that their not 'special' or 'irreplacable'. '31331 sKiLz' don't matter as much as how they play the political game.
Ah, but some of us have a known reputation for doing the impossible, saving the company mucho dineros. We're the people who make world's firsts happen. And we are irreplacable because management would rather build an empire of 15 know-nothings than hire one or two of our peers so we'd truely be replacable.
The stupid party is just the place to, perhaps, (and with this crowd I really mean 'perhaps'), meet that cute/attractive person of the opposite sex beyond asking her to take a look at the new bit of code to see if it makes her nipples hard.
Somehow, I find political schmoozers who try to hide their technical incompetence, quite unattractive.
The REAL competition for your job, raises, and promotions WILL be there.
Er, no. The real competition in the marketplace and the company's struggle to survive will happen when I apply my skills elsewhere, and the shell collapses.
Warren Buffet once said something like, "When there is a choice between fantasy and reality, I bet on reality."
I'm sick to death of other's thinking they know what's "best" for me.
But the point is, we'd prefer to be alone than have to interact with 95% of the members of the world's population.
Except that what many geeks find fun are the things that non-geeks find "work" or "hell".
The reverse is also true.
My house has two stories, but the second story has about half the floor space of the first: the unavailable part has an attic over the cathedral ceiling in the family/formal living/formal dining rooms.
If you have the luxery of time when such protocols stablilize, then, by all means, embelish.
The correct code production rates that you need are on the order of 1000-5000 lines of correct code a week, or at least with defect rates over the life of use down to 0.1 line per kloc.
The bottom line is that I've seen people apply best practices and get a correct code production rate of around 6-8 LOC/hour. I've seen (and apply) extreme programming techniques, and routinely beat that by a factor of five, sometimes much more (when the code is routine, like the umpteenth generic marshalling/serialization package you've written, or recursive-descent parser).
Of course you don't hire one wunderkind, you hire five or six, and team them up in pairs (a good Extreme Programming tip). But you don't hire 20 average joes. Let the competition hire them and suffer.
Sure the program is efficient and runs like a dream right now. Fat load of good that does you if it breaks or needs to be extended,
If it runs like a dream, you get to sell it right? And make money, right? Out the door, fast, right, make the window of opportunity.
Contrary to popular belief design for extensibility is not hard -- it comes naturally to experienced coders.
If you can throw letters down in Emacs so quickly, why can't you seem to find time to have one line out of 15 be in English?
Perhaps the English would not be as descriptive or useful as the 15 lines of code, and very distracting. The kinds of docs you want are along the lines of "this rebalances a 2-3 tree". You don't want an essay explaining 2-3 trees, but that's what many call for.
Don't get me wrong. I will kill myself trying to help any coworker overcome a technical problem where I have expertise. I don't even have to like them, and might even loathe them because of philosophical differences (I am an NRA-supporting libertarian and defend the ideals in the American Bill of Rights and Constitution) -- but I am paid to get a job done and I do it.
But, to relax, the last thing I want to do is hang out with the guy who took off for a vacation while I cleaned up his code.
I want to hang around with people who, if they weren't coding for a living, would do it for fun anyway. Like many geeks, I eat, sleep, and dream code. For fun, I design architectures to let me stream digital audio/video from a central server in the home to various media terminal set-top boxes (silent, of course). I networked my home myself (nothing like straddling ceiling joists in the attic above the family room with the cathedral ceiling). I freak out the telco people when they see my headend ("Really, it's done, I hooked the DSL pair to the demarc last night when I got the call it was live. Don't touch that -- it's the RJ-31x that lets the alarm system seize the POTS pair: you'll set the siren off if you break the connection.").
In short, what we geeks consider fun is the very thing non-geeks want to avoid.
I suppose you could try to arrange a LAN party, if a lot of your geeks are gamers, but don't try to get geeks to mix socially with non-geeks.
Clear, Consistent Formatting
Forget about importing free third party code that doesn't adhere to your formatting standard them. you bend to the maintainer of a particular piece of code, and in a large project there may be many major maintainers. It helps of course if all in-house people can agree to a layout style, but you're going to have to deal with foreign code anyway, so don't stess over it.
If it really matters for publication purposes, use a pretty-printer. All decent programmers are not put off by slightly different indentation styles across major code sections so long as there isn't too much stylistic scizophrenia in a given file. And no, you don't want programmers who can't "handle" it touching code -- they mess things up too much.
Hungarian Notation? Ugh. Spare me the need to be ever so explicit about types. Good programming is all about layers of abstraction. It isn't a "pointer to an object with 5 abstract member functions: open, close, read, write, and control". It's a pointer to a DEVICE, damn it! Learn the paradigms and abstractions before delving into the code.
Copious Comments
How many times have you seen, "i += 1; // increment pointer"? Doesn't help, does it? You document the trees but ignore the forest that way. Get the internal abstractions and paradigm out of the way and you're done. "This state machine maps input data and current state to an output message and new state." There! Done!! Documented!!! You don't need the "what's a state machine?" people around.
Documentation
Less is more. Really. The trick is to maximize the ideas communicated per words written. It takes time to think up, time to write, and time to read. At some point there is no excuse for not reading the code. Documentation should be a roadmap, not a novel.
Coders who follow these rules truly are an asset to their company. Geeks who hack, write unreadable code, and utter geek credos about enforcing obfuscation and being purposefully vague have no place in a business environment.
Coders who follow these rules produce what? 3000-6000 lines of code a year? Ain't gonna get product out the door that way. What you get is code with lots of comments about what it is supposed to do, but doesn't because of all the time spent on documentation instead of design and debugging.
As for unreadable code, I've found that good programmers who have low defect rates and high productivity can read code like prose, provided the paradigms ("what was he thinking?") are explained early on. It's the medeocre ones that need the handholding.
These mantras are derived from the belief that coders should be interchangable, that design, and documentation should fit the needs of the lowest common denominator. Well, that's a waste of talent. You're forcing those who can crank out correct code an order of magnitude or more more productively than the average to slow themselves down by a corresponding factor.
Stop hiring idiots. Pay three times the average wage and hire only the best. You'll have much better productivity/cost ratios. So what if 4/5 programmers can't understand the code? The one you've got does the work of 2 to 3. And others like him can pick it up with little or no effort.
That sentence right there is enough for me to never to sign up for this.
And that gets to the crux of the matter regarding all these so-called protection (really control) schemes. They want to restrict you in ways that are unacceptable (have to listen from PC, can't copy to portable devices, continue to pay for the same content over and over, etc).
Of course, as a libertarian, I support their attempt to get people to sign up for this. I doubt many will, in a free market, with other alternatives.
There are several troubling problems with all such schemes:
1) Often the terms to which one agrees aren't clear. People generally assume fair use rights over copyright material. Furthermore, people assume that what used to work, i.e. playing CDs in a computer will continue to do so. Or, they accept things like forced viewing of ads on DVDs as technologically necessary. Content providers haven't exactly been clear about copy-protected CDs and other restrictions, only that they're "fighting piracy". Too many people don't know that there are no technical reasons for such restrictions, only political ones.
2)A free market would provide different kinds of restrictions from different content providers -- perhaps the most sucessful would permit standard fair use rights, with or without technological measures to ensure this. However, traditional content providers what to make such alternatives illegal, citing that the technology facilitates piracy, and restricting choice in a free market.
3) The choice to buy or rent is always a good one to have. But, in this case, one is renting a static thing (unchanging music), and not access to an on-going service, like continued habitation of a living space. The only thing reasonable to rent here is continued access to new content, not old.
4) It completely ignores, or suggests the illegality of, the value of caching content. Traditionally, content had to be on some physically visible media, that was difficult or costly to copy. But that physical media was valuable to consumers precisely because it held a cache of the content. All that has changed is that modern caches (computer hard disks) are all to willing to give up their content to any destination. The utility of the cache has not gone away. Removing it hurts consumers and renders them vulnerable to the failure of the content provider to remain in business, streaming the "one legal copy".
When chosing between buying or renting, the disadvantages of renting usually are reflected in low on-going costs, as opposed to large capital outlays. Of course, if one wants the use of something long-term, the continued rental costs add up, making buying the smart choice. Lenders know that ownership is desirable and provide financing to those who are low on capital, but have good credit.
A service like this, that provided instant access to a vast library of music, would be handy for a party, with a limitless choice of music (public performance issues aside). It has its place. But to suggest that it replace ownership of cached copies of content, or drive such ownership into the realm of illegality is absurd and misrepresentation of a course of action to get to such a point downright criminal.
We need to educate the public at large. Technical arguments aren't going to do it, or at least they haven't worked yet. However, explaining the possible horrific outcomes of a world where information was owned only by the few, and rented at a high price, should result in a cry, "No! We don't want that world!" From that point one can push back, showing how certain technologies bring us closer to and not further from, that undesirable future.
True enough. I remember the days, probably up to RH 6.2 when [GNU/]Linux distros were generally snappier than bloated Microsoft offerings, even as the user productivity apps were less mature. It would be a sad day indeed, when standard GUI and productivity apps available under a [GNU/]Linux distro were slower, just to get more features "out there" -- stick to the tried, true, and efficient, until the polished can compete with it's peers on performance.
In my case, unless I'm doing some long-term processing, the key isn't "fastest", but rather fast enough. I wouldn't spend much $$$ to get a kernel build down to 30 seconds from a minute, for example -- a minute is fine for me for the few times that I build a kernel. 30 minutes, of course, is annoying.
See, we lived in Montreal. We know all about snow.
You need clearance and wheels that won't follow a rut in a stroller, or you won't get very far. Some people have managed ski-type attachments for strollers.
So, yeah, such a thing, in its present form, would be pretty much useless there almost half the year. But that doesn't mean its worthless the other half, nor should people who don't live in such harsh climates be denied it's utility because it is of less value to you. What was that point about arrogance?
For a comparison: I've been running RH 6.2 with Gnome on a P200 with 80 MB RAM for about a year now. Yes, it's slow, but not unusable, unless I try to run Mozilla under RH 7.2 on the same box, and even then it runs, but too slowly for my liking.
I'm currently awaiting my first new PC in a long-time: Soyo Dragon+ mobo, AMD Athlon XP 1600+ with 512 MB DDR RAM, ATA/100 WD 100GB disk (yes, /me likes SCSI, but likes $$$ more), generic DVDROM, and Netstream2000 H/W MPEG2 board. In preparation of it's arrival I downloaded a copy of Red Hat Linux 7.2 with the intention of installing it on an old spare 1.5 GB drive I had free in my old, ailing PC (Intel P200, 80 MB RAM), just to give it a whirl.
Well, things were real tight with the small drive, and my on-board IDE controllers were acting flaky anyway, so I ended up getting a "spare" 20 GB ATA/100 Maxtor drive and Maxtor (re-labeled Promise) ATA/100 PCI controller. The 20 GB Maxtor was now UDAM5 hde on ide2.
The point of all this history is to illustrate that I now have a "soon to be spare" computer where the limiting factor is CPU and to a lesser extent RAM. I go ahead an install RH Linux 7.2 on the new drive.
After a bit of farkling around with kernel boot options (ide2=d000,c802 is your friend!) I boot into RH Linux 7.2, in all it's X 4.0.1 glory.
I'm fairly sure that the new box would make the speed difference between RH 6.2 and 7.2 imperceptible, but the experience left me wondering about the extent of bloat in RH Linux releases, not that I'd want to run anything significant on the P200 anymore, but I might want to use it as some type of low-duty server, with an up-to-date kernel. In a nutshell, what got slower?
No doubt, the new machine will be welcome.
Your error: "#@$@#$ @#$@#!4 fuc@#@# years!!!"
My error: "oops... sorry"
Now, this isn't perfect: you can't punt everything, and teams that try never finish a design and get to implementation.
Design is a tool to help you minimize error. It isn't perfect but it does have a beneficial effect. So, it stands to reason that application of design processes to try to predict and manage errors will have a beneficial effect, but will not be perfect either.
The point of course, is to guide the evolutionary process by letting it flourish where there is greatest uncertainty. People familiar with animal husbandry (insert ob. ignorant wisecrack comparing this to bestiality) [1] know all about this.
[1] For those now familiar with the term, "animal husbandry" refers, in basic terms, to the breeding of animals for specific traits.