Gifted kids should not have trouble with school. Yet they drop out at the same rate as everyone else. And frequently are pressured to under perform. I consider this a tragedy.
51 karma · joined July 31, 2009
Gifted kids should not have trouble with school. Yet they drop out at the same rate as everyone else. And frequently are pressured to under perform. I consider this a tragedy.
I'm not sure where I heard it, but one idea that I like is that it ties to the Big Bang and the expansion of the universe. Most people don't realize how complicated conservation laws get in general relativity. For instance it is a matter of opinion whether or not energy is conserved! (See http://www.math.ucr.edu/home/baez/physics/Relativity/GR/ener... for details.) In particular suppose a photon sets out on a long journey, gets red shifted by the expansion of the universe, and consequently loses energy. What happened to the energy of the photon?
This question is highly relevant to the issue of entropy. Current theory says that we had a very hot and almost uniform universe, which then expanded rapidly. As it expanded any clumps that formed stayed hot, while the space between them cooled off, thereby leading to an increased thermodynamic non-equilibrium. Worse yet, local gravity pulled the clumps together resulting in interesting things like stars, which further increased the amount of non-equilibrium stuff going on.
Of course this pushes the question of the arrow of the time down to cosmology and general relativity. But given that physicists debate whether conservation of energy makes sense in general relativity, I'm fairly comfortable with accepting that the laws of thermodynamics are on even shakier ground there. Which makes the physical asymmetry seem not so bad to me.
Best, of course, is someone who is good at both. But they tend to be rare.
But I agree with you that Y combinators are not generally a good approach for working programmers because there are clearer ways of accomplishing the same thing. However I've heard that in some functional languages they can be very useful as a pattern to compile language constructs to.
1. Labeled loop control 2. Exceptions
PHP has #2 and a bad form of #1. In PHP you get to say how many loops to break out of, but not the name of the loop to go to. This makes code less self-documenting and can be fragile when editing code.
Other uses of goto for which substitutes are harder to find are to to make your language a more convenient compilation target, and when interacting with other control structures not under your control. These uses are VERY rare. In a decade of professional Perl programming I have seen each used twice. None of the examples were in any code base I worked with. Two were in the Perl core, the first is that the s2p utility emits gotos to emulate branches in sed, and the second is that the original Switch.pm used a goto to break out of any loops that it happened to interact with. (That one was a computed goto! After all he didn't know how this switch might interact with other switches.)
I would be willing to use goto for nested loops in PHP, but only because PHP does not offer labeled loop control. While I like to believe that I understand when to use goto for other reasons, I doubt I'll ever encounter a serious need to do that in any language.
For details see http://en.wikipedia.org/wiki/Mariner_1 or http://catless.ncl.ac.uk/Risks/5.65.html#subj1 for more details. Here is a summary. The Mariner 1 probe was destroyed because it veered off course shortly after launch on July 22, 1963. By July 28 the NY Times was reporting that the cause was due to a missing hyphen. NASA submitted a report to Congress the next year that confirms this.
The comma vs period version likely arose as a misremembering of which typo caused the problem. Or possibly by confusing it with another incident. (There are anecdotal reports of such a bug being caught in Project Mercury. Whether they are true is a different story.)
As a random example, the traditional exposition of special relativity depends on working in an INERTIAL reference frame. Hence the answer to Richard Keating's puzzlement is that the time dilation depends on absolute velocities relative to an inertial frame. A convenient inertial frame being approximately the vector sum of the Earth's rotation and the airplane speeds. (Approximately because the Earth still goes around the Sun, and the Sun around the Milky Way. And then there are the effects of gravity.) Calculating relative speeds in a rotating frame of reference gives an incorrect answer, and SR predicts that fact.
To address the more fundamental problem, nowhere does he address the point accepted by Lorentz himself that the Lorentz transformations with a preferred frame of reference causes every other inertial frame of reference to make absolutely identical calculations. Therefore there is no possible experimental difference between Lorentzian Relativity and Special Relativity. Or, put alternately, there is absolutely no way to single out any particular inertial reference frame as being preferred.
Furthermore Lorentzian Relativity has no theory of gravity. So it is intellectually dishonest to include corrections from GR in a discussion about LR. Fundamentally you can't discuss GR without accepting the idea of not only having no preferred inertial reference frames, but in fact having no inertial reference frames at all!
Am I the only person who was reminded of Ryan O'Neil? (For those who don't know, he accidentally hit on his own daughter at his SO's funeral not long ago.)
But back to the point, I agree that exploiting Google's desire to be sensitive is tacky.
The default configuration for RubyGems doesn't run unit tests. Therefore unit tests provide a sophisticated check for, "Works on my machine" but isn't so helpful for getting good bug reports about what doesn't work on other people's machines. By contrast the default configuration for Perl's CPAN runs unit tests before you install anything, and this has been the default for Perl modules since the last millennium. (Actually unit testing has been part of Perl culture since 1987! Yes, the "make, make test, make install" idiom was in the first release of the Perl core. This was over a decade before Kent Beck began popularizing the idea for a broader audience.)
And it doesn't end there. For instance the Ruby world has no real equivalent to CPAN Testers. That's a distributed group of people who run all of the unit tests on all of the CPAN modules on different platforms and make publicly available reports of success/fail. That project runs nearly a half-million test suites per month. Which makes it possible to do things like dependency analysis on CPAN modules to track down who is causing what other modules problems. See http://ali.as/top100/.
In short I'm glad that you're doing unit testing and like the tools that Ruby offers for it. However if you're open to cross-pollination, there ARE things you can learn about unit testing from other language communities. Some of them might be great additions to Ruby.
My point of view is informed by the book, First, Break All The Rules. That started as a study by the Gallup organization on what divides great managers from normal ones. They learned that great managers implicitly understand that people have skills and talents. Skills, like how to drive a car, you can teach. But you can't remain focused on the road for hours, enjoy doing data entry, or make someone feel listened to without having a talent for it. And grownups are too hard to change to make it worthwhile finding talents they don't have. So it is best to make people productive by shaping jobs to their individual talents, and not by trying to "grow" them into people they aren't.
So I absolutely agree that world class performers enjoy performing at that level. You don't reach that level without having a talent, and you don't develop that talent without being wired to find pleasure in what you do. But that's better thought of as a way of recognizing existing talents than as a way to change people.
Software Estimation by Steve McConnell on page 66 lists many factors from the Cocomo II studies with their relative impact on software development. Multi-site development on average causes things to take 1.56 times as long to develop. How much does that extra time to market cost you? I submit that in a competitive world, often a lot.
If you actually do something that requires using your brain, you should meet plenty of other people who have good brains and have done something with them. The "have done something" bit makes them into more interesting people to be around. Plus you don't have to pay for that privilege.
Random disclaimer. I am not a MENSA member. However my GRE scores qualify me for membership in most high IQ organizations, including MENSA.