I think automatic garbage collection is great, but _my_ problems with Java's memory allocator have little to do with performance. Rather, it sucks so hard at dealing with out-of-memory conditions.
Why would you ever run out of memory? If you're on a microcomputer, you tend to have an arbitrary limit anyway. The JDK default is 64MB max heap. This is to prevent runaways, but setting the heap size to some arbitrarily high number has really awful performance characteristics -- god help you if you set the number higher than the amount of RAM you have available, or applications that want to share the machine. There's a whole other rant about how stupid automatic garbage collection is on a timeshared environment (like a server), but it's not the point I want to make.
The point I want to make: since Java is supposed to run everywhere, you really can find environments where you only have 1 or 2MB of heap to play with. Having constrained resources is nothing new to programmers, they've been dealing with it forever. But Java's allocator combined with constrained resources leaves you with very little wiggle room.
If you've ever developed a Java applicatoin that manages an in-core cache you might have experienced how fucked you are when you get around to the logic of cache expiration. Ideally you can keep cache forever, as long as a) you know it's not stale, and b) you don't need the memory for something better. A is not a problem in Java, but setting up a system to facilitate B is actually really hard. In C/C++ you can wrap malloc() so that if it fails, you can start dumping cache until it succeeds. The solution is elegant, dare I say beautiful.
In Java this is totally impossible. When you run out of memory the garbage collector is tripped, and if it can't free anything up it generates an OOM exception. You can't realistically catch these exceptions -- they can bubble up from anywhere at any time. The only place you can catch them is at the top of your program loop and the only good it does there is let you say "OUT OF MEMORY" in a user friendly way before exiting the application -- assuming you have the resources left to even say that of course.
So how does this effect your cache model? Well, you end up having to guess at how much cache to maintain. Guess too high and your application breaks when it's run in a low memory environment. Guess too low and you're not caching enough, the user experience suffers when it has no reason to. The above scenario is just one example.
Essentially, the problem is one of prioritized memory. Java gives you no usable way of saying memory allocated for purpose X is fine as long as purpose Y is not short. Designers and apologists can make excuses for why Java doesn't support this and maybe provide a good reason, but those reasons hardly qualify Java as a general purpose programming language.
"Enterprise class" means that the vendor invested lots of money in unsexy things that allow corporate bigwigs to check off boxes on their requirements lists that satisfy their accountants, shareholders, insurers, and regulators. It has nearly nothing to do with how the tool itself operates.
Example: the average user rightly doesn't give a fuck about whether OpenSSH has been SOX compliant certified.
That's totally impossible. Even if you had a trillion dollars it'd be impossible.
Whoever made that offer doesn't understand software or, more likely, is trying to encourage someone to spend 15 days obfuscating WINE to deliver it to him so he can start selling and then plausibly deny it when it comes up.
One of the ways businesses make money is by offering goods or services.
Some of the goods and services MySQL AB has offered in the past include:
Technical support for MySQL
Teaching MySQL
Certification for MySQL
Proprietary licenses for MySQL (so it can be incorporated in a software package).
I haven't followed MySQL in awhile, but it seems like SCO is actually just buying into some kind of reseller program MySQL AB is offering and calling it a partnership, which is kind of like buying some routers from Cisco and saying Cisco is your business partner.
If someone walks into your store and tries to buy something, are you going to say no?
It's hard to appreciate a Microsoft world until you've tried to develop a software product to target a class of device where there are multiple incompatible platforms.
A lot more code to write, QA time goes up, releases are delayed, features get cut, and marketing is harder to coordinate. It's a nightmare. Each vendor does something different, requires developers to subscribe to their developer program, pay their ridiculous fees, entertain their idea of usability standards, their development methodology. Some require you to use only their distribution model, some have no distribution model, some won't talk to you unless you want to reach an audience of ten million.
The result? You have a base of technology that could all work together and do something useful and great, but because the costs are so high, because the vendors don't want to be commoditized, innovative applications never get built. The consumer is the one who really loses in the end.
In the PC world you can be a 16 year old with no money, write a single binary and have a target market of 500 billion PCs or so. No developer program, no license fees, and no terms to cripple distribution. It's great. And oddly enough, it's all because of Microsoft.
Microsoft gained a majority marketshare because they made their platform a commodity. They were more open than their competition, and still are.
Some people say "standards" are the solution, but I've never worked with a standard yet that was consistent enough to write against and not have to do debug-everywhere. Java? OpenGL? Motif? Yeah, right.
...start billing the suckers $2000/hour because the entire community has retired, you'll see a push come from the top to replace mainframes with small computers real fast.
Libraries have information that just never made it onto the internet, or information that isn't mass market friendly enough to get sold at Barnes & Noble.
I was able to stop by the library one day and check out 5 books on speaking Korean, 1 book on how to eat Korean food, and a Korean-English dictionary. I was able to evaluate them there and decide which ones to take home. When I was finished I brought them back, there were even new ones available! Wow!
Did I only take out books on Korean? No! I also took out a book on goth kids and why they should be tolerated (hillarious), one about ADHD, one about caffeine, a book on the evolutionary psychology of rape, Silent Spring, and Siddartha. All of them I stumbled upon at random and since they were FREE, I figured why the hell not?
I never would've read all of that if I had to buy it from a bookstore, and I certainly couldn't rely on the internet to find all of the information I did (the book on eating korean food is much more informative than anything I could find on Google). But the internet did nicely complement the books I got, and vice versa.
Libraries are good for random learning sprees. You don't have to know what you want, you just wander until you find something appealing or horrific and combine with curiousity and there you are taking it home and learning something new.
I'd hate for my library to become an internet cafe.:(
You can't (via "AJAX") query any site but the one that served the script without the browser imposing this scary security warning. We run the sites in question, they just have different domain names.
After the Abu Ghraib business went down, there was a journalist arguing for torture warrants.
Since torture is bound to happen and has its place (the argument went...), it's better to build it into due process and codify the boundaries. The business of torture becomes transparent and affords society more protections while still giving authorities a "last resort" method of gaining information.
Yeah, "Open DRM" reminds me of that. Nice work, Sun!
You can't (via "AJAX") query any site but the one that served the script without the browser imposing this scary security warning. We run the sites in question, they just have different domain names.
Sigh.
I realize there's worry about cross site scripting attacks, and in the end it's not a big deal, it just means moving the request to a server side proxy. It's just added complexity that wouldn't exist if someone didn't impose something "for our own good".
Everyone attacks Perl code for being unreadable but I don't think I've ever come across real world Perl code that I couldn't manage to deal with (eventually). I've seen some bad code and written some bad code and Perl doesn't have exclusivity in either of those areas.;)
Does someone have a good example of unreadable, real world Perl code? And I don't mean obfuscated Perl contest entries.
When it comes down to it, other people's code is just freakin' unreadable no matter what they write it in. In fact, my own code looks unreadable and unmanagable if I haven't seen it in awhile. Just the nature of the industry.
Maybe Perl is just a high profile target since the internet is full of small (and useful) pieces of Perl code?
I dragged a purple jolly rancher iMac about two miles and let me tell you, that cute little thing has the most painful plastic handle evar.
After a few blocks I picked up some newspaper to pad my poor plastic-groove indented fingers. Not that it helped much. To think: if I had waited a few weeks I could've tried my luck with a baby-stroller-crushing stampede and saved a few bucks!
( This is the pain I'm going through to bring out a Mac version of UNC drive client. You Mac people better like it. ; | )
It's also a useful tool for advocates who try to convince people to switch from Windows to another OS (no, not just Linux), the argument being "look, you wonder if Windows is insecure? how about a whole friggin book, with an ISBN and all, about how to do nasty things in Windows despite A/V software and anti-spywares!"
Which OS were you talking about? I could swear the ones you might name have hacking books written about them too.
Maybe after Hollywood's sustained saturation bombing campaign of ``Meet the Fockers: The Game'' and ``Deuce Bigolo in Thailand Happy Ending'', game publishers will be begging for independent game developers to take them back, along with this thing they call "original ideas".
Actually, do astronauts get plain vanilla worker's comp like the rest of us here in the states, or does NASA have some custom designed insurance policy?
Groupware Bad
And I said, "Jesus Mother of Fuck, what are you thinking! Do not strap the 'Groupware' albatross around your neck! That's what killed Netscape, are you insane?" He looked at me like I'd just kicked his puppy.
My wife's Honda Insight has a lifetime fuel economy of 61 MPG for over 120,000 miles. What economy sedan gets that fuel economy? None. My wife also reduced her fuel costs per month from $240 to $80. But, the main reason she bought it is because she cares about the environment. The Honda Insight is also an SULEV. The fuel cost savings were a great benefit. If it was safe to do so, both her and I would ride our bikes to work, but we cannot. If it was all about the money, she would have considered buying a VW TDI with similar fuel economy. There are absolute and definable benefits to owning and driving a Hybrid.
My car is on the "inefficient" side in terms of fuel economy. I try to drive it as little as possible because it comes out to about $45/week in fuel costs, and I don't even commute with it.
I can tell you, if my car had double the fuel efficiency, I just might drive it twice as much. Efficiency is a totally worthwhile goal, but if passenger automobiles consume the majority of the fuel in this country (do they?) I don't see how this realistically conserves fuel resources.
It isn't just a liberal phenomenon either: my wife served (in an extremely lowly capacity) in the Reagan administration for a while, and the period was remarkable for the rate at which government and the various private entities that feed off of it grew.
Milton Friedman says that during Reagan's reign, government socialist activity dropped. Link here.
If console manufacturers could legally lock out third party accessories, wouldn't they have done it long ago? Nintendo sued Game Genie over patent violations but still couldn't keep them out of the market.
How is this any different from Lexmark's ink cartridge fiasco (a case they lost)? "We'll keep doing it in the face of all of this legal precedent that says we can't" doesn't seem like a sound long-term legal strategy.
Finding new and interesting content is hard. And risky. Big distributors would rather have predictable revenue than gamble with something original (and possibly more lucrative). As movie companies get bigger they lose the eccentric loose cannon guy at the top who would say "Gone With The Wind 2?!? Have we no shame!?" He gets replaced by shareholders who just want the company to put out a steady stream of dividends, taste be damned.
You see it everywhere now: music, TV, even books.
Looks like the video game industry has finally grown up.
I personally think that hypervisors are overhyped (pun fun!), and that the most practical and useful form of "virtualization" is actually separation as is achieved by Solaris Zones, FreeBSD jails and (the most advanced of them all IMO) Linux Vservers.
Someone who worked at VMWare told me that their BIG MONEY comes from virtualization. System runs on computer A. Computer A needs to be moved down the hall. VMWare's server solution (allegedly) lets you move the System to computer B , in real time, with "no downtime", turn off computer A, move down the hall, then repeat the same operation but in reverse to get it back on computer A.
I think automatic garbage collection is great, but _my_ problems with Java's memory allocator have little to do with performance. Rather, it sucks so hard at dealing with out-of-memory conditions.
Why would you ever run out of memory? If you're on a microcomputer, you tend to have an arbitrary limit anyway. The JDK default is 64MB max heap. This is to prevent runaways, but setting the heap size to some arbitrarily high number has really awful performance characteristics -- god help you if you set the number higher than the amount of RAM you have available, or applications that want to share the machine. There's a whole other rant about how stupid automatic garbage collection is on a timeshared environment (like a server), but it's not the point I want to make.
The point I want to make: since Java is supposed to run everywhere, you really can find environments where you only have 1 or 2MB of heap to play with. Having constrained resources is nothing new to programmers, they've been dealing with it forever. But Java's allocator combined with constrained resources leaves you with very little wiggle room.
If you've ever developed a Java applicatoin that manages an in-core cache you might have experienced how fucked you are when you get around to the logic of cache expiration. Ideally you can keep cache forever, as long as a) you know it's not stale, and b) you don't need the memory for something better. A is not a problem in Java, but setting up a system to facilitate B is actually really hard. In C/C++ you can wrap malloc() so that if it fails, you can start dumping cache until it succeeds. The solution is elegant, dare I say beautiful.
In Java this is totally impossible. When you run out of memory the garbage collector is tripped, and if it can't free anything up it generates an OOM exception. You can't realistically catch these exceptions -- they can bubble up from anywhere at any time. The only place you can catch them is at the top of your program loop and the only good it does there is let you say "OUT OF MEMORY" in a user friendly way before exiting the application -- assuming you have the resources left to even say that of course.
So how does this effect your cache model? Well, you end up having to guess at how much cache to maintain. Guess too high and your application breaks when it's run in a low memory environment. Guess too low and you're not caching enough, the user experience suffers when it has no reason to. The above scenario is just one example.
Essentially, the problem is one of prioritized memory. Java gives you no usable way of saying memory allocated for purpose X is fine as long as purpose Y is not short. Designers and apologists can make excuses for why Java doesn't support this and maybe provide a good reason, but those reasons hardly qualify Java as a general purpose programming language.
Goto also.
No, that's not what it means.
"Enterprise class" means that the vendor invested lots of money in unsexy things that allow corporate bigwigs to check off boxes on their requirements lists that satisfy their accountants, shareholders, insurers, and regulators. It has nearly nothing to do with how the tool itself operates.
Example: the average user rightly doesn't give a fuck about whether OpenSSH has been SOX compliant certified.
Developers developers developers developers developers developers...
*pant*
developers...
developers...
developers!....
DEVELOPERS!!!
That's totally impossible. Even if you had a trillion dollars it'd be impossible.
Whoever made that offer doesn't understand software or, more likely, is trying to encourage someone to spend 15 days obfuscating WINE to deliver it to him so he can start selling and then plausibly deny it when it comes up.
Recommended by a name we all trust
And one thing businesses do is make money.
One of the ways businesses make money is by offering goods or services.
Some of the goods and services MySQL AB has offered in the past include:
I haven't followed MySQL in awhile, but it seems like SCO is actually just buying into some kind of reseller program MySQL AB is offering and calling it a partnership, which is kind of like buying some routers from Cisco and saying Cisco is your business partner.
If someone walks into your store and tries to buy something, are you going to say no?
It's hard to appreciate a Microsoft world until you've tried to develop a software product to target a class of device where there are multiple incompatible platforms.
A lot more code to write, QA time goes up, releases are delayed, features get cut, and marketing is harder to coordinate. It's a nightmare. Each vendor does something different, requires developers to subscribe to their developer program, pay their ridiculous fees, entertain their idea of usability standards, their development methodology. Some require you to use only their distribution model, some have no distribution model, some won't talk to you unless you want to reach an audience of ten million.
The result? You have a base of technology that could all work together and do something useful and great, but because the costs are so high, because the vendors don't want to be commoditized, innovative applications never get built. The consumer is the one who really loses in the end.
In the PC world you can be a 16 year old with no money, write a single binary and have a target market of 500 billion PCs or so. No developer program, no license fees, and no terms to cripple distribution. It's great. And oddly enough, it's all because of Microsoft.
Microsoft gained a majority marketshare because they made their platform a commodity. They were more open than their competition, and still are.
Some people say "standards" are the solution, but I've never worked with a standard yet that was consistent enough to write against and not have to do debug-everywhere. Java? OpenGL? Motif? Yeah, right.
...start billing the suckers $2000/hour because the entire community has retired, you'll see a push come from the top to replace mainframes with small computers real fast.
Libraries have information that just never made it onto the internet, or information that isn't mass market friendly enough to get sold at Barnes & Noble.
I was able to stop by the library one day and check out 5 books on speaking Korean, 1 book on how to eat Korean food, and a Korean-English dictionary. I was able to evaluate them there and decide which ones to take home. When I was finished I brought them back, there were even new ones available! Wow!
Did I only take out books on Korean? No! I also took out a book on goth kids and why they should be tolerated (hillarious), one about ADHD, one about caffeine, a book on the evolutionary psychology of rape, Silent Spring, and Siddartha. All of them I stumbled upon at random and since they were FREE, I figured why the hell not?
I never would've read all of that if I had to buy it from a bookstore, and I certainly couldn't rely on the internet to find all of the information I did (the book on eating korean food is much more informative than anything I could find on Google). But the internet did nicely complement the books I got, and vice versa.
Libraries are good for random learning sprees. You don't have to know what you want, you just wander until you find something appealing or horrific and combine with curiousity and there you are taking it home and learning something new.
I'd hate for my library to become an internet cafe. :(
You can't (via "AJAX") query any site but the one that served the script without the browser imposing this scary security warning. We run the sites in question, they just have different domain names.
Use a proxy.
I wonder why I never thought of that!!
After the Abu Ghraib business went down, there was a journalist arguing for torture warrants.
Since torture is bound to happen and has its place (the argument went...), it's better to build it into due process and codify the boundaries. The business of torture becomes transparent and affords society more protections while still giving authorities a "last resort" method of gaining information.
Yeah, "Open DRM" reminds me of that. Nice work, Sun!
You can't (via "AJAX") query any site but the one that served the script without the browser imposing this scary security warning. We run the sites in question, they just have different domain names.
Sigh.
I realize there's worry about cross site scripting attacks, and in the end it's not a big deal, it just means moving the request to a server side proxy. It's just added complexity that wouldn't exist if someone didn't impose something "for our own good".
The comments are included in the "unreadable" part.
Everyone attacks Perl code for being unreadable but I don't think I've ever come across real world Perl code that I couldn't manage to deal with (eventually). I've seen some bad code and written some bad code and Perl doesn't have exclusivity in either of those areas. ;)
Does someone have a good example of unreadable, real world Perl code? And I don't mean obfuscated Perl contest entries.
When it comes down to it, other people's code is just freakin' unreadable no matter what they write it in. In fact, my own code looks unreadable and unmanagable if I haven't seen it in awhile. Just the nature of the industry.
Maybe Perl is just a high profile target since the internet is full of small (and useful) pieces of Perl code?
I dragged a purple jolly rancher iMac about two miles and let me tell you, that cute little thing has the most painful plastic handle evar.
After a few blocks I picked up some newspaper to pad my poor plastic-groove indented fingers. Not that it helped much. To think: if I had waited a few weeks I could've tried my luck with a baby-stroller-crushing stampede and saved a few bucks!
( This is the pain I'm going through to bring out a Mac version of UNC drive client. You Mac people better like it. ; | )
It's also a useful tool for advocates who try to convince people to switch from Windows to another OS (no, not just Linux), the argument being "look, you wonder if Windows is insecure? how about a whole friggin book, with an ISBN and all, about how to do nasty things in Windows despite A/V software and anti-spywares!"
Which OS were you talking about? I could swear the ones you might name have hacking books written about them too.
Maybe after Hollywood's sustained saturation bombing campaign of ``Meet the Fockers: The Game'' and ``Deuce Bigolo in Thailand Happy Ending'', game publishers will be begging for independent game developers to take them back, along with this thing they call "original ideas".
Actually, do astronauts get plain vanilla worker's comp like the rest of us here in the states, or does NASA have some custom designed insurance policy?
Groupware Bad
And I said, "Jesus Mother of Fuck, what are you thinking! Do not strap the 'Groupware' albatross around your neck! That's what killed Netscape, are you insane?" He looked at me like I'd just kicked his puppy.
My wife's Honda Insight has a lifetime fuel economy of 61 MPG for over 120,000 miles. What economy sedan gets that fuel economy? None. My wife also reduced her fuel costs per month from $240 to $80. But, the main reason she bought it is because she cares about the environment. The Honda Insight is also an SULEV. The fuel cost savings were a great benefit. If it was safe to do so, both her and I would ride our bikes to work, but we cannot. If it was all about the money, she would have considered buying a VW TDI with similar fuel economy. There are absolute and definable benefits to owning and driving a Hybrid.
My car is on the "inefficient" side in terms of fuel economy. I try to drive it as little as possible because it comes out to about $45/week in fuel costs, and I don't even commute with it.
I can tell you, if my car had double the fuel efficiency, I just might drive it twice as much. Efficiency is a totally worthwhile goal, but if passenger automobiles consume the majority of the fuel in this country (do they?) I don't see how this realistically conserves fuel resources.
It isn't just a liberal phenomenon either: my wife served (in an extremely lowly capacity) in the Reagan administration for a while, and the period was remarkable for the rate at which government and the various private entities that feed off of it grew.
Milton Friedman says that during Reagan's reign, government socialist activity dropped. Link here.
If console manufacturers could legally lock out third party accessories, wouldn't they have done it long ago? Nintendo sued Game Genie over patent violations but still couldn't keep them out of the market.
How is this any different from Lexmark's ink cartridge fiasco (a case they lost)? "We'll keep doing it in the face of all of this legal precedent that says we can't" doesn't seem like a sound long-term legal strategy.
This is why you work at really small companies if you don't want to be treated like a cog in the corporate machine.
Yeah, you might not get the enormous benefits package and a clear job title, but at least you keep more of your soul.
is the name of the game (pun not intended).
Finding new and interesting content is hard. And risky. Big distributors would rather have predictable revenue than gamble with something original (and possibly more lucrative). As movie companies get bigger they lose the eccentric loose cannon guy at the top who would say "Gone With The Wind 2?!? Have we no shame!?" He gets replaced by shareholders who just want the company to put out a steady stream of dividends, taste be damned.
You see it everywhere now: music, TV, even books.
Looks like the video game industry has finally grown up.
:(
I personally think that hypervisors are overhyped (pun fun!), and that the most practical and useful form of "virtualization" is actually separation as is achieved by Solaris Zones, FreeBSD jails and (the most advanced of them all IMO) Linux Vservers.
Someone who worked at VMWare told me that their BIG MONEY comes from virtualization. System runs on computer A. Computer A needs to be moved down the hall. VMWare's server solution (allegedly) lets you move the System to computer B , in real time, with "no downtime", turn off computer A, move down the hall, then repeat the same operation but in reverse to get it back on computer A.
Sounds expensive.