ConcurrentHashMap is part of Java and Java is developed by Sun (Oracle now I guess)
and they have teams of engineers that are paid to make sure it's very fast.
HashMap is probably one of the most widely used classes in Java so to compare
it to the type of frameworks we're talking about is not at all a fair comparison.
In any case, I'm not totally closed to the concept of frameworks if you can test
it as you did and see that it improves your performance, but I'd be very doubtful
that using frameworks will save much time in the long run and I would be completely
shocked if I heard about a framework that performs better than code that was
written by a good developer to do a specific task. Even with ConcurrentHashMap,
you can get a performance improvement by writing your own. Google does that. They
have a number of different hashtables that are designed to perform better given
different scenarios. In your case, maybe 6000 per second is ok in which case you
probably made the correct decision to use ConcurrentHashMap.
You forgot about option #3: Forget about frameworks and write the actual code that you need.
I have found that the overhead of understanding Frameworks generally outweighs their usefulness. I'm sure there are exceptions, but I have not found them yet personally. Many people use frameworks to do things that are absolutely trivial and I just do not get it. Generally, the requirements I see NEVER map to something that's out there exactly. If you can program, you just write what you need and it always works, it's fast, and probably most importantly you understand it completely.
Also, I totally disagree with the point that "Machines today are fast". I mean, obviously yes machines today are fast. But, in particular if you are writing a server side app, it's very easy to write something that does not scale. I have seen an app that used a lot of libraries and frameworks, etc that ran SO slow that could only process something like 1 request every 5 seconds. The same app was re-written (without using any libraries or frameworks at all) to be able to support tens of thousands of requests per second on the same physical server. Needless to say the guy who wrote the original app was fired and the guy who wrote the thing that supported 10s of thousands of requests per second got praise/bonuses/etc. The key to this kind of improvement was using the correct algorithms and data structures. When you just stitch whatever is free together you are rarely able to optimize things in such a way and you typically end up with a VERY slow app. I realize that not everyone is working on complex server side apps that need to scale, but even on front end apps, why make your app slower, lose the understanding of what you're doing, and understand some complex frameworks when you can actually write your own code in maybe less time? I mean, isn't this why so many apps are so slow. Every time i use an app that doesn't run instantly, I think about this concept. If everyone has this attitude that hardware is fast, then why do we all experience slow apps? It's because developer A thinks it's ok to reuse slow bloated code and it's still fast enough, but then developer B adds in a new feature that slows it down a bit more and uses a slow framework, then developer C adds in some other feature that slows things down further and in the end your code gets so bloated that even these really awsome machines can't run them in a way that the user expects.
I have seen similar problems occur when you do not use cache busting techniques. In other words, if your page refers to a static css file (e.g. ebay.css), then ebay.css is updated. Your browser will only update it when the cache expires it. The solution is to add a timestamp or random text to the end of url. Instead of referring to 'http://www.ebay.com/css/ebay.css' refer to 'http://www.ebay.com/css/ebay.css?[timestamp] or 'http://www.ebay.com/css/ebay.css?[random]
I know this is not a popular idea with a lot of people, particularly those working in places where "OMG speed is critical," but Python's execution speed just doesn't matter compared to its readability and time/LOCs required to get up off the ground and running.
I have heard this perspective before but found that when you have a team of developers that share this philosophy, you end up with VERY slow software. When you are writing software used by one person maybe you can focus on readability, but if you're dealing thousands or millions of users, forget about it. Readability does not have to come at the cost of efficient code either. There are very few occasions where making code fast makes it very confusing. In fact, I would argue that there is a lot of slow code that is very confusing to me. If people take the time to optimize it, it usually is easier to understand because there are no un-needed execution. In these few cases where very fast code is a little hard to understand, you just need to add a few lines of documentation to explain what you're doing.
I have not seen a study that discusses the cost of nuclear power that does not factor in the cost of employing well-educated people to run the plant. I'm not sure where you got this idea, but every study of the cost of nuclear power has to include the capital costs (costs of building, designing the plant) and operating costs which includes the cost of employing well trained specialists to run the plant. Typically, nuclear power has fewer operating costs than Coal or other sources of energy production, but higher capital costs (up front costs for building the plant itself).
Ok, if my math is correct then isn't this ridiculously expensive? Maybe we should, oh I dunno put the solar panels on people's roofs? Or better yet, use nuclear power which is cheaper and produces no C02? I realize you get a benefit by getting direct sunlight 24/7 in space, but there still needs to be some sort of cost/benefit analysis done here.
Why does it have to be one or the other? Most people are willing to pay for really good content (cable tv, movies, music). For not so good content, most people are not willing to pay (personal youtube videos, blogs, etc). The main, really cool thing about the internet is that it allows for extremely cheap distribution of content (whether it's free or pay). So, the New York times doesn't need to have a massive printing operation for an online service. The cable company will not need to run fiber to your house just for tv (I realize you might have internet provided by your cable company...) But the point is, if you pay some internet provider, you then get access to the ability to download all content in theory. This reduced cost allows for advertising to fund many things that could not be funded by advertising previously. So, to sum it up some content will be free, some will be pay, but at least we'll all save the expense of distribution (or much of it) by having a common distribution channel for content.
...the company has nothing to gain by disseminating this kind of information.
I would imagine it would be a deterrent to other employees regarding "violations of company procedures regarding expenses reimbursements". So that might be the reason for disseminating the info.
I live in an 'at-will' employment state, so I know that they have no legal recourse to keep me. I am concerned about the references they could give in the future
Just forget about it. You can get references from the co-workers who you are still on good terms with. If your boss is the one causing the problems, I assume that in 7 years, you had at least one other boss or supervisor that you can use as a reference.
This is one reason the computer industry really helps keep the employment numbers high. Unlike the auto industry, employees can much more easily go to a new company and contribute right off the bat. So, when you read about these kind of layoffs just think that it's a good thing because the employees will end up at a place that is setup better in order for them to succeed.
As a lead developer for a software company, I disagree. I think it is vital for developers to know how to do QA, with and without having access to the source.
Obviously, it is vital for developers to know how to test their own code and that of other developers. However, you do not have to be a QA engineer to learn this skill. On the contrary, testing code in the form of unit testing is a software development skill that he will not learn as a QA engineer. A good developer writes his/her own unit tests that go beyond what QA generally tests as well as having a different purpose. I know this because I too am a lead developer at a software company and have been a QA engineer in the past. My point was that this guy should just try to become a developer if that's what he wants to do. He can and will learn all the things you mentioned as a developer and be doing what he wants to do from the start.
A developer that understands Marketing/Sales can also understand how to help those areas without comprimising the application standards and usefulness.
Again, I agree with you here, but you don't need to be in Marketing/Sales to learn this skill.
The skills you're less likely to pick up there, but which you can pick up in a shorter temporary project are things like QA, marketing, sales, system administration, maybe even customer support.
I see your point, but I sort of think if he wants to be a developer, he should do development. If anything offer to program at a very low rate as others have suggested. I've seen many people that want to code get stuck in QA for years. If he does take a QA job, he should definitely try to get access to the source code and try to write up much more detailed bugs than the other QA engineers and always be telling people he's interested in becoming a developer. This is definitely a delicate subject because the QA managers will probably not be happy with that. Also, I don't see this path with marketing/sales since it's really a different world and does not interact as much with development as QA or sys amdin. I have seen customer support folks move over to development on occasion too. But again, all of these take a lot of time and hard work, when if you have development skills, I'd suggest just being a developer right off the bat in any way possible (e.g. internship)
Definitely an over-reaction. Whenever I see these kind of articles I kind of laugh because web/application servers and databases are optimized for multi-core computing already and they scale very well and tons of smart people continually work to make them even more scalable to multi-core/thread processors. Given that much of our computing is moving out onto the web (a trend which will continue until for all intents and purposes all of our processing is done on the web), this whole multi-core panic for desktop software is just completely irrelevant.
The author clearly does not understand the difference between real and personal property:
there's a fundamental difference between intellectual property (copyrights, patents, trademarks) and real property (houses, cars, plasma TVs)
Cars are personal property. Plasma TVs are personal property unless they are attached to the property in which case they would be real property.
There is such a thing as free speech, and americans, including this guy, expect it.
Clearly far too many people do not have any idea what free speech is. So, here's the first amendment:
Congress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the government for a redress of grievances.
This amendment says CONGRESS shall make no law respecting..... Notice it does not say that CNN must keep a guy employed even if they do not like his blog. Doesn't CNN have the right to speak? In this case, do they not have the right to fire this guy for whatever reason they wish to? It may be kind of silly to fire a guy over a political blog, but of course CNN can fire him for whatever reason they deem necessary.
If you can come up with a technology that continues Moore's beyond the limits of silicon, you will make a lot of money and everyone knows this. That is why Intel, HP, Ibm, etc are investing billions in this kind of research. I don't have any complaints against the nsf funding this research but it's a little insignificant compared to the rest of the market funded research going on and I think this money could be better spent on other things that the free market is not already funding.
ConcurrentHashMap is part of Java and Java is developed by Sun (Oracle now I guess) and they have teams of engineers that are paid to make sure it's very fast. HashMap is probably one of the most widely used classes in Java so to compare it to the type of frameworks we're talking about is not at all a fair comparison. In any case, I'm not totally closed to the concept of frameworks if you can test it as you did and see that it improves your performance, but I'd be very doubtful that using frameworks will save much time in the long run and I would be completely shocked if I heard about a framework that performs better than code that was written by a good developer to do a specific task. Even with ConcurrentHashMap, you can get a performance improvement by writing your own. Google does that. They have a number of different hashtables that are designed to perform better given different scenarios. In your case, maybe 6000 per second is ok in which case you probably made the correct decision to use ConcurrentHashMap.
You forgot about option #3: Forget about frameworks and write the actual code that you need.
I have found that the overhead of understanding Frameworks generally outweighs their usefulness. I'm sure there are exceptions, but I have not found them yet personally. Many people use frameworks to do things that are absolutely trivial and I just do not get it. Generally, the requirements I see NEVER map to something that's out there exactly. If you can program, you just write what you need and it always works, it's fast, and probably most importantly you understand it completely.
Also, I totally disagree with the point that "Machines today are fast". I mean, obviously yes machines today are fast. But, in particular if you are writing a server side app, it's very easy to write something that does not scale. I have seen an app that used a lot of libraries and frameworks, etc that ran SO slow that could only process something like 1 request every 5 seconds. The same app was re-written (without using any libraries or frameworks at all) to be able to support tens of thousands of requests per second on the same physical server. Needless to say the guy who wrote the original app was fired and the guy who wrote the thing that supported 10s of thousands of requests per second got praise/bonuses/etc. The key to this kind of improvement was using the correct algorithms and data structures. When you just stitch whatever is free together you are rarely able to optimize things in such a way and you typically end up with a VERY slow app. I realize that not everyone is working on complex server side apps that need to scale, but even on front end apps, why make your app slower, lose the understanding of what you're doing, and understand some complex frameworks when you can actually write your own code in maybe less time? I mean, isn't this why so many apps are so slow. Every time i use an app that doesn't run instantly, I think about this concept. If everyone has this attitude that hardware is fast, then why do we all experience slow apps? It's because developer A thinks it's ok to reuse slow bloated code and it's still fast enough, but then developer B adds in a new feature that slows it down a bit more and uses a slow framework, then developer C adds in some other feature that slows things down further and in the end your code gets so bloated that even these really awsome machines can't run them in a way that the user expects.
I have seen similar problems occur when you do not use cache busting techniques. In other words, if your page refers to a static css file (e.g. ebay.css), then ebay.css is updated. Your browser will only update it when the cache expires it. The solution is to add a timestamp or random text to the end of url. Instead of referring to 'http://www.ebay.com/css/ebay.css' refer to 'http://www.ebay.com/css/ebay.css?[timestamp] or 'http://www.ebay.com/css/ebay.css?[random]
I know this is not a popular idea with a lot of people, particularly those working in places where "OMG speed is critical," but Python's execution speed just doesn't matter compared to its readability and time/LOCs required to get up off the ground and running.
I have heard this perspective before but found that when you have a team of developers that share this philosophy, you end up with VERY slow software. When you are writing software used by one person maybe you can focus on readability, but if you're dealing thousands or millions of users, forget about it. Readability does not have to come at the cost of efficient code either. There are very few occasions where making code fast makes it very confusing. In fact, I would argue that there is a lot of slow code that is very confusing to me. If people take the time to optimize it, it usually is easier to understand because there are no un-needed execution. In these few cases where very fast code is a little hard to understand, you just need to add a few lines of documentation to explain what you're doing.
I have not seen a study that discusses the cost of nuclear power that does not factor in the cost of employing well-educated people to run the plant. I'm not sure where you got this idea, but every study of the cost of nuclear power has to include the capital costs (costs of building, designing the plant) and operating costs which includes the cost of employing well trained specialists to run the plant. Typically, nuclear power has fewer operating costs than Coal or other sources of energy production, but higher capital costs (up front costs for building the plant itself).
Ok, if my math is correct then isn't this ridiculously expensive? Maybe we should, oh I dunno put the solar panels on people's roofs? Or better yet, use nuclear power which is cheaper and produces no C02? I realize you get a benefit by getting direct sunlight 24/7 in space, but there still needs to be some sort of cost/benefit analysis done here.
Maybe the private option (Google) will put the public option (The Library) out of business. It's kind of a reverse of the healthcare debate.
Why does it have to be one or the other? Most people are willing to pay for really good content (cable tv, movies, music). For not so good content, most people are not willing to pay (personal youtube videos, blogs, etc). The main, really cool thing about the internet is that it allows for extremely cheap distribution of content (whether it's free or pay). So, the New York times doesn't need to have a massive printing operation for an online service. The cable company will not need to run fiber to your house just for tv (I realize you might have internet provided by your cable company...) But the point is, if you pay some internet provider, you then get access to the ability to download all content in theory. This reduced cost allows for advertising to fund many things that could not be funded by advertising previously. So, to sum it up some content will be free, some will be pay, but at least we'll all save the expense of distribution (or much of it) by having a common distribution channel for content.
...the company has nothing to gain by disseminating this kind of information.
I would imagine it would be a deterrent to other employees regarding "violations of company procedures regarding expenses reimbursements". So that might be the reason for disseminating the info.
I live in an 'at-will' employment state, so I know that they have no legal recourse to keep me. I am concerned about the references they could give in the future
Just forget about it. You can get references from the co-workers who you are still on good terms with. If your boss is the one causing the problems, I assume that in 7 years, you had at least one other boss or supervisor that you can use as a reference.
1.4 million dollars, not exactly pocket change, even to Microsoft.
Given that Microsoft has $37 billion in total current assets as of the end of Dec '08. I think they'll survive if it IS only $1.4 million.
spill proof cup holder too? I've always wanted one of those.
This is one reason the computer industry really helps keep the employment numbers high. Unlike the auto industry, employees can much more easily go to a new company and contribute right off the bat. So, when you read about these kind of layoffs just think that it's a good thing because the employees will end up at a place that is setup better in order for them to succeed.
This is not Micron, this is: MPC: http://www.mpccorp.com/ that is going out of business.
That is true, SSD would not have this problem.
Imagine a Beowulf cluster of those things!
Hibernate allows you to use straight jdbc calls which is what most people end up doing if they have a real world app and need to optimize the queries.
As a lead developer for a software company, I disagree. I think it is vital for developers to know how to do QA, with and without having access to the source.
Obviously, it is vital for developers to know how to test their own code and that of other developers. However, you do not have to be a QA engineer to learn this skill. On the contrary, testing code in the form of unit testing is a software development skill that he will not learn as a QA engineer. A good developer writes his/her own unit tests that go beyond what QA generally tests as well as having a different purpose. I know this because I too am a lead developer at a software company and have been a QA engineer in the past. My point was that this guy should just try to become a developer if that's what he wants to do. He can and will learn all the things you mentioned as a developer and be doing what he wants to do from the start.
A developer that understands Marketing/Sales can also understand how to help those areas without comprimising the application standards and usefulness.
Again, I agree with you here, but you don't need to be in Marketing/Sales to learn this skill.
The skills you're less likely to pick up there, but which you can pick up in a shorter temporary project are things like QA, marketing, sales, system administration, maybe even customer support.
I see your point, but I sort of think if he wants to be a developer, he should do development. If anything offer to program at a very low rate as others have suggested. I've seen many people that want to code get stuck in QA for years. If he does take a QA job, he should definitely try to get access to the source code and try to write up much more detailed bugs than the other QA engineers and always be telling people he's interested in becoming a developer. This is definitely a delicate subject because the QA managers will probably not be happy with that. Also, I don't see this path with marketing/sales since it's really a different world and does not interact as much with development as QA or sys amdin. I have seen customer support folks move over to development on occasion too. But again, all of these take a lot of time and hard work, when if you have development skills, I'd suggest just being a developer right off the bat in any way possible (e.g. internship)
Definitely an over-reaction. Whenever I see these kind of articles I kind of laugh because web/application servers and databases are optimized for multi-core computing already and they scale very well and tons of smart people continually work to make them even more scalable to multi-core/thread processors. Given that much of our computing is moving out onto the web (a trend which will continue until for all intents and purposes all of our processing is done on the web), this whole multi-core panic for desktop software is just completely irrelevant.
They are scaling horizontally as opposed to vertically.
Wow...talk about global warming!
The author clearly does not understand the difference between real and personal property: there's a fundamental difference between intellectual property (copyrights, patents, trademarks) and real property (houses, cars, plasma TVs)
Cars are personal property. Plasma TVs are personal property unless they are attached to the property in which case they would be real property.
There is such a thing as free speech, and americans, including this guy, expect it.
Clearly far too many people do not have any idea what free speech is. So, here's the first amendment:
Congress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the government for a redress of grievances.
This amendment says CONGRESS shall make no law respecting..... Notice it does not say that CNN must keep a guy employed even if they do not like his blog. Doesn't CNN have the right to speak? In this case, do they not have the right to fire this guy for whatever reason they wish to? It may be kind of silly to fire a guy over a political blog, but of course CNN can fire him for whatever reason they deem necessary.
If you can come up with a technology that continues Moore's beyond the limits of silicon, you will make a lot of money and everyone knows this. That is why Intel, HP, Ibm, etc are investing billions in this kind of research. I don't have any complaints against the nsf funding this research but it's a little insignificant compared to the rest of the market funded research going on and I think this money could be better spent on other things that the free market is not already funding.