Simply put, the GPL does not prohibit charging for binaries. It doesn't even prohibit charging for source (and in fact, I believe RMS has said in the past that he favors charging for the source since it adds perceived value.. I could be very wrong on that, though).
Yes, but he's not giving out the source to the Windows version. He gives out the Unix source, but it's different code.
Since the Windows source includes contributions, if those contributions are under the GPL (the author says no but some people say yes), then he's redistributing their code in binary form without source access, and that's a violation.
What the GPL prohibits is the recipient of the binary or source from redistributing for free later.
Huh? That's exactly what the GPL doesn't prohibit! If you give me a copy of gcc, I am free to hand copies out on the street corner if I want to.
I was talking to a stripper the other night and she mentioned that the Strip Club scene in Austin blows compared to Dallas.
That's because Dallas has no social night life, so there's a lot of strip clubs. That, and there's more shipping involving Dallas, so you've got the lonely trucker factor.
Austin, on the other hand, actually is fun at night. And during the day. And in the strange time events that don't fit into the normal diurnal sequence, and seem to happen more frequently in Austin than anywhere else, including Santa Cruz, CA. Seriously. I had a friend of mine whose car carried a bit of the time warp field around it; he picked it up in Austin once and it stayed there.
or a tilt switch. just because the mouse is high-tech doesn't mean you need to make it as complex as possible.
Still too complex, and I'd hate to go through the legal hassle of putting mercury in consumer products-- particularly if you're selling them in California. Nah, just use a simple mechanical switch.
I have a Maltron keyboard which uses an unconventional layout, so I also have a cordless that guests can use but I can stash when they're not around.
I also have my second head going to the TV.
For a while, I liked to lean back in my chair and put my keyboard in my lap without getting the wires tangled.
For a while, I'd check my work email from bed. ("Did the Boss email? No? Okay, I can go back to sleep.") I kept the keyboard on my nightstand, and the computer was close enough to the bed for me to see it.
There's four ways I'd use my cordless, and that's just me.
If memory serves me right, a class 1 LASER device has a totaly enclosed interlocked LASER system.
If it's harmless, it can be a class 1 without any sort of interlock. You're thinking of how class 2 lasers can become class 1 lasers by adding interlocks.
There is simply no easy way for the OS to determine what actually happened from the fact that a program wrote to some memory it shouldn't have.
Thank you for your reply, but I think you may have missed my point. I am quite aware of the reasons for segvs, but I still lament that the user gets nothing more than a cryptic error message, with no hint as to how to troubleshoot the problem. Here's why.
Most segvs that I see are caused by one of two things. Either the program fails to check the return value of a call that returns a pointer, or uses an uninitialized value. The latter case is often in a struct, in my experience, and can frequently be alleviated by simply defining a constructor. (Yes, you can make constructors in C: it's just a function that malloc's the structure, fills it in, and returns it.)
So what of the return value problem? Well, part of that can be solved with wrappers. Most core GNU programs, for example, use an xmalloc function which checks the return value from malloc and terminate the program if they get ENOMEM. This isn't only from being out of memory. One program I debugged (a Palm simulator) would, on some OSs, mmap a region so close to the break that malloc couldn't expand.
But I don't put the blame entirely on the programmers, although that's where the burden has fallen. My biggest complaint in this regard is in the languages, specifically with regards to exception handling. C, for example, expects the programmer to check the return value from every single function call. C programs often take on the appearance of a collection of error checks with a few bits of useful program thrown in. Unless every function call includes an error test, then when things go wrong in an unexpected place (and the will), the program will behave in a manner that is most likely confusing to the user, and difficult to debug.
Perl includes exception handling, but the language doesn't encourage its use. The primitives and most of the stock libraries use return values rather than exceptions to report errors. It's easy to add "or die" to the end of statements, but it's also easy to forget to.
Java and C++ have exception handling, but their models are rather flawed: rather than testing the return value, you end up having to wrap function calls in try blocks that throw their own errors instead.
Why is all this necessary? Most functions can't gracefully recover from errors. There's usually a one or a few points in the stack which could gracefully recover from an error and use an alternative, such as switching to a different DNS server or prompting the user for another filename. But the lack of exception handling in our most popular languages means that every function call must be accompanied by an error test.
Again, the burden rests on the programmers to handle error testing, but that's only because the languages we have today are being lazy about it.
As far as I know, it's the same on any operating system.
The reason that I get so upset by this particular issue is that I've seen it done much, much better. Let's suppose that you're printing to a network printer, and there's an error, say the printer has a DNS entry with no A records. Some programs might segv when they try to dereference h_addr_list[0], because they didn't check for a NULL value there first.
But suppose that the program instead gave you a message like this:
The IP address for "barkstripper" could not be found. 1. (continue) Try to resolve "barkstripper" again 2. Specify an IP address for barkstripper 3. Look up a different hostname and use it instead 4. Print to a different printer or file 5. (abort) Return to Zmacs 6. Terminate this editing session 7. Terminate Zmacs
Now, look at what we have here. There's seven different points along the stack-- which is probably pretty long, at this point-- that can gracefully recover in different ways.
Thinking that this infomation will somehow be of use to you in the future baffles me... I'm not entirely sure what you think you can do with it.
So you can tell whoever answers the phone on the third call from the same case: "Well, Mark ran that test from the CO, and Cindy re-ran it from the POP..."
Every time, at the beginning the first call, I write down the name of whoever answers. Then, on each subsequent call in which I get a different tech, I recap whom I've spoken with, the current status, and if anybody on their company's end is working on something for this ticket.
In small groups, they'll often know one another. If they have any questions about a previous procedure that I can't answer, they can talk to whoever performed it. Note that small groups doesn't necessarily mean small company; sometimes the groups are specialized by problem area, so I worked on a small group when I was with HP.
I also use the tech's name during the conversation. "Well, Bob, I think I saw..." I'll also thank them by name at the end of each call. This is just a politeness thing, and I may forego it if the tech has a particularly formal manner (in which case they might consider it inappropriate for me to address them by their given name, and I feel awkward addressing people by surname).
There are many reasons to know somebody's name when you're doing business with them, and many of them don't involve them complaining about you.
They fail to realize that a manager or supervisor probably has less information on the topic than the front level agent you were speaking with.
It depends. If they think you don't have the technical expertese to handle the task at hand, then yes, it makes no sense. They should ask you to escalate the call to the next tier.
On the other hand, there's other reasons they may ask for a manager: they might feel that you are not reacting to the urgency of the problem; eg, their production floor is down and you say you'll consider the problem over lunch. They might feel that you are behaving incordially or unprofessionally. Or they may feel that additional resources from your company are needed, such as an on-site tech to coordinate with the call center tech. These are all reasonable and valid concerns.
Many customers don't recognize the difference between the two escalation paths, possibly because they probably haven't worked in support. When they ask for a supervisor, they may really want to be escalated to a higher tech tier. I've always felt that tech support is as much about communication as it is technical work, and this is a common example. It may be useful to suggest technical escalation as an alternative, but be sure to phrase it so they don't feel that you're being dismissive (and yes, telling them that their request is useless sounds dismissive). I usually phrase the suggestion as a request for clarification: "Okay, would you like me to escalate to a higher-level technical representative, or would you prefer to speak with my business unit manager?"
This communication issue brings us back to the point of offshoring call centers. Other cultures have very subtly different ways of structuring interactions, even when they speak the same language. A hesitation or change in vocal tone can have significant meaning in one culture (such as implying, "That line of troubleshooting is a waste of time"), but somebody from a different culture may miss it altogether.
Philosophical? Is that a euphemism for "useless"? I mean, what else can it mean? Simpler software that does the job is better than more complex software that does the same job. It's as simple as that. Nothing philosophical about it.
Simple: dir
Complex: Windows Explorer, which:
Decides whether it should use a custom handler or the default handler to show the folder, based on the content (including whether a special file exists, and/or whether it's all pictures)
For each file, looks into the registry to determine the correct CLSID, and uses that to
determine whether the file should be shown,
whether the extension should be shown,
whether to use a default icon handler which:
examines the CLSID,
opens the.exe containing the icon,
locates and parses out the resource section,
draws the appropriate icon
or to use a custom icon handler, which may do something completely different...
Need I go on?
We geeks like dir (actually, we prefer ls). The people who are buying software with great big corporate licenses like Explorer.
(Technically, it's the shell that prints that, not the program.)
On the flip side, when I worked at HP supporting HP-UX, I once saw a particular kernel error message. It was four lines long, and said very clearly, "so-and-so error has occurred. You probably need to increase the such-and-such parameter. You can do this by..."
I tracked down the guy that committed that message and promised to buy him a case of beer if he was ever in town.
Watch Free Enterprise. It's mandatory viewing for any SciFi fan, and a whole lot of non-fans. (It's relevant to your post because one of the main characters has a green-girl sex fantasy.)
Everybody: if you haven't seen it, go watch Free Enterprise. Then watch it with the glossary subtitles on; $10 says you'll have missed some good references. Then watch the commentary; I'll sometimes just put the commentary on for a fun re-watch.
I'm not sure if you were just joking or really asking a question.
Blackbird was the protocol used by MSN. I'm not sure about the technical details, but I think it was pretty much sending GDI calls (Windows equiv to X calls) down the wire. Microsoft derided HTML in favor of Blackbird.
About a year after that, they were enthusiastically "supporting" HTML.
That's a significantly different project. It was invented by different people, and doesn't even use a lava lamp; it uses the noise from a capped webcam.
Dummynet can absolutely do it. Put a PC with BSD & Dummynet and two ethernet interfaces in to simulate delay/loss/BW restrictions/etc. Very configurable. You can chose which packets are affected.
You betcha. At a job I previously had, supporting TCP/IP for a large Unix producer, I had a FreeBSD box set up for just this purpose. It only had one ether interface, and was in a different part of the building from the test lab, but that didn't matter; I'd use PPP over TCP to connect to the test machines.
I'd use it to test how different OSs (including our own) would handle different bandwidth*delay products, packet loss, etc. For instance, one I found out that a customer was having problems with a lossy WAN connection to an NT server. I experimented with high packet loss percentages, and changed the rules to narrow down the problem. Turns out that NT won't retransmit a FIN packet, at least not back then.
When I left that job, my coworkers insisted that I show them how to set up that box to run those kinds of experiments.
Quite an educational experience, too. It's one thing to read Richard Stevens describing congestion avoidance algorithms; it's something else to watch them in action.
Did you read Neil Gaiman's Sandman? Do you remember the bit when, in
Dream's mansion, a guest renounced Dream's hospitality and protection?
You remember how Dream then kicked the ex-guest's sorry insubstantial
derriere all over the place?
Is Microsoft therefore scarier than republicans by transitivity?
My mom used to tell me that fear is not transitive.
Well, not in those words. But she did say that "they're more scared of you than you are of them". That leads me to believe that fear is not antisymmetric. Since I'm not afraid of myself, then I conclude that fear is not transitive. Smart gal, my mom.
It's also not total (Batman is the man without fear), functional (my nephew is afraid of many things), surjective (who's afraid of the big bad wolf, la la la la la), or injective (lots of people are afraid of heights).
Also, if we consider fear to be defined over the set of all things that anybody belives exist, then it's not reflexive (as I mentioned above), symmetric (I'm afraid of Galacticus, he's not afraid of me), antisymmetric (again, as mentioned above), trichotomous (I don't fear you, you don't fear me, and I'm not you), or extendable (since it's not total).
It may be irreflexive (I don't know anybody who is afraid of themselves, although my cat was afraid of his own reflection), but I'm not sure.
Re:RGBCMY is more marketing factoid than it isreal
on
RGB to become RGBCMY
·
· Score: 1
RGB is a set of orthogonal colors, and a linear combination of RGB can express any color in the universe.
Nope. The idea behind RGB was that RGB could express any color that we could perceive, which is quite a different statement. If you're near San Francisco, there is (or used to be) an exhibit in the Exploratorium that demonstrates this: two orange samples, but a prism shows a single wave for one while it breaks the other into two waves. We percieve both as the same shade of orange, but the prism shows us that we're wrong: there is a difference.
But the RGB concept is still flawed. Basically, from what I understand, the color receptors in the eyes don't respond to single wavelengths. They respond in different degrees to different wavelengths. That is, the "red" receptor has a response curve that peaks at red, but still has non-zero responses along a good deal of the visible spectrum. If it were otherwise, how could we see the "pure" orange sample?
Prior to transmission, the analog RGB signal is converted into the digital YCbCr signal....Y, luma, is sampled at a reasonable rate, but the sampling system samples Cb and Cr at only half of the sampling rate for Y.
Now you're talking about spacial resolution, when we're discussing spectral resolution. You're also talking about HD only... NTSC doesn't necessarily use CbCr. The production components may, but the broadcast signal is based differently. It uses hue and saturation, sometimes combined into a single AC chroma signal with hue as the phase and saturation as the amplitude.
My guess is that RGBCMY is simply a clever attempt to use CMY to restore some of the samples of Cb and Cr that were discarded.
If you wanted to do that, you could just use a trilinear filter, or any other antialiasing technique, in RGB. You could do that in the TV's software, and not have to involve CMY. In fact, since VGA's resolution in luna and chroma are the same, any movie player on your computer has to "fill in" the missing chroma information anyway. So do TVs, but it's after the signal-processing step. This is all stuff you can do in software, without the expensive step of laying down CMY phosphors, increasing phosphor density and manufacturing costs.
It looks like they're not trying to increase the resolution, but rather increase the representable spectrum.
The problem is not that the color information is not at a high-enough spacial resolution, or even at a high-enough chroma resolution (depending on your color model). It's that the representable colors don't cover our eyes' percevable space completely, so there's colors that can't be represented.
Sun has a "solution" to this in the java.lang.ref.WeakReference class, which allows you to stick "weak references" to an object into collections.
Hang about. It sounds like you're saying that, in Java, you frequently have collections of objects that are all referenced somewhere else, somewhere live. Is that correct?
I ask because, in all my time programming in GC'd languages (not Java), I've only once needed a weak collection. I have wished that I had weak references in one particluar refcounting language that rhymes with Earl, but that's just for "parent" references in nested structures.
I think that he was griping about the distinction between what you can do with a function, and what you can do with a lambda. In Lisp, you can put whatever you want in a lambda. In Python, you can only have a single expression.
Example, with _s added to deal with ECODE's idiocy about leading spaces:
_;; v1, in Lisp: _(defun make-spammer (n) ___#'(lambda (stream) _______(format stream "~A tons of spam!~%" n))) _# v1, in Python: _def make_spammer (n): _____return lambda stream: stream.write('%d tons of spam!\n' % n) _;; v2, in Lisp: _(defun make-spammer (n) ___#'(lambda (stream) _______(dotimes (i n) _________(format stream "A ton of spam!~%"))))
As far as I know, you can't write v2 in Python using a lambda.
Of course, somebody else pointed out that you can create a named function and use it, as in the following example. But that can sometimes be rather inconvenient.
_# v2, in Python: _def make_spammer (n): _____def fn (stream): _________for i in range(n): _____________print "A ton of spam!" _____return fn
Simply put, the GPL does not prohibit charging for binaries. It doesn't even prohibit charging for source (and in fact, I believe RMS has said in the past that he favors charging for the source since it adds perceived value.. I could be very wrong on that, though).
Yes, but he's not giving out the source to the Windows version. He gives out the Unix source, but it's different code.
Since the Windows source includes contributions, if those contributions are under the GPL (the author says no but some people say yes), then he's redistributing their code in binary form without source access, and that's a violation.
What the GPL prohibits is the recipient of the binary or source from redistributing for free later.
Huh? That's exactly what the GPL doesn't prohibit! If you give me a copy of gcc, I am free to hand copies out on the street corner if I want to.
I'm with you on everything except the football.
- Texas A&M Class of 97
I was talking to a stripper the other night and she mentioned that the Strip Club scene in Austin blows compared to Dallas.
That's because Dallas has no social night life, so there's a lot of strip clubs. That, and there's more shipping involving Dallas, so you've got the lonely trucker factor.
Austin, on the other hand, actually is fun at night. And during the day. And in the strange time events that don't fit into the normal diurnal sequence, and seem to happen more frequently in Austin than anywhere else, including Santa Cruz, CA. Seriously. I had a friend of mine whose car carried a bit of the time warp field around it; he picked it up in Austin once and it stayed there.
or a tilt switch. just because the mouse is high-tech doesn't mean you need to make it as complex as possible.
Still too complex, and I'd hate to go through the legal hassle of putting mercury in consumer products-- particularly if you're selling them in California. Nah, just use a simple mechanical switch.
Don't forget powering it off 120V, with exposed terminals...
Oh, no, 120V is way too obvious to the user. Let's use microwave power transmission, so they don't jerk back immediately.
Even worse is cordless keyboards.
I have a Maltron keyboard which uses an unconventional layout, so I also have a cordless that guests can use but I can stash when they're not around.
I also have my second head going to the TV.
For a while, I liked to lean back in my chair and put my keyboard in my lap without getting the wires tangled.
For a while, I'd check my work email from bed. ("Did the Boss email? No? Okay, I can go back to sleep.") I kept the keyboard on my nightstand, and the computer was close enough to the bed for me to see it.
There's four ways I'd use my cordless, and that's just me.
Oh, I've seen "Real Genius", I know what happens when you don't clean your lasers! I'll be scrubbing my laser mouse every day, thank you!
If memory serves me right, a class 1 LASER device has a totaly enclosed interlocked LASER system.
If it's harmless, it can be a class 1 without any sort of interlock. You're thinking of how class 2 lasers can become class 1 lasers by adding interlocks.
There is simply no easy way for the OS to determine what actually happened from the fact that a program wrote to some memory it shouldn't have.
Thank you for your reply, but I think you may have missed my point. I am quite aware of the reasons for segvs, but I still lament that the user gets nothing more than a cryptic error message, with no hint as to how to troubleshoot the problem. Here's why.
Most segvs that I see are caused by one of two things. Either the program fails to check the return value of a call that returns a pointer, or uses an uninitialized value. The latter case is often in a struct, in my experience, and can frequently be alleviated by simply defining a constructor. (Yes, you can make constructors in C: it's just a function that malloc's the structure, fills it in, and returns it.)
So what of the return value problem? Well, part of that can be solved with wrappers. Most core GNU programs, for example, use an xmalloc function which checks the return value from malloc and terminate the program if they get ENOMEM. This isn't only from being out of memory. One program I debugged (a Palm simulator) would, on some OSs, mmap a region so close to the break that malloc couldn't expand.
But I don't put the blame entirely on the programmers, although that's where the burden has fallen. My biggest complaint in this regard is in the languages, specifically with regards to exception handling. C, for example, expects the programmer to check the return value from every single function call. C programs often take on the appearance of a collection of error checks with a few bits of useful program thrown in. Unless every function call includes an error test, then when things go wrong in an unexpected place (and the will), the program will behave in a manner that is most likely confusing to the user, and difficult to debug.
Perl includes exception handling, but the language doesn't encourage its use. The primitives and most of the stock libraries use return values rather than exceptions to report errors. It's easy to add "or die" to the end of statements, but it's also easy to forget to.
Java and C++ have exception handling, but their models are rather flawed: rather than testing the return value, you end up having to wrap function calls in try blocks that throw their own errors instead.
Why is all this necessary? Most functions can't gracefully recover from errors. There's usually a one or a few points in the stack which could gracefully recover from an error and use an alternative, such as switching to a different DNS server or prompting the user for another filename. But the lack of exception handling in our most popular languages means that every function call must be accompanied by an error test.
Again, the burden rests on the programmers to handle error testing, but that's only because the languages we have today are being lazy about it.
As far as I know, it's the same on any operating system.
The reason that I get so upset by this particular issue is that I've seen it done much, much better. Let's suppose that you're printing to a network printer, and there's an error, say the printer has a DNS entry with no A records. Some programs might segv when they try to dereference h_addr_list[0], because they didn't check for a NULL value there first.
But suppose that the program instead gave you a message like this:
Now, look at what we have here. There's seven different points along the stack-- which is probably pretty long, at this point-- that can gracefully recover in different ways.
Thinking that this infomation will somehow be of use to you in the future baffles me... I'm not entirely sure what you think you can do with it.
So you can tell whoever answers the phone on the third call from the same case: "Well, Mark ran that test from the CO, and Cindy re-ran it from the POP..."
Every time, at the beginning the first call, I write down the name of whoever answers. Then, on each subsequent call in which I get a different tech, I recap whom I've spoken with, the current status, and if anybody on their company's end is working on something for this ticket.
In small groups, they'll often know one another. If they have any questions about a previous procedure that I can't answer, they can talk to whoever performed it. Note that small groups doesn't necessarily mean small company; sometimes the groups are specialized by problem area, so I worked on a small group when I was with HP.
I also use the tech's name during the conversation. "Well, Bob, I think I saw..." I'll also thank them by name at the end of each call. This is just a politeness thing, and I may forego it if the tech has a particularly formal manner (in which case they might consider it inappropriate for me to address them by their given name, and I feel awkward addressing people by surname).
There are many reasons to know somebody's name when you're doing business with them, and many of them don't involve them complaining about you.
They fail to realize that a manager or supervisor probably has less information on the topic than the front level agent you were speaking with.
It depends. If they think you don't have the technical expertese to handle the task at hand, then yes, it makes no sense. They should ask you to escalate the call to the next tier.
On the other hand, there's other reasons they may ask for a manager: they might feel that you are not reacting to the urgency of the problem; eg, their production floor is down and you say you'll consider the problem over lunch. They might feel that you are behaving incordially or unprofessionally. Or they may feel that additional resources from your company are needed, such as an on-site tech to coordinate with the call center tech. These are all reasonable and valid concerns.
Many customers don't recognize the difference between the two escalation paths, possibly because they probably haven't worked in support. When they ask for a supervisor, they may really want to be escalated to a higher tech tier. I've always felt that tech support is as much about communication as it is technical work, and this is a common example. It may be useful to suggest technical escalation as an alternative, but be sure to phrase it so they don't feel that you're being dismissive (and yes, telling them that their request is useless sounds dismissive). I usually phrase the suggestion as a request for clarification: "Okay, would you like me to escalate to a higher-level technical representative, or would you prefer to speak with my business unit manager?"
This communication issue brings us back to the point of offshoring call centers. Other cultures have very subtly different ways of structuring interactions, even when they speak the same language. A hesitation or change in vocal tone can have significant meaning in one culture (such as implying, "That line of troubleshooting is a waste of time"), but somebody from a different culture may miss it altogether.
Philosophical? Is that a euphemism for "useless"? I mean, what else can it mean? Simpler software that does the job is better than more complex software that does the same job. It's as simple as that. Nothing philosophical about it.
Simple: dir
Complex: Windows Explorer, which:
- examines the CLSID,
- opens the
.exe containing the icon,
- locates and parses out the resource section,
- draws the appropriate icon
or to use a custom icon handler, which may do something completely different...Need I go on?
We geeks like dir (actually, we prefer ls). The people who are buying software with great big corporate licenses like Explorer.
lp0 on fire
Not a typewriter
?
Not to mention the catch-all that I see from a lot of programs when anything at all goes slightly differently that the way the developer expected:
Segmentation violation (core dumped)
(Technically, it's the shell that prints that, not the program.)
On the flip side, when I worked at HP supporting HP-UX, I once saw a particular kernel error message. It was four lines long, and said very clearly, "so-and-so error has occurred. You probably need to increase the such-and-such parameter. You can do this by..."
I tracked down the guy that committed that message and promised to buy him a case of beer if he was ever in town.
All the "Kirk" replies aside:
Watch Free Enterprise. It's mandatory viewing for any SciFi fan, and a whole lot of non-fans. (It's relevant to your post because one of the main characters has a green-girl sex fantasy.)
Everybody: if you haven't seen it, go watch Free Enterprise. Then watch it with the glossary subtitles on; $10 says you'll have missed some good references. Then watch the commentary; I'll sometimes just put the commentary on for a fun re-watch.
No, really, what's Blackbird?
I'm not sure if you were just joking or really asking a question.
Blackbird was the protocol used by MSN. I'm not sure about the technical details, but I think it was pretty much sending GDI calls (Windows equiv to X calls) down the wire. Microsoft derided HTML in favor of Blackbird.
About a year after that, they were enthusiastically "supporting" HTML.
Yeah, that was SGI. It now lives here.
That's a significantly different project. It was invented by different people, and doesn't even use a lava lamp; it uses the noise from a capped webcam.
simulate lightening by plugging a network cable into a 220V plug
Enter the Etherkiller.
Don't forget the most fun part of cable simulation: the backhoe!
Dummynet can absolutely do it. Put a PC with BSD & Dummynet and two ethernet interfaces in to simulate delay/loss/BW restrictions/etc. Very configurable. You can chose which packets are affected.
You betcha. At a job I previously had, supporting TCP/IP for a large Unix producer, I had a FreeBSD box set up for just this purpose. It only had one ether interface, and was in a different part of the building from the test lab, but that didn't matter; I'd use PPP over TCP to connect to the test machines.
I'd use it to test how different OSs (including our own) would handle different bandwidth*delay products, packet loss, etc. For instance, one I found out that a customer was having problems with a lossy WAN connection to an NT server. I experimented with high packet loss percentages, and changed the rules to narrow down the problem. Turns out that NT won't retransmit a FIN packet, at least not back then.
When I left that job, my coworkers insisted that I show them how to set up that box to run those kinds of experiments.
Quite an educational experience, too. It's one thing to read Richard Stevens describing congestion avoidance algorithms; it's something else to watch them in action.
Did you read Neil Gaiman's Sandman? Do you remember the bit when, in Dream's mansion, a guest renounced Dream's hospitality and protection? You remember how Dream then kicked the ex-guest's sorry insubstantial derriere all over the place?
So does IBM.
Is Microsoft therefore scarier than republicans by transitivity?
My mom used to tell me that fear is not transitive.
Well, not in those words. But she did say that "they're more scared of you than you are of them". That leads me to believe that fear is not antisymmetric. Since I'm not afraid of myself, then I conclude that fear is not transitive. Smart gal, my mom.
It's also not total (Batman is the man without fear), functional (my nephew is afraid of many things), surjective (who's afraid of the big bad wolf, la la la la la), or injective (lots of people are afraid of heights).
Also, if we consider fear to be defined over the set of all things that anybody belives exist, then it's not reflexive (as I mentioned above), symmetric (I'm afraid of Galacticus, he's not afraid of me), antisymmetric (again, as mentioned above), trichotomous (I don't fear you, you don't fear me, and I'm not you), or extendable (since it's not total).
It may be irreflexive (I don't know anybody who is afraid of themselves, although my cat was afraid of his own reflection), but I'm not sure.
RGB is a set of orthogonal colors, and a linear combination of RGB can express any color in the universe.
Nope. The idea behind RGB was that RGB could express any color that we could perceive, which is quite a different statement. If you're near San Francisco, there is (or used to be) an exhibit in the Exploratorium that demonstrates this: two orange samples, but a prism shows a single wave for one while it breaks the other into two waves. We percieve both as the same shade of orange, but the prism shows us that we're wrong: there is a difference.
But the RGB concept is still flawed. Basically, from what I understand, the color receptors in the eyes don't respond to single wavelengths. They respond in different degrees to different wavelengths. That is, the "red" receptor has a response curve that peaks at red, but still has non-zero responses along a good deal of the visible spectrum. If it were otherwise, how could we see the "pure" orange sample?
Prior to transmission, the analog RGB signal is converted into the digital YCbCr signal....Y, luma, is sampled at a reasonable rate, but the sampling system samples Cb and Cr at only half of the sampling rate for Y.
Now you're talking about spacial resolution, when we're discussing spectral resolution. You're also talking about HD only... NTSC doesn't necessarily use CbCr. The production components may, but the broadcast signal is based differently. It uses hue and saturation, sometimes combined into a single AC chroma signal with hue as the phase and saturation as the amplitude.
My guess is that RGBCMY is simply a clever attempt to use CMY to restore some of the samples of Cb and Cr that were discarded.
If you wanted to do that, you could just use a trilinear filter, or any other antialiasing technique, in RGB. You could do that in the TV's software, and not have to involve CMY. In fact, since VGA's resolution in luna and chroma are the same, any movie player on your computer has to "fill in" the missing chroma information anyway. So do TVs, but it's after the signal-processing step. This is all stuff you can do in software, without the expensive step of laying down CMY phosphors, increasing phosphor density and manufacturing costs.
It looks like they're not trying to increase the resolution, but rather increase the representable spectrum.
The problem is not that the color information is not at a high-enough spacial resolution, or even at a high-enough chroma resolution (depending on your color model). It's that the representable colors don't cover our eyes' percevable space completely, so there's colors that can't be represented.
Sun has a "solution" to this in the java.lang.ref.WeakReference class, which allows you to stick "weak references" to an object into collections.
Hang about. It sounds like you're saying that, in Java, you frequently have collections of objects that are all referenced somewhere else, somewhere live. Is that correct?
I ask because, in all my time programming in GC'd languages (not Java), I've only once needed a weak collection. I have wished that I had weak references in one particluar refcounting language that rhymes with Earl, but that's just for "parent" references in nested structures.
On page 6, while discussing W^X support, it refers to N^X support. What is N^X?
I think that he was griping about the distinction between what you can do with a function, and what you can do with a lambda. In Lisp, you can put whatever you want in a lambda. In Python, you can only have a single expression.
Example, with _s added to deal with ECODE's idiocy about leading spaces:
As far as I know, you can't write v2 in Python using a lambda.
Of course, somebody else pointed out that you can create a named function and use it, as in the following example. But that can sometimes be rather inconvenient.