Dude, I HATE Bush but this is the stupidest criticism of his administration I've ever heard.
Some random politician/preacher (unconnected to the administration) makes a remark that we ought to assassinate some head of state. The Bush administration calls the remark "inappropriate," says "we don't agree and that's not our policy."
That's what makes the US akin to mass murderers targeting civilians? Because they didn't use strong enough words when they disagreed with that remark? You need a reality check.
And here's the killer: the average US citizen is in complete denial about all of this, and considers saying it to be a personal insult rather than a statement of fact.
The real killer is that you criticize the one-sidedness of pro-US ignorance, but regard the one-sidedness of your anti-US ignorance as a "statement of fact."
I am an American who has plenty of criticism of our attitudes and foreign policy.
However, calling the US "the biggest state sponsor of terror" -- which is to equate our foreign policy with mass murder targeted at civilians -- is dishonest and simply unsupportable. It is as ridiculous as what you criticize.
(other elements of your "statement of fact" have similar problems, but this was the most flagrant).
Actually, you'd dereference the array by saying @{$_[0]}
Do you even notice what you just did? You wrote an expression consisting of 7 characters of punctuation and one numeral, just to refer to an argument passed to a function!
Do you realize that in sane languages, you would just reference the *name* of the parameter, with no punctuation at all?
Because when I said (1,2, (3, 4)) I really actually truly wanted a nested list, but Perl happily flattens it without warning. (Note: I know about references -- minefields suck even if you know where the mines are).
Because I am tired of sloppy, legacy syntax like auto-quoting of barewords in some contexts, and the stupid hacks it takes to work around them (like prefacing constants with +).
Because I want objects and inheritance, not blessed hash references and @ISA.
Because I want to be able to index into strings with the [] operator, like pretty much every comparable language will let me do.
Because the fact that ("" eq undef), ("Foo" == "Bar"), and (!"0") all evaluate to true makes me want to eat glass.
Because evaluating an array in a scalar context is not an intuitive way to get its length. Nor is $#array.
Because Python and Ruby are so vastly better, and yet Perl is what we're stuck with for the moment.
The danger of the attack grandparent describes is that the foreign site could trick you into authenticating with "your home server" by spoofing its login page and hiding the URL to look legit. Then you would be giving your username/password to the untrusted site.
I recommend you take the time to read and understand a spec if you are going to claim it is broken in blatantly obvious ways.
Step 5: Consumer checks the identity, via the User-Agent
Now the consumer constructs a URL to the identity server's openid.mode=checkid_immediate (or checkid_setup) URLs and sends the User-Agent there. By sending the User-Agent there, the user's cookies and whatever other login credentials are sent back to their trusted identity server. The server does its work, appends its response onto your supplied return_to URL, and sends the user-agent back at you.
Breaking that down:
1. Say your home URL is www.slashdot.org/~shmlco. You log into slashdot.org, and slashdot gives you a cookie as it always does. This is how slashdot verifies you are logged in.
2. You go to randomblog.com. You want to post a comment as shmlco from slashdot. So you give randomblog.com your URL, www.slashdot.org/~shmlco.
3. randomblog.com establishes a shared secret with slashdot.org cryptograhically, if it has not done so already.
4. randomblog.com sends your browser to whatever authentication URL is specified in the link tag of your site, for example: <link rel="openid.server" href="http://www.slashdot.org/openid-validate.cgi" >
5. Your browser hits www.slashdot.org/openid-validate.cgi, which can validate that you are logged into www.slashdot.org (just like any slashdot page can), based on your cookies.
6. If you are logged in, slashdot.org signs a certificate saying so, using the shared secret as a key, and redirects you to someblog.com with the signed certificate as one of the parameters.
7. someblog.com decrypts the certificate, and therefore knows that your browser is signed into slashdot.org.
As you can see, your proposed attack could not work, because you don't have the victim's cookies in your browser, nor do you have the shared secret you would need to fabricate a certificate.
I mean really, don't you think that someone who took the time to write a detailed spec would think of obvious attacks like the one you propose?
You're right! In his pages and pages of specs, he totally missed the attack of "just typing someone else's URL!" I wonder why he never thought of that!
1. Tokens don't imply a database of owners -- it's just a way to prove that you're talking to the same token you talked to yesterday. Instead of asking you to create a username and password for an account with a web site, it would ask you to insert your token.
2. No -- done right, a hardware token would have a private key that never leaves the token. It would authenticate itself by signing challenge data on command.
3. The private key would never leave the device. It would erase its memory if tampering is detected (there are devices that do this today).
I hate the patent crazyness as much as anyone. But why so many stories about Amazon's patents in particular? Amazon is a relative lightweight in the patent scene. IBM walks to the patent office with a stack of patents every single week. I'm sure you can find plenty to pick on in their applications.
Not to mention that Amazon is often on the receiving end of patent aggression. If you look at Amazon's most recent 10Q, you'll see that Amazon is currently the defendent in five patent infringement lawsuits.
Pinpoint, inc. is suing Amazon for patent infringement related to site personalization.
Soverain Software is suing Amazon for patent infringement of four of their patents, including a "Digital Sales System" and "Digital Active Advertising."
IPXL holdings is suing Amazon for infringement of a patent titled "Electronic Fund Transfer or Transaction System."
BTG International is suing Amazon for infringement of a patent titled "Attaching Navigational History Information to Universal Resource Locator Links on a World Wide Web Page."
Cendant Publishing is suing Amazon for infringement of a patent related to recommendations.
If you despise patent aggression, Amazon is not your poster child for patent abuse. Not even close. Amazon is taking a lot more than it's dishing out.
Disclaimer: I work for Amazon, but of course do not speak for them.
POSIX is POSIX, no matter what the label on the box, after all.
That's very funny.
Why do you suppose that every nontrivial UNIX program uses autoconf to check for 50 headers and 50 functions, and litters the source with #ifdef's appropriately?
You expose yourself as an ideological fraud when you appeal to the idea of inherent rights to defend a society that enslaved half its population.
People delude themselves into thinking that they believe in abstract ideals like "states' rights." Sure you believe in states' rights when that's your retort against those damn Yanks to want to integrate your schools. But as soon as other states start granting gay marriage licenses? CONSTITUTIONAL AMENDMENT!
If it lacks the feeling, then it is not "technically correct". If a perfect robot plays the same piano from a MIDI file, then the audio will be exactly same as original. (counting out hand claps, coughing, etc...)
The only instrument this could be strictly true for is an electric action organ. MIDI doesn't have enough information for the piano.
MIDI doesn't know if you let a piano key up slowly, causing a moment of fuzz when the felt damper touches the string.
MIDI doesn't know if you re-strike a key without letting it up all the way, resulting in a duller sound (for example, during a quiet trill).
There's nothing that's theoretically impossible to reproduce, but there is a lot to capture -- certainly more than MIDI provides.
I even have this fancy software (not sure if it's still published) called 'Desktop Sheet Music' published by Midisoft. It lets you enter the score, completely and 100% accurately, and then it's played back EXACTLY how the composer intended.
Please tell me you're not serious.
No composer intends for a performer to interpret their music mechanically.
Music ebbs and flows; that's what makes it human. Mechanical reproductions are utterly flat in comparison with a human performance.
Notes are only a means for communicating the smallest quanitifiable details of what a piece of music is actually trying to communicate.
As a Mac OS X user, a previous Windows user, and a current Linux Desktop user, I will not be the first to tell you that X is slooow.
As a previous BeOS user, I'm here to tell you that OS X, Windows, and X are ALL slooooow.
Resize a Tracker window in BeOS and compare with resizing the Finder on OS X -- you will be blown away at the difference (sadly, you'll probably never get a chance to do this). I don't care how fast your Mac is, there's no comparison. (BTW, I'm a Mac fanboy in most respects).
No windowing system has in responsiveness what BeOS had 8 years ago, even with 8 years of Moore's law.
What's the difference? I'm pretty sure it's multithreading.
I think you're a little bit confused about how shells like bash work.
If you write $foo when foo="foo bar", it does not "become" two separate strings. Variable interpolation in shells is just a textual search-and-replace. So if you write:
$ ls $foo
Here's what the shell does:
1. Perform variable interpolation: now the command is ls foo bar
2. Interpret the command. It splits the command into parameters using the contents of IFS, which is set to space, tab, and newline by default. So now the command is:
program=ls param1=foo param2=bar
The shell doesn't "remember" that the string "foo bar" came from a single variable interpolation. It's exactly as if you typed the command with the variable replaced with its value.
If you don't understand this properly, you can run into weird syntax errors when variables expand in ways you don't expect. For example:
$ if [ $unsetvar = "" ] ; then echo hello ; fi zsh: parse error: condition expected: =
Since $unsetvar expanded to nothing, the line became:
$ if [ = "" ] ; then echo hello ; fi
Now the syntax error is obvious. This is a fundamentally different model of variable evaluation than most programming languages have.
I've thought about this a lot. I don't have a good solution (mainly because I haven't had the time to write any of my own software), but here is the state of my thought process.
Requirements:
an email store that I can easily add messages to, and that will handle duplicates gracefully. Like you, I have lots of different archives floating around, mostly from all the different email programs I've used over the years. I want to be able to throw all these into the mail store, and adding the same mailbox twice shouldn't screw things up (message-id can be used as a unique identifier).
an easy and seamless way for new mail to go into the archive. Once I create this archive, I want all my mail to go into it, without having to think about it.
I need to be able to reply to recently received email, using whatever client I want. This is somewhat at odds with the previous requirement, because once your mail is moved from your mail reader's world into the archive, it might not be easily accessible from your mail reader any more (depending on your approach).
Fast, indexed searching, from any web-accessible computer. If I'm at a friends house, and want to see a picture or something that I know I have in my email archive, I want to be able to pop into a web browser and instantly have my answer.
Fast, convenient, thread-capable browsing.
The most promising solution I've come across so far is OSS project Lurker. It's an archival program primarily designed for mailing lists, but also works pretty well for personal email. You add messages to its data store in mbox format from the command-line, and it indexes them and gives you very fast browse/search on the web. The software scales extremely well, and its web interface is quite snappy.
So what are its shortcomings? I don't believe it handles duplicates. I can't reply to email in its data store, because it's all web-based (there might be a way to create a link that will open up your mail reader and set all the appropriate headers for replying, but this didn't exist last I checked). There's no way to delete a message from the archive once it's there. There's no IMAP interface, and you can't open its mbox in a mailreader because it depends on knowing file offsets for each message. And there isn't a really seamless way to put messages into it from your mail client, though one good suggestion I heard was to have a special mailbox that a cron would pull messages from.
Why not just IMAP? A couple of problems with that. Again, it doesn't handle duplicates. I haven't found a web client that will provide fast search of an IMAP mailbox (by caching and indexing headers). And I've never really found a web mail client that I like much.
Currently I do use IMAP, but it's just a little less than optimal. I keep hoping something better will come along (or that one day, writing email archiving software will be the most exciting thing I can imagine doing:)
Not being able to find a key to map to "enter insert mode and enter XIM" is a poor complaint. Do you really use every single default mapping?
If you wanted, you could just remap "i" to always enter XIM also, or alternatively remap "I" to do the same. (Do you really use the default binding of I: "Insert text before the first non-blank in the line [count] times."
I don't know anything about XIM mode, but I would be surprised if you couldn't map a key to press CTRL-SPACE and Esc in sequence.
I'm in my early 20s, and was lucky to land a job that pays well enough for me to set aside serious money for savings, both short-term and long-term.
However, I'm wary of the stock market (which is where you have to go if you want anything close to 10%). Everyone treats it as if 5-10% is a sure, safe expectation, but I keep hearing things that make me question whether this is a safe assumption.
The Economist claims that in the last 100 years, there have been either 3 or 4 (can't remember which) periods of 20 years where the stock market had a net negative return. Under your first scenario, that means that the person is left at 37 with LESS money than they had at 17!
The Economist then ran another article where they claim that the returns of the last 20 years are out of the ordinary, and not what we should expect going forward.
So what am I going to do? Not sure yet. At the least, have money in a savings account so that I don't lose to inflation. And besides that, perhaps put some money in lower-risk investments.
I just have a hard time believing in infinite growth.
Re:What about Virginia O'Hanlon's letter?
on
Ho, Ho, Ho
·
· Score: 1
That letter/response aggravates me every time I read it. I can't believe that it is held up as an example of the Christmas spirit.
Little 8-year-old Virginia was very clear. "Please tell me the truth," she said. Translation: no lies, no BS please, just TELL ME! You know the answer, I'm asking you directly, and I really want to know.
Maybe there are people who like being misled in the name of fantasy and the Christmas spirit. I am not one of them, and apparently Virginia is not either. It's one thing to play the Santa game with kids, but when they ask POINT BLANK and you willingly keep them in the dark, that's just not cool.
I hear QT is good stuff. This isn't a slam on QT in particular.
However, I'm still waiting for the day when mainstream GUI libraries catch up to where BeOS was ten years ago, and put drawing in a separate thread from everything else.
There is absolutely no reason why GUI applications need to become sluggish when they are doing something computationally intensive. There's no reason that an application should stop posting redraws every time it makes a blocking call (like, for example, doing file i/o).
My eyes were opened to this shortcoming of "modern" GUI libraries by an entry in Bram's diary a while ago.
Dude, I HATE Bush but this is the stupidest criticism of his administration I've ever heard.
Some random politician/preacher (unconnected to the administration) makes a remark that we ought to assassinate some head of state. The Bush administration calls the remark "inappropriate," says "we don't agree and that's not our policy."
That's what makes the US akin to mass murderers targeting civilians? Because they didn't use strong enough words when they disagreed with that remark? You need a reality check.
And here's the killer: the average US citizen is in complete denial about all of this, and considers saying it to be a personal insult rather than a statement of fact.
The real killer is that you criticize the one-sidedness of pro-US ignorance, but regard the one-sidedness of your anti-US ignorance as a "statement of fact."
I am an American who has plenty of criticism of our attitudes and foreign policy.
However, calling the US "the biggest state sponsor of terror" -- which is to equate our foreign policy with mass murder targeted at civilians -- is dishonest and simply unsupportable. It is as ridiculous as what you criticize.
(other elements of your "statement of fact" have similar problems, but this was the most flagrant).
Actually, you'd dereference the array by saying @{$_[0]}
Do you even notice what you just did? You wrote an expression consisting of 7 characters of punctuation and one numeral, just to refer to an argument passed to a function!
Do you realize that in sane languages, you would just reference the *name* of the parameter, with no punctuation at all?
Why do I hate perl?
Because when I said (1,2, (3, 4)) I really actually truly wanted a nested list, but Perl happily flattens it without warning. (Note: I know about references -- minefields suck even if you know where the mines are).
Because I am tired of sloppy, legacy syntax like auto-quoting of barewords in some contexts, and the stupid hacks it takes to work around them (like prefacing constants with +).
Because I want objects and inheritance, not blessed hash references and @ISA.
Because I want to be able to index into strings with the [] operator, like pretty much every comparable language will let me do.
Because the fact that ("" eq undef), ("Foo" == "Bar"), and (!"0") all evaluate to true makes me want to eat glass.
Because evaluating an array in a scalar context is not an intuitive way to get its length. Nor is $#array.
Because Python and Ruby are so vastly better, and yet Perl is what we're stuck with for the moment.
Seriously, if you never used BeOS, you don't know what you're missing.
I love Mac OS X, but a sluggish GUI is a sacrifice I've learned to live with.
The danger of the attack grandparent describes is that the foreign site could trick you into authenticating with "your home server" by spoofing its login page and hiding the URL to look legit. Then you would be giving your username/password to the untrusted site.
1. Say your home URL is www.slashdot.org/~shmlco. You log into slashdot.org, and slashdot gives you a cookie as it always does. This is how slashdot verifies you are logged in.
2. You go to randomblog.com. You want to post a comment as shmlco from slashdot. So you give randomblog.com your URL, www.slashdot.org/~shmlco.
3. randomblog.com establishes a shared secret with slashdot.org cryptograhically, if it has not done so already.
4. randomblog.com sends your browser to whatever authentication URL is specified in the link tag of your site, for example: <link rel="openid.server" href="http://www.slashdot.org/openid-validate.cgi
5. Your browser hits www.slashdot.org/openid-validate.cgi, which can validate that you are logged into www.slashdot.org (just like any slashdot page can), based on your cookies.
6. If you are logged in, slashdot.org signs a certificate saying so, using the shared secret as a key, and redirects you to someblog.com with the signed certificate as one of the parameters.
7. someblog.com decrypts the certificate, and therefore knows that your browser is signed into slashdot.org.
As you can see, your proposed attack could not work, because you don't have the victim's cookies in your browser, nor do you have the shared secret you would need to fabricate a certificate.
I mean really, don't you think that someone who took the time to write a detailed spec would think of obvious attacks like the one you propose?
You're right! In his pages and pages of specs, he totally missed the attack of "just typing someone else's URL!" I wonder why he never thought of that!
Thank you for your thoughtful analysis.
1. Tokens don't imply a database of owners -- it's just a way to prove that you're talking to the same token you talked to yesterday. Instead of asking you to create a username and password for an account with a web site, it would ask you to insert your token.
2. No -- done right, a hardware token would have a private key that never leaves the token. It would authenticate itself by signing challenge data on command.
3. The private key would never leave the device. It would erase its memory if tampering is detected (there are devices that do this today).
I hate the patent crazyness as much as anyone. But why so many stories about Amazon's patents in particular? Amazon is a relative lightweight in the patent scene. IBM walks to the patent office with a stack of patents every single week. I'm sure you can find plenty to pick on in their applications.
Not to mention that Amazon is often on the receiving end of patent aggression. If you look at Amazon's most recent 10Q, you'll see that Amazon is currently the defendent in five patent infringement lawsuits.
Pinpoint, inc. is suing Amazon for patent infringement related to site personalization.
Soverain Software is suing Amazon for patent infringement of four of their patents, including a "Digital Sales System" and "Digital Active Advertising."
IPXL holdings is suing Amazon for infringement of a patent titled "Electronic Fund Transfer or Transaction System."
BTG International is suing Amazon for infringement of a patent titled "Attaching Navigational History Information to Universal Resource Locator Links on a World Wide Web Page."
Cendant Publishing is suing Amazon for infringement of a patent related to recommendations.
If you despise patent aggression, Amazon is not your poster child for patent abuse. Not even close. Amazon is taking a lot more than it's dishing out.
Disclaimer: I work for Amazon, but of course do not speak for them.
I just had a crazy idea that I don't fully understand the implications of.
Remember how x86, even to this day, boots into real mode, and has to be manually switched into 32-bit protected mode?
What if Apple's x86 didn't do that? What if it booted straight into protected mode?
What if OSX/i386 didn't contain the code to switch the processor into protected mode?
Architecture gurus...?
POSIX is POSIX, no matter what the label on the box, after all.
That's very funny.
Why do you suppose that every nontrivial UNIX program uses autoconf to check for 50 headers and 50 functions, and litters the source with #ifdef's appropriately?
You expose yourself as an ideological fraud when you appeal to the idea of inherent rights to defend a society that enslaved half its population.
People delude themselves into thinking that they believe in abstract ideals like "states' rights." Sure you believe in states' rights when that's your retort against those damn Yanks to want to integrate your schools. But as soon as other states start granting gay marriage licenses? CONSTITUTIONAL AMENDMENT!
If it lacks the feeling, then it is not "technically correct". If a perfect robot plays the same piano from a MIDI file, then the audio will be exactly same as original. (counting out hand claps, coughing, etc...)
The only instrument this could be strictly true for is an electric action organ. MIDI doesn't have enough information for the piano.
MIDI doesn't know if you let a piano key up slowly, causing a moment of fuzz when the felt damper touches the string.
MIDI doesn't know if you re-strike a key without letting it up all the way, resulting in a duller sound (for example, during a quiet trill).
There's nothing that's theoretically impossible to reproduce, but there is a lot to capture -- certainly more than MIDI provides.
I even have this fancy software (not sure if it's still published) called 'Desktop Sheet Music' published by Midisoft. It lets you enter the score, completely and 100% accurately, and then it's played back EXACTLY how the composer intended.
Please tell me you're not serious.
No composer intends for a performer to interpret their music mechanically.
Music ebbs and flows; that's what makes it human. Mechanical reproductions are utterly flat in comparison with a human performance.
Notes are only a means for communicating the smallest quanitifiable details of what a piece of music is actually trying to communicate.
As a Mac OS X user, a previous Windows user, and a current Linux Desktop user, I will not be the first to tell you that X is slooow.
As a previous BeOS user, I'm here to tell you that OS X, Windows, and X are ALL slooooow.
Resize a Tracker window in BeOS and compare with resizing the Finder on OS X -- you will be blown away at the difference (sadly, you'll probably never get a chance to do this). I don't care how fast your Mac is, there's no comparison. (BTW, I'm a Mac fanboy in most respects).
No windowing system has in responsiveness what BeOS had 8 years ago, even with 8 years of Moore's law.
What's the difference? I'm pretty sure it's multithreading.
And what if bash isn't installed?
Go buy some champagne, to celebrate the fact that I have somehow invented a time machine that will take me back to 1993.
I think you're a little bit confused about how shells like bash work.
If you write $foo when foo="foo bar", it does not "become" two separate strings. Variable interpolation in shells is just a textual search-and-replace. So if you write:
$ ls $foo
Here's what the shell does:
1. Perform variable interpolation: now the command is ls foo bar
2. Interpret the command. It splits the command into parameters using the contents of IFS, which is set to space, tab, and newline by default. So now the command is:
program=ls
param1=foo
param2=bar
The shell doesn't "remember" that the string "foo bar" came from a single variable interpolation. It's exactly as if you typed the command with the variable replaced with its value.
If you don't understand this properly, you can run into weird syntax errors when variables expand in ways you don't expect. For example:
$ if [ $unsetvar = "" ] ; then echo hello ; fi
zsh: parse error: condition expected: =
Since $unsetvar expanded to nothing, the line became:
$ if [ = "" ] ; then echo hello ; fi
Now the syntax error is obvious. This is a fundamentally different model of variable evaluation than most programming languages have.
You didn't really mean "copyrighted information", did you?
We really don't want to go there.
Imagine how much "copyrighted information" one could claim is present in (say) Samba.
Requirements:
- an email store that I can easily add messages to, and that will handle duplicates gracefully. Like you, I have lots of different archives floating around, mostly from all the different email programs I've used over the years. I want to be able to throw all these into the mail store, and adding the same mailbox twice shouldn't screw things up (message-id can be used as a unique identifier).
- an easy and seamless way for new mail to go into the archive. Once I create this archive, I want all my mail to go into it, without having to think about it.
- I need to be able to reply to recently received email, using whatever client I want. This is somewhat at odds with the previous requirement, because once your mail is moved from your mail reader's world into the archive, it might not be easily accessible from your mail reader any more (depending on your approach).
- Fast, indexed searching, from any web-accessible computer. If I'm at a friends house, and want to see a picture or something that I know I have in my email archive, I want to be able to pop into a web browser and instantly have my answer.
- Fast, convenient, thread-capable browsing.
The most promising solution I've come across so far is OSS project Lurker. It's an archival program primarily designed for mailing lists, but also works pretty well for personal email. You add messages to its data store in mbox format from the command-line, and it indexes them and gives you very fast browse/search on the web. The software scales extremely well, and its web interface is quite snappy.So what are its shortcomings? I don't believe it handles duplicates. I can't reply to email in its data store, because it's all web-based (there might be a way to create a link that will open up your mail reader and set all the appropriate headers for replying, but this didn't exist last I checked). There's no way to delete a message from the archive once it's there. There's no IMAP interface, and you can't open its mbox in a mailreader because it depends on knowing file offsets for each message. And there isn't a really seamless way to put messages into it from your mail client, though one good suggestion I heard was to have a special mailbox that a cron would pull messages from.
Why not just IMAP? A couple of problems with that. Again, it doesn't handle duplicates. I haven't found a web client that will provide fast search of an IMAP mailbox (by caching and indexing headers). And I've never really found a web mail client that I like much.
Currently I do use IMAP, but it's just a little less than optimal. I keep hoping something better will come along (or that one day, writing email archiving software will be the most exciting thing I can imagine doing
Not being able to find a key to map to "enter insert mode and enter XIM" is a poor complaint. Do you really use every single default mapping?
If you wanted, you could just remap "i" to always enter XIM also, or alternatively remap "I" to do the same. (Do you really use the default binding of I: "Insert text before the first non-blank in the line [count] times."
I don't know anything about XIM mode, but I would be surprised if you couldn't map a key to press CTRL-SPACE and Esc in sequence.
Personally, one thing I just can't get past with Dvorak is the fact that the command:
ls -l<ENTER>
Uses your right pinkie five times in a row (not counting the space).
And just "ls<ENTER>" by itself is your right pinkie three times, or otherwise an uncomfortable contortion of fourth and fifth finger.
I'm in my early 20s, and was lucky to land a job that pays well enough for me to set aside serious money for savings, both short-term and long-term.
However, I'm wary of the stock market (which is where you have to go if you want anything close to 10%). Everyone treats it as if 5-10% is a sure, safe expectation, but I keep hearing things that make me question whether this is a safe assumption.
The Economist claims that in the last 100 years, there have been either 3 or 4 (can't remember which) periods of 20 years where the stock market had a net negative return. Under your first scenario, that means that the person is left at 37 with LESS money than they had at 17!
The Economist then ran another article where they claim that the returns of the last 20 years are out of the ordinary, and not what we should expect going forward.
So what am I going to do? Not sure yet. At the least, have money in a savings account so that I don't lose to inflation. And besides that, perhaps put some money in lower-risk investments.
I just have a hard time believing in infinite growth.
That letter/response aggravates me every time I read it. I can't believe that it is held up as an example of the Christmas spirit.
Little 8-year-old Virginia was very clear. "Please tell me the truth," she said. Translation: no lies, no BS please, just TELL ME! You know the answer, I'm asking you directly, and I really want to know.
Maybe there are people who like being misled in the name of fantasy and the Christmas spirit. I am not one of them, and apparently Virginia is not either. It's one thing to play the Santa game with kids, but when they ask POINT BLANK and you willingly keep them in the dark, that's just not cool.
I hear QT is good stuff. This isn't a slam on QT in particular.
However, I'm still waiting for the day when mainstream GUI libraries catch up to where BeOS was ten years ago, and put drawing in a separate thread from everything else.
There is absolutely no reason why GUI applications need to become sluggish when they are doing something computationally intensive. There's no reason that an application should stop posting redraws every time it makes a blocking call (like, for example, doing file i/o).
My eyes were opened to this shortcoming of "modern" GUI libraries by an entry in Bram's diary a while ago.