They're an HPC company now, have been since Onyx was discontinued quite a while ago. The first generation of Altix had a graphics version (The Prism), but it used COTS graphics cards and was only ever modestly successful at making them work through their NUMALink backplane technology. In essence it was only ever useful because it could have a lot more CPUs than a PC of the day did. It's graphics were only so-so, but it could preprocess a lot of data before rendering it. Made it somewhat useful in scientific visualization. That was discontinued three years or so ago, and was pretty long in the tooth even then.
On top of the fact that Core 2 needs to somehow know not to run the instruction until after Core 1 runs its preceding instruction, you're also moving the value of A from Core 1 to Core 2. Normally, when one instruction follows another and the same variable is used, that variable's value is cached in CPU level 1 cache. It's almost instantly accessed. In your example you have to move it between Cores; that means it has to go out to CPU level 2 cache from Core 1's L1, and back into Core 2's L1 so it can be accessed for the instruction. That's going to take A LOT more time than simply running the ADD () on the same core would have. Now imagine that Core 2 is busy and you had to move to Core 3 (on a different chip). Since Cores 1 and 3 don't share L2 cache, the value of A has to move through RAM to get to the new core. LOTS slower.
The way it mostly works now, unless things have improved in the last few years since I last looked at this seriously, is that I, as a programmer, have to determine what parts are safe to run in parallel. The most common example you see is very large matrix calculations. The larger matrix can be broken down into a number of equal sized smaller matrixes which are then sent to the other CPUs as threads. Since they are all working on different pieces none of them care what the others are doing. The master thread than simply waits for all of the sub threads to give it their answers and then combines them into the final answer. Obviously this is a pretty specialized algorithm (though more common than you'd think), but it serves as a simple example. The matrix calculations are very computationally intensive, so the overhead of moving data around is more than made up for by the time saved dividing the task up.
Basically what you do as a programmer is go through your code (or more properly your algorithm, you should do this as part of your design) and figure out places that will (a) be helped by concurrency and (b) are safe to run concurrently. By safe it's generally meant that the same pieces of data won't be accessed at the same time. This could be because the threads are working one different pieces of data (like in the matrix example), or because you've somehow ensured that the data is protected. By "helped by concurrency" its generally meant that the overhead of moving data between CPUs (and managing the threads in general) is less than the time saved by breaking the task out.
Hopefully someone will correct me if I've flummox this to badly, I took a class on this, but it was 3-4 years ago.
I'm by no means a multiprocessing expert, but I suspect the problem with your approach is in the overhead. Remember that the hardest part of multiprocessing, as far as the computer is concerned, is making sure that all the right bit of code get run in time to provide their information to the other bits of code that need it. The current model of multi-CPU code (as I understand it) is to have the programmer mark the pieces that are capable of running independently (either because they don't require outside information, or they never run at the same time as other pieces that need the information they access/provide), and tells the program when to spin off these modules as separate threads and where it will have to wait for them to return information.
What you're talking about would require the program to break out small chunks of itself, more or less as if sees fit, whenever it sees an opportunity to save some time by running parallel. This first requires the program to have some level of analytical capability for it's own code (Let's say we have two if statements one right after the other, can they be run concurrently? or does the result of the first influence the second? What about two function calls in a row?). The program will have to erect mutex locks around each piece of data it uses too, just to be sure that it doesn't cause dead locks if it misjudges whether two particular pieces of code can in fact run simultaneously.
It also seems to me (again I'm not an expert), that you'd spend a lot of time moving data between CPUs. As I understand it, one of the things you want to avoid in parallel programing is having a thread have to "move" to a different CPU. This is because all of the data for the thread has to be moved from the cache of the first CPU to the cache of the second. A relatively time consuming task. Multicore CPUs share level 2 cache I think, which might alleviate this, but the stuff in level 1 still has to be moved around, and if the move is off die, to another CPU entirely, then it doesn't help. In your solution I see a lot of these moves being forced. I also see a lot of "Chunk A and Chunk B provided data to Chunk C. Chunk A ran on CPU1, Chunk B on CPU2, and Chunk C has to run on CPU3, so it has to get the data out of the cache of the other two CPUS".
Remember that data access isn't a flat speed. l1 is faster than l2 which is much faster than RAM, which is MUCH faster than I/O buses. Anytime data has to pass through RAM to get to a CPU you lose time. With lots of little chunks running around getting processed, the chances of having to move data between CPUs goes up a lot. I think you'd lose more time on that then you gain by letting the bits all run on the same CPU.
Point 1: The economy sucks. Finding entry level jobs is difficult. Not impossible of course, but difficult. A long period of post-graduation unemployment or under-employment is likely under any circumstances.
Point 2: Two years from now he will enter the workforce looking for the same entry level positions that he would have been looking for now if he chooses to skip the degree. He'll just have a fatter resume. In many companies this will mean somewhat more money for the same job, in other it might mean a few more opportunities are open that simply don't exist with only a BS.
Point 3: He may, or may not, make more more money fresh out of school. It's likely though not guaranteed that he will. Given (1), the risk seems reasonable.
Point 4: (And this is the big one) In six or seven years when he starts considering moves to "Senior" or "Team Lead" types of positions, he has a masters degree. This is a huge advantage in applying for these types of jobs. I know, I did not finish my masters, and now I'm looking at having to go back to do so. Many times you can't even get past the HR filters on a "Senior" position without one. These are the positions that provide either a springboard into management or kind of freedom from mirco-management that most tech types crave. Since most people want one or the other (or both) giving yourself a leg up in getting these senior roles is a good thing.
A little online research seem to show that things have gotten better in New Orleans as far as salaries go, apparently this is especially true since Katrina. That's nice to see.
1) Because they are ignorant of the age of a technology, or the speed with which it moves. This is getting better, but I recall LOTS of this with Java back before it became mature technology. A programmer says to a manager, "When we hire that new guy, see if you can get someone who know some of this new Java stuff... I think we can use that." The manager says to HR, "They should know Java." HR consults previous job ads, sees that normally when you want someone that "knows" a language you ask for 5 years of experience. Then they write an ad that requests five years of experience in a 3 year old technology.
2) They fail to understand that experience with a specific technology is rarely as useful in a technology environment as the skills to learn and adapt to new technologies. You seem to falling into this trap to an extent as well, but you haven't been specific enough for me to know for sure. I won't deny that there ARE time when you need someone who will be up to speed on day 1. Those times are (or should be) the exception rather than the rule. Generally speaking, a programmer can program in a variety of languages, give him a few weeks and he'll learn the one you need. I encountered this a lot in my most recent job hunt.
"Have you worked with Veritas?" "Well, no, but I've worked with the San Management and file system tools from HP and SGI, I understand Veritas is very similar... It shouldn't be a problem" "So you've worked with Veritas?".
La. The fact of the matter is that you will likely never find someone with "x" years of experience in every technology you use unless you hire from within, or have an incredibly vanilla configuration. The industry is to heterogeneous, and moves to fast. Often in the time it takes to find the guy with the perfect resume, you could have hired three guys and got them up to speed (Again, this depends on how vanilla your requirements are, if all you ask for is "3 years of Unix experience" or "5 years of Java programming", you're probably gonna find someone. I've seen lots of job descriptions with 10 or 11 bullet points all asking for multiple years of experience with very specific things.)
3) They lack the ability to judge a candidates skills except by looking at the number of years they've been doing something. Absent that measure they are at a loss, so they ask for impossibilities like "5 years of Android experience". I've worked for a few small companies with only one or two IT guys where this is a big problem. Management just lists the technologies they have and asks for 3-5 years of experience in all of them. Especially if the small IT staff is all younger people (as often happens at small companies, it's all they can afford), they simply have to look at experience years and hope they get lucky.
4) They somehow have a different definition of the term "entry level" than the rest of the world. I'm sorry, people with 5 years of experience in any aspect of IT or programming have ceased to be entry level. In fact, that's the definition of the term to the rest of us.
I'm not saying that YOU do any of these things, I don't know you. These are however some of the many reasons that managers and HR ask for stupid, impossible, or pointless things in job adverts. In turn these are the reasons that many of us ignore the requirements in job adverts and apply for things that we know we can do, even if we only have 2 years of java experience instead of 4. Usually once the managers get the actual pile of resumes and realize that no living human on Earth actually has 5 years of experience in every technology they happen to have in their particular data center they start looking for the people that are close enough to get the job done. I've almost never met all the requirements of any job I've ever applied for, unless it was a particularly well written ad. Inevitably there is SOME technology that the writer chose to highlight which I have never worked with, or have only used something similar. I've never had any problem picking up the new tech on hire either though.
Honestly I think the masters will win in the end. Right out of school it may be of questionable value, but later in your career, when people are looking at you for management/team lead/senior roles a post graduate degree can be a big advantage. You can argue that one can just get a job and work on a masters at night or whatever, but in the end that's a lot harder than just plowing through and getting it done. Plus, when you're young and still officially a "student" it's easier to get a "real" masters. Lots of schools offer night school programs for "soft" computer skills like an MIS, fewer offer full on Comp Sci or Comp E masters degrees without you being able to attend day session classes. On top of that, as several people point out, the economy sucks right now. Might as well get your education done and hope things are better in two years.
The pay scale also needs to be corrected for the 16 weeks of vacation most teachers get. If they teach during the summer it's for a stipend on top of their salary. They earn their money, but the money is certainly good. (At least in the Northeast).
I think this varies wildly from district to district, it also fail to consider a few points. First, the points:
Teacher salary often (not always, but often) starts off pretty good, but don't really scale. I worked as a middle school teacher for a year in New Orleans. My starting salary was around 24K a year. Not great by any means, but livable. Had I continued teaching, I would now be making around 35-40K (depending on my degree status). That's not much of a scale up over 10 years. By contrast, in the tech field I started at a similar salary and am now making around twice what I would have if I'd kept teaching. That's after less years of experience. I'm hoping for more before I hit my 10 years "in industry" mark.
While one can argue that you have to scale teacher salaries for their 16 week vacations, it's also worth pointing out that there's not a lot they can do to earn more money during those vacations. At least in the district I worked for, summer school slots were based on seniority, and since New Orleans teachers were particularly poorly paid, senior teachers usually wanted them. Not to many companies are willing to hire you for a summer gig (at least not for good well paying work). If you're in a field where it's appropriate you might be able to get a consulting gig, but maybe not, and it's really no help if you don't have any marketable secondary skills. (Computer teachers might do this, probably not so much lit teachers). I'm not saying that teachers can't possibly earn money over the summer, but it's hardly a sure thing.
There's other things too... Good teacher work lots of unpaid overtime, they have often have to take classes (in many districts they have to PAY for classes) over the summer, they spend time doing lesson plans, etc. Don't get me wrong, the summers off are really nice, but I really don't know that everything equals out. I know I make a lot more money that I would be making teaching, and I probably have less stress in the bargain.
As to the "varies wildly by district"... Well, I know that New Orleans is well below the national average (or was when I worked there). I've heard horror stories of rural districts where, by the time teachers pay for gas, classroom stuff that the district doesn't provide, classes that the district requires but doesn't pay for, etc; they're barely making minimum wage. That's only hearsay though, I've never experienced such a thing myself.
You might want to teach high school through the whole PhD. Teaching assistants make dirt, and while high school teacher is not the path to wealth and fame generally speaking, at least you can live off of it. Teaching jobs at diploma mill colleges like U of Phoenix (that'll hire people with only a masters) tend to be period by period (for whatever period the school uses. Semesters, quarters, six week sessions, whatever), so you never know from one period to the next if you'll have a job. They tend to be better as supplemental income than a "job". Plus most districts will pay you more with a masters so you'll get a raise for the time between that and your PhD. I'd like to think that the years you spend teaching high school will also help you find a professorship more quickly, but in reality that probably depends on the schools you apply to. Smaller liberal arts colleges will probably look favorably on the experience, bigger schools will just want to know what you have published.
I tend to agree. If you want to use a Linux DOM:0, and have it be a real, usable OS, not just a VM manager; then have a VM or two, you should be fine with about any current dual core CPU and 4GB or so of RAM. That'll easily run your host OS with whatever you want running and say a Windows XP VM for running Office and/or modest games. If you really want to build a machine that will run into the future, or you want to have multiple VMs simultaneously running on a DOM:0 that exists only to manage them, I'd guess that for ~$1000 or a bit more you could get a computer with a quad core CPU (or maybe even two) and 8 or 16 GB of RAM. A friend of mine did this when he started his masters in computer security and forensics. It essentially allowed him to create a virtual network of arbitrary size as needed for testing, experimenting and coding whenever he wanted. He'd snapshot everything and if he broke it, he'd just revert to snapshot. It worked really well for him, and would probably be helpful to anyone doing high level computer studies, but I can't think of to many other reasons for such a thing as a personal machine. Obviously there are advantages to this kind of setup for a small to medium businesses.
Then the publisher makes minor alterations to the text from one year, giving the school and the (school owned?) bookstore the opportunity to phase out last year's book with a nearly identical one. This is planned obsolescence at it's finest.
This is nearly entirely the publishers. Bookstore prefer used book programs believe it or not. I used to do temp work in the college bookstore at the beginning and end of the semester every year, and while that hardly makes me an expert in the field I know this much. We made higher margins on the used books than we did on the new ones. I don't remember the exact formula, but I believe we bought used books back for 40% and sold them for 75% of their new book value. By contrast we sold new books for a 20% markup or something along those lines. Our manager was always just depressed as anyone else when books went into new editions.
Quite the contrary, mixed element spells should do more damage, especially to mechanicals and/or Dark Iron types. Massive changes in temperature aren't good for anything, but are particularly tough on metal. Going from supercooled to superheated in a very short time or vice-versa is not a good thing.
Actually you can perform any action in the game using a/command sequence in WoW. It's primarily used for scripting, as it would be insanely difficult to play that way, but in theory you could fight a battle with "/target Kobold,/attack target,/cast fireball target,/cast frostnova..." I don't know about moving though. You may have to do that with the actual movement keys. Not that this invalidates you point, you still can't add actions or change their affects, but it is interesting to note.
WoW is deeply immersed in the old text games, but also in the old text Internet. In some real ways it's a graphical IRC client with a game bolted on. You ccould essentially play the whole thing with/command type syntax if you could type fast enough (and remember the commands).
Market-share is a big part of the problem, but not in the way that you state. I'm going to point something out here that a lot of people either seem unaware of, or ignore. There are significant, popular, closed source, commercial software packages that make money selling to Linux users. Unfortunately almost all of them are niche products. 3-D modeling packages, scientific visualization packages, certain types of 3-D CAD programs, lots of these guys release to Linux along with (sometimes even in preference to) Windows. Why? Two main reasons:
1) They know that a lot of their user base is familiar with and often prefers Unix platforms. Most of the people that do this stuff have some kind of Linux/Unix cluster or big iron computer doing some kind of number crunching in the back. Many of them cut their teeth on Irix back when SGI was the only way to do high end visualization. They like Unix, they're familiar with it, and they have little choice but to use it on their back end hardware. It makes sense that they'll want their workstations to be as Unix like as possible in a lot of cases. By contrast, most gamers (by nature of wanting the most games available) use Windows. So while these high-end vis companies and the game company are both selling to same theoretical total market-share, the target market-share of the vis guys is strongly Unix centric, and the target market-share of the games guys isn't.
2) Cost distribution. Makers of these kinds of high-end packages sell licenses for thousands of dollars a piece. Sometimes thousands of dollar per CPU core or video pipe. Their business models are designed around selling a relatively small number of very expensive licenses. Game companies have the opposite model, they need to sell a ton of relatively inexpensive licenses. Let's assume for a minute that a theoretical game company and a theoretical viz company can both make a Windows version of their software for $5 million, and add a Linux version for $2 million more. Lets assume the vis company makes $4000 per license and the game company makes $20. The vis company starts making money on the Linux port at 500 licenses, and they double their investment at 1000. That's pretty reasonable expectation for a popular niche software. The game company has to sell 100,000 copies to break even, and 200,000 copies to double their money. That's a much larger chunk of the base market-share.
To make gaming on Linux profitable companies need to know more than "There are x million of us who might buy your product", they need some reasonable expectation that of the "x million" some "y hundred thousand" are actually likely to make the purchase.
I think the big problem is that it was not able to be run on the hardware they claimed would run it at the time of release. I bought my wife a brand new laptop a few months after Vista became the "standard" on new computers. It came with a dual core 2.3Mhz CPU, a gig of RAM and an Nvidia Go video card. Pretty decent mid-grade specs at the time for a desktop replacement type laptop. It was crap. She couldn't play WoW (not a high-end graphics game, even then), Photoshop ran like molasses, anything remotely high performance or (especially) graphics intensive was a joke. I even upgraded to 2 Gigs of RAM without any noticeable change.
I installed XP and everything worked like I would expect from a reasonably powerful current generation machine. She's still got XP now, around 16 months later, but it's starting to slow down quite a bit from "Windows drag". I need to reinstall, and I'm considering either going back to Vista or grabbing the Win 7 RC tomorrow. From what I understand, a lot of the problems we were having probably related to incomplete or non-optimized drivers, and I've been REALLY happy with the Win 7 Beta I played with on my Macbook. Fact remains though that we had an awful experience with a machine that was not just advertised as "Vista Ready", but actually had Vista installed on purchase. My wife still isn't too happy about me putting Vista back on it.
Vista may be a lot better now than it was on release, but it made some really bad first impressions. I've read enough horror stories to know I'm not alone in thinking so. It was bad enough that normal, everyday users (my wife, my parents, etc) had an opinion on an operating system. Something that users normally take for granted, that they just buy a computer with, made an impression, and not a good one.
Meanwhile Apple released Leopard. Certainly it wasn't a perfect release (I nearly killed people till they gave me back my "View Content as 'List'" option, and the folder option to get rid of the "stack"), but in final analysis when I upgraded my Macbook Pro from work it ran FASTER with Leopard than it had with Tiger. When Apple upgrades their OS, they look to optimize things at the same time that they add features. This doesn't always result in a net performance increase, but at the least it offsets the performance decrease. Combined with their (admittedly sometimes draconian) control of hardware, and you get a really gentle upgrade scale that can leave the same hardware running 3 and even 4 generations of the OS.
Is it fair to expect the same thing from Microsoft? They're dealing with a nearly infinite variety of hardware and software, and that makes things a Hell of a lot harder. Maybe it is, maybe it isn't, but to an extend "fair" doesn't matter (just as it often doesn't matter with Linux's hardware problems. These are also generally not the developer fault, but create similarly large PR problems). People expect a computer to perform a certain way when they buy it. They expect it act a certain way when they upgrade it (especially when it was advertised as "ready" for the new OS). The old adage about first impressions applies to operating systems as much as any other product or person.
I can see we're going to have to agree to disagree. I have yet to see an example of unfettered capitalism resulting in anything like a Utopia, or even an improvement over what we have now (and I have studied history fairly extensively). I can point to several examples of unfettered or nearly unfettered capitalism resulting in significant suffering for many of the people in the society where the practice existed. I invite you to point me to the pure capitalist (or nearly pure capitalist) society that has a better (or even an equal) overall standard of living than we currently do. I'm quite willing to make allowances for differences in technology and such when accounting for standard of living. Obviously if this society existed in the 15th or 18th century it would not have our level of medical care and indoor plumbing. All I require is that it be reasonably egalitarian, allow for a reasonable amount of social mobility, and that the poor not be starving or living in complete squalor compared to the middle class and rich.
Like this. Let's assume you are a farmer who knows how to program a software system. Maybe you're a hobbyist programmer, or a farmer that used to be programmer before you inherited your farm, or the younger son a farmer sent off to school to learn how to use the latest machines and techniques. It doesn't matter. Let's assume you look around at various products that help run farms and none of them seems quite right to you, or quite worth the money, so you write your own. It's a great success, and soon other farmers are asking to use your software and suggesting improvements. You have essentially three options at this point: You can just happily use your software without giving to anyone else, you can go into the software business and sell your software (maybe in addition to, maybe instead of your farm produce), or you can give your friends and neighbors your software when they ask and help them out since software isn't your business.
In the first case, licensing isn't really an issue. You have your software, not one else does, and that it isn't likely to change.
In the second case a proprietary model might be best for you (at least according to the previous poster). You are trying to sell your software and giving anyone and everyone access to your source code might make that hard. You could give away the software and sell service, but now you're really getting away from your core competency (farming).
In the third case you might want to consider the GPL. It gives you several advantages. It prevents you from being sued for using your own software if someone else tries to commercialize it (Strictly speaking this shouldn't happen anyway, but the GPL provides another layer of protection). It makes sure that if someone else modifies and re-releases your software you can see what they did and cabbage any improvements they made (which might be considered a form of "payment" for you releasing the software in the first place). It makes sure you get credit for the software (which might or might not be important to you). It provides a way for other farmers to modify (or pay someone to modify) your software and release their versions out into the wild, or submit them to you as patches to the "main tree". Generally it provides you with a way to give your work to people you want to help without totally losing control of what you wrote.
I know that the businesses at the time fought tooth and nail to prevent the passage of those laws. I know that every time minimum wage goes up the local fast food industry has a heart attack and claims that it will go out of business or have to fire half its employees, yet somehow never does either. Of course businesses don't pay everyone minimum wage, the market won't let them. I never said that the market was evil or never did anything good, but like every other force it must be managed and directed occasionally. Fires can burn down houses, that doesn't make them evil or even unnecessary, it just means you have to watch and control them. The market can certainly be a force for good, I'm not calling for global government control of all aspects of business, it's not an all or nothing thing. Look at Europe. They have very socialistic governments, yet their economies seems in no worse danger of collapsing than ours.
As to whether I would send my kid to work in a factory for an extra $200 a month.. Of course I wouldn't, but that ignores several key factors:
1) I'm not the sort of social class that would have done this, even at the time. 2) I have somewhere else to send my children (School, where they can learn and hopefully better themselves so they don't have to work in the factory ever. For the poor that school is provided by the government now, but it wasn't back then.) 3) I'm not watching that same child starve or do without clothes for the lack of the $200 he might be bringing in.
There are two essential fallacies in your post. First, you seem to assume that since I don't support a completely free market, I instead support some sort of central state planned economy. I don't. The government and regulation have a place in the market, and in providing certain services that society considers "essential", but the market itself also has significant value to the economy.
Second you seem to assume that the market itself loses all of it's power when the slightest regulation is imposed upon it. The market still applies, supply and demand still work. Regulation just tilts the board a bit to protect people (some times poor people, but often everyone) who can't protect themselves. To be clear, everyone has times that they can't protect themselves. Rich or poor, smart or not, there will come a time when you will not have the right knowledge, enough money, or enough time to protect yourself from some danger. That's when you hope the regulations protect you instead.
I never said they were NEEDS I said that society as whole has judged them needed. I happen to agree with society in most cases, but yes you can do without any of those things. Certainly in a place where food and water are scarce, 100 Mbps Internet is of virtually no concern to anyone at all. Electricity is probably an optional luxury. We don't happen to live in those places, and if someone is willing to pay a reasonable cost for high speed Internet, there is no reason the local government shouldn't provide it if they chose.
I credit government for enforcing 8 hour work days and 5 day work weeks (or additional rewards for working "overtime"). I credit government with establishing and enforcing workplace safety and environmental standards. I credit government with eliminating child labor and mandating education. For that matter, although somewhat unrelated, I credit government with establishing and enforcing standards on the quality of buildings people live in, the quality of things sold as "food" or "medicine", and the quality of any number of other things that have overall improved the quality of life that people experience because they aren't being slowly poisoned, having roofs fall on their heads, or otherwise being made miserable, unhealthy, or dead by unregulated industries.
People migrated here from all over the world because of a perception that grinding poverty in an industrial and powerful United States was more appealing than grinding poverty in a rural and feudal eastern Europe. Whether it actually was or not I can't say, I don't know a lot about Post-Renaissance to Pre-WWI Europe to be honest. I do know a fair bit about that time in US history though, and I can say for sure that while it may have been better than somewhere, it certainly wasn't as good as it could have been. A cursory read of either the history of the period or the fiction of the period could tell you that. Some of the worst off of what we currently consider "poor people" have it better than what was "average working class conditions" then.
Is there value in running electricity to an isolated farm? Well yes, both to the farmer (who is willing to pay for electricity, but can't afford to pay for a long cable run), and to society as a whole (which over time will see greater yields from the now electrified farm, as the farmer is able to use more modern techniques). Is there value for an electric company to run lines to the isolated farm? Maybe, but certainly only across a very wide space of time. It'll be a long while before the farmer (who, owing to his lack electricity probably doesn't even have any electrical appliances yet) buys enough enough electricity to pay of the cost of running the lines, the transformers, the repairs, etc. Since there is value for the citizen, and value for society, it makes sense for the government to either run the electricity or subsidize the running of the electricity, even though the electric company probably wouldn't chose to do it from a pure profit perspective.
You're seriously comparing East and West Germany as your examples? Excellent choice.it allows me to point out this excellent thing called compromise, or the middle road. You see you are completely correct that East Germany represents an example of the failure of a completely centrally controlled economy. Bad idea, you could just as easily point out the Soviet Union or China before recent reforms. West Germany on teh other hand is hardly an example of unfettered capitalism. It has significant socialist elements including a state sponsored universal health care system, significant wage and work restrictions (to ensure that workers can make a decent living in in menial jobs), state subsidies funding rail and road networks, a much more generous unemployment benefit that the US has, indeed pretty much all of the "normal" European social programs. Despite this its economy is just a strong as the US (smaller, yes, it has a much smaller population) if not stronger, and the "social safety net" that the working poor rely upon is certainly much better. It is arguably better to be rich in the United States than in Germany, but it is certainly better to be poor (or even middle class, for lower end of the "middle class" spectrum) in Germany.
Similarly, as I point out below, the United States is a much more "socialist" country than it was 100 years ago, but the lot of the poor has improved significantly. You are correct that a completely centrally managed economy is a disaster, but for a strong and viable country with a good economy, a mix of private industry with the state managing essential services and providing a fair playing field seems to be the best deal for the most people. Good example!
Several cities in Louisiana seems to be doing alright with it. Lafayette hasn't started service yet, but has a significant pre-sale already, and EATEL run by Ascension Parish (A much more rural Parish a bit north of Lafayette) is doing very well by all accounts. I lived in Lafayette until recently, and I was ready to switch to LUS for data as soon as it became available. My neighborhood got crappy service from COX, I had repair techs out to my house more there than anywhere else I've lived. LUS was promising us more bandwidth, for around the same amount of money, and their service would have been seriously hard pressed to be any worse.
They're an HPC company now, have been since Onyx was discontinued quite a while ago. The first generation of Altix had a graphics version (The Prism), but it used COTS graphics cards and was only ever modestly successful at making them work through their NUMALink backplane technology. In essence it was only ever useful because it could have a lot more CPUs than a PC of the day did. It's graphics were only so-so, but it could preprocess a lot of data before rendering it. Made it somewhat useful in scientific visualization. That was discontinued three years or so ago, and was pretty long in the tooth even then.
On top of the fact that Core 2 needs to somehow know not to run the instruction until after Core 1 runs its preceding instruction, you're also moving the value of A from Core 1 to Core 2. Normally, when one instruction follows another and the same variable is used, that variable's value is cached in CPU level 1 cache. It's almost instantly accessed. In your example you have to move it between Cores; that means it has to go out to CPU level 2 cache from Core 1's L1, and back into Core 2's L1 so it can be accessed for the instruction. That's going to take A LOT more time than simply running the ADD () on the same core would have. Now imagine that Core 2 is busy and you had to move to Core 3 (on a different chip). Since Cores 1 and 3 don't share L2 cache, the value of A has to move through RAM to get to the new core. LOTS slower.
The way it mostly works now, unless things have improved in the last few years since I last looked at this seriously, is that I, as a programmer, have to determine what parts are safe to run in parallel. The most common example you see is very large matrix calculations. The larger matrix can be broken down into a number of equal sized smaller matrixes which are then sent to the other CPUs as threads. Since they are all working on different pieces none of them care what the others are doing. The master thread than simply waits for all of the sub threads to give it their answers and then combines them into the final answer. Obviously this is a pretty specialized algorithm (though more common than you'd think), but it serves as a simple example. The matrix calculations are very computationally intensive, so the overhead of moving data around is more than made up for by the time saved dividing the task up.
Basically what you do as a programmer is go through your code (or more properly your algorithm, you should do this as part of your design) and figure out places that will (a) be helped by concurrency and (b) are safe to run concurrently. By safe it's generally meant that the same pieces of data won't be accessed at the same time. This could be because the threads are working one different pieces of data (like in the matrix example), or because you've somehow ensured that the data is protected. By "helped by concurrency" its generally meant that the overhead of moving data between CPUs (and managing the threads in general) is less than the time saved by breaking the task out.
Hopefully someone will correct me if I've flummox this to badly, I took a class on this, but it was 3-4 years ago.
I'm by no means a multiprocessing expert, but I suspect the problem with your approach is in the overhead. Remember that the hardest part of multiprocessing, as far as the computer is concerned, is making sure that all the right bit of code get run in time to provide their information to the other bits of code that need it. The current model of multi-CPU code (as I understand it) is to have the programmer mark the pieces that are capable of running independently (either because they don't require outside information, or they never run at the same time as other pieces that need the information they access/provide), and tells the program when to spin off these modules as separate threads and where it will have to wait for them to return information.
What you're talking about would require the program to break out small chunks of itself, more or less as if sees fit, whenever it sees an opportunity to save some time by running parallel. This first requires the program to have some level of analytical capability for it's own code (Let's say we have two if statements one right after the other, can they be run concurrently? or does the result of the first influence the second? What about two function calls in a row?). The program will have to erect mutex locks around each piece of data it uses too, just to be sure that it doesn't cause dead locks if it misjudges whether two particular pieces of code can in fact run simultaneously.
It also seems to me (again I'm not an expert), that you'd spend a lot of time moving data between CPUs. As I understand it, one of the things you want to avoid in parallel programing is having a thread have to "move" to a different CPU. This is because all of the data for the thread has to be moved from the cache of the first CPU to the cache of the second. A relatively time consuming task. Multicore CPUs share level 2 cache I think, which might alleviate this, but the stuff in level 1 still has to be moved around, and if the move is off die, to another CPU entirely, then it doesn't help. In your solution I see a lot of these moves being forced. I also see a lot of "Chunk A and Chunk B provided data to Chunk C. Chunk A ran on CPU1, Chunk B on CPU2, and Chunk C has to run on CPU3, so it has to get the data out of the cache of the other two CPUS".
Remember that data access isn't a flat speed. l1 is faster than l2 which is much faster than RAM, which is MUCH faster than I/O buses. Anytime data has to pass through RAM to get to a CPU you lose time. With lots of little chunks running around getting processed, the chances of having to move data between CPUs goes up a lot. I think you'd lose more time on that then you gain by letting the bits all run on the same CPU.
Doesn't it?
Point 1: The economy sucks. Finding entry level jobs is difficult. Not impossible of course, but difficult. A long period of post-graduation unemployment or under-employment is likely under any circumstances.
Point 2: Two years from now he will enter the workforce looking for the same entry level positions that he would have been looking for now if he chooses to skip the degree. He'll just have a fatter resume. In many companies this will mean somewhat more money for the same job, in other it might mean a few more opportunities are open that simply don't exist with only a BS.
Point 3: He may, or may not, make more more money fresh out of school. It's likely though not guaranteed that he will. Given (1), the risk seems reasonable.
Point 4: (And this is the big one) In six or seven years when he starts considering moves to "Senior" or "Team Lead" types of positions, he has a masters degree. This is a huge advantage in applying for these types of jobs. I know, I did not finish my masters, and now I'm looking at having to go back to do so. Many times you can't even get past the HR filters on a "Senior" position without one. These are the positions that provide either a springboard into management or kind of freedom from mirco-management that most tech types crave. Since most people want one or the other (or both) giving yourself a leg up in getting these senior roles is a good thing.
A little online research seem to show that things have gotten better in New Orleans as far as salaries go, apparently this is especially true since Katrina. That's nice to see.
1) Because they are ignorant of the age of a technology, or the speed with which it moves. This is getting better, but I recall LOTS of this with Java back before it became mature technology. A programmer says to a manager, "When we hire that new guy, see if you can get someone who know some of this new Java stuff... I think we can use that." The manager says to HR, "They should know Java." HR consults previous job ads, sees that normally when you want someone that "knows" a language you ask for 5 years of experience. Then they write an ad that requests five years of experience in a 3 year old technology.
2) They fail to understand that experience with a specific technology is rarely as useful in a technology environment as the skills to learn and adapt to new technologies. You seem to falling into this trap to an extent as well, but you haven't been specific enough for me to know for sure. I won't deny that there ARE time when you need someone who will be up to speed on day 1. Those times are (or should be) the exception rather than the rule. Generally speaking, a programmer can program in a variety of languages, give him a few weeks and he'll learn the one you need. I encountered this a lot in my most recent job hunt.
"Have you worked with Veritas?"
"Well, no, but I've worked with the San Management and file system tools from HP and SGI, I understand Veritas is very similar... It shouldn't be a problem"
"So you've worked with Veritas?".
La. The fact of the matter is that you will likely never find someone with "x" years of experience in every technology you use unless you hire from within, or have an incredibly vanilla configuration. The industry is to heterogeneous, and moves to fast. Often in the time it takes to find the guy with the perfect resume, you could have hired three guys and got them up to speed (Again, this depends on how vanilla your requirements are, if all you ask for is "3 years of Unix experience" or "5 years of Java programming", you're probably gonna find someone. I've seen lots of job descriptions with 10 or 11 bullet points all asking for multiple years of experience with very specific things.)
3) They lack the ability to judge a candidates skills except by looking at the number of years they've been doing something. Absent that measure they are at a loss, so they ask for impossibilities like "5 years of Android experience". I've worked for a few small companies with only one or two IT guys where this is a big problem. Management just lists the technologies they have and asks for 3-5 years of experience in all of them. Especially if the small IT staff is all younger people (as often happens at small companies, it's all they can afford), they simply have to look at experience years and hope they get lucky.
4) They somehow have a different definition of the term "entry level" than the rest of the world. I'm sorry, people with 5 years of experience in any aspect of IT or programming have ceased to be entry level. In fact, that's the definition of the term to the rest of us.
I'm not saying that YOU do any of these things, I don't know you. These are however some of the many reasons that managers and HR ask for stupid, impossible, or pointless things in job adverts. In turn these are the reasons that many of us ignore the requirements in job adverts and apply for things that we know we can do, even if we only have 2 years of java experience instead of 4. Usually once the managers get the actual pile of resumes and realize that no living human on Earth actually has 5 years of experience in every technology they happen to have in their particular data center they start looking for the people that are close enough to get the job done. I've almost never met all the requirements of any job I've ever applied for, unless it was a particularly well written ad. Inevitably there is SOME technology that the writer chose to highlight which I have never worked with, or have only used something similar. I've never had any problem picking up the new tech on hire either though.
Honestly I think the masters will win in the end. Right out of school it may be of questionable value, but later in your career, when people are looking at you for management/team lead/senior roles a post graduate degree can be a big advantage. You can argue that one can just get a job and work on a masters at night or whatever, but in the end that's a lot harder than just plowing through and getting it done. Plus, when you're young and still officially a "student" it's easier to get a "real" masters. Lots of schools offer night school programs for "soft" computer skills like an MIS, fewer offer full on Comp Sci or Comp E masters degrees without you being able to attend day session classes. On top of that, as several people point out, the economy sucks right now. Might as well get your education done and hope things are better in two years.
The pay scale also needs to be corrected for the 16 weeks of vacation most teachers get. If they teach during the summer it's for a stipend on top of their salary. They earn their money, but the money is certainly good. (At least in the Northeast).
I think this varies wildly from district to district, it also fail to consider a few points. First, the points:
Teacher salary often (not always, but often) starts off pretty good, but don't really scale. I worked as a middle school teacher for a year in New Orleans. My starting salary was around 24K a year. Not great by any means, but livable. Had I continued teaching, I would now be making around 35-40K (depending on my degree status). That's not much of a scale up over 10 years. By contrast, in the tech field I started at a similar salary and am now making around twice what I would have if I'd kept teaching. That's after less years of experience. I'm hoping for more before I hit my 10 years "in industry" mark.
While one can argue that you have to scale teacher salaries for their 16 week vacations, it's also worth pointing out that there's not a lot they can do to earn more money during those vacations. At least in the district I worked for, summer school slots were based on seniority, and since New Orleans teachers were particularly poorly paid, senior teachers usually wanted them. Not to many companies are willing to hire you for a summer gig (at least not for good well paying work). If you're in a field where it's appropriate you might be able to get a consulting gig, but maybe not, and it's really no help if you don't have any marketable secondary skills. (Computer teachers might do this, probably not so much lit teachers). I'm not saying that teachers can't possibly earn money over the summer, but it's hardly a sure thing.
There's other things too... Good teacher work lots of unpaid overtime, they have often have to take classes (in many districts they have to PAY for classes) over the summer, they spend time doing lesson plans, etc. Don't get me wrong, the summers off are really nice, but I really don't know that everything equals out. I know I make a lot more money that I would be making teaching, and I probably have less stress in the bargain.
As to the "varies wildly by district"... Well, I know that New Orleans is well below the national average (or was when I worked there). I've heard horror stories of rural districts where, by the time teachers pay for gas, classroom stuff that the district doesn't provide, classes that the district requires but doesn't pay for, etc; they're barely making minimum wage. That's only hearsay though, I've never experienced such a thing myself.
You might want to teach high school through the whole PhD. Teaching assistants make dirt, and while high school teacher is not the path to wealth and fame generally speaking, at least you can live off of it. Teaching jobs at diploma mill colleges like U of Phoenix (that'll hire people with only a masters) tend to be period by period (for whatever period the school uses. Semesters, quarters, six week sessions, whatever), so you never know from one period to the next if you'll have a job. They tend to be better as supplemental income than a "job". Plus most districts will pay you more with a masters so you'll get a raise for the time between that and your PhD. I'd like to think that the years you spend teaching high school will also help you find a professorship more quickly, but in reality that probably depends on the schools you apply to. Smaller liberal arts colleges will probably look favorably on the experience, bigger schools will just want to know what you have published.
I tend to agree. If you want to use a Linux DOM:0, and have it be a real, usable OS, not just a VM manager; then have a VM or two, you should be fine with about any current dual core CPU and 4GB or so of RAM. That'll easily run your host OS with whatever you want running and say a Windows XP VM for running Office and/or modest games. If you really want to build a machine that will run into the future, or you want to have multiple VMs simultaneously running on a DOM:0 that exists only to manage them, I'd guess that for ~$1000 or a bit more you could get a computer with a quad core CPU (or maybe even two) and 8 or 16 GB of RAM. A friend of mine did this when he started his masters in computer security and forensics. It essentially allowed him to create a virtual network of arbitrary size as needed for testing, experimenting and coding whenever he wanted. He'd snapshot everything and if he broke it, he'd just revert to snapshot. It worked really well for him, and would probably be helpful to anyone doing high level computer studies, but I can't think of to many other reasons for such a thing as a personal machine. Obviously there are advantages to this kind of setup for a small to medium businesses.
Then the publisher makes minor alterations to the text from one year, giving the school and the (school owned?) bookstore the opportunity to phase out last year's book with a nearly identical one. This is planned obsolescence at it's finest.
This is nearly entirely the publishers. Bookstore prefer used book programs believe it or not. I used to do temp work in the college bookstore at the beginning and end of the semester every year, and while that hardly makes me an expert in the field I know this much. We made higher margins on the used books than we did on the new ones. I don't remember the exact formula, but I believe we bought used books back for 40% and sold them for 75% of their new book value. By contrast we sold new books for a 20% markup or something along those lines. Our manager was always just depressed as anyone else when books went into new editions.
Quite the contrary, mixed element spells should do more damage, especially to mechanicals and/or Dark Iron types. Massive changes in temperature aren't good for anything, but are particularly tough on metal. Going from supercooled to superheated in a very short time or vice-versa is not a good thing.
Actually you can perform any action in the game using a /command sequence in WoW. It's primarily used for scripting, as it would be insanely difficult to play that way, but in theory you could fight a battle with "/target Kobold, /attack target, /cast fireball target, /cast frostnova..." I don't know about moving though. You may have to do that with the actual movement keys. Not that this invalidates you point, you still can't add actions or change their affects, but it is interesting to note.
WoW is deeply immersed in the old text games, but also in the old text Internet. In some real ways it's a graphical IRC client with a game bolted on. You ccould essentially play the whole thing with /command type syntax if you could type fast enough (and remember the commands).
Market-share is a big part of the problem, but not in the way that you state. I'm going to point something out here that a lot of people either seem unaware of, or ignore. There are significant, popular, closed source, commercial software packages that make money selling to Linux users. Unfortunately almost all of them are niche products. 3-D modeling packages, scientific visualization packages, certain types of 3-D CAD programs, lots of these guys release to Linux along with (sometimes even in preference to) Windows. Why? Two main reasons:
1) They know that a lot of their user base is familiar with and often prefers Unix platforms. Most of the people that do this stuff have some kind of Linux/Unix cluster or big iron computer doing some kind of number crunching in the back. Many of them cut their teeth on Irix back when SGI was the only way to do high end visualization. They like Unix, they're familiar with it, and they have little choice but to use it on their back end hardware. It makes sense that they'll want their workstations to be as Unix like as possible in a lot of cases. By contrast, most gamers (by nature of wanting the most games available) use Windows. So while these high-end vis companies and the game company are both selling to same theoretical total market-share, the target market-share of the vis guys is strongly Unix centric, and the target market-share of the games guys isn't.
2) Cost distribution. Makers of these kinds of high-end packages sell licenses for thousands of dollars a piece. Sometimes thousands of dollar per CPU core or video pipe. Their business models are designed around selling a relatively small number of very expensive licenses. Game companies have the opposite model, they need to sell a ton of relatively inexpensive licenses. Let's assume for a minute that a theoretical game company and a theoretical viz company can both make a Windows version of their software for $5 million, and add a Linux version for $2 million more. Lets assume the vis company makes $4000 per license and the game company makes $20. The vis company starts making money on the Linux port at 500 licenses, and they double their investment at 1000. That's pretty reasonable expectation for a popular niche software. The game company has to sell 100,000 copies to break even, and 200,000 copies to double their money. That's a much larger chunk of the base market-share.
To make gaming on Linux profitable companies need to know more than "There are x million of us who might buy your product", they need some reasonable expectation that of the "x million" some "y hundred thousand" are actually likely to make the purchase.
I think the big problem is that it was not able to be run on the hardware they claimed would run it at the time of release. I bought my wife a brand new laptop a few months after Vista became the "standard" on new computers. It came with a dual core 2.3Mhz CPU, a gig of RAM and an Nvidia Go video card. Pretty decent mid-grade specs at the time for a desktop replacement type laptop. It was crap. She couldn't play WoW (not a high-end graphics game, even then), Photoshop ran like molasses, anything remotely high performance or (especially) graphics intensive was a joke. I even upgraded to 2 Gigs of RAM without any noticeable change.
I installed XP and everything worked like I would expect from a reasonably powerful current generation machine. She's still got XP now, around 16 months later, but it's starting to slow down quite a bit from "Windows drag". I need to reinstall, and I'm considering either going back to Vista or grabbing the Win 7 RC tomorrow. From what I understand, a lot of the problems we were having probably related to incomplete or non-optimized drivers, and I've been REALLY happy with the Win 7 Beta I played with on my Macbook. Fact remains though that we had an awful experience with a machine that was not just advertised as "Vista Ready", but actually had Vista installed on purchase. My wife still isn't too happy about me putting Vista back on it.
Vista may be a lot better now than it was on release, but it made some really bad first impressions. I've read enough horror stories to know I'm not alone in thinking so. It was bad enough that normal, everyday users (my wife, my parents, etc) had an opinion on an operating system. Something that users normally take for granted, that they just buy a computer with, made an impression, and not a good one.
Meanwhile Apple released Leopard. Certainly it wasn't a perfect release (I nearly killed people till they gave me back my "View Content as 'List'" option, and the folder option to get rid of the "stack"), but in final analysis when I upgraded my Macbook Pro from work it ran FASTER with Leopard than it had with Tiger. When Apple upgrades their OS, they look to optimize things at the same time that they add features. This doesn't always result in a net performance increase, but at the least it offsets the performance decrease. Combined with their (admittedly sometimes draconian) control of hardware, and you get a really gentle upgrade scale that can leave the same hardware running 3 and even 4 generations of the OS.
Is it fair to expect the same thing from Microsoft? They're dealing with a nearly infinite variety of hardware and software, and that makes things a Hell of a lot harder. Maybe it is, maybe it isn't, but to an extend "fair" doesn't matter (just as it often doesn't matter with Linux's hardware problems. These are also generally not the developer fault, but create similarly large PR problems). People expect a computer to perform a certain way when they buy it. They expect it act a certain way when they upgrade it (especially when it was advertised as "ready" for the new OS). The old adage about first impressions applies to operating systems as much as any other product or person.
I can see we're going to have to agree to disagree. I have yet to see an example of unfettered capitalism resulting in anything like a Utopia, or even an improvement over what we have now (and I have studied history fairly extensively). I can point to several examples of unfettered or nearly unfettered capitalism resulting in significant suffering for many of the people in the society where the practice existed. I invite you to point me to the pure capitalist (or nearly pure capitalist) society that has a better (or even an equal) overall standard of living than we currently do. I'm quite willing to make allowances for differences in technology and such when accounting for standard of living. Obviously if this society existed in the 15th or 18th century it would not have our level of medical care and indoor plumbing. All I require is that it be reasonably egalitarian, allow for a reasonable amount of social mobility, and that the poor not be starving or living in complete squalor compared to the middle class and rich.
Like this. Let's assume you are a farmer who knows how to program a software system. Maybe you're a hobbyist programmer, or a farmer that used to be programmer before you inherited your farm, or the younger son a farmer sent off to school to learn how to use the latest machines and techniques. It doesn't matter. Let's assume you look around at various products that help run farms and none of them seems quite right to you, or quite worth the money, so you write your own. It's a great success, and soon other farmers are asking to use your software and suggesting improvements. You have essentially three options at this point: You can just happily use your software without giving to anyone else, you can go into the software business and sell your software (maybe in addition to, maybe instead of your farm produce), or you can give your friends and neighbors your software when they ask and help them out since software isn't your business.
In the first case, licensing isn't really an issue. You have your software, not one else does, and that it isn't likely to change.
In the second case a proprietary model might be best for you (at least according to the previous poster). You are trying to sell your software and giving anyone and everyone access to your source code might make that hard. You could give away the software and sell service, but now you're really getting away from your core competency (farming).
In the third case you might want to consider the GPL. It gives you several advantages. It prevents you from being sued for using your own software if someone else tries to commercialize it (Strictly speaking this shouldn't happen anyway, but the GPL provides another layer of protection). It makes sure that if someone else modifies and re-releases your software you can see what they did and cabbage any improvements they made (which might be considered a form of "payment" for you releasing the software in the first place). It makes sure you get credit for the software (which might or might not be important to you). It provides a way for other farmers to modify (or pay someone to modify) your software and release their versions out into the wild, or submit them to you as patches to the "main tree". Generally it provides you with a way to give your work to people you want to help without totally losing control of what you wrote.
I know that the businesses at the time fought tooth and nail to prevent the passage of those laws. I know that every time minimum wage goes up the local fast food industry has a heart attack and claims that it will go out of business or have to fire half its employees, yet somehow never does either. Of course businesses don't pay everyone minimum wage, the market won't let them. I never said that the market was evil or never did anything good, but like every other force it must be managed and directed occasionally. Fires can burn down houses, that doesn't make them evil or even unnecessary, it just means you have to watch and control them. The market can certainly be a force for good, I'm not calling for global government control of all aspects of business, it's not an all or nothing thing. Look at Europe. They have very socialistic governments, yet their economies seems in no worse danger of collapsing than ours.
As to whether I would send my kid to work in a factory for an extra $200 a month.. Of course I wouldn't, but that ignores several key factors:
1) I'm not the sort of social class that would have done this, even at the time.
2) I have somewhere else to send my children (School, where they can learn and hopefully better themselves so they don't have to work in the factory ever. For the poor that school is provided by the government now, but it wasn't back then.)
3) I'm not watching that same child starve or do without clothes for the lack of the $200 he might be bringing in.
There are two essential fallacies in your post. First, you seem to assume that since I don't support a completely free market, I instead support some sort of central state planned economy. I don't. The government and regulation have a place in the market, and in providing certain services that society considers "essential", but the market itself also has significant value to the economy.
Second you seem to assume that the market itself loses all of it's power when the slightest regulation is imposed upon it. The market still applies, supply and demand still work. Regulation just tilts the board a bit to protect people (some times poor people, but often everyone) who can't protect themselves. To be clear, everyone has times that they can't protect themselves. Rich or poor, smart or not, there will come a time when you will not have the right knowledge, enough money, or enough time to protect yourself from some danger. That's when you hope the regulations protect you instead.
I never said they were NEEDS I said that society as whole has judged them needed. I happen to agree with society in most cases, but yes you can do without any of those things. Certainly in a place where food and water are scarce, 100 Mbps Internet is of virtually no concern to anyone at all. Electricity is probably an optional luxury. We don't happen to live in those places, and if someone is willing to pay a reasonable cost for high speed Internet, there is no reason the local government shouldn't provide it if they chose.
I credit government for enforcing 8 hour work days and 5 day work weeks (or additional rewards for working "overtime"). I credit government with establishing and enforcing workplace safety and environmental standards. I credit government with eliminating child labor and mandating education. For that matter, although somewhat unrelated, I credit government with establishing and enforcing standards on the quality of buildings people live in, the quality of things sold as "food" or "medicine", and the quality of any number of other things that have overall improved the quality of life that people experience because they aren't being slowly poisoned, having roofs fall on their heads, or otherwise being made miserable, unhealthy, or dead by unregulated industries.
People migrated here from all over the world because of a perception that grinding poverty in an industrial and powerful United States was more appealing than grinding poverty in a rural and feudal eastern Europe. Whether it actually was or not I can't say, I don't know a lot about Post-Renaissance to Pre-WWI Europe to be honest. I do know a fair bit about that time in US history though, and I can say for sure that while it may have been better than somewhere, it certainly wasn't as good as it could have been. A cursory read of either the history of the period or the fiction of the period could tell you that. Some of the worst off of what we currently consider "poor people" have it better than what was "average working class conditions" then.
Is there value in running electricity to an isolated farm? Well yes, both to the farmer (who is willing to pay for electricity, but can't afford to pay for a long cable run), and to society as a whole (which over time will see greater yields from the now electrified farm, as the farmer is able to use more modern techniques). Is there value for an electric company to run lines to the isolated farm? Maybe, but certainly only across a very wide space of time. It'll be a long while before the farmer (who, owing to his lack electricity probably doesn't even have any electrical appliances yet) buys enough enough electricity to pay of the cost of running the lines, the transformers, the repairs, etc. Since there is value for the citizen, and value for society, it makes sense for the government to either run the electricity or subsidize the running of the electricity, even though the electric company probably wouldn't chose to do it from a pure profit perspective.
You're seriously comparing East and West Germany as your examples? Excellent choice.it allows me to point out this excellent thing called compromise, or the middle road. You see you are completely correct that East Germany represents an example of the failure of a completely centrally controlled economy. Bad idea, you could just as easily point out the Soviet Union or China before recent reforms. West Germany on teh other hand is hardly an example of unfettered capitalism. It has significant socialist elements including a state sponsored universal health care system, significant wage and work restrictions (to ensure that workers can make a decent living in in menial jobs), state subsidies funding rail and road networks, a much more generous unemployment benefit that the US has, indeed pretty much all of the "normal" European social programs. Despite this its economy is just a strong as the US (smaller, yes, it has a much smaller population) if not stronger, and the "social safety net" that the working poor rely upon is certainly much better. It is arguably better to be rich in the United States than in Germany, but it is certainly better to be poor (or even middle class, for lower end of the "middle class" spectrum) in Germany.
Similarly, as I point out below, the United States is a much more "socialist" country than it was 100 years ago, but the lot of the poor has improved significantly. You are correct that a completely centrally managed economy is a disaster, but for a strong and viable country with a good economy, a mix of private industry with the state managing essential services and providing a fair playing field seems to be the best deal for the most people. Good example!
Several cities in Louisiana seems to be doing alright with it. Lafayette hasn't started service yet, but has a significant pre-sale already, and EATEL run by Ascension Parish (A much more rural Parish a bit north of Lafayette) is doing very well by all accounts. I lived in Lafayette until recently, and I was ready to switch to LUS for data as soon as it became available. My neighborhood got crappy service from COX, I had repair techs out to my house more there than anywhere else I've lived. LUS was promising us more bandwidth, for around the same amount of money, and their service would have been seriously hard pressed to be any worse.