That's ridiculous. I don't think anyone would pass on a 100% increase.
Happens all the time at a certain level. I've seen 300% increases turned down (and "name your number" bids) simply because the person wants to work in an environment that suits them (green field tech, great co-workers, less red tape, no management, etc)
At some point, life is short, you want to do a great job, and two employers know you will do it. May you be lucky enough to find yourself in a situation like this.
No need to flip a coin. If it's that close, the residual randomness of the process can be used directly: The candidate with more votes wins. Hardly surprising, this is how it's done already.
Which leads to vast amounts of money being dumped into close races.
Why not just run all elections this way: let everyone vote, put their choices in a big sack, then pick one name from the sack at random. It's just as fair as anything else, and avoids the "winner takes all" problem where big money dominates tight races.
Yep, one problem with the major African studies was the variation in follow-up support given. Another problem is the difficultly of doing randomized trials (anyone who can be convinced to have his penis surgically modified can probably also be convinced to follow your safe-sex directions.) Thirdly, double-blind trials concerning STDs are a little difficult to do when circumcision is visible to all.
The US studies have similar problems: when a circumcision has an average cost of around $350, the parents opting for the child's surgery tend to be richer and more able/willing to spend on health care for the child. You would expect circumcision to be correlated with benefits to every treatable medical condition.
Well, if you waste five on meta-rules about God being really important, graven image of God is not God, other Gods are not God, etc, you may not have the space left for stuff like "please don't fuck little boys in the ass."
Fear not, though. The Catholic Church is reevaluating this one, and should have some good guidelines within a few years. The progressive Jewish community is ahead of the curve on this, too.
* "...women can use sex as a WEAPON..." of course. Oops.
Oh, that makes so much more sense now. Glad you cleared that up.
"Sex as a WEAPON" like "I stab you with my sex?" "I blow you up with my sex?" "I shoot you with my sex?" Oh, wait, I see, a man assaults a woman and she was using sex as the weapon, he was just the innocent victim of the attack. Got it.
I totally understand this. It's like me (a rich person) using money as a weapon. I have something other people want, so they beat me up and take it. All my fault, I was using it as a weapon, and they were the victim of the weapon.
Sheesh, unless you are missing an eye due to a vicious hard nipple attack, seek professional help if you think sex is ever a weapon.
You're talking about completely different career paths. A CS PhD has a strong theoretical background. A program architect is a totally different track. It's like saying that someone shouldn't get a PhD in anthropology because it won't prepare him for is career as an accountant.
Different tracks, but they should both know the basics of both fields.
If you want to be in the 1% in either field, you need to know all the basics. If a PhD can't talk about B+ trees, or an architect can't talk about the halting problem, he is not a serious expert. Those $250K+ jobs don't go to the vocational skills crowd. And yes, a generic PhD at age 32 looks pretty vocational. BTW, I don't mean $250K to mean anything important: it's just a placeholder for the transition from hired help to intellectual contributor in the PhD/professional level world.
For those self-directed, fun, and interesting major skunkworks/research jobs, there is only one track: strong theoretical knowledge + expert practical delivery. If you didn't mostly figure out the theory by end of undergrad, you are going to have a hard time making it.
I suppose it depends how much time you are willing to commit, whether you'll do it part or full time, and how much experience (if any) you have in a research environment. Full time, a PhD will take anywhere from 4-7 years, typically (in the US - I understand that's a bit lower in the UK). An MS will take another 2-3, full-time, I'd expect.
Given the OP is in computer programming, and wants to be in computer programming/CS after his PhD, the 4-7 years is the killer. Assuming he is talented enough to get a decent PhD from a decent school, that 4-7 years is the difference between being a mid-level developer and a senior architect/project leader. That's a lot of ground to make up even with a brand new PhD. Plus, at age 35 or so, most research/skunkworks hardly even consider academic credentials (that 10+ years of experience is a better predictor of success.)
Obviously, it depends on exactly what you want to do, but most of the younger successful CS/programming people I've known did not have PhDs: getting that 10-20 years of experience on ever more challenging projects was basically impossible with a 4-7 year detour into academia.
For the record, "off-color" does not imply "racist."
And see, this is why there will never be an equitable resolution to the whole political correctness problem.
There is an equitable resolution to this problem. We already have it. Douchebags who think this is acceptable either STFU or take it to their private country clubs or deer blinds. Keep your off-color (and we don't care what kind of off-color they are) remarks out of workplaces, courts, etc. If you really feel the need to express your douchebaggery on a public street, then go ahead, just try to avoid feeling butt-hurt when normal people point out that you are a douchebag.
Men don't overhear an off-color joke being told to another man and subject the whole office to PC-training.
Hmm, last place I was at, some idiot boss told an off-color (i.e. racist) joke that another man took offense to. Lawsuit. Settled for around $2M.
The only bullshit is people thinking their own views of what is professional conduct should somehow be the standard of their workplace. You think rape jokes or commenting on peoples' tits are acceptable? Feel free to call up HR and ask that that be added to the employee code of conduct. If they tell you to seek professional help, maybe you should.
Dune is a masterpiece. The masses don't know it exists. The award-givers looked him over. And only the first book got any real acclaim from critics.
It's a good book, but it's just not that interesting in terms of ideas. It's just desert Islam in space. Plus some worms to provide action.
Seriously, just ask "who would I want to be in this book?" About the only answer is Paul or maybe one of the tech-geek mentats.
Bummer if you're a women too: you get some soft power if you happen to be in the elite court and get your Bene Gesserit training, else you are pretty much a non-entity.
If you think Dune is great, you'll like many of the available historical novels out there.
Actually the fastest guy would probably benefit from a small audience of programmers pointing out he missed a semicolon or that array is wrong-sized somewhere. This would be obvious to you as such a top programmer.
Where I work, we inflict this on all our "top" programmers. You want that code in, you get a review. A star programmer produces more and better code when four or five junior developers are critiquing his code for missed edge cases, confusing function names, ugly control flow, lack of unittests, etc.
Has anyone ever compiled a report on the longer term noteworthy projects of these competitive programmers? I'd be interested in seeing if there is anything I use regularly or admire would be on the list. If they aren't cut out for that I'd bet they'd make hulluva sys-admins though.
I've interviewed many and hired some of these guys. They tend to be much better than average in the right environment. Watch a few of PM's screencasts, you'll see a) things are named well and consistently, b) he doesn't run the code until he thinks the algorithm is right, c) a lot of it works first time, d) if it doesn't run first time, he thinks and the problem and then fixes it.
The ability to accurately write 20 lines of production quality code and have it run first time is a pretty good basic skill to have. He could probably do 100 lines just as well.
This type of skill doesn't ensure you'll create great longer term projects, but the ability to bash out four or five solid tests of your ideas is a pretty good start. All my group's software architects have this skill down pat: a five-page, production quality POC is often the only reasonable basis to discuss a complex idea.
While I usually don't advocate "use language X," a mess of this size (200K LOC) with a non-CS developer team, may be a pretty nice fit for a Python based retrofit.
1. Get source code control in place 2. Get automated builds/testing in place 3. Define functionality by writing Python unittests
The problems you encounter in step 3 will drive how you incrementally, or otherwise, refactor the code: a) can Python even interface to the system in a reasonable way? b) can people even agree on a good test suite? c) does running a test require massive setup of files, external processes, specific machines being up, etc? d) can two people run the test suite simultaneously? e) does it work on weekends?
I predict the only thing that will really happen here is that some "scientists" with questionable ethics burn through 5M! Despite their grand claims, there is zero research need here.
Well, it is the Templeton Foundation: their basic goal is to give money to scientists in exchange for publicly supporting woo.
Virtually all the great geniuses of recorded history have believed in an afterlife. Some AC on slashdot confidently states otherwise. Who has more credibility - Isaac Newton or Anonymous Coward on the internet? That is indeed a tough one.
Yeah, so much so that none of them are honored or remembered for their profound insights into the afterlife.
Right, but the trouble with that theory is that "generations" are continuous, not discrete. What is the generational difference between someone born in 1962 versus 1967? Unless the government passes some extreme law, the answer is "it's just a label." They will behave differently, but on a continuum, not because one is a baby boomer and the other is GenX.
Linear time is useless to predict cyclic anything where modern human society is involved. Ten years of innovation today (and its effects on society) is greater than thirty years of innovation two hundred years ago. The scale just isn't linear. Nothing has a significant long term stable frequency.
If you are a cicada, you have reasonable grounds to disagree. Sadly, you can't talk and aren't real big in the innovation space.
Well, why not simply decouple the two operations--they already did so for instantiation: __new__() and __init__(), why not separate the converse with __deinit__() and __del__()? Then when you call "del foo" in code, you are invoking __deinit__() destruction, freeing resources, etc, but leaving the GC free to call __del__() when or if it sees fit. That's the real pattern RAII wants anyways--tying resources to the semantically-meaningful life of the object, not the life of the object in memory (since that is non-deterministic/varies by GC algorithm).
You might be right. I've never liked Python''s new/init stuff.
As for switch/case, either add that, or goto. There *are* use cases where it makes coding cleaner/easier to read--which is one of the underlying points to python, isn't it?
A use case, or even infinite use cases, does not mean it is a good idea. Even a use case in which some snippet is objectively easy to read. This is basic language design. If you add a new entity to your language, you and your users have to understand what it is.
Take, for example, the target (label) of your proposed goto statement. Is it a marker in a block of text? If so, how does it interact with try/catch/finally? Is it a first class object? Is so, can I pass it do another function and do a LISP non-local goto? Can I return it from a function?
Whatever rules you pick, have you really made things easier to read or more complex?
IIRC, Erik Naggum had some interesting posts on this topic.
And a 3rd item: if you're not gonna have goto, then at least allow break to accept a parameter to know how many levels to break out of... having to manage and test extra flags just to exit out of multiple-nested blocks at once is much less readable.
Again, you can express some things more concisely, but at what cost to others reading your code? "break 9 levels" helps no one. "break 2 levels" might be better expressed as a subfunction within a simple return.
People can write amazing bad code using simple 1-level constructs like 'if' and 'break.' It should not be surprising that giving them power tools like 'multi-if' and 'multi-level-break' just lets them write worse code and get even more confused by the good code they happen to see.
The only two things that really bother me about python are: 1) after 25 years they still refuse to add a switch/case statement (makes writing FSMs harder) 2) there is no gaurantee that a destructor is ever called, thus you cannot implement a RAII pattern with objects
Switch/case has always been a bit of a funky construct. LISP's cond was just a general form of if/then/else'. C's switch was pretty tied to C's eq style equality (and was a fun hotspot for compiler writers.) C++'s switch is just an artifact from C that must ignore C++'s attempts to generalize equality. Fortran's computed goto is best described as "interesting." I'm not sure what Python could provide in this space that would be a significant benefit.
RAII is also a bit funky. The best garbage collector is often "do not do GC, assume the program will terminate before you run out of memory." Tying RA to GC is a pretty significant language design choice that, as you note, affects the patterns a programmer will use. At my current gig, we make design choices like this (auto-terminate and restart processes that exceed a memlimit,) but I'd hate the language we use (and we use Python) to have its own views of resource management based on memory.
Yep. I read the original paper: it hardly talks about drone strikes at all: it is about the effectiveness of killing the leaders of relatively young, violent NGOs.
I would really hope that no one in power reads the Slashdot "article" and believes that drone strikes are scientifically justified effective policy: the effects of mistargeting are not included; the operational changes in response to a drone strategy are not included (e.g. misinformation goes up as people call "terrorist" on their enemies.)
This is a paper examining narrow, historical data. It shouldn't be read as claiming broad strategic policy proposals.
That's ridiculous. I don't think anyone would pass on a 100% increase.
Happens all the time at a certain level. I've seen 300% increases turned down (and "name your number" bids) simply because the person wants to work in an environment that suits them (green field tech, great co-workers, less red tape, no management, etc)
At some point, life is short, you want to do a great job, and two employers know you will do it. May you be lucky enough to find yourself in a situation like this.
No need to flip a coin. If it's that close, the residual randomness of the process can be used directly: The candidate with more votes wins. Hardly surprising, this is how it's done already.
Which leads to vast amounts of money being dumped into close races.
Why not just run all elections this way: let everyone vote, put their choices in a big sack, then pick one name from the sack at random. It's just as fair as anything else, and avoids the "winner takes all" problem where big money dominates tight races.
I hate the suburbs.
I like having my own garage and not being robbed even if I accidentally leave the door wide open.
I like not having a garage and not having a car either. And I leave my front and back doors unlocked (yeah for doorman buildings.)
Yep, one problem with the major African studies was the variation in follow-up support given. Another problem is the difficultly of doing randomized trials (anyone who can be convinced to have his penis surgically modified can probably also be convinced to follow your safe-sex directions.) Thirdly, double-blind trials concerning STDs are a little difficult to do when circumcision is visible to all.
The US studies have similar problems: when a circumcision has an average cost of around $350, the parents opting for the child's surgery tend to be richer and more able/willing to spend on health care for the child. You would expect circumcision to be correlated with benefits to every treatable medical condition.
Well, if you waste five on meta-rules about God being really important, graven image of God is not God, other Gods are not God, etc, you may not have the space left for stuff like "please don't fuck little boys in the ass."
Fear not, though. The Catholic Church is reevaluating this one, and should have some good guidelines within a few years. The progressive Jewish community is ahead of the curve on this, too.
Sadly there are women that use sex as a weapon
Think objectively about the meaning of the word "weapon." Then think about what you wrote. Does it make sense?
* "...women can use sex as a WEAPON..." of course. Oops.
Oh, that makes so much more sense now. Glad you cleared that up.
"Sex as a WEAPON" like "I stab you with my sex?" "I blow you up with my sex?" "I shoot you with my sex?" Oh, wait, I see, a man assaults a woman and she was using sex as the weapon, he was just the innocent victim of the attack. Got it.
I totally understand this. It's like me (a rich person) using money as a weapon. I have something other people want, so they beat me up and take it. All my fault, I was using it as a weapon, and they were the victim of the weapon.
Sheesh, unless you are missing an eye due to a vicious hard nipple attack, seek professional help if you think sex is ever a weapon.
You're talking about completely different career paths. A CS PhD has a strong theoretical background. A program architect is a totally different track. It's like saying that someone shouldn't get a PhD in anthropology because it won't prepare him for is career as an accountant.
Different tracks, but they should both know the basics of both fields.
If you want to be in the 1% in either field, you need to know all the basics. If a PhD can't talk about B+ trees, or an architect can't talk about the halting problem, he is not a serious expert. Those $250K+ jobs don't go to the vocational skills crowd. And yes, a generic PhD at age 32 looks pretty vocational. BTW, I don't mean $250K to mean anything important: it's just a placeholder for the transition from hired help to intellectual contributor in the PhD/professional level world.
For those self-directed, fun, and interesting major skunkworks/research jobs, there is only one track: strong theoretical knowledge + expert practical delivery. If you didn't mostly figure out the theory by end of undergrad, you are going to have a hard time making it.
I suppose it depends how much time you are willing to commit, whether you'll do it part or full time, and how much experience (if any) you have in a research environment. Full time, a PhD will take anywhere from 4-7 years, typically (in the US - I understand that's a bit lower in the UK). An MS will take another 2-3, full-time, I'd expect.
Given the OP is in computer programming, and wants to be in computer programming/CS after his PhD, the 4-7 years is the killer. Assuming he is talented enough to get a decent PhD from a decent school, that 4-7 years is the difference between being a mid-level developer and a senior architect/project leader. That's a lot of ground to make up even with a brand new PhD. Plus, at age 35 or so, most research/skunkworks hardly even consider academic credentials (that 10+ years of experience is a better predictor of success.)
Obviously, it depends on exactly what you want to do, but most of the younger successful CS/programming people I've known did not have PhDs: getting that 10-20 years of experience on ever more challenging projects was basically impossible with a 4-7 year detour into academia.
For the record, "off-color" does not imply "racist."
And see, this is why there will never be an equitable resolution to the whole political correctness problem.
There is an equitable resolution to this problem. We already have it. Douchebags who think this is acceptable either STFU or take it to their private country clubs or deer blinds. Keep your off-color (and we don't care what kind of off-color they are) remarks out of workplaces, courts, etc. If you really feel the need to express your douchebaggery on a public street, then go ahead, just try to avoid feeling butt-hurt when normal people point out that you are a douchebag.
Aww, that's cute. Too bad it's also bullshit.
Men don't overhear an off-color joke being told to another man and subject the whole office to PC-training.
Hmm, last place I was at, some idiot boss told an off-color (i.e. racist) joke that another man took offense to. Lawsuit. Settled for around $2M.
The only bullshit is people thinking their own views of what is professional conduct should somehow be the standard of their workplace. You think rape jokes or commenting on peoples' tits are acceptable? Feel free to call up HR and ask that that be added to the employee code of conduct. If they tell you to seek professional help, maybe you should.
I had that one covered: "tech-geek mentat."
PDV is, of course, the character I had in mind for that. I'd make the same choice.
Dune is a masterpiece. The masses don't know it exists. The award-givers looked him over. And only the first book got any real acclaim from critics.
It's a good book, but it's just not that interesting in terms of ideas. It's just desert Islam in space. Plus some worms to provide action.
Seriously, just ask "who would I want to be in this book?" About the only answer is Paul or maybe one of the tech-geek mentats.
Bummer if you're a women too: you get some soft power if you happen to be in the elite court and get your Bene Gesserit training, else you are pretty much a non-entity.
If you think Dune is great, you'll like many of the available historical novels out there.
This is the first Slashdot in ages in which the comments are hitting almost uniform high quality.
Brunner, LeGuin, Lem, and the Brothers Strugatsky. All great SciFi in terms of ideas above technological opera.
I hope to see Yevgeny Zamyatin, maybe even Jack Vance and Zelazny mentioned.
All these guys are on par with the standard "canon of important literature you should know, Mr college graduate."
Syntax errors, are the biggest ones.
Actually the fastest guy would probably benefit from a small audience of programmers pointing out he missed a semicolon or that array is wrong-sized somewhere. This would be obvious to you as such a top programmer.
Where I work, we inflict this on all our "top" programmers. You want that code in, you get a review. A star programmer produces more and better code when four or five junior developers are critiquing his code for missed edge cases, confusing function names, ugly control flow, lack of unittests, etc.
Has anyone ever compiled a report on the longer term noteworthy projects of these competitive programmers? I'd be interested in seeing if there is anything I use regularly or admire would be on the list. If they aren't cut out for that I'd bet they'd make hulluva sys-admins though.
I've interviewed many and hired some of these guys. They tend to be much better than average in the right environment. Watch a few of PM's screencasts, you'll see a) things are named well and consistently, b) he doesn't run the code until he thinks the algorithm is right, c) a lot of it works first time, d) if it doesn't run first time, he thinks and the problem and then fixes it.
The ability to accurately write 20 lines of production quality code and have it run first time is a pretty good basic skill to have. He could probably do 100 lines just as well.
This type of skill doesn't ensure you'll create great longer term projects, but the ability to bash out four or five solid tests of your ideas is a pretty good start. All my group's software architects have this skill down pat: a five-page, production quality POC is often the only reasonable basis to discuss a complex idea.
While I usually don't advocate "use language X," a mess of this size (200K LOC) with a non-CS developer team, may be a pretty nice fit for a Python based retrofit.
1. Get source code control in place
2. Get automated builds/testing in place
3. Define functionality by writing Python unittests
The problems you encounter in step 3 will drive how you incrementally, or otherwise, refactor the code:
a) can Python even interface to the system in a reasonable way?
b) can people even agree on a good test suite?
c) does running a test require massive setup of files, external processes, specific machines being up, etc?
d) can two people run the test suite simultaneously?
e) does it work on weekends?
I predict the only thing that will really happen here is that some "scientists" with questionable ethics burn through 5M! Despite their grand claims, there is zero research need here.
Well, it is the Templeton Foundation: their basic goal is to give money to scientists in exchange for publicly supporting woo.
Virtually all the great geniuses of recorded history have believed in an afterlife. Some AC on slashdot confidently states otherwise. Who has more credibility - Isaac Newton or Anonymous Coward on the internet? That is indeed a tough one.
Yeah, so much so that none of them are honored or remembered for their profound insights into the afterlife.
Fuck off, moron.
Right, but the trouble with that theory is that "generations" are continuous, not discrete. What is the generational difference between someone born in 1962 versus 1967? Unless the government passes some extreme law, the answer is "it's just a label." They will behave differently, but on a continuum, not because one is a baby boomer and the other is GenX.
Linear time is useless to predict cyclic anything where modern human society is involved. Ten years of innovation today (and its effects on society) is greater than thirty years of innovation two hundred years ago. The scale just isn't linear. Nothing has a significant long term stable frequency.
If you are a cicada, you have reasonable grounds to disagree. Sadly, you can't talk and aren't real big in the innovation space.
Well, why not simply decouple the two operations--they already did so for instantiation: __new__() and __init__(), why not separate the converse with __deinit__() and __del__()?
Then when you call "del foo" in code, you are invoking __deinit__() destruction, freeing resources, etc, but leaving the GC free to call __del__() when or if it sees fit.
That's the real pattern RAII wants anyways--tying resources to the semantically-meaningful life of the object, not the life of the object in memory (since that is non-deterministic/varies by GC algorithm).
You might be right. I've never liked Python''s new/init stuff.
As for switch/case, either add that, or goto. There *are* use cases where it makes coding cleaner/easier to read--which is one of the underlying points to python, isn't it?
A use case, or even infinite use cases, does not mean it is a good idea. Even a use case in which some snippet is objectively easy to read. This is basic language design. If you add a new entity to your language, you and your users have to understand what it is.
Take, for example, the target (label) of your proposed goto statement. Is it a marker in a block of text? If so, how does it interact with try/catch/finally? Is it a first class object? Is so, can I pass it do another function and do a LISP non-local goto? Can I return it from a function?
Whatever rules you pick, have you really made things easier to read or more complex?
IIRC, Erik Naggum had some interesting posts on this topic.
And a 3rd item: if you're not gonna have goto, then at least allow break to accept a parameter to know how many levels to break out of... having to manage and test extra flags just to exit out of multiple-nested blocks at once is much less readable.
Again, you can express some things more concisely, but at what cost to others reading your code? "break 9 levels" helps no one. "break 2 levels" might be better expressed as a subfunction within a simple return.
People can write amazing bad code using simple 1-level constructs like 'if' and 'break.' It should not be surprising that giving them power tools like 'multi-if' and 'multi-level-break' just lets them write worse code and get even more confused by the good code they happen to see.
The only two things that really bother me about python are:
1) after 25 years they still refuse to add a switch/case statement (makes writing FSMs harder)
2) there is no gaurantee that a destructor is ever called, thus you cannot implement a RAII pattern with objects
Switch/case has always been a bit of a funky construct. LISP's cond was just a general form of if/then/else'. C's switch was pretty tied to C's eq style equality (and was a fun hotspot for compiler writers.) C++'s switch is just an artifact from C that must ignore C++'s attempts to generalize equality. Fortran's computed goto is best described as "interesting." I'm not sure what Python could provide in this space that would be a significant benefit.
RAII is also a bit funky. The best garbage collector is often "do not do GC, assume the program will terminate before you run out of memory." Tying RA to GC is a pretty significant language design choice that, as you note, affects the patterns a programmer will use. At my current gig, we make design choices like this (auto-terminate and restart processes that exceed a memlimit,) but I'd hate the language we use (and we use Python) to have its own views of resource management based on memory.
...it's when we miss that we cause problems.
Yep. I read the original paper: it hardly talks about drone strikes at all: it is about the effectiveness of killing the leaders of relatively young, violent NGOs.
I would really hope that no one in power reads the Slashdot "article" and believes that drone strikes are scientifically justified effective policy: the effects of mistargeting are not included; the operational changes in response to a drone strategy are not included (e.g. misinformation goes up as people call "terrorist" on their enemies.)
This is a paper examining narrow, historical data. It shouldn't be read as claiming broad strategic policy proposals.