It's easier, all right -- until you want to start a small business. Then you have the combined weight of a hundred fat elephants sucking away at your very soul while you try to lump your business purchases and sales into arcane, badly described categories.
The inherent "unfairness" of the tax code is really complexity: it's complex because fairness isn't easy.
I've read e-books on handhelds for years; they are especially good with small babies -- you can walk up and down in the living room for hours, holding the baby in one arm and the handheld in the other. All of them have backlights so that you can read in the dark. Get aquainted with Project Gutenberg -- I can recommend "Mr. Midshipman Easy" as a very fun book.
The Palm Tungsten E is very, very nice: a sharp, good resolution screen, very fast, and decent controls for reading. You can also get the very excellant "Tradewinds" game for it. I haven't dropped it yet, so it still works. Bad points: I managed to get it on special but didn't type in the special code, so I didn't really get the special deal, and too many of the HTML readers won't read "local" html files. There's lots of free software for the Palm, but too much is lame.
The Franklin E-Bookman is good because it was cheap ($50 at Costco; they were selling them out) and has a big screen, good controls, and has very simple to use reader software. Bad points is that I dropped it and it broke, and the software wasn't quite done (and never will be; Franklin dropped the line). The desktop software was a little odd, and isn't fully compatible and regular files can't just be dropped in: you have to "convert" them. There's very little software.
The Phillips "Nino" CE machine was junk, more so after I dropped it and it broke. The ActiveSync software runs from mediocre to awful -- Windows CE machines are designed to be popped into a cradle for recharging, but every time you drop it in, it freezes and resyncs for five minutes. The software was all bad: lots of features, but all the features were done with no usability in mind. You can't just add files: in general files have to be processed before using. There's lots of software, but only if you know which processor you have and the OS version.
Lastly, my old Sharp Wizard OZ9000 was decent but had terrible connectivity software. The keyboard was good, and the IR worked (I transported all my data to another identical unit after I dropped it, and it broke). Not recommended since you can get a better, faster, smaller unit of almost anything else.
BufferedReader reader = new BufferedReader (new FileReader( fname ));
(BufferedReader, for most things, is faster than a plain Reader, and in addition has the handy readLine() interface)
Sometimes you just have to learn the libraries for your language. The Reader system, BTW, is nifty in that
reading from writing is clearly seperated, which helps with security checks. I can know that most of my code does not change the underlying files based on the object type that was passed in)
your code doesn't have to care whether you're reading from a string or a file making it easy to have embedded "files" in your program.
So -- 18.3 million desktop drives at $200 each is 3.6 billion dollars. This represents 15% of the Department of Energy budget of $23 billion dollars. It's a lot, but given how quickly disk drive prices are going down, it's within reason to say that 64 bits is too small.
Watson Sr's famous statement -- "there is only room for five computers in the world" -- was followed by a call to arms: "and IBM will build them!" There may only be five sales of disk arrays that use more than 64 bits -- but Sun will build them!
OK, I don't normally respond to "WildTangent is Spyware" -- among other reasons, because it's not my job. It's D----'s job. My job is employee number 10, Wild Tangent. I'm a programmer, specializing in whatever we need to fill our customer needs. And I'm irritated enough to want to write about three Wild Tangent related points, but I won't. I'm going to talk about the business of 3D.
In the beginning, nobody quite knew what the 3D market was going to be. E-greeting cards that sing and dance? 3D Banner ads? Audio visualizers? Data visualization? And what was the business: who is going to buy? what do they buy? Does a web-3D company sell tools and make the "player" free? Or make the tools free, and the player free, but make a "technology license"? Or have the content cost money? Who pays to develop the content?
Wild Tangent, like all of the 3D companies, tried a bunch of things. I've seen companies that made very, very simple tools that tried to fix the "3d is hard" problem (dead), and companies that made mini-movies to solve the "what sort of content" and "3d art is expensive" pro(dead) and companies that make tool sets (dead) and companies that make 3D community spaces (dead) and companies that make data visualizers (dead) and a lot of other things.
Turns out, the right path is: - complex tools. Simple tools don't make for very interesting content, and people care a lot about interesting content - free player. Noone has made any real money by selling their player, even if it was a pain to develop. And believe me, they ARE a pain. I have the scars to prove it. - good content.
One of the many wrong paths is the "datamining" path. Nobody really _cares_ about any of the data you could possibly collect from a user's machine (note: except for things that are grossly illegal like bank PIN numbers, of course). Suppose some web company could co-ordinate your DOOM-3 habbits, your email address, and the last three movies you saw: would it help LL Bean sell you slippers? Or GM sell you a Cadilac? Answer: no. And so they don't pay for it.
And it's not just a pet theory, either. I get asked to add features to our products all the time; the features are never "let's get the user's email address" or "can you find out people's slipper sizes?". Instead I get questions like, "can we reduce the size of our 3d geometry" and "can we interface to the XYZ framework". And, by an enterprising-but-clueless sales person, can I make it work with PowerPoint because our 3D engine doesn't work on the Mac, but if it worked in PowerPoint it would because PowerPoint works on the Mac and it would be nice to work on the Mac.
To summarize: Wild Tangent makes games. People buy games, and that makes us money. Games a re big business with enormous potential becoming very large and successful. Wild Tangent doesn't do yucky data mining because people don't pay for that and we wouldn't make money. Companies that do the sleazy things tend to be small and stay that way: it's just not a big business. And the Wild Tangent boss -- Alex St. John -- really, really wants to run a big company.
The stupidest name for the best concept. My code constantly grabs some sort of resource -- files, mutexs, com objects, whatever -- that need to be "freed" somehow (Release, delete, free, etc).
Old style: "free" it at the end of the method
Problem: doesn't work with exceptions. Easy to forget with early returns. You have to add an ugly try/catch/finally block in each method, meaning that variables have to be declared in ugly and inconvienient spots.
Solution: "free"Me classes:
class ReleaseMe { private: IUnknown* m_ptr; public: ReleaseMe (IUnknown* ptr):m_ptr(ptr) { } ~ReleaseMe() { if (m_ptr) m_ptr->Release(); } };
...
ISomething* ptr =.... ReleaseMe RM(ptr);
Result: No matter what happens (almost), the object will be "free"d. I can return early; I can have exceptions; I can do whatever, and the object is "free"d.
The same concept can be used for classic C files (fcloseMe), for all the myriad ways of allocating memory (there must be a half-dozen in C++ on Windows), etc.
Smart pointers are the same idea, but IMHO drag in too much baggage -- you have to spend too much time figuring out the thousand-line smart pointer template, you have to do a lot of work to know if one smart pointer type can be converted into another, the boxing/unboxing thing looks awful...the list goes on. And the only work with one type of memory resource, when in reality in C++ on Windows there are lots of types of memory that have to be managed.
A (fairly recent) MSDN has this, and only this, to say about Yield (at least in the index):
Not necessary and has no effect. The message loop handles synchronization. Not necessary and has no effect. The message loop handles synchronization.
Threads that create processes can use WaitForInputIdle to wait until the new process has finished its initialization.
It would seem that Sleep(0) is a replacement for yield; it lets the next thread with the same priority run; if there are none then the original thread keeps on running. Note that this isn't mentioned by the Yield documentation.
However, my favorite example of bad documentation is InternetGetConnectedState versus InternetGetConnectedStateEx. You would never guess, from the identical nature of the very brief descriptions, that one works well, and the other also works well but in more situations, and in fact that the first one sometimes returns the wrong data.
When I needed some A4 paper (I was doing printer drivers, and the European office was getting antsy)....I had them hand-carry a ream over at the next sales training conference.
And yes, it's amazing how many paper retailers don't know what size "A4" is. Conversations would go:
"I need some A4 paper; do you having any?"
"What size is it?"
"A4"
"What size is that?"
"It's A4 size. A4 is the size. The size is A4. There is no other size; it's called 'A4'"
The nipple is intuitive, everything else is learned.
and say: untrue! The hospital where my kids were born has a 24/7 "nurse line" devoted to breat feeding issues. Lots of babies and lots of moms have trouble getting milk out of where it is and into where it's supposed to go.
Here's one example that happened to us: babies really, really need to point their heads in the right direction in order to feed. To assist this, they're supposed to have a reflex: stroke their cheek, and they move their heads in the right direction. That way you can guide them in. Except that our first didn't: you could stroke until the cows came home, and that little head would move in whatever direction it wanted. Which, generally, wasn't the right direction.
Not to mention the "biting" thing, and "painful" thing, and all sorts of other issues.
My Franklin "ebookman" has two great features that make it better than regular books:
- I can hold it in one hand
- I can read it in a dark room
which means that when the little one refused to sleep at two in the morning, I can carry her around my (dark) house and read a book. Can't do THAT with any kind of regular book -- they don't have lights, and they can't be read in one hand.
And good for the inspector. The right answer was (as the story said) "it goes "pssshhh" and we get water and steam" -- but I'm pleased when people who deal with chemicals actually know how they intend to clean them up.
A wrong answer, OTOH, would be "I dunno -- never checked to see what this stuff does when it spills".
Wouldn't it be easier to just go to North Dakota? There's just as little there, and almost as few people:-)
Seriously, what's the point in mining the moon for minerals? How can digging up copper on the moon be even close to as cheap as the giant Bingham Canyon copper mine?
And, of all the stuff we need most, oil is perhaps our biggie -- but I understand isn't a terribly common resource on the moon.
> it is like knowing the model of the car. It's >right there on the trunk lid. You bought the >thing for Christ's sake
So, out for a walk in a swank neighborhood, I spy a nifty looking car, with a little horse emblem on the front. Curious, I try to find the name of the car.
Nothing. Nada. Zip. There's a little horse emblem; that's it. No manufacturer, no model, no model number. It's a small red car, with a little horse emblem.
Now, in this case, to call tech support, I apparently need to look at the **back** of the computer. The back, where it's all dusty and dark, and where I can't get to. What a useless requirement!
But it could be worse. A decade ago, I had to call Sun support -- and THEY needed a number from the back of the machine. The back of a machine which is screwed into a very heavy rack mount on another floor.
I customer support is going to need a number, it should be plainly visible and obvious. Anything else is wrong.
In two different places I've worked the "DRM" was ripped out, not because it didn't work (it did), but because customers hated it. Somehow, when you charge someone $50k for software, they expect to be treated a bit more nicely!
He started off with non-computer punchcards doing Neat Astronomy (two thousand hours of hand-calculations resulted in re-finding the eighth moon of Jupiter), and from there jumped into computers with IBM. His comments on the inner workings of IBM, both good (Watson, Sr. could approve your project in an hour) and bad (he got chewed out for eating a prune), are priceless.
He was involved in the world first Very Sucky Computer, the IBM 602 "Calculator", which was so bad it was silently replaced by the "602A" -- which was a totallly different machine, despite the name.
Typical slashdot thought: we could encrypt it! It would be nice to see what happened in accidents!
But please, be more cynical in your thoughts. The black boxes can, in fact, be used in thoroughly nasty, underhanded, unjust ways:
Bad cops can: stop drivers, look at their black box data, and arrest them on the spot!
Crooked politicians can: give any reporter grief just by enforcing laws selectivly
Crooked high-ranking politicians can: make a routine stop look very, very bad for any person on a 'hit list'.
How? Because virtually everyone speeds to one extent or another; we generally get caught in a random way, so it doesn't matter. These boxes will let the 'catching' be targetted.
(this is from -- hmm -- Sleeping Beauty? The one with the the three fairies). The fairies decide to use magic to make Sleeping Beauty a gown. Two of them can't decide on the color, and a furious color battle ensues.
Even in the end, when Sleeping Beauty is married, all through the dance, the dress changes color.
IIRC -- it wasn't preannouncing the new version that really killed the company. It was trying to make a "frankencomputer" out of the extra Osbourne 1 stock that did them in. It seems that the very pointy-haired exec in charge of clearing out the useless inventory decided that a new case was in order -- and spent most of their cash-on-hand on the new case (you know -- for all the molds and whatnot). He managed to spend more on the case than they could possibly have gotten from selling the computers.
The "preannouncing" is just the popular myth. But it makes such an engaging -- and short -- marketing story:-)
Here's a simple way to do it in a language that's almost like Java:
Stack mine = new Stack()/Object_must_be=Int;
(the "/" means, "here are the qualifiers to the code I just wrote"). In this case, the/Object_must_be=Int means that everything going it, and everything coming out, must be an int.
The generated code remains the same: it's just a compiler check; that check will fix most of the problems with the Java "Stack" (etc) classes that the original replier mentioned.
"All" that has to be done is mark the object up a little. We know, in java, when a method is a general one because it takes in or passes back an Object, so we don't generally need to mark up our original class.
And heck, in debug mode, it can even be a run-time check too; we can even make it a run time check all the time.
In the world of actually useful teaching, you start with what the person really wants to do -- display HTML, in your example. Teach them that! HTML can be displayed from a local file; start right there!
Once they grok the basic HTML, add in the non-HTML bits like jpeg and audio.
Then, when, they grok how the computer displays the files, go into the "but you have to get the html to the user over a network" part.
Once they got the idea of how it goes over a simple network, add in the firewall bit (you didn't even mention that)
And so on, and so on.
Why? Because even the most motivated person needs a handle to hang new knowledge on. My way, they start with something they know and use; the knowledge builds on a foundation of rock.
Your way, you start from a foundation of sand: the person is learning by rote because there can be no understanding without context. You have no context, so your people will have no understanding.
When people learn, they automatically pick up the 'important' parts and skip the 'unimportant' parts -- it's human nature. Your way, they have no way to tell the important from the trivial, and will pick the wrong bits as important, and skip over the wrong bits as trivia. When it comes time to use the information, they'll only have half the story at best, and will take longer to understand anything.
Because whenever they have a talk show about "adults who have angst", it's somehow always about sexuality, and never, for example, about an Iowa blue-color worker who's lost their house. Real intellectuals would find either equally interesting.
Or, more theoretically, pseudo intellectuals not only see one side of the coin, but only see some coins.
And god forbid they have a guest who actually seems interested in their subject! Last thing I need is to here yet another person drone on and on about something I don't care about. Give me some zest any day!
Once upon a time (1994), in a far away place called "BBN" (now 'Genuity', but my division is not part of Brooks Automation), there lived some statistical software called "RS/1". This software spent its days happily compiling and linking and running self tests on VMS (VAX only; the Alpha port is another story), on Unix (HP/UP, Ultrix, AIX, SunOS, and Solaris), and reminising about the "old" days when it ran on PDP-11s and IBM/370s.
And then the good witch of marketing (Hi peggy!) said, "run on Windows, too. All our customers want it". And the bad old troll called "billg" said, "win32s works just like windows NT or Windows 95 -- it's a single, stable base of 32 bit code".
So we get the build elves to build the code, and it all compiles and links, and we run the self checks, and everything works on NT. So we try under win32s. And a moldy, dusty, forgotton old self-test, which had spent a decade waking up, saying "pass", and quietly going to sleep, roused itself, and with a rusty, creaky voice, said, "fail!".
But that test never fails! It's an old "can we sort a table" test; it uses table (think 'spreadsheet') routines that had, over the years, been build to Keep On Working And Never Stop. And the tables weren't sorting.
In the end, we put two (wow!) PCs into one office and ran NT on one, and Win3.1 with win32s on the other, and stepped and checked, stepped and checked, until the answer came back.
When traced down, we learned that the table-sort routines worked by sorting into a "temporary" table -- a table that hopefully is kept in memory, but might be saved on disk. Once the table is sorted, the original on-disk table was deleleted, and the new table dropped into place using a 'rename' call. If there was no on-disk version of the original table, then a bunch of buffer magic was made to happen; otherwise different buffer magic happened.
unlink is defined to return a fail code if you try to delete a file that doesn't exist. On all version of windows it was correct except win32s. Our test case, of course, made a temporary table to sort, it never existed on disk, so when the code tried to unlink it, the wrong result code was set and then the wrong buffer magic happened - and then the table wouldn't appear sorted.
It never occured to us that that's where the problem might lie -- who would think that a bad 'unlink' call would result in table sort failure?
Peter Smith then: BBN Software Products. now: WildTangent.com
Small print: I don't remember if it was the 'unlink' call or the 'rename' call. I seem to remember it was doing an 'unlink'.
It's easier, all right -- until you want to start a small business. Then you have the combined weight of a hundred fat elephants sucking away at your very soul while you try to lump your business purchases and sales into arcane, badly described categories.
The inherent "unfairness" of the tax code is really complexity: it's complex because fairness isn't easy.
I've read e-books on handhelds for years; they are especially good with small babies -- you can walk up and down in the living room for hours, holding the baby in one arm and the handheld in the other. All of them have backlights so that you can read in the dark. Get aquainted with Project Gutenberg -- I can recommend "Mr. Midshipman Easy" as a very fun book.
The Palm Tungsten E is very, very nice: a sharp, good resolution screen, very fast, and decent controls for reading. You can also get the very excellant "Tradewinds" game for it. I haven't dropped it yet, so it still works. Bad points: I managed to get it on special but didn't type in the special code, so I didn't really get the special deal, and too many of the HTML readers won't read "local" html files. There's lots of free software for the Palm, but too much is lame.
The Franklin E-Bookman is good because it was cheap ($50 at Costco; they were selling them out) and has a big screen, good controls, and has very simple to use reader software. Bad points is that I dropped it and it broke, and the software wasn't quite done (and never will be; Franklin dropped the line). The desktop software was a little odd, and isn't fully compatible and regular files can't just be dropped in: you have to "convert" them. There's very little software.
The Phillips "Nino" CE machine was junk, more so after I dropped it and it broke. The ActiveSync software runs from mediocre to awful -- Windows CE machines are designed to be popped into a cradle for recharging, but every time you drop it in, it freezes and resyncs for five minutes. The software was all bad: lots of features, but all the features were done with no usability in mind. You can't just add files: in general files have to be processed before using. There's lots of software, but only if you know which processor you have and the OS version.
Lastly, my old Sharp Wizard OZ9000 was decent but had terrible connectivity software. The keyboard was good, and the IR worked (I transported all my data to another identical unit after I dropped it, and it broke). Not recommended since you can get a better, faster, smaller unit of almost anything else.
*ahem*
(BufferedReader, for most things, is faster than a plain Reader, and in addition has the handy readLine() interface)
Sometimes you just have to learn the libraries for your language. The Reader system, BTW, is nifty in that
So -- 18.3 million desktop drives at $200 each is 3.6 billion dollars. This represents 15% of the Department of Energy budget of $23 billion dollars. It's a lot, but given how quickly disk drive prices are going down, it's within reason to say that 64 bits is too small.
Watson Sr's famous statement -- "there is only room for five computers in the world" -- was followed by a call to arms: "and IBM will build them!" There may only be five sales of disk arrays that use more than 64 bits -- but Sun will build them!
OK, I don't normally respond to "WildTangent is Spyware" -- among other reasons, because it's not my job. It's D----'s job. My job is employee number 10, Wild Tangent. I'm a programmer, specializing in whatever we need to fill our customer needs. And I'm irritated enough to want to write about three Wild Tangent related points, but I won't. I'm going to talk about the business of 3D.
In the beginning, nobody quite knew what the 3D market was going to be. E-greeting cards that sing and dance? 3D Banner ads? Audio visualizers? Data visualization? And what was the business: who is going to buy? what do they buy? Does a web-3D company sell tools and make the "player" free? Or make the tools free, and the player free, but make a "technology license"? Or have the content cost money? Who pays to develop the content?
Wild Tangent, like all of the 3D companies, tried a bunch of things. I've seen companies that made very, very simple tools that tried to fix the "3d is hard" problem (dead), and companies that made mini-movies to solve the "what sort of content" and "3d art is expensive" pro(dead) and companies that make tool sets (dead) and companies that make 3D community spaces (dead) and companies that make data visualizers (dead) and a lot of other things.
Turns out, the right path is:
- complex tools. Simple tools don't make for very interesting content, and people care a lot about interesting content
- free player. Noone has made any real money by selling their player, even if it was a pain to develop. And believe me, they ARE a pain. I have the scars to prove it.
- good content.
One of the many wrong paths is the "datamining" path. Nobody really _cares_ about any of the data you could possibly collect from a user's machine (note: except for things that are grossly illegal like bank PIN numbers, of course). Suppose some web company could co-ordinate your DOOM-3 habbits, your email address, and the last three movies you saw: would it help LL Bean sell you slippers? Or GM sell you a Cadilac? Answer: no. And so they don't pay for it.
And it's not just a pet theory, either. I get asked to add features to our products all the time; the features are never "let's get the user's email address" or "can you find out people's slipper sizes?". Instead I get questions like, "can we reduce the size of our 3d geometry" and "can we interface to the XYZ framework". And, by an enterprising-but-clueless sales person, can I make it work with PowerPoint because our 3D engine doesn't work on the Mac, but if it worked in PowerPoint it would because PowerPoint works on the Mac and it would be nice to work on the Mac.
To summarize: Wild Tangent makes games. People buy games, and that makes us money. Games a re big business with enormous potential becoming very large and successful. Wild Tangent doesn't do yucky data mining because people don't pay for that and we wouldn't make money. Companies that do the sleazy things tend to be small and stay that way: it's just not a big business. And the Wild Tangent boss -- Alex St. John -- really, really wants to run a big company.
So....all I have to do is mug a couple of pilots in the airports? Cool!
The stupidest name for the best concept. My code constantly grabs some sort of resource -- files, mutexs, com objects, whatever -- that need to be "freed" somehow (Release, delete, free, etc).
Old style: "free" it at the end of the method
Problem: doesn't work with exceptions. Easy to forget with early returns. You have to add an ugly try/catch/finally block in each method, meaning that variables have to be declared in ugly and inconvienient spots.
Solution: "free"Me classes:
Result: No matter what happens (almost), the object will be "free"d. I can return early; I can have exceptions; I can do whatever, and the object is "free"d.
The same concept can be used for classic C files (fcloseMe), for all the myriad ways of allocating memory (there must be a half-dozen in C++ on Windows), etc.
Smart pointers are the same idea, but IMHO drag in too much baggage -- you have to spend too much time figuring out the thousand-line smart pointer template, you have to do a lot of work to know if one smart pointer type can be converted into another, the boxing/unboxing thing looks awful...the list goes on. And the only work with one type of memory resource, when in reality in C++ on Windows there are lots of types of memory that have to be managed.
It would seem that Sleep(0) is a replacement for yield; it lets the next thread with the same priority run; if there are none then the original thread keeps on running. Note that this isn't mentioned by the Yield documentation.
However, my favorite example of bad documentation is InternetGetConnectedState versus InternetGetConnectedStateEx. You would never guess, from the identical nature of the very brief descriptions, that one works well, and the other also works well but in more situations, and in fact that the first one sometimes returns the wrong data.
Exect for the already-existing democracies, Switzerland and Holland. And Iceland.
The Dutch war for independence was every bit as exciting and important as the American one; it's just not taught in America. At all.
When I needed some A4 paper (I was doing printer drivers, and the European office was getting antsy)....I had them hand-carry a ream over at the next sales training conference.
And yes, it's amazing how many paper retailers don't know what size "A4" is. Conversations would go:
"I need some A4 paper; do you having any?"
"What size is it?"
"A4"
"What size is that?"
"It's A4 size. A4 is the size. The size is A4. There is no other size; it's called 'A4'"
"But how big is it?"
Sigh...
I'm just going to comment on the statement:
People should never forget:
The nipple is intuitive, everything else is learned.
and say: untrue! The hospital where my kids were born has a 24/7 "nurse line" devoted to breat feeding issues. Lots of babies and lots of moms have trouble getting milk out of where it is and into where it's supposed to go.
Here's one example that happened to us: babies really, really need to point their heads in the right direction in order to feed. To assist this, they're supposed to have a reflex: stroke their cheek, and they move their heads in the right direction. That way you can guide them in. Except that our first didn't: you could stroke until the cows came home, and that little head would move in whatever direction it wanted. Which, generally, wasn't the right direction.
Not to mention the "biting" thing, and "painful" thing, and all sorts of other issues.
My Franklin "ebookman" has two great features that make it better than regular books:
- I can hold it in one hand
- I can read it in a dark room
which means that when the little one refused to sleep at two in the morning, I can carry her around my (dark) house and read a book. Can't do THAT with any kind of regular book -- they don't have lights, and they can't be read in one hand.
OTOH
I did an experiment at work with my trusty Dallas iButton temperature recorder:
Coffee in a plastic mug took 20 minutes to drop to 120 degrees (starting at, IIRC, 145).
Coffee in a styrofoam cup took 12 minutes to drop the same amount.
And good for the inspector. The right answer was (as the story said) "it goes "pssshhh" and we get water and steam" -- but I'm pleased when people who deal with chemicals actually know how they intend to clean them up.
A wrong answer, OTOH, would be "I dunno -- never checked to see what this stuff does when it spills".
Wouldn't it be easier to just go to North Dakota? There's just as little there, and almost as few people :-)
Seriously, what's the point in mining the moon for minerals? How can digging up copper on the moon be even close to as cheap as the giant Bingham Canyon copper mine?
And, of all the stuff we need most, oil is perhaps our biggie -- but I understand isn't a terribly common resource on the moon.
> it is like knowing the model of the car. It's >right there on the trunk lid. You bought the >thing for Christ's sake
So, out for a walk in a swank neighborhood, I spy a nifty looking car, with a little horse emblem on the front. Curious, I try to find the name of the car.
Nothing. Nada. Zip. There's a little horse emblem; that's it. No manufacturer, no model, no model number. It's a small red car, with a little horse emblem.
Now, in this case, to call tech support, I apparently need to look at the **back** of the computer. The back, where it's all dusty and dark, and where I can't get to. What a useless requirement!
But it could be worse. A decade ago, I had to call Sun support -- and THEY needed a number from the back of the machine. The back of a machine which is screwed into a very heavy rack mount on another floor.
I customer support is going to need a number, it should be plainly visible and obvious. Anything else is wrong.
Peter
In two different places I've worked the "DRM" was ripped out, not because it didn't work (it did), but because customers hated it. Somehow, when you charge someone $50k for software, they expect to be treated a bit more nicely!
He started off with non-computer punchcards doing Neat Astronomy (two thousand hours of hand-calculations resulted in re-finding the eighth moon of Jupiter), and from there jumped into computers with IBM. His comments on the inner workings of IBM, both good (Watson, Sr. could approve your project in an hour) and bad (he got chewed out for eating a prune), are priceless.
He was involved in the world first Very Sucky Computer, the IBM 602 "Calculator", which was so bad it was silently replaced by the "602A" -- which was a totallly different machine, despite the name.
But unlike us, he actually had dates :-)
Typical slashdot thought: we could encrypt it! It would be nice to see what happened in accidents!
But please, be more cynical in your thoughts. The black boxes can, in fact, be used in thoroughly nasty, underhanded, unjust ways:
Bad cops can: stop drivers, look at their black box data, and arrest them on the spot!
Crooked politicians can: give any reporter grief just by enforcing laws selectivly
Crooked high-ranking politicians can: make a routine stop look very, very bad for any person on a 'hit list'.
How? Because virtually everyone speeds to one extent or another; we generally get caught in a random way, so it doesn't matter. These boxes will let the 'catching' be targetted.
Who do you think will be targetted?
Make it pink!
Make it blue!
(this is from -- hmm -- Sleeping Beauty? The one with the the three fairies). The fairies decide to use magic to make Sleeping Beauty a gown. Two of them can't decide on the color, and a furious color battle ensues.
Even in the end, when Sleeping Beauty is married, all through the dance, the dress changes color.
IIRC -- it wasn't preannouncing the new version that really killed the company. It was trying to make a "frankencomputer" out of the extra Osbourne 1 stock that did them in. It seems that the very pointy-haired exec in charge of clearing out the useless inventory decided that a new case was in order -- and spent most of their cash-on-hand on the new case (you know -- for all the molds and whatnot). He managed to spend more on the case than they could possibly have gotten from selling the computers.
:-)
The "preannouncing" is just the popular myth. But it makes such an engaging -- and short -- marketing story
Here's a simple way to do it in a language that's almost like Java: Stack mine = new Stack() /Object_must_be=Int;
(the "/" means, "here are the qualifiers to the code I just wrote"). In this case, the /Object_must_be=Int means that everything going it, and everything coming out, must be an int.
The generated code remains the same: it's just a compiler check; that check will fix most of the problems with the Java "Stack" (etc) classes that the original replier mentioned.
"All" that has to be done is mark the object up a little. We know, in java, when a method is a general one because it takes in or passes back an Object, so we don't generally need to mark up our original class.
And heck, in debug mode, it can even be a run-time check too; we can even make it a run time check all the time.
Utterly useless bilge.
In the world of actually useful teaching, you start with what the person really wants to do -- display HTML, in your example. Teach them that! HTML can be displayed from a local file; start right there!
Once they grok the basic HTML, add in the non-HTML bits like jpeg and audio.
Then, when, they grok how the computer displays the files, go into the "but you have to get the html to the user over a network" part.
Once they got the idea of how it goes over a simple network, add in the firewall bit (you didn't even mention that)
And so on, and so on.
Why? Because even the most motivated person needs a handle to hang new knowledge on. My way, they start with something they know and use; the knowledge builds on a foundation of rock.
Your way, you start from a foundation of sand: the person is learning by rote because there can be no understanding without context. You have no context, so your people will have no understanding.
When people learn, they automatically pick up the 'important' parts and skip the 'unimportant' parts -- it's human nature. Your way, they have no way to tell the important from the trivial, and will pick the wrong bits as important, and skip over the wrong bits as trivia. When it comes time to use the information, they'll only have half the story at best, and will take longer to understand anything.
Because whenever they have a talk show about "adults who have angst", it's somehow always about sexuality, and never, for example, about an Iowa blue-color worker who's lost their house. Real intellectuals would find either equally interesting.
Or, more theoretically, pseudo intellectuals not only see one side of the coin, but only see some coins.
And god forbid they have a guest who actually seems interested in their subject! Last thing I need is to here yet another person drone on and on about something I don't care about. Give me some zest any day!
Once upon a time (1994), in a far away place called "BBN" (now 'Genuity', but my division is not part of Brooks Automation), there lived some statistical software called "RS/1". This software spent its days happily compiling and linking and running self tests on VMS (VAX only; the Alpha port is another story), on Unix (HP/UP, Ultrix, AIX, SunOS, and Solaris), and reminising about the "old" days when it ran on PDP-11s and IBM /370s.
And then the good witch of marketing (Hi peggy!) said, "run on Windows, too. All our customers want it". And the bad old troll called "billg" said, "win32s works just like windows NT or Windows 95 -- it's a single, stable base of 32 bit code".
So we get the build elves to build the code, and it all compiles and links, and we run the self checks, and everything works on NT. So we try under win32s. And a moldy, dusty, forgotton old self-test, which had spent a decade waking up, saying "pass", and quietly going to sleep, roused itself, and with a rusty, creaky voice, said, "fail!".
But that test never fails! It's an old "can we sort a table" test; it uses table (think 'spreadsheet') routines that had, over the years, been build to Keep On Working And Never Stop. And the tables weren't sorting.
In the end, we put two (wow!) PCs into one office and ran NT on one, and Win3.1 with win32s on the other, and stepped and checked, stepped and checked, until the answer came back.
When traced down, we learned that the table-sort routines worked by sorting into a "temporary" table -- a table that hopefully is kept in memory, but might be saved on disk. Once the table is sorted, the original on-disk table was deleleted, and the new table dropped into place using a 'rename' call. If there was no on-disk version of the original table, then a bunch of buffer magic was made to happen; otherwise different buffer magic happened.
unlink is defined to return a fail code if you try to delete a file that doesn't exist. On all version of windows it was correct except win32s. Our test case, of course, made a temporary table to sort, it never existed on disk, so when the code tried to unlink it, the wrong result code was set and then the wrong buffer magic happened - and then the table wouldn't appear sorted.
It never occured to us that that's where the problem might lie -- who would think that a bad 'unlink' call would result in table sort failure?
Peter Smith
then: BBN Software Products.
now: WildTangent.com
Small print: I don't remember if it was the 'unlink' call or the 'rename' call. I seem to remember it was doing an 'unlink'.