Actually, I think karma has been frozen for a week or two now. When my karma stopped moving, I also noticed a lot of others complaining about their karma being stuck. My guess is that it's a recently added bug.
I think you mean "associating", not "assimilating". "assimilating France with socialism" would mean that the previous poster was an active participant in the socialist takeover of France.
Actually, "assimilate" means "to make similar", so it's somewhat correct, but that is a pretty big stretch.
Actually, Microsoft didn't make 3D Pinball. They licensed it from another company. I think it was Maxis. (Maxis has since been bought by Eletronic Arts)
#!/usr/bin/python
from sys import *
m={}
for line in stdin.readlines():
m[line] = m.get(line,0)+1
for line,count in m.items():
stdout.write("%d %s" % (count, line))
Listener lists shouldn't (and typically don't) use weak references. When using "strong" references, if the event source is the only thing with a reference to the listener (via the listener list) then the listener will be collected at the same time (or after) the event source is collected. If listener lists used weak references instead, then code like this wouldn't work:
foo.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
/* do something */
}
}
);
If foo's listener list used weak references, the listener would be destroyed very soon, because the only reference to it will be that weak reference.
what are all those args for - I can't remember just now, but you need to know it.
If you look at the javadocs, it isn't too hard to figure out. (If the link doesn't work, it's because of/.'s buggy long-line breaker) And there are versions of JOptionPane.showInputDialog that take fewer parameters. They're just less flexible. You have the choice: use the simple, but less flexible function, or the more flexible, but also more complex one.
I think Einstein said it best:
"Things should be made as simple as possible, but no simpler."
Maybe they were handling events? Why would you keep a hard reference to an event handler lying around?
I'm not sure what you're talking about. Please elaborate if I'm misunderstanding what you're saying.
If by "event handler" you mean something like a "listener" in Java, well the event generator (the thing you called "addFooListener" on) would hold the reference for you, so there's no nee for you to hold a reference. If you mean a separate thread that's intended to handle events... Java's garbage collector doesn't collect active threads.
You will be surprised. Ever had any "finalize" hacks around? When you memory consumption is critical, knowing what gc is doing is rather important.
Yes, I know some people have had trouble with the fact that things aren't cleaned up in a deterministic way, and that sometime fnalize isn't called.
Java 2 (1.2 and 1.3) support Reference Objects, so you can get pretty fine control over when things are deallocated. If you need finer control than that, you probably want to use JNI.
That still doesn't explain the author's original comment though:
the solution depended on objects *not* being automatically destroyed, as they were supposed to exist separate from the main object hierarchy and would take care of their own destruction when the time was right.
This implies that he wanted the GC to not destroy the objects, because they were supposed to "exist separate from the main object hierarchy" (whatever that means). The GC only cleans up things when they're unreachable, so why did he want it to not clean them up?
Or maybe, if there are no more living expenses, people will create art simply because they want to. If one or two people enjoy it, wouldn't that be enough?
Some people would, yes. But who would do the necessary tasks, like colect the garbage, or be a cashier at 7-11? There's a lot of work in the world that needs to be done, and people will only do it if thy get some reward in return.
If content creators aren't paid, you end up with a world where some people are paid for their work, and others aren't. Doesn't sound fair to me. People should get paid proportionally to the contribution they make to society, and content creators do make a valuable contribution.
I really have to wonder whether the author understands garbage collection. For example:
there have been a few instances where I was faced with a programming problem where the solution depended on objects *not* being automatically destroyed, as they were supposed to exist separate from the main object hierarchy and would take care of their own destruction when the time was right.
WTF? Objects will only be collected if they're unreachable, and if they're unreachable, what do you want them hanging around for?
Also, the whole thing about C#'s "structs" seems a bit dubious to me:
One new feature that I mentioned already was that of copy-by-value objects. This seemingly small improvement is a potentially huge performance saver
It would only be a performance saver if these objects are really small, because you'll be copying these objects around all over the place). I also have to wonder how C# deals with the object slicing issue. Object slicing is when you pass a subclass instance to something that takes the base class using pass-by-value, and you implicitly "slice" thje object down to the base class. It doesn't happen in Java (or Modula-3, or Objective-C, or any other language that always passes objects by reference). It does happen in C++ if you're not careful though, and it's really hideous.
There's a C library that does garbage collection already. Actually, I think there are a few of them.
Yes, there are a few conservative garbage collectors available for C. Conservative garbage collectors are an ugly hack though. They essentially scan through all allocted parts of the heap, and look at everything that might be a pointer. They then use this information to determine connectivity information, which is required for garbage collection. Because they have to assume that virtually any value is a pointer (because they have no run-time type information to work with), you end up with a lot of things not getting collected even if they should be. And the worst part is, the more memory you're using, the more "false positives" it's going to get.
If you want garbage collection, use a language that supports it. Note that with mostforms of pointer arithmetic, it basically throws the possibility of proper garbage collection out the window, because everything is always reachable because you can theoretically always compute the address. (it is possible to make limited forms of pseudo-pointer arithmetic that don't defy GC)
Here's what: We all would have food for free, and the farmer could stop working in the field and do something else. This is the Star Trek ideal. If we had replicators, there would no longer be any need for money, or for anyone to toil away producing things. You would be free to either spend your life exploring and learning, or wasting away engaging in idle entertainment.
Of course, this analogy breaks down with digital content, because you need the musicians, artists, and programmers to continue producing new stuff. I think this is one of the things the "information wants to be free" crowd keeps forgetting: new information has an initial production cost. The current system is to ammortize that cost over all sales. (yes, I know the RIAA and MPAA are corrupt bastards who take way more than their share)
On the other hand, if in the future all of the necessities of life (food, shelter, etc.) were available for free (gratis), then costs for other things could go down significantly as well, since consumers wouldn't have to subsidize the living expenses of producers (since there would be no "living expenses"). Some form of reward system would probably still be necessary though, or the human race is likely to stagnate into a pile of lazy pigs that dont do anything but demand free MP3s and look at pr0n all day. Maybe only the people who make a significant contribution to society should be allowed to breed?
But it's impressive that you can write a C# class and then subclass it from VB or Python, and vice versa; this is a degree of unification which languages on Unix badly lack.
Check out JPython. You can subclass Java classes in Python, then subclass yourPython classes in Java.
Actually, you can change employers under the H1B visa. The transfer takes around 90 days.
Why should I need to get a transfer? I should just be able to switch as long as it's for the same type of job.
Why does it take so freaking long? Two weeks would be okay, but 3 months? Switching jobs is already a big ordeal. Adding 3 months to the process is torture.
While working on an H1B, you can't do any part-time work, or work for another company unless you get another H1.
What about greencard applications? Why don't they get transferred? H1's only last for 6 years (after your one and only renewal), and greencard applications take at least 4 years, often more.
If you want to encourage American high-tech companies to hire Americans, here's what you should do: encourage the INS to allow people with H1B's to transfer to other companies. The same should be true for people who are applying for a greencard.
Right now, H1's are tied to the current employer. This means that H1 employees can't switch jobs without getting a new H1. Also, if you're applying for a greencard, and you switch jobs, you need to restart the application process.
This results in foreign workers ("aliens" in INS terminology) having to undergo significnt hardship if they switch jobs. American high-tech companies end up having a preference for foreign workers because they know they can treat them like crap and pay them less, but they won't dare to quit. If foreign workers could easily change jobs, then the high-tech companies would be forced to pay them the same as Americans. This would be good for all workers ("aliens" and Americans).
The INS has actually created this problem. They try to put quotas and restrictions on alien workers, thinking that that will reduce the number of them. The restrictions on switching companies are exactly what the high-tech companies like about foreign workers over Americans though. I bet if those restrictions were removed, the H1 quota wouldn't even be reached (as it has been every year for the past few years).
Perhaps an auto word splitter should be put in to defeat that little annoyance.
Actually, there is an auto-word splitter. It's as buggy as hell, too. It often "splits" right in the middle of HTML entities, and inside HTML tags. Ever see "&nb sp;" in a post, or those links that look like "http://www.iminthemiddleofaw ord.com/"? That's the splitter...
As one of the original X applications, I'm sure that xterm has suffered a lot from bloat, maybe even more than xclock and xload.:)
Ever look at the xterm source? Right there at the beginning of main.c is this wonderful comment:
* W A R N I N G * * If you think you know what all of this code is doing, you are * probably very mistaken. There be serious and nasty dragons here. * * This client is *not* to be taken as an example of how to write X * Toolkit applications. It is in need of a substantial rewrite, * ideally to create a generic tty widget with several different parsing * widgets so that you can plug 'em together any way you want. Don't * hold your breath, though....
When I frist saw that a couple of years ago, I immediately switched to rxvt.
There still wasn't a good reason for it to be 1.5Meg. Why are the first and last three pages images of text, rather than just text? (they appear to be low-quality scans, or scans of faxes) They may as well have put up the document as a collection of jpegs. It probably would've been smaller...
So the situation we have is one where rights are removed from the vast majority to ensure the money-making potential (which, btw, is not a right) of a small number of people.
Who is more greedy, the person who asks to be compensated for their hard work, or the person who wants to benefit from another's hard work for nothing?
If one person produces something, and asks for something in return, it seems only fair that they should either get the price they asked for, or the consumer(s) can do without. Not being allowed to copy is too high a price? Do without. Find other artists who will let you copy their work. The ability to copy freely is a feature, not a natural right.
Therefore, if an artist asked me not to distribute copies of an item acknowledged as mine, I might consider it. If I liked the artist, I would probably say something like "I won't distribute it widely, but I'll still share with my friends".
And they give it only to their friends, etc...
If copyright didn't exist, it would be extremely dificult for content creators to make a profit. Most content creators (directly or indirectly) make a living because of sales of copies of that content. Without copyright, that can't be done practically, because far fewer people will pay for originals.
Let me ask you this: If you could get a CD (copy) for free of an artist you very much liked and admired and the artist asked for a donation, would you do it? Why or why not?
You have to realize that 95% of the population believes that if something is legal, then it is moral. While I may feel that musicians deserve to get paid for their music, if there was no copyright most people would say, "hey, I can get a copy for free, and it's legal, so why should I pay?".
Without copyright, you end up with content-creators who can't make a living doing what they do best. They end up having to do something else to make a living (like waiting tables), which cuts into the time they can create, and also reduces the quality of their work overall (someone plays music only in their spare time is going to produce lower-quality music that someone who plays music as a full-time job, on average). Overall, that hurts society, because there will be less art, and what little there is will be lower quality. And the few artists who do devote a lot of time to their art will be made to suffer too, which seems completely unfair...
I agree that we should get rid of the greedy middle-men, or at least make them near-powerless. Removing copyright isn't the way to do that though. Making it impossible for copyright to be transferred from the artist to these middle-men would probably work much better.
Actually, I think karma has been frozen for a week or two now. When my karma stopped moving, I also noticed a lot of others complaining about their karma being stuck. My guess is that it's a recently added bug.
You forgot the obvious:
Wouldn't you use Perl for oysters?
And of course, to wash it down, a bottle of Olde Fortran Malt Liquor.
Latin typically puts the verb at the end of the sentence too.
So does PostScript.
(sorta)
I think you mean "associating", not "assimilating". "assimilating France with socialism" would mean that the previous poster was an active participant in the socialist takeover of France.
Actually, "assimilate" means "to make similar", so it's somewhat correct, but that is a pretty big stretch.
Consider this:
You are at work.
Server crashes.
Southpark is on in an hour.
Whoo hoo! Server crashed! Can't get any work done, might as well go home...
-- not a sysadmin
Actually, Microsoft didn't make 3D Pinball. They licensed it from another company. I think it was Maxis. (Maxis has since been bought by Eletronic Arts)
#!/usr/bin/python
from sys import *
m={}
for line in stdin.readlines():
m[line] = m.get(line,0)+1
for line,count in m.items():
stdout.write("%d %s" % (count, line))
Listener lists shouldn't (and typically don't) use weak references. When using "strong" references, if the event source is the only thing with a reference to the listener (via the listener list) then the listener will be collected at the same time (or after) the event source is collected. If listener lists used weak references instead, then code like this wouldn't work:
foo.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
/* do something */
}
}
);
If foo's listener list used weak references, the listener would be destroyed very soon, because the only reference to it will be that weak reference.
If you look at the javadocs, it isn't too hard to figure out. (If the link doesn't work, it's because of /.'s buggy long-line breaker) And there are versions of JOptionPane.showInputDialog that take fewer parameters. They're just less flexible. You have the choice: use the simple, but less flexible function, or the more flexible, but also more complex one.
I think Einstein said it best:
Maybe they were handling events? Why would you keep a hard reference to an event handler lying around?
I'm not sure what you're talking about. Please elaborate if I'm misunderstanding what you're saying.
If by "event handler" you mean something like a "listener" in Java, well the event generator (the thing you called "addFooListener" on) would hold the reference for you, so there's no nee for you to hold a reference. If you mean a separate thread that's intended to handle events... Java's garbage collector doesn't collect active threads.
You will be surprised. Ever had any "finalize" hacks around? When you memory consumption is critical, knowing what gc is doing is rather important.
Yes, I know some people have had trouble with the fact that things aren't cleaned up in a deterministic way, and that sometime fnalize isn't called.
Java 2 (1.2 and 1.3) support Reference Objects, so you can get pretty fine control over when things are deallocated. If you need finer control than that, you probably want to use JNI.
That still doesn't explain the author's original comment though:
the solution depended on objects *not* being automatically destroyed, as they were supposed to exist separate from the main object hierarchy and would take care of their own destruction when the time was right.
This implies that he wanted the GC to not destroy the objects, because they were supposed to "exist separate from the main object hierarchy" (whatever that means). The GC only cleans up things when they're unreachable, so why did he want it to not clean them up?
Or maybe, if there are no more living expenses, people will create art simply because they want to. If one or two people enjoy it, wouldn't that be enough?
Some people would, yes. But who would do the necessary tasks, like colect the garbage, or be a cashier at 7-11? There's a lot of work in the world that needs to be done, and people will only do it if thy get some reward in return.
If content creators aren't paid, you end up with a world where some people are paid for their work, and others aren't. Doesn't sound fair to me. People should get paid proportionally to the contribution they make to society, and content creators do make a valuable contribution.
I really have to wonder whether the author understands garbage collection. For example:
there have been a few instances where I was faced with a programming problem where the solution depended on objects *not* being automatically destroyed, as they were supposed to exist separate from the main object hierarchy and would take care of their own destruction when the time was right.
WTF? Objects will only be collected if they're unreachable, and if they're unreachable, what do you want them hanging around for?
Also, the whole thing about C#'s "structs" seems a bit dubious to me:
One new feature that I mentioned already was that of copy-by-value objects. This seemingly small improvement is a potentially huge performance saver
It would only be a performance saver if these objects are really small, because you'll be copying these objects around all over the place). I also have to wonder how C# deals with the object slicing issue. Object slicing is when you pass a subclass instance to something that takes the base class using pass-by-value, and you implicitly "slice" thje object down to the base class. It doesn't happen in Java (or Modula-3, or Objective-C, or any other language that always passes objects by reference). It does happen in C++ if you're not careful though, and it's really hideous.
There's a C library that does garbage collection already. Actually, I think there are a few of them.
Yes, there are a few conservative garbage collectors available for C. Conservative garbage collectors are an ugly hack though. They essentially scan through all allocted parts of the heap, and look at everything that might be a pointer. They then use this information to determine connectivity information, which is required for garbage collection. Because they have to assume that virtually any value is a pointer (because they have no run-time type information to work with), you end up with a lot of things not getting collected even if they should be. And the worst part is, the more memory you're using, the more "false positives" it's going to get.
If you want garbage collection, use a language that supports it. Note that with mostforms of pointer arithmetic, it basically throws the possibility of proper garbage collection out the window, because everything is always reachable because you can theoretically always compute the address. (it is possible to make limited forms of pseudo-pointer arithmetic that don't defy GC)
Here's what: We all would have food for free, and the farmer could stop working in the field and do something else. This is the Star Trek ideal. If we had replicators, there would no longer be any need for money, or for anyone to toil away producing things. You would be free to either spend your life exploring and learning, or wasting away engaging in idle entertainment.
Of course, this analogy breaks down with digital content, because you need the musicians, artists, and programmers to continue producing new stuff. I think this is one of the things the "information wants to be free" crowd keeps forgetting: new information has an initial production cost. The current system is to ammortize that cost over all sales. (yes, I know the RIAA and MPAA are corrupt bastards who take way more than their share)
On the other hand, if in the future all of the necessities of life (food, shelter, etc.) were available for free (gratis), then costs for other things could go down significantly as well, since consumers wouldn't have to subsidize the living expenses of producers (since there would be no "living expenses"). Some form of reward system would probably still be necessary though, or the human race is likely to stagnate into a pile of lazy pigs that dont do anything but demand free MP3s and look at pr0n all day. Maybe only the people who make a significant contribution to society should be allowed to breed?
So what do you do for a living?
Actually, that sounds like what RMS said at Linux World Expo last year.
"It's like giving the 'Han Solo Award' to the 'Rebel Fleet' itself!"
But it's impressive that you can write a C# class and then subclass it from VB or Python, and vice versa; this is a degree of unification which languages on Unix badly lack.
Check out JPython. You can subclass Java classes in Python, then subclass yourPython classes in Java.
If you want to encourage American high-tech companies to hire Americans, here's what you should do: encourage the INS to allow people with H1B's to transfer to other companies. The same should be true for people who are applying for a greencard.
Right now, H1's are tied to the current employer. This means that H1 employees can't switch jobs without getting a new H1. Also, if you're applying for a greencard, and you switch jobs, you need to restart the application process.
This results in foreign workers ("aliens" in INS terminology) having to undergo significnt hardship if they switch jobs. American high-tech companies end up having a preference for foreign workers because they know they can treat them like crap and pay them less, but they won't dare to quit. If foreign workers could easily change jobs, then the high-tech companies would be forced to pay them the same as Americans. This would be good for all workers ("aliens" and Americans).
The INS has actually created this problem. They try to put quotas and restrictions on alien workers, thinking that that will reduce the number of them. The restrictions on switching companies are exactly what the high-tech companies like about foreign workers over Americans though. I bet if those restrictions were removed, the H1 quota wouldn't even be reached (as it has been every year for the past few years).
Perhaps an auto word splitter should be put in to defeat that little annoyance.
Actually, there is an auto-word splitter. It's as buggy as hell, too. It often "splits" right in the middle of HTML entities, and inside HTML tags. Ever see "&nb sp;" in a post, or those links that look like "http://www.iminthemiddleofaw ord.com/"? That's the splitter...
As one of the original X applications, I'm sure that xterm has suffered a lot from bloat, maybe even more than xclock and xload. :)
Ever look at the xterm source? Right there at the beginning of main.c is this wonderful comment:
* W A R N I N G
*
* If you think you know what all of this code is doing, you are
* probably very mistaken. There be serious and nasty dragons here.
*
* This client is *not* to be taken as an example of how to write X
* Toolkit applications. It is in need of a substantial rewrite,
* ideally to create a generic tty widget with several different parsing
* widgets so that you can plug 'em together any way you want. Don't
* hold your breath, though....
When I frist saw that a couple of years ago, I immediately switched to rxvt.
There still wasn't a good reason for it to be 1.5Meg. Why are the first and last three pages images of text, rather than just text? (they appear to be low-quality scans, or scans of faxes) They may as well have put up the document as a collection of jpegs. It probably would've been smaller...
The "complex pictures" are scans of faxes... the first three pages of the document. Ugh!
So the situation we have is one where rights are removed from the vast majority to ensure the money-making potential (which, btw, is not a right) of a small number of people.
Who is more greedy, the person who asks to be compensated for their hard work, or the person who wants to benefit from another's hard work for nothing?
If one person produces something, and asks for something in return, it seems only fair that they should either get the price they asked for, or the consumer(s) can do without. Not being allowed to copy is too high a price? Do without. Find other artists who will let you copy their work. The ability to copy freely is a feature, not a natural right.
Therefore, if an artist asked me not to distribute copies of an item acknowledged as mine, I might consider it. If I liked the artist, I would probably say something like "I won't distribute it widely, but I'll still share with my friends".
And they give it only to their friends, etc...
If copyright didn't exist, it would be extremely dificult for content creators to make a profit. Most content creators (directly or indirectly) make a living because of sales of copies of that content. Without copyright, that can't be done practically, because far fewer people will pay for originals.
Let me ask you this: If you could get a CD (copy) for free of an artist you very much liked and admired and the artist asked for a donation, would you do it? Why or why not?
You have to realize that 95% of the population believes that if something is legal, then it is moral. While I may feel that musicians deserve to get paid for their music, if there was no copyright most people would say, "hey, I can get a copy for free, and it's legal, so why should I pay?".
Without copyright, you end up with content-creators who can't make a living doing what they do best. They end up having to do something else to make a living (like waiting tables), which cuts into the time they can create, and also reduces the quality of their work overall (someone plays music only in their spare time is going to produce lower-quality music that someone who plays music as a full-time job, on average). Overall, that hurts society, because there will be less art, and what little there is will be lower quality. And the few artists who do devote a lot of time to their art will be made to suffer too, which seems completely unfair...
I agree that we should get rid of the greedy middle-men, or at least make them near-powerless. Removing copyright isn't the way to do that though. Making it impossible for copyright to be transferred from the artist to these middle-men would probably work much better.