710 karma · joined July 29, 2008
Are people really so unconcerned about the livelihood of others? Each of us is already free to give away the fruits of our own labors -- but why insist that others must do the same?
I was using the "backwoods Christian" stereotype to make a point in a (hopefully) humorous way, that people who are totally wrapped up in their own worldview often completely fail to understand the point of other worldviews, and don't even realize they're missing the point.
For what it's worth, I was raised in the back woods, and grew up around the kind of people I caricatured (who were thankfully always a minority). But since intent is hard to convey on the Internet, it would have been wiser for me to use talking animals like Aesop, or something else less likely to offend.
It just seems pointless to constantly profess such dismay and amazement at how clueless other peoples' programming paradigms are. Is there anyone who really doesn't believe there's more than one self-consistent, sensible way to write code?
In the software case you explained, the interface changes so you can't even try to do the wrong thing. On real-world objects, you can always try to do the wrong thing, it just doesn't work.
Real-world objects don't have this property -- it would be like the gas tank hatch disappearing from my car after I fill it up, and reappearing once I drive around for a minute.
However, I do agree with you that it's easy for bad programmers to create objects that are counter-intuitive and difficult to understand. It's up to the programmer to insure that an object isn't encrusted with dozens of badly-thought-out methods with no obvious paradigm for how to use them.
But this behavior is exactly what makes an object. Programmatic objects are supposed to be analogous to real-world objects. If I shift my car into first gear, then turn the key to start the engine, I get very different results than if I do the reverse.
Even abstract mathematical objects like vectors and matrices work this way. If I rotate a 3D vector twice, the final direction it points depends on the order I do the rotations in.
An interesting idea -- I work with Java and C# every day, but I never thought of writing assembly code for the JVM or .Net VM.
I've never seen such a detailed and beatiful animation of this process -- I need to do more research to see how the detailed molecular motions were figured out.
I think this is also why pure functional languages are so hard for "normal" people to understand -- their basic premise is the opposite of the real world around us that's filled with stateful physical objects.
You can also "time travel" by moving to an area of higher gravity (per general relativity). Time travels more slowly for you there, so you can let your original location get ahead of you, then go back there to effectively travel to "the future".
Of course, gravitational time dilation is a tiny effect, so you'd have to get near something unhealthy like a black hole to notice much difference.
Something like the number of hours in a work week isn't just a fixed number; it's got a history behind it and driving forces on it that are needed to make sense of its current and future values.
Aaronson implies that he thinks about these situations by trying to figure out what Nash equilibrium they might settle to, but I think even that concept's not general enough. In the real world, people don't make their minds up once and then stay the same afterwards -- they'll change their behavior over time, and not always towards any equilibrium state.
And it'll be none too soon -- then we can abandon the doomed effort to somehow cobble together huge, powerful apps like Maya and Photoshop out of a mess of JavaScript and XML.
On most web sites that aggregate user content, the content contributors make no money, and often the web site doesn't either (e.g. Wikipedia, YouTube, Facebook). These are more like online collaborative hobbies, where everyone involved is doing it just because they enjoy it and have some time to spare.
If I barter you my old laptop that crashes when you leave it on more than an hour, you're going to be mad later when you find out I didn't tell you, and you'll have to appeal to a third party for justice if I'm bigger or stronger than you.
The best programmers are working on problems that no one knows how to solve yet.
The old Apple 2 hackers had a great understanding of assembly, but that's because it was the top level of the system to them, the stuff they worked with daily. I doubt most of them understood the PLA that decoded the instructions, or the behavior of the dynamic NMOS logic inside the 6502.
The 6502 instruction set was essentially the API of the processor, and it wasn't above reproach any more than current software APIs are. Many people wished for different addressing modes or additional instructions to simplify common coding tasks.
I want to read stories about events all over the world and their meanings, context and history. I want those stories to be written by experts whose full-time job is tracking those stories down and explaining them to me. People like that have to get paid, and it's not clear yet how that's going to happen in the post-newspaper future.
There's always a demand for this sort of news, so I'm sure new businesses will spring up in the future to supply it to me. But it's going to be an annoying few years while it gets sorted out.
But ironically, many hardware engineers like me spend all day writing what's essentially software (Verilog code) and running it in a simulator (VCS). Eventually we send a binary file (GDSII) that represents the chip layout off to the fab, and though we do get real chips back from Taiwan, most of us never lay hands on them.
One question he didn't address was why he couldn't just create arbitrary surfaces out of NURBs or some other type of spline. It seems like that would give an architect greater freedom to mold things to his liking, instead of choosing predefined functions and playing with the free parameters. Perhaps he just likes the aesthetics of the rheotomic surfaces?
Out of 500 lines, about 30 lines are spent on the rant, and there are almost no comments of any significance anywhere else, not even a file header to explain what the class is and how it should be used.
Payday loans tempt the weak with options that help in the (very) short run, but harm in the long run.
The very existence of payday loans encourages self-destructive habits among the poor. Why budget carefully when you can just get a payday loan and kick the can down the road to next month?
And since many payday loan customers get these loans every month, the loans are really just an additional monthly bill for poor people.
The author's list of core competencies (fast typing, command line, vim, Linux) sounds more like a list of cultural traits.