Were you paying attention? The shortcomings of embedded devices fall into two bins:
- not enough complexity
- complexity is overexposed
You cited a (bogus) example of the second kind. A toaster that I have to program is stupid. But imagine a toaster identical in interface to existing ones, except with a little camera that detects when toast/pop-tarts/whatever are about to burn and ejects before it happens. That's smart.
Most of the negative posts here spring from a mental picture of {some applicance} with a laptop stuck on the side. A better model is {some appliance} that looks and works like current ones, but gets extra input from the environment and usage history, and uses those inputs to make better decisions.
Successful embedded devices will have lots and lots of intelligence on the inside, and will look just like their predecessors on the outside.
Trademark law essentially prohibits trademarking nouns
No, it does not.
My wording was unclear; your explanation is better. You can trademark an existing noun, but you can't use a trademark as a noun. "Macintosh" is a noun; an Apple Macintosh is a Macintosh-brand personal computer.
The implications of this principle are not always clear-cut since our language permits nounification of adjectives ("I'll take one chocolate, one sugar-glazed, and one jelly-filled" -- since "donut" is implied by context you don't need to say it outright).
I'm no expert in trademark law (or any other kind), but from what I've read, if you use a trademark and omit the noun, it must be implied by context and unambiguously distinct wrt the noun part of the product name. So "Test drive a Macintosh" is OK; "Try our Secure Shell!" is probably not (if "Secure Shell" is the trademark, what's its full name? "Secure Shell-brand secure shell"?)
[in addition to SSH, I] also have a registration pending on the Secure Shell mark....
I want to be able to continue using the SSH and Secure Shell names as identifying my... products and technologies,
Well then, Mr. Secure Shell, what should we call it? Trademark law essentially prohibits trademarking nouns (and, in fact, you can lose the trademark if it's commonly used as a noun). Thus you have Tylenol-brand pain reliever, Rollerblade-brand inline skates, and so on. If there's no common noun to describe your product other than its trade name, then you don't get to keep the trademark. A quick search will turn up lots of tidbits like this:
it is imperative that trademarks be used in advertising copy as adjectives, never as nouns or verbs
In the letter, he repeatedly uses both SSH and Secure Shell as nouns. He called it a "secure remote login product" a couple of times, but that's inadequately descriptive. "Tylenol-brand pain reliever" is OK; "Aspirin-brand pills" is not.
It seems to me this guy wants to erase, or at least obscure, the excellent free replacement that's made his product irrelevant.
Going forward, and in the interests of bringing closure to this pressing issue, I'd suggest Mr. Ylonen piss up a Rope(TM)-brand rope.
It's a good thing, too, because I'd hate to see those sludge-talk skills go to waste. In response to a few dozen direct, eloquent questions, they let slip the following valuable insights:
NVIDIA will consider new technologies as they are released.
Q: "How will the XBox graphics chip be different from the pc graphics chip?" A: "... it will be very different in design and Capabilities." (very different, you say? Intriguing!)
NVIDIA will rise to meet the challenges presented by its competitors.
NVIDIA blah blah focused blah blah concern muh muh muh quality uh uh uh performance la la la value
In my experience, there are two things you can always count on with this company: (1) that their products will be great, and (2) that anything they say is so full of crap that it's not worth the paper it's not printed on, much less the time needed to read it.
It can't be much longer before the first fast solid-state eprom drives hit the market.
ATA Flash, today, costs over $2000 per gigabyte. This price is falling very slowly. Winchester drives cost under $5 per gigabyte, and prices are falling fast.
For perspective, CD-R in the early 90s cost about $1500 for a drive and $20 for media. CD-R didn't see consumer acceptance until these numbers fell about 4x, to ~$400 for the drives and $5 for media. Widespread use required a 10x drop in prices. And this is a technology whose competitors (floppies, Zip disks) had serious flaws.
ATA Flash, on the other hand, needs prices to drop by a factor of about 400, just to be on par with a mature, reliable, accepted technology. And, even if those prices were achieved tomorrow (via some miracle) there are still a lot of cons:
it's slow -- under 4MB/sec versus 20+ MB/sec for a typical hard drive .
it's not especially dense: it appears you can get 1GB on a PC card, which works out to maybe 20GB in a 3.5" IDE enclosure. New magnetic disks fit 20GB on a single 3.5" platter; you can put five such platters in one enclosure.
it has a finite life, typically <500000 rewrites per sector. This is fine for digital cameras, but it's no good for a busy database or swap partition.
So when will ATA Flash replace Winchester drives? Considering it took CD-R 10 years to overcome one obstacle against weak competition, and flash has many obstacles and strong competition, I'd say never.
That doesn't, of course, preclude the invention of some new solid-state product. A cheap, dense, low-power, reliably non-volatile SS technology would be truly great. But these innovations aren't falling out of the sky (new memory-related inventions are few and far between) and it has a lot of catching up to do before it bests the phenomenal attributes of a $200 hard drive.
I didn't sell my Quantum stock today, and I probably won't tomorrow.
About a year ago, I was talking to a friend of mine how hardware is getting better and simpler every year.
When you buy a PC today, the specs include memory and CPU and not much else. We're pretty close to the day where CPU won't matter for personal workstations (my P200, now almost 3 Moore-generations old, is still a highly usable NT machine; until last year I did most of my coding on a Linux P90 with 12 VC's). The web is accelerating this trend, since any machine that can run 10 browser windows will always be useful.
Memory is similarly stagnating; unless you work with Photoshop or its ilk, chances are you have no use for >256MB.
Anyway, my prediction at that time was within five years, the only spec on a new desktop PC will be the screen size; you'll buy a 20" PC or a 35" PC, and not care about what's inside. A month later, Viewsonic conveniently propped up my assertion with a campaign pointing out all PC's are the same; the only differentiator is the monitor (they favored Viewsonic monitors for the best PC experience).
Looking at these ads, you can see the trend vividly -- the IBM copy, for example, has a box of tiny type listing the diagnostic capabilities, the printer port speed, and a dozen other things no one would care about today.
In fact, all of the reallysuccessfulcomputers have tons o'specs. Most of the ones touting usability, etc. without benefit of hard numbers were flops.
"tell us what site you're visiting which it does
by sending us the URL.".
How else would the plug-in tell them? Send a fax?
More seriously, I was looking at some proxy logs recently, and it's eerie how much you can tell about a person by the URLs they visit. This may seem obvious, but seeing it in action is spooky.
Then they visit their bank, and maybe their credit card vendor, and then go on to visit someless-prestigious manufacturers, and now you know more about the state of their finances than you did before.
Fortunately, Google has done their best to warn you. After the click-through, you get a popup that reads (in big red type):
PLEASE READ THIS CAREFULLY IT'S NOT THE USUAL YADA YADA
.. then you get a chance to opt-out of their advanced features. I couldn't tell for sure, but it also appears that they only send the URL for pages whose rank you've requested, even when the advanced goop is turned on.
This story would be better-titled "Google offers useful service based on current URL, and explains the drawbacks in plain English." That might not generate the page hits that/. is counting on.
I was hip to that, but couldn't pass on the joke despite the statistical slieght-of-hand involved.
Somewhat off-topic: Back in his guerilla-consumer-advocate days, Ralph Nader often used a cool trick:
Say he found out the rail lines were dumping 50 million pounds of solid waste on railways each year: He'd call a press conference on Sunday and annouce his discovery, but inflate the number to 300 million pounds.
Being Sunday, the railway execs were at home, so the story would run with an ominous "officials could not be reached for comment". Then the damage was done. They couldn't exactly call a press conference on Monday to announce that, hey, everything's cool, because we're only dumping 50 million pounds of shit on property that we don't really own.
This is the same thing: it's hard to say, hey, their business plan is cool, because people are more likely to give them money than be hit in the head with their technology! It's not exactly a ringing endorsement.
Cn.... 3. The name of a programming language... so called because many features derived from an earlier compiler named `B' in commemoration of its parent, BCPL. [Before C++] there was a humorous debate over whether C's successor should be named `D' or `P'.
the BBC is so damned good that I happily pay my licence fee.
State-funded broacasting seems a common remnant of the British empire. The CBC (C=="Canadian") is very good; it's easy to grow complacent and decide it sucks, until you talk to Americans who know someone who has it and rave about how great it is.
It carries ads, so it's state-subsidised rather than state-funded. And it's expected to break even.
This is a good mix: they still have commercial sensibilities, but when faced with: "we will lose money on this {program|series|segment}, but it's exceptionally {insightful|informative|funny}", they can make the right decision. Giant publicly-held conglomerates cannot.
60Hz: it flickers so badly. I need
the refresh rate set at least 72Hz before I stop noticing flicker
The thread was talking about optimal frame-per-second rates.
"Hz" reflects how often a phosphor on a CRT (not LCD or plasma) is reheated. If it's close enough to the refresh rate of fluorescent lighting (60Hz NA; 50Hz EU) then you get flickering. It is limited by the bandwidth of the video card+cable (expressed in MHz, typically), or sometimes by the quality of the monitor.
"FPS" is how often the image on screen is changed. In a 2D environment FPS is noncritical -- it's almost always "high enough". In a 3D environment, FPS becomes limited by the CPU, GPU, and memory bandwidth. It is very often not enough.
Obviously, if FPS is higher than Hz, not every frame will actually get displayed on your monitor. Low FPS will not cause flicker, however -- it causes a jumpy image.
Above an average of about 40FPS,
nobody notices anymore - they can't!
As others have mentioned, the top end is probably closer to 60fps than 40.
More important, though, is the headroom you get with a faster card. A game like Q3 has a standard deviation of about 7fps, which means over 15% of your frames are under 33fps, and about 3% are under 26fps. These are very noticeable slowdowns.
At 80fps mean, your standard deviation may jump to 14 fps (it's not a linear progression in real life, but for argument's sake...), 97% of your frames are at 52fps+, and 99.85% above 38fps. So it's smooth all the time, not just when you're standing around with nothing happening.
[DPT controllers support] 256M of ECC cache RAM and optionally battery back it up (silly IMO).
It's only "Silly" until your UPS dies (or the card fails or your SCSI bus resets) while there are cached writes.
This is especially pernicious if another write is performed after the cached one, but is committed to disk (maybe on a different controller?). This can leave the database in an inconsistent state, rendering it unusable.
That'll fix your performance issues on RAID5.
No, it won't. If cache could fix arbitrary performance problems, then we'd all be using 1200rpm 15GB/platter drives in 100-member RAID5 sets which last forever and are almost free.
Cache will alleviate the performance problem for brief, small transactions. If you're moving more than 256MB through the controller (in either direction, remember that reads consume that cache, too) in less time than the disks can service it, then your I/O's become as slow as the disks. This is unavoidable and unfixable.
RAID5 is best-suited for read-intensive environments, or cost-sensitive customers. It is not a high-performance solution. As others have said, RAID0+1 (striped mirrors) are the answer if you want fast and safe instead of cheap and safe.
there are actually many instances where index() and substr() work much better than regexes
Yes, though you failed to provide an example. I benchmarked the example you gave (using a 16000-line passwd file as the source), and (higher numbers are better):
index:... @ 160060.30/s (n=536202)
regex:... @ 165649.72/s (n=499710)
split:... @ 152474.50/s (n=536202)
The code: (use view source to get the line breaks and diamond): #!/usr/bin/perl use Benchmark; @pw=; # give source file name on cmd line timethese -3,{ 'index' => 'my @n=map { substr $_,($a=index $_,":"),index($_,":",$a+1) } @pw', 'split' => 'my @n=map { (split ":",$_,3)[1] } @pw', 'regex' => 'my @n=map { (/^[^:]*:([^:]*):/)[0] } @pw' }
... all within a few percent, and the Perl Way solution (using pure regexes) is still faster than the {large,inflexible,confusing} index/substr method. Getting the fourth field means the logic has to change (and, I'll wager, the performance "gain" evaporates). Handling escaped delimiters is a major pain. And so on.
In my experience, when choosing between the Perl way and an old-school algorithm-textbook way, the Perl way:
Will run in the same time complexity (maybe *lgN, especially when hashes are involved), and with a negligible constant cost.
Will be easier to write.
Will be easier to read.
Will be highly adaptable to changes, often without rewriting -- regexes written with ambiguity in mind are particularly good at handling changes in input formats.
Will use more memory. This really is Perl's Achilles' Heel. The only time I've had to use tactics like you describe is when iterating over huge input files (~10M lines) -- if the garbage collector isn't perfect (and it isn't) the accumulated leakage will kill your program.
So, forget about 1% performance variations. Concentrate instead on the benefits of solving problems in half the time, and of having written code that someone less-brilliant than yourself can maintain.
There's lots of [justified] griping above, pointing out how you can't draw conclusions about any OS's stability based on the longest runtimes.
While that's true, this kind of survey does give us maximum runtimes, and I don't think that's available anywhere but here.
For example, maybe a few posters could close their blathering pieholes long enough to see that the 49 -day figure applies to Windows _anything_, not just Win2k. For a startling revelation, go to The List and click "All" under "Alltime".
There are dozens of 49-day, 17h02m uptimes for Win32, and none longer. Obviously, either the OS or some popular [driver|service|screensaver] is broken [insert dumb "already knew that" joke here]. I dimly recall Microsoft claiming this was fixed in an NT service pack; obviously that's not the case.
For a more subtle trend, you can see a clump of Linux boxes topping out at 497 days, 02h27m. This is 2**32 Intel jiffies (100ths of a second; Alpha jiffies are 1024ths of a second) -- if you're running a module that assumes the jiffy count is always increasing, you'll get weird happenings when the counter rolls over. Again, I dimly recall one of the kernel people suggesting the jiffy counter be initialized (at boot) to MAX_JIFFIES - 3600, so that every module author writes code that will handle a rollover.
Faults tht only appear after a long runtime are typically easy to fix, but almost impossible to detect. Right now, the survey doesn't filter out shutdowns for known reasons, or collect enough info from the client (what modules are running, etc.).
If that changed, it could be a real goldmine, both to software maintainers, and to those who want to know when their system is due for its next crash.
Cayenne pepper (taken internally or externally)...
Offtopic, but... What does "taken externally" mean? Putting some in your pockets? Sprinkling it on your face (or back or whatever)? It's just hard to imagine any way to "take" cayenne pepper other than through your mouth.
... of teledildonics is one step closer to reality. If they can have "Touch" and "Release" events, then how far can we be from "Grope", "Squeeze", and "Knead"?
More seriously, how does this work if you're touching the mouse with something non-conductive, like a cast, a prosthesis, or a bandaged hand?
[vaguely offtopic, but this is too crazy to ignore]
> While I can't speak for everyone, I expect that my experience is typical:
You do not speak for everyone. Your experience is atypical.
I live and work in Canada, and this simply isn't true. This is a/great/ place to be if you have some talent and initiative. Even if not, it's not bad.
Taking your points one at a time:
1. Blacklisting: if you screw your former employer, you will have a hard time getting jobs unless someone will vouch for you. This is true everywhere. I've never heard of anyone having problems after giving the former employer adequate (2-4 weeks) notice.
2. Explaining Gaps: see #6 below.
3. OT Pay: So? The company is offering $X for Y amount of work. If OT pay were mandatory, they'd simply lower the per-hour wage until the aggregate cost was back to $X. If it makes you unhappy, get a job that pays OT. I know mine does.
4. Oversupply: My company spent a good chunk of change and effort recruiting in 1997, and I can remember sitting in on interview after interview with candidates that simply weren't up to par. If you were inexperienced / unskilled / unable to hold yourself together through an interview, then yes, you were competing with a 'glut' of people for any job. If you had some kind of skill, OTOH, you could walk into a job with minimal effort.
5. Mandatory French: Untrue. I live just across the river from Quebec, and can assure you that many unilingual English-speakers are employed there. None of them are afraid of being fired.
6. Gaps in the Record: This is just too much. Since when is it illegal to disqualify applicants based on previous unemployment? If a guy hasn't worked in five years, then he likely lacks current skills. If he's hopped between 15 jobs in the last 8 years, with 24 months of cumulative downtime mixed in, that makes you wonder how reliable he'll be in his next position. If it's illegal to consider [un]employment history when reviewing applicants, then what criteria do you think employers should use?
7. Taxation: You're straying into tin-foil-hat land here. First, able-bodied adults who don't work without good reason are considered anti-social because it implies they're living off the labours of others. Where do you suppose welfare/UI/etc. monies come from? Second, Canada's high taxes are overhyped. I paid somewhere around 35% income tax last year, on a comfortable, above-the-mean salary. That's not outrageous, considering that I live in a country with no impending Social Security debacle, ~zero crime, free health care, clean air, and so on.
The standard of living here is one of the highest in the world.
My biggest worry is that the secret will get out, and mass immigration will cause property values to skyrocket.
... I mean, I like Linux and all, but doesn't this look like they're purposely puffing up the list of things you can use with Linux, just to justify even having the survey in the first place? If you want to know what columns I read the most, just/ask/; there's no need to dress up your reader survey as some gala awards thing.
"Favorite Communications Board?" Why not have "Favorite Font" and "Favorite Jumper Style" ("I love the half-height blue ones, but those full height black ones suck!!")? Most of the categories aren't substantive enough for me to even have a favorite, much less take the time to vote for it.
Oh yeah, and in most every other field of endeavour, it's common for Reader's Choice Awards to feature choices which _weren't_ available last year, and the year before that, and... you get the gist. 95% of those products existed last year -- they could just reprint the outcome of the 1998 voting.
That is all. I'm sure this will now be moderated into oblivion by those who see all Linux-related criticism as heresy.
I did this a few months ago, but wasn't vain enough to submit it to/.. That'll learn me.
Here's the perl script, for anyone who's interested -- it hits bf once at the start, plus twice for each language available. Just enter an English phrase, and you'll see it translated to the other languages and back.
Some choice examples:
English: Why does the author use the phrase "kick-ass" constantly? Italian: Why the author uses constantly the d of the phrase "soccer-ass"?
English: I chop down trees, I eat my lunch, I go to the lavatory. On Wednesdays I go shopping, and have buttered scones for tea! Spanish: Edge under trees, I eat my I have lunch, I I go to the service. Wednesday I am going to make purchases, and I have scones greased with mantequilla for the tea!
English: I'll get you, and your little dog, too! French: I will obtain you, and your puppy, therefore! German: I receive you and your small dog, also! Portuguese: I will start, and its small dog, too much!
English: No blood, no foul. French: No blood, no stinking. Spanish: No blood, no revolting one.
The source follows./. won't let me use <PRE>, and I'm not going to format it by hand. Use "View Source" to copy/paste it.
cheers, mike
#!/usr/bin/perl -w use Data::Dumper; use HTTP::Request::Common 'POST'; use LWP::Simple; use LWP::UserAgent; use HTML::TokeParser; $url='http://babelfish.altavista.com/cgi-bin/trans late'; print STDERR "Getting language list: "; $page=get $url; my $p=HTML::TokeParser->new(\$page); while ($toke=$p->get_tag("option")) { next unless $toke->[1]{value} =~/^(\w\w)_en$/i; $lang=$1; ($name=$p->get_text) =~ s/ +to +English.*//is; push @langs,$lang; $names{$lang}=$name; print STDERR "$name "; } print STDERR "\n"; die "No languages found!\n" unless @langs; undef $/; $text=join ' ',@ARGV or ($text=`fortune`) =~ s/\n\s+--\s+.*\n\s*.*\n?$//; if (length $text > ($max=768)) { warn "Text longer than $max characters, truncating...\n"; $text=substr($text,0,$max); } die "Text must contain words!\n" unless $text=~/\w/; $text=~s/[.\s+]*$/./; printf "\e[1m%12s\e[0m: %s\n",'English',$text; foreach $lang (@langs) { printf "\e[1m%12s\e[0m: ",$names{$lang}; $trans=fetch($text,"en_$lang"); print fetch($trans,"$lang\_en"),"\n"; } sub fetch { my ($text,$lang)=@_; $text=~s/[.\s+]*$/. XYZZY./; my $ua = new LWP::UserAgent; $ua->env_proxy; my $req = POST $url, [ doit=>'done', urltext=>$text, lp=>$lang ]; my $page=$ua->request($req)->as_string; my $p=HTML::TokeParser->new(\$page); my $ok=''; my @tokes=(); my $toke=[]; while ($toke=$p->get_token and !$ok) { next unless $toke->[0] eq 'T' && $toke->[1]=~/\S/; $toke->[1] =~ s/\s+$//; $toke->[1] =~ s/^\s+//; push @tokes,$toke->[1]; $ok=$1 if $toke->[1]=~/(.*\S)\s*XYZZY\./s; } $ok=~s/\s+//g; die "Bad Response!\n". Dumper(\@tokes) . "\n" unless $ok; return $ok; } __END__
I wonder if there is a site... that shows a curve representing the falling cost of storage space,
Not a curve, but I have two relevant bookmarks, both found while looking for something else: Historical Cost-of-Storage Data, and a great article about trends and such by a storage engineer at SGI. cheers, mike
Uhhh, yes, and most of them use 1000-millivolt volts, too. It's a definition: 8 bits is one byte.
this penny-sized device would hold 22.5 gigs
Maybe. There's a reason why the density is given in bits: since there's no encoding spec, it may well take more than one pit to encode a bit. CDs, for example, use an 8-into-14 hashing scheme which guarantees no more than 3 consecutive bits will be identical.
Another poster had a highly relevant comment about how much data a dust mote would wipe out; It may well be that to attain any reliability at all, you need an 8-into-800 hash scheme, where every bit is repeated hundreds of times across different regions of the disk surface. In that case, you get.225 GB from your 180Gb disk (note that this doesn't contradict my first comment; you must distinguish between physical bits and encoded bits, in the same way that a zip file may have 5 million bits encoded in 1 million physical bits).
The patent thing comes up on/. every so often, and we see the same arguments:
Too many obvious things are patented.
Without patents, genuinely new and expensive innovations would be trade secrets, and no-one (save the innovator) would benefit.
So, we need a way to distinguish the cheap, stupid patents from the good stuff. Here's my idea; it's pretty rough around the edges, but I think the concept is sound:
First of all, any citizen of the appropriate country can object to any patent on grounds of obviousness. There is no cost to object, but it must be done in writing, via plain old mail. An objection must include a brief rationalization, and the objector's qualifications.
Then, once there are some number of objections (say 100), the applicant must demonstrate non-obviousness. To do this, the patent office provides a list of 100 or so (willing) experts in the field, who claim no prior knowledge of the application.
The applicant chooses two teams of five from this list, and they are sequestered (at the applicant's expense), for a few weeks.
These experts are then told the nature of the problem the company is trying to solve, and given access to any published materials that existed before the patent's file date (e.g., books and journals OK, but no net connection).
Their challenge is to devise as many workable solutions to the problem as possible in their 2-3 week isolation period. If any of these is substantially identical to the solution proposed in the patent application, then it's rejected.
I really like this idea, because it would eliminate moronic things like the XOR cursor and that load-balancing CGI thing. Really good advancements in the state of the art, like RSA's crypto patents, would endure.
This is intended mostly for software patents, since it's hard to affordably finance a project team for something like developing a new engine or CPU. With simulation getting better and better, however, it may be possible to apply the concept to other fields.
The downside is that patent filing would be (potentially) more expensive. It's already prohibitively costly for most individuals, though, and the upside for corporations would be partial immunity from frivilous challenges to the patent (if granted). A proof of non-obviousness, audited and blessed by the patent office, is a powerful piece of evidence in a lawsuit challenging the self-evidence of your innovation.
Were you paying attention? The shortcomings of embedded devices fall into two bins:
- not enough complexity
- complexity is overexposed
You cited a (bogus) example of the second kind. A toaster that I have to program is stupid. But imagine a toaster identical in interface to existing ones, except with a little camera that detects when toast/pop-tarts/whatever are about to burn and ejects before it happens. That's smart.
Most of the negative posts here spring from a mental picture of {some applicance} with a laptop stuck on the side. A better model is {some appliance} that looks and works like current ones, but gets extra input from the environment and usage history, and uses those inputs to make better decisions.
Successful embedded devices will have lots and lots of intelligence on the inside, and will look just like their predecessors on the outside.
cheers,
mike
The implications of this principle are not always clear-cut since our language permits nounification of adjectives ("I'll take one chocolate, one sugar-glazed, and one jelly-filled" -- since "donut" is implied by context you don't need to say it outright).
I'm no expert in trademark law (or any other kind), but from what I've read, if you use a trademark and omit the noun, it must be implied by context and unambiguously distinct wrt the noun part of the product name. So "Test drive a Macintosh" is OK; "Try our Secure Shell!" is probably not (if "Secure Shell" is the trademark, what's its full name? "Secure Shell-brand secure shell"?)
cheers,
mike
Well then, Mr. Secure Shell, what should we call it? Trademark law essentially prohibits trademarking nouns (and, in fact, you can lose the trademark if it's commonly used as a noun). Thus you have Tylenol-brand pain reliever, Rollerblade-brand inline skates, and so on. If there's no common noun to describe your product other than its trade name, then you don't get to keep the trademark. A quick search will turn up lots of tidbits like this:
In the letter, he repeatedly uses both SSH and Secure Shell as nouns. He called it a "secure remote login product" a couple of times, but that's inadequately descriptive. "Tylenol-brand pain reliever" is OK; "Aspirin-brand pills" is not.It seems to me this guy wants to erase, or at least obscure, the excellent free replacement that's made his product irrelevant.
Going forward, and in the interests of bringing closure to this pressing issue, I'd suggest Mr. Ylonen piss up a Rope(TM)-brand rope.
cheers,
mike
It's a good thing, too, because I'd hate to see those sludge-talk skills go to waste. In response to a few dozen direct, eloquent questions, they let slip the following valuable insights:
In my experience, there are two things you can always count on with this company: (1) that their products will be great, and (2) that anything they say is so full of crap that it's not worth the paper it's not printed on, much less the time needed to read it.
cheers,
mike
For perspective, CD-R in the early 90s cost about $1500 for a drive and $20 for media. CD-R didn't see consumer acceptance until these numbers fell about 4x, to ~$400 for the drives and $5 for media. Widespread use required a 10x drop in prices. And this is a technology whose competitors (floppies, Zip disks) had serious flaws. ATA Flash, on the other hand, needs prices to drop by a factor of about 400, just to be on par with a mature, reliable, accepted technology. And, even if those prices were achieved tomorrow (via some miracle) there are still a lot of cons:
- it's slow -- under 4MB/sec versus 20+ MB/sec for a typical hard drive .
- it's not especially dense: it appears you can get 1GB on a PC card, which works out to maybe 20GB in a 3.5" IDE enclosure. New magnetic disks fit 20GB on a single 3.5" platter; you can put five such platters in one enclosure.
- it has a finite life, typically <500000 rewrites per sector. This is fine for digital cameras, but it's no good for a busy database or swap partition.
So when will ATA Flash replace Winchester drives? Considering it took CD-R 10 years to overcome one obstacle against weak competition, and flash has many obstacles and strong competition, I'd say never.That doesn't, of course, preclude the invention of some new solid-state product. A cheap, dense, low-power, reliably non-volatile SS technology would be truly great. But these innovations aren't falling out of the sky (new memory-related inventions are few and far between) and it has a lot of catching up to do before it bests the phenomenal attributes of a $200 hard drive. I didn't sell my Quantum stock today, and I probably won't tomorrow.
cheers,
mike
When you buy a PC today, the specs include memory and CPU and not much else. We're pretty close to the day where CPU won't matter for personal workstations (my P200, now almost 3 Moore-generations old, is still a highly usable NT machine; until last year I did most of my coding on a Linux P90 with 12 VC's). The web is accelerating this trend, since any machine that can run 10 browser windows will always be useful.
Memory is similarly stagnating; unless you work with Photoshop or its ilk, chances are you have no use for >256MB.
Anyway, my prediction at that time was within five years, the only spec on a new desktop PC will be the screen size; you'll buy a 20" PC or a 35" PC, and not care about what's inside. A month later, Viewsonic conveniently propped up my assertion with a campaign pointing out all PC's are the same; the only differentiator is the monitor (they favored Viewsonic monitors for the best PC experience).
Looking at these ads, you can see the trend vividly -- the IBM copy, for example, has a box of tiny type listing the diagnostic capabilities, the printer port speed, and a dozen other things no one would care about today.
In fact, all of the really successful computers have tons o'specs. Most of the ones touting usability, etc. without benefit of hard numbers were flops.
We live in exciting times.
cheers,
mike
How else would the plug-in tell them? Send a fax?
More seriously, I was looking at some proxy logs recently, and it's eerie how much you can tell about a person by the URLs they visit. This may seem obvious, but seeing it in action is spooky.
You see them looking at, say, Sony Mobile ES, Rockford-Fosgate, and Audiocontrol, and conclude they're shopping for a car stereo.
Then they visit their bank, and maybe their credit card vendor, and then go on to visit some less-prestigious manufacturers, and now you know more about the state of their finances than you did before.
Fortunately, Google has done their best to warn you. After the click-through, you get a popup that reads (in big red type):
This story would be better-titled "Google offers useful service based on current URL, and explains the drawbacks in plain English." That might not generate the page hits that /. is counting on.
cheers,
mike
Somewhat off-topic: Back in his guerilla-consumer-advocate days, Ralph Nader often used a cool trick:
Say he found out the rail lines were dumping 50 million pounds of solid waste on railways each year: He'd call a press conference on Sunday and annouce his discovery, but inflate the number to 300 million pounds.
Being Sunday, the railway execs were at home, so the story would run with an ominous "officials could not be reached for comment". Then the damage was done. They couldn't exactly call a press conference on Monday to announce that, hey, everything's cool, because we're only dumping 50 million pounds of shit on property that we don't really own.
This is the same thing: it's hard to say, hey, their business plan is cool, because people are more likely to give them money than be hit in the head with their technology! It's not exactly a ringing endorsement.
cheers,
mike
What were the odds of a random person being an Iridium customer? 100-million-to-one?
cheers,
mike
MG: "Yeah, there's a problem with system XYZ..."
Me: "How so?"
MG: "Well, usually is goes 'ree-ree-tinktinktinktink', you know? But right now it's going 'ree-ree-tinktink-bong-bong-tink'!"
Me: "Is that 'bong' like a doorbell chime, or more like a big chinese gong?"
MG: "In between but more like a gong, I think."
Me: "Well, shit."
cheers,
mike
cheers,
mike
It carries ads, so it's state-subsidised rather than state-funded. And it's expected to break even.
This is a good mix: they still have commercial sensibilities, but when faced with: "we will lose money on this {program|series|segment}, but it's exceptionally {insightful|informative|funny}", they can make the right decision. Giant publicly-held conglomerates cannot.
cheers,
mike
The thread was talking about optimal frame-per-second rates.
"Hz" reflects how often a phosphor on a CRT (not LCD or plasma) is reheated. If it's close enough to the refresh rate of fluorescent lighting (60Hz NA; 50Hz EU) then you get flickering. It is limited by the bandwidth of the video card+cable (expressed in MHz, typically), or sometimes by the quality of the monitor.
"FPS" is how often the image on screen is changed. In a 2D environment FPS is noncritical -- it's almost always "high enough". In a 3D environment, FPS becomes limited by the CPU, GPU, and memory bandwidth. It is very often not enough.
Obviously, if FPS is higher than Hz, not every frame will actually get displayed on your monitor. Low FPS will not cause flicker, however -- it causes a jumpy image.
cheers,
mike
As others have mentioned, the top end is probably closer to 60fps than 40.
More important, though, is the headroom you get with a faster card. A game like Q3 has a standard deviation of about 7fps, which means over 15% of your frames are under 33fps, and about 3% are under 26fps. These are very noticeable slowdowns.
At 80fps mean, your standard deviation may jump to 14 fps (it's not a linear progression in real life, but for argument's sake...), 97% of your frames are at 52fps+, and 99.85% above 38fps. So it's smooth all the time, not just when you're standing around with nothing happening.
And that's why NVidia is still in business.
cheers,
mike
It's only "Silly" until your UPS dies (or the card fails or your SCSI bus resets) while there are cached writes.
This is especially pernicious if another write is performed after the cached one, but is committed to disk (maybe on a different controller?). This can leave the database in an inconsistent state, rendering it unusable.
No, it won't. If cache could fix arbitrary performance problems, then we'd all be using 1200rpm 15GB/platter drives in 100-member RAID5 sets which last forever and are almost free.
Cache will alleviate the performance problem for brief, small transactions. If you're moving more than 256MB through the controller (in either direction, remember that reads consume that cache, too) in less time than the disks can service it, then your I/O's become as slow as the disks. This is unavoidable and unfixable.
RAID5 is best-suited for read-intensive environments, or cost-sensitive customers. It is not a high-performance solution. As others have said, RAID0+1 (striped mirrors) are the answer if you want fast and safe instead of cheap and safe.
cheers,
mike
Yes, though you failed to provide an example. I benchmarked the example you gave (using a 16000-line passwd file as the source), and (higher numbers are better):
The code: (use view source to get the line breaks and diamond):
#!/usr/bin/perl use Benchmark; @pw=; # give source file name on cmd line timethese -3,{ 'index' => 'my @n=map { substr $_,($a=index $_,":"),index($_,":",$a+1) } @pw', 'split' => 'my @n=map { (split ":",$_,3)[1] } @pw', 'regex' => 'my @n=map { (/^[^:]*:([^:]*):/)[0] } @pw' }
... all within a few percent, and the Perl Way solution (using pure regexes) is still faster than the {large,inflexible,confusing} index/substr method. Getting the fourth field means the logic has to change (and, I'll wager, the performance "gain" evaporates). Handling escaped delimiters is a major pain. And so on.
In my experience, when choosing between the Perl way and an old-school algorithm-textbook way, the Perl way:
So, forget about 1% performance variations. Concentrate instead on the benefits of solving problems in half the time, and of having written code that someone less-brilliant than yourself can maintain.
cheers,
mike
While that's true, this kind of survey does give us maximum runtimes, and I don't think that's available anywhere but here.
For example, maybe a few posters could close their blathering pieholes long enough to see that the 49 -day figure applies to Windows _anything_, not just Win2k. For a startling revelation, go to The List and click "All" under "Alltime".
There are dozens of 49-day, 17h02m uptimes for Win32, and none longer. Obviously, either the OS or some popular [driver|service|screensaver] is broken [insert dumb "already knew that" joke here]. I dimly recall Microsoft claiming this was fixed in an NT service pack; obviously that's not the case.
For a more subtle trend, you can see a clump of Linux boxes topping out at 497 days, 02h27m. This is 2**32 Intel jiffies (100ths of a second; Alpha jiffies are 1024ths of a second) -- if you're running a module that assumes the jiffy count is always increasing, you'll get weird happenings when the counter rolls over. Again, I dimly recall one of the kernel people suggesting the jiffy counter be initialized (at boot) to MAX_JIFFIES - 3600, so that every module author writes code that will handle a rollover.
Faults tht only appear after a long runtime are typically easy to fix, but almost impossible to detect. Right now, the survey doesn't filter out shutdowns for known reasons, or collect enough info from the client (what modules are running, etc.).
If that changed, it could be a real goldmine, both to software maintainers, and to those who want to know when their system is due for its next crash.
cheers,
mike
Offtopic, but... What does "taken externally" mean? Putting some in your pockets? Sprinkling it on your face (or back or whatever)? It's just hard to imagine any way to "take" cayenne pepper other than through your mouth.
Inquiring minds, and all that...
More seriously, how does this work if you're touching the mouse with something non-conductive, like a cast, a prosthesis, or a bandaged hand?
mike
> While I can't speak for everyone, I expect that my experience is typical:
You do not speak for everyone. Your experience is atypical.
I live and work in Canada, and this simply isn't true. This is a /great/ place to be if you have some talent and initiative. Even if not, it's not bad.
Taking your points one at a time:
1. Blacklisting: if you screw your former employer, you will have a hard time getting jobs unless someone will vouch for you. This is true everywhere. I've never heard of anyone having problems after giving the former employer adequate (2-4 weeks) notice.
2. Explaining Gaps: see #6 below.
3. OT Pay: So? The company is offering $X for Y amount of work. If OT pay were mandatory, they'd simply lower the per-hour wage until the aggregate cost was back to $X. If it makes you unhappy, get a job that pays OT. I know mine does.
4. Oversupply: My company spent a good chunk of change and effort recruiting in 1997, and I can remember sitting in on interview after interview with candidates that simply weren't up to par. If you were inexperienced / unskilled / unable to hold yourself together through an interview, then yes, you were competing with a 'glut' of people for any job. If you had some kind of skill, OTOH, you could walk into a job with minimal effort.
5. Mandatory French: Untrue. I live just across the river from Quebec, and can assure you that many unilingual English-speakers are employed there. None of them are afraid of being fired.
6. Gaps in the Record: This is just too much. Since when is it illegal to disqualify applicants based on previous unemployment? If a guy hasn't worked in five years, then he likely lacks current skills. If he's hopped between 15 jobs in the last 8 years, with 24 months of cumulative downtime mixed in, that makes you wonder how reliable he'll be in his next position.
If it's illegal to consider [un]employment history when reviewing applicants, then what criteria do you think employers should use?
7. Taxation: You're straying into tin-foil-hat land here. First, able-bodied adults who don't work without good reason are considered anti-social because it implies they're living off the labours of others. Where do you suppose welfare/UI/etc. monies come from?
Second, Canada's high taxes are overhyped. I paid somewhere around 35% income tax last year, on a comfortable, above-the-mean salary. That's not outrageous, considering that I live in a country with no impending Social Security debacle, ~zero crime, free health care, clean air, and so on.
The standard of living here is one of the highest in the world.
My biggest worry is that the secret will get out, and mass immigration will cause property values to skyrocket.
cheers,
mike
"Favorite Communications Board?" Why not have "Favorite Font" and "Favorite Jumper Style" ("I love the half-height blue ones, but those full height black ones suck!!")? Most of the categories aren't substantive enough for me to even have a favorite, much less take the time to vote for it.
Oh yeah, and in most every other field of endeavour, it's common for Reader's Choice Awards to feature choices which _weren't_ available last year, and the year before that, and ... you get the gist. 95% of those products existed last year -- they could just reprint the outcome of the 1998 voting.
That is all. I'm sure this will now be moderated into oblivion by those who see all Linux-related criticism as heresy.
cheers,
mike
Here's the perl script, for anyone who's interested -- it hits bf once at the start, plus twice for each language available. Just enter an English phrase, and you'll see it translated to the other languages and back.
Some choice examples:
English: Why does the author use the phrase "kick-ass" constantly?
Italian: Why the author uses constantly the d of the phrase "soccer-ass"?
English: I chop down trees, I eat my lunch, I go to the lavatory. On Wednesdays I go shopping, and have buttered scones for tea!
Spanish: Edge under trees, I eat my I have lunch, I I go to the service. Wednesday I am going to make purchases, and I have scones greased with mantequilla for the tea!
English: I'll get you, and your little dog, too!
French: I will obtain you, and your puppy, therefore!
German: I receive you and your small dog, also!
Portuguese: I will start, and its small dog, too much!
English: No blood, no foul.
French: No blood, no stinking.
Spanish: No blood, no revolting one.
The source follows. /. won't let me use <PRE>, and I'm not going to format it by hand. Use "View Source" to copy/paste it.
cheers,
mike
#!/usr/bin/perl -w use Data::Dumper; use HTTP::Request::Common 'POST'; use LWP::Simple; use LWP::UserAgent; use HTML::TokeParser; $url='http://babelfish.altavista.com/cgi-bin/trans late'; print STDERR "Getting language list: "; $page=get $url; my $p=HTML::TokeParser->new(\$page); while ($toke=$p->get_tag("option")) { next unless $toke->[1]{value} =~ /^(\w\w)_en$/i; $lang=$1; ($name=$p->get_text) =~ s/ +to +English.*//is; push @langs,$lang; $names{$lang}=$name; print STDERR "$name "; } print STDERR "\n"; die "No languages found!\n" unless @langs; undef $/; $text=join ' ',@ARGV or ($text=`fortune`) =~ s/\n\s+--\s+.*\n\s*.*\n?$//; if (length $text > ($max=768)) { warn "Text longer than $max characters, truncating...\n"; $text=substr($text,0,$max); } die "Text must contain words!\n" unless $text=~/\w/; $text=~s/[.\s+]*$/./; printf "\e[1m%12s\e[0m: %s\n",'English',$text; foreach $lang (@langs) { printf "\e[1m%12s\e[0m: ",$names{$lang}; $trans=fetch($text,"en_$lang"); print fetch($trans,"$lang\_en"),"\n"; } sub fetch { my ($text,$lang)=@_; $text=~s/[.\s+]*$/. XYZZY./; my $ua = new LWP::UserAgent; $ua->env_proxy; my $req = POST $url, [ doit=>'done', urltext=>$text, lp=>$lang ]; my $page=$ua->request($req)->as_string; my $p=HTML::TokeParser->new(\$page); my $ok=''; my @tokes=(); my $toke=[]; while ($toke=$p->get_token and !$ok) { next unless $toke->[0] eq 'T' && $toke->[1]=~/\S/; $toke->[1] =~ s/\s+$//; $toke->[1] =~ s/^\s+//; push @tokes,$toke->[1]; $ok=$1 if $toke->[1]=~/(.*\S)\s*XYZZY\./s; } $ok=~s/\s+/ /g; die "Bad Response!\n". Dumper(\@tokes) . "\n" unless $ok; return $ok; } __END__
Not a curve, but I have two relevant bookmarks, both found while looking for something else: Historical Cost-of-Storage Data, and a great article about trends and such by a storage engineer at SGI. cheers,
mike
Uhhh, yes, and most of them use 1000-millivolt volts, too. It's a definition: 8 bits is one byte.
this penny-sized device would hold 22.5 gigs
Maybe. There's a reason why the density is given in bits: since there's no encoding spec, it may well take more than one pit to encode a bit. CDs, for example, use an 8-into-14 hashing scheme which guarantees no more than 3 consecutive bits will be identical.
Another poster had a highly relevant comment about how much data a dust mote would wipe out; It may well be that to attain any reliability at all, you need an 8-into-800 hash scheme, where every bit is repeated hundreds of times across different regions of the disk surface. In that case, you get .225 GB from your 180Gb disk (note that this doesn't contradict my first comment; you must distinguish between physical bits and encoded bits, in the same way that a zip file may have 5 million bits encoded in 1 million physical bits).
cheers,
mike
So, we need a way to distinguish the cheap, stupid patents from the good stuff. Here's my idea; it's pretty rough around the edges, but I think the concept is sound:
First of all, any citizen of the appropriate country can object to any patent on grounds of obviousness. There is no cost to object, but it must be done in writing, via plain old mail. An objection must include a brief rationalization, and the objector's qualifications.
Then, once there are some number of objections (say 100), the applicant must demonstrate non-obviousness. To do this, the patent office provides a list of 100 or so (willing) experts in the field, who claim no prior knowledge of the application.
The applicant chooses two teams of five from this list, and they are sequestered (at the applicant's expense), for a few weeks.
These experts are then told the nature of the problem the company is trying to solve, and given access to any published materials that existed before the patent's file date (e.g., books and journals OK, but no net connection).
Their challenge is to devise as many workable solutions to the problem as possible in their 2-3 week isolation period. If any of these is substantially identical to the solution proposed in the patent application, then it's rejected.
I really like this idea, because it would eliminate moronic things like the XOR cursor and that load-balancing CGI thing. Really good advancements in the state of the art, like RSA's crypto patents, would endure.
This is intended mostly for software patents, since it's hard to affordably finance a project team for something like developing a new engine or CPU. With simulation getting better and better, however, it may be possible to apply the concept to other fields.
The downside is that patent filing would be (potentially) more expensive. It's already prohibitively costly for most individuals, though, and the upside for corporations would be partial immunity from frivilous challenges to the patent (if granted). A proof of non-obviousness, audited and blessed by the patent office, is a powerful piece of evidence in a lawsuit challenging the self-evidence of your innovation.
cheers,
mike