As a follow up to what you wrote: if you're learning something, almost anything, and you put the time in to become really damn good at it, it becomes fun for you. It doesn't matter if that's juggling, playing accordion, chess, kickboxing, or writing code. So at first you will be bored spending some of your free time learning more about C++, or databases, or NoSQL, or networking, or whatever. But eventually you'll reach the point where you solve the simple problems very quickly and the hard problems are interesting. Then the learning is fun, and it's no longer a burden to make yourself continue.
I'll be honest, I got into writing code strictly because I wanted a steady paycheck. I was mediocre at it, but then about five years ago I reached a bad point in my personal finances. If I didn't get better enough at my work to get an extra $30,000 per year from some employer, I was going to lose my house. I put in the effort to improve, and was pleasantly surprised to find that I enjoyed my work far more. It's tempting to assume the enjoyment came from the pay increase, but it actually came because now I could blitz through the repetitive, entry level nonsense and spend most of my time researching and solving interesting problems. The better you get, the more fun this field is.
Immediately after graduation, I suspect someone with a math degree is at a disadvantage against someone with a computer science degree when applying for jobs related to computer science. I don't think the person who wrote the parent post is complaining about the entry level jobs, I think they're complaining that competition for the entry level jobs has a serious advantage.
But once you get that first job or two under your belt, I suspect the difference between a mathematics degree and a computer science degree on a resume is small. I have my undergraduate degree in math and a graduate degree in software engineering, which means I finished school competent in math, competent in computer science theory, and completely incompetent in actually writing code, network administration, system administration, etc... I landed my first job by luck, learned a lot very quickly, and now would consider my skills more or less even with anyone that had an undergraduate degree in computer science. I'm not exceptional, I'm certain almost anyone else bright enough to get a degree in mathematics could do the same.
Realism? In a game that has magic swords, dragons, and fireballs?
Original Dungeons and Dragons was decent - the attribute bonus rules were uniform ( +0 for 9-12, +1 for 13-15, +2 for 16-17, +3 for 18), the attack and armor rules were relatively straightforward, skills were simple, hit points were simple, saving throws were a bit odd. It wasn't a flexible game, but it was by far the easiest for newbies to learn.
Every edition since then, from AD&D1 through 4th edition, added flexibility plus complexity. AD&D 1 and 2 had different weapon damages based on the size of the opponent you were hitting, and different weapon classes (piercing, slashing, crushing). AD&D 1 and 2 also had different attribute bonuses for different stats, and multi-classing, and all the oddness of the saving throws mechanics from original Dungeons and Dragons.
3rd edition and 3rd edition revised simplified: multi-classing, saving throws, attribute bonuses, weapon damage types, weapon damage factors based on the size of opponents. Then they complicated the hell out of things with feats, more complex skills, and the interaction of different class abilities in multi-classing. Five steps forward, anywhere from three to fifty steps back depending upon who you ask.
4th edition simplified skills again, reduced the relative impact of feats, simplified the magic rules, and rewrote the multi-classing rules to be less flexible and less easy to understand but easier to control (e.g. it made it harder for players to discover combinations that gave them an unfair advantage relative to the other players in the group). 4th edition also gave each class a set of choices of a series of special abilities, which makes for great flavor, great fun, but yet again tons of added complexity.
I had forgotten that a lot of skilled Perl users use "perl -e (commands)" with piping to get things done. You're right, that's extremely handy and definitely not something you can do with Python.
I think the perl6 windmill is worth tilting at - at worst it makes the people jousting more knowledgeable about writing interpreters and virtual machines, and gives ideas to the general community that improve other existing languages. That includes Perl 5, I understand some of the features in Perl 6 made it into Perl 5.14 and 5.16. If we have to wait another twenty years before Perl6 is rock solid, so what? Barring an unfortunate accident, I'll still be writing code then.
As a linked topic, at my day job I work on Java. I don't have many opportunities to use Perl 5 for more than toy scripts to accomplish simple tasks. But I find the general mentality of the Perl 5 and Perl 6 community refreshing - a good mix of brilliance and practicality. My personal experience with the Java community is that there is intelligence and innovation around the edges but a lot of stale repetition and over-engineered solutions that choke on their own complexity in the mainstream. If I could figure out how to transition from Java development to Perl development without taking a 20% pay cut, it would be tempting.
While I want to be able to use Perl6 today, writing software is not going to go away any time soon. If it takes another ten years for Perl6 implementations like Rakudo to be feature complete and another ten years for it to run as efficiently as Perl5, that's fine - developers twenty years out will have one hell of a fun and productive new tool at their disposal, and they can use it from then until the collapse of civilization.
If you have a family, you can have two cars - one electric car for most driving, and another combustion engine vehicle for long trips.
Otherwise, if electric cars become a lot cheaper to buy and remain cheaper to fuel, you could consider using an electric car for your local driving and renting other cars for long trips. It certainly doesn't make sense now, but if the 2020 equivalent to the Nissan Leaf or Ford Focus Electric costs the inflation-adjusted equivalent to $25,000, it might make sense then.
I think the real hope might be improvements in the range-extended hybrid technology pioneered by the Chevy Volt and the Fisker Karma. The Volt gets an average 35 mile range electric, and then a relatively disappointing 35 miles per gallon on gasoline. But if GM improves that technology to the point that it reaches 60 miles purely electric and 40 or better miles per gallon on gasoline, it's probably the closest you can get to a perfect compromise.
But superior battery technology has been one of the holy grails of engineering for over a hundred years. This isn't some minor technical problem that can easily be solved if Toyota or Mercedes decides to sink an extra billion or even five billion dollars into the right kind of research. If it was within reach, we would have electric cars with a 600 mile range and 10 minute charging time available at some price point, even if it was for a million dollars apiece.
That "long run" in which electric can't be beat may be a hundred years away or longer.
This sounds a lot like Homogeneous Charge Compression Ignition engine technology - check the wikipedia article, http://en.wikipedia.org/wiki/Homogeneous_charge_compression_ignition Honda, General Motors, and a number of other companies have been working on this for years, and I doubt Exxon has bought them all off.
More likely the nifty technology that works just fine at certain operating temperatures, atmospheric pressures, and engine speeds has problems outside those ranges which are difficult to manage. From the wikipedia article, the General Motors version of the engine has to switch to conventional spark ignition at certain speeds.
I understand that. But we're talking about CEOs of Fortune 500 companies - they get paid tens or hundreds of millions of dollars per year precisely because they are supposed to be the unparalleled geniuses of the business world. Steve Ballmer's path from 2000 to today looks like something a multitude of reasonably bright people could have followed.
While Ballmer is a classic example of this, most modern corporate executives have the same problem. The RIM executives, as mentioned above, probably saw the doom of Blackberry as early as 2005 or 2006 and were not bright enough to stop it. The CEOs of Aol, Nokia, Yahoo, Chrysler, General Motors, and MySpace were all paid a fortune for their ability to be dramatically smarter than the average MBA, and they all failed to deliver. And of course worst of all there is Wall Street, where tens of thousands of people were paid hundreds of millions of dollars to devise financial instruments that caused a massive recession - and most of them are still employed in the same industry.
Steve Ballmer has done just fine for a bright middle manager. But he's been paid to be the brilliant visionary leader of one of the most powerful companies in the world, and I don't see him apologizing to the board of directors and offering to pay back his executive compensation.
Consider their relative positions in the market. RIM was successful, but then the market started to shift with the iPhone and Android. The RIM CEOs needed to keep or grow Blackberry's market position in a fight with two competitors that both had far more money, developers, and public brand awareness than RIM itself. They should have done better, they didn't deserve their millions of dollars in compensation for total failure. But the task was difficult.
By contrast, in 2000 Microsoft had massive public awareness, a tremendous pool of intelligent talent, and a horde of cash. RIM had carved itself a happy corner in the phone market and then two juggernauts from other corners of the tech industry moved in and blew it out of the water. Microsoft was and still is one of the juggernauts, it should have stayed at the leading edge of the industry in some areas and set the curve in others - under a better leader, maybe Zune would be alive and iPod would be forgotten, Windows Phone would be alive and iPhones a niche product, Bing the leader in search, Hotmail the most popular free email service, and Windows RT tablets more popular than Android or iPads. And look beyond that, I'm using iPod, iPhone, iPad, Google Search, and Gmail as examples because they're what I know - but under good leadership maybe Microsoft would have innovated in some other completely unexpected way - a Kinect on every television, or the equivalent of the Ford Sync voice-controlled entertainment system in most cars by 2006, or pioneering the self-driving car, or whatever.
I realize that Apple releases some of the changes they make as open source, and taken as a whole it's a lot of code. But the monetary value of the source code Apple releases is insignificant when views as a percentage of their annual income. They could fund an industry-changing amount of free software, and they choose not to because their entire business model is built around steering customers towards their proprietary software. I'm grateful for the code they have released back to the community, but that is clearly not a major priority for Apple as a company. Contrast that to Red Hat, which spends a significant portion of its annual budget developing code that gets released back to the community.
A company can take a project from open to proprietary if it's easy to locate all of the contributors, or if the project has required developers to assign copyright of contributions to the project. A lot of free software projects have neither, and I like that - you couldn't release the Linux kernel under a BSD license even if you wanted to, because it's impractical to track down every contributor who still has code in the active kernel and get them to agree.
And while companies like Apple and Microsoft shy away from working with or on projects with a GPL license, it works just fine for other companies and volunteer projects. Hence Debian, Red Hat, Ubuntu, etc... The GPL isn't winning the hearts and minds of the huge firms, but the truth is that while we would love to have their money and their resources, the GPL exists mainly to make it hard for them to exist. If Apple and Microsoft have to constantly struggle to convince consumers that their offerings are technically superior to software they can get for free, then the GPL is working as intended. It's a rising tide - proprietary software companies have to keep moving to higher ground to prove their worth, as soon as they rest on their laurels the baseline (software consumers can get for free) surpasses them in quality. And no matter how they would like to push the water level lower, they can't stop the ocean.
You can fix bugs in either one. But other people and companies can also fix bugs in either one. With BSD the people and companies can choose whether to share the changes when they distribute new binaries based on the changes. With GPL they have to share the changes when they distribute new binaries based on the change.
Yes, there are cases like FreeBSD and WebKit where most of the useful changes are passed upstream to the parent project. But it's overly optimistic to assume that this model will always work or even that it usually works. Microsoft, Apple, Oracle, and Sony, just to name a few, take what they can use from BSD licensed products and then do their best to steer people away from using the upstream projects and towards their proprietary offerings. That's great for them but bad for everyone else.
I'm out of mod points, sorry. I agree on all points. I'm frankly astonished at this view that the GPL or Stallman are evil or hateful or built with malicious intent.
Most big companies prefer a BSD or MIT license to GPL because it lets them take what they want and allows them to give back as much or as little as they want, including nothing. If your primary interest is promoting your own business, this makes sense. The GPL was not designed with facilitating profit as a goal, and as a result it doesn't fit the wants of Apple, Microsoft, Oracle, and most other large software companies.
As an employee of a software business and a shareholder in software businesses, I want them to use BSD and MIT. As a home user of computer software and software hobbyist, I want as many people as possible to use the GPL and if I ever find the free time to contribute to a free software project it will be one that uses a GPL license.
If your proprietary program breaks or has a security flaw and the company is out of business or charges a fee you cannot or will not pay, you cannot fix it. If you fix it yourself, you can't share the fix. I work at a small company, we had some proprietary software that cost $650 per server in 2003 and cost $15,000 per server in 2010, and that's when we switched to a free software alternative.
With free software, if it breaks for you, you can fix it. If you can't fix it, you can pay someone else to fix it - maybe the original author, maybe someone else. And no matter whether you fix it yourself or have someone else fix it, you can share the fix.
To me, shuffling code is the best part, provided it's solving real technical problems and not writing yet another script to manipulate a text file or add a differently shaped icon to a weekly report that gets mailed to investors. My goal for my 40s and 50s is to be working as a lead developer or chief software architect or equivalent - I don't care about the official title, that's just the kind of work I hope to be doing.
Retirement in your 50s is realistic if you have no children or had a really well-paying job, but once you have kids the expenses are likely to postpone retirement a long ways. When they're young you pay for daycare or lose half the household income as one parent stays home to watch the kids. You need a larger living space than a single person or couple would require, and that increases your purchase price, heating and cooling costs, and property taxes. You will also either pay tuition to send your children to a private school or choose to spend more money than you otherwise need to get your home so that you have one in a good school district. You spend more on food and medical insurance. You will probably opt to purchase a larger and less fuel efficient vehicle, because while a practical compact car can fit child seats in the back, getting the children in an out of the seats is a hassle and fitting groceries for a family of 3 or 4 in the trunk of an economy car is often difficult. (I am not defending the use of sport utility vehicles and huge pickup trucks as commuter transport, but even a switch from a Toyota Corolla to a Toyota Camry carries a higher cost in purchase price, fuel, and insurance.) There's also sporting equipment, music lessons, and other miscellaneous expenses. And last but not least you will probably contribute at least some of the cost of your children's college tuition. Add all that together, and you can kiss your retirement in your 50s good bye.
The instability of Unity is not a grand conspiracy by people who dislike Ubuntu. Unity crashed every few minutes for me on 11.04, I had to switch desktops to GNOME classic (2.32). Unity has never crashed for me in 11.10 or 12.04 - but I highly doubt all these claims that it still crashes are fabricated.
Anecdotes don't make for good statistical evidence, but I've been using Ubuntu since 10.04 and the four upgrades since then all ran flawlessly.
Then late last month I was rearranging hardware and ripped the damn SATA connector on my primary hard drive in half, so I had to reinstall from scratch. I had backups, so no data was lost, but when I bought a replacement disk I decided to give Linux Mint a spin.
I find all this venom between the different distributions disturbing. The free software community makes some amazing cool stuff, and I love Linux and enjoy using it. But it's not hard to understand why corporations with tens of billions of dollars in the bank can invest more in bug-testing upgrade processes than projects backed almost entirely by volunteers (Debian), funded by a relatively small business (Ubuntu), or funded by a slightly larger business (Red Hat). If Microsoft still has upgrade bugs galore, and they have complete control over the operating system stack and are the primary customer of all the PC hardware vendors, it should be no surprise that the free software community does too.
I understand what you're saying. Money is extremely important - I can't be happy if I can't eat, I can't be happy if I can't pay the rent. But when you pay people more money the quality and speed of their work does not improve unless they were underpaid before. If the prevailing wage for a junior developer is $60,000, paying him $40,000 will get you shoddy work relative to what he or she can do at their best. Paying him or her $60,000 will get you reasonable work relative to their skill level. Paying him $90,000 will not improve their work. You'll get a temporary bump in the first few weeks after the raise (or bonus), but then things will return to status quo. Once he is paid at or above market rate, getting better work out of him requires making the work more interesting, making the work environment more pleasant, and giving him as much self-governance as possible.
The problems with rewards are like this:
1. People focused on rewards tend to take less risks. It stifles creativity because you're afraid of losing the reward, so you do exactly what you're told in the way you were told to do it.
2. People focused on rewards tend to lose interest in the work itself and focus more on the reward. So offering someone more money to administer servers makes them happy about money but less interested, in general, in learning the best methods to administer servers, less interested in reading about server administration in their spare time, less interested in learning new things, etc... This is why the person who gets into hacking (using the non-perjorative meaning of the term) for the joy of it generally tends to be more skilled than the guy who only does it for money, even if the guy who only does it for money is otherwise exceedingly intelligent.
3. People focused on rewards tend to be more competitive with their coworkers. That competitiveness breaks down teamwork, and since all of us can accomplish more as a well organized group than we can as motivated individuals working alone, it's counter-productive.
4. The mere action of giving rewards and announcing rewards to people tends to make them consciously or subconsciously resent the fact that the person giving the rewards has clear authority over them. We don't like having other people in a position of power over us.
Again, check out the book I listed above or find others like it. The argument the author makes is compelling. And while there are lies, damn lies, and statistics, my semi-informed read of his statistical evidence to back up his theories is that they're solid.
Actually, there have been studies done. If you pay people less than market rate, their performance sucks. But if you pay them above market rate, their performance does not improve. The way to get people to work more efficiently and with more creativity is to give them respect, as much autonomy as possible, and as much interesting work as possible. Look up "Punished by Rewards" by Alfie Kohn.
HTML5 is reasonably well supported by most browsers, including mobile browsers, and the support will improve with time. So if a developer writes something that works on Blackberry, he can host it at a web page and someone on iOS or Android or Windows Phone can just bookmark the page. That's what RIM (and Mozilla's Boot 2 Gecko, and the Tizen project) are trying to achieve. You draw in the developers by telling them that if they develop for your platform, bookmarks let your app work on all of the other platforms with no extra work. That's an even bigger target audience than building just for Android or just for iOS.
A scripting language like Javascript generally won't run as efficiently as a compiled language, even against a bytecode compiled language like Java. On the other hand, Microsoft, Mozilla, Webkit (Google, Apple, Nokia, and others), and Opera are in an incredible web browser arms race to build the fastest, most efficient Javascript engine possible. I don't think any other scripting language is receiving even half the work on optimization that Javascript is getting. And in three years just about every mainstream smart phone will have over a GB of memory and a quad core ARM processor. The speed difference is not a problem.
I'd like to counter the common recommendations for an hour of exercise per day or bouts of intensive activity with books like this (yes, it's an Amazon link, and no, it's not tied to my account so I do not get a cut of the sales) http://www.amazon.com/The-First-20-Minutes-Surprising/dp/1594630933/ref=sr_1_1?ie=UTF8&qid=1336655628&sr=8-1 "The First 20 Minutes" - basically, most of the benefits of exercise are realized from the first 20 minutes of exercise, a few times per week. Doing more than that is better, provided you don't injure yourself. But going from sedentary to an hour and a half of exercise per week carries tremendous health and quality of life benefits, and it's something almost anyone can manage.
Also, sitting for long periods of time has been proven to be very bad for health. I set an alarm on my phone every hour during the day to ensure that at a minimum once per hour I get up and move around.
Last and perhaps most important, if you think you have other health issues, get them addressed. I've needed 9-10 hours of sleep per night since I was a teenager. I thought it was just genetics, but my wife finally persuaded me to get tested for sleep apnea. It turns out I have severe sleep apnea, and now that I'm using a Continuous Positive Air Pressure (CPAP) machine to ensure I breathe normally while sleeping, I got two hours of my day back. It's now ten times easier to find the energy to exercise. Being fat increases your risk of sleep apnea, but lots of thin people also have the disease.
I'm sure you know the answer to that - at the time when Diaspora was launched, Ruby on Rails was the highly hyped holy grail of web development and the reputation of Perl as "write once, read never" was near its peak. I mean no offense to the Diaspora team when I say this, but I suspect if they had a few more years of industry experience before they tackled the project it would have given them a better perspective for examining the merits of Ruby on Rails versus Perl plus CPAN (or for that matter PHP and Drupal or Python and web2py or whatever).
I wouldn't trust them with my security. I know the bare basics about website software security - use named parameters on database queries, at a minimum validate all of your inputs on the server side, escape your input strings so that posted code is just stored and rendered as text, and for every single action check both authentication (is the current user logged in) as well as authorization (does the current user have the right permissions to create, read, update, or delete the current object). I assumed the Diaspora guys knew that, and I'm disappointed that they did not.
I exaggerated the difficulty of using C++. It's an outstanding language, there's nothing wrong with it. But there is a reason that millions of websites are built on scripting languages like Ruby, Python, Perl, and PHP: the rapid developer feedback loop. Write code, save changes, restart webserver or reload application, refresh browser page. With most compiled languages, the extra step to compile code causes a massive slowdown. Depending upon how large your code base is, it might only add 20 or 30 seconds to the whole feedback process. But if you're changing and testing hundreds of times per day, the developer using the scripting language is easily three times as productive. You get lean, fast, efficient code, and he gets bloated and memory hungry but working code in one third the time.
I'm sure a highly skilled C++ developer, especially with a lot of experience building C++ web applications, can write good web applications every bit as fast as a skilled developer in another language. But the Diaspora group wasn't a group of highly skilled veterans, it's a bunch of motivated college students. I guarantee they would have been slower in C++.
Upgrading user software is going to be a headache for Diaspora no matter what toolkit or web framework they used. I think the choice of Ruby on Rails was reasonable. In an ideal world I would like to see something like Diaspora written in C++ or something similar, so that it runs well on old PCs and on tablets and entry level smart phones. But if they used C++ we would probably still be waiting for the 0.1 release.
The security flaws, on the other hand, were a disappointment.
This isn't toilets, where you have clear physical evidence of the problem and pay someone to fix it. This also isn't drugs, where you have lives at stake in case of an error and hundreds of millions of research dollars to pour into examining the cases where it has an unintended effect. This is not even a technical problem at the office where a paid employee is physically present and tasked with fixing the problem. This is software distributed for free over the web - reproducing the problem is harder, money to fund time spent on a fix is scarce, and lives are not at stake.
Apple is one of the richest corporations in the world, and their contributions to free software as a percentage of their revenue from software sales is insignificant. Two of their biggest and most widely used free software projects are the printer system CUPS which is GPL and the Webkit web browser engine which is partly LGPL. I am not, by the way, complaining about the contributions Apple has done. I'll take what I can get. But clearly the BSD license lends itself to the major corporations picking and choosing what benefits them the most and excludes their competitors, and contributing back as they see fit. Great for the company, great for the shareholders, bad for the industry, bad for consumers, bad for people who want to learn and tinker.
Compare Apple to Red Hat, which is a tinker toy company next to Apple but spends a comparatively huge amount of their billion dollar revenue directly funding GPL projects. Companies can profit from GPL software, just not from licenses. Red Hat makes its money from support contracts. Try to name all of the multi-million dollar companies built around a BSD license software project that release most or all of their code under BSD. I don't think there are any.
As a follow up to what you wrote: if you're learning something, almost anything, and you put the time in to become really damn good at it, it becomes fun for you. It doesn't matter if that's juggling, playing accordion, chess, kickboxing, or writing code. So at first you will be bored spending some of your free time learning more about C++, or databases, or NoSQL, or networking, or whatever. But eventually you'll reach the point where you solve the simple problems very quickly and the hard problems are interesting. Then the learning is fun, and it's no longer a burden to make yourself continue.
I'll be honest, I got into writing code strictly because I wanted a steady paycheck. I was mediocre at it, but then about five years ago I reached a bad point in my personal finances. If I didn't get better enough at my work to get an extra $30,000 per year from some employer, I was going to lose my house. I put in the effort to improve, and was pleasantly surprised to find that I enjoyed my work far more. It's tempting to assume the enjoyment came from the pay increase, but it actually came because now I could blitz through the repetitive, entry level nonsense and spend most of my time researching and solving interesting problems. The better you get, the more fun this field is.
Immediately after graduation, I suspect someone with a math degree is at a disadvantage against someone with a computer science degree when applying for jobs related to computer science. I don't think the person who wrote the parent post is complaining about the entry level jobs, I think they're complaining that competition for the entry level jobs has a serious advantage.
But once you get that first job or two under your belt, I suspect the difference between a mathematics degree and a computer science degree on a resume is small. I have my undergraduate degree in math and a graduate degree in software engineering, which means I finished school competent in math, competent in computer science theory, and completely incompetent in actually writing code, network administration, system administration, etc... I landed my first job by luck, learned a lot very quickly, and now would consider my skills more or less even with anyone that had an undergraduate degree in computer science. I'm not exceptional, I'm certain almost anyone else bright enough to get a degree in mathematics could do the same.
Realism? In a game that has magic swords, dragons, and fireballs?
Original Dungeons and Dragons was decent - the attribute bonus rules were uniform ( +0 for 9-12, +1 for 13-15, +2 for 16-17, +3 for 18), the attack and armor rules were relatively straightforward, skills were simple, hit points were simple, saving throws were a bit odd. It wasn't a flexible game, but it was by far the easiest for newbies to learn.
Every edition since then, from AD&D1 through 4th edition, added flexibility plus complexity. AD&D 1 and 2 had different weapon damages based on the size of the opponent you were hitting, and different weapon classes (piercing, slashing, crushing). AD&D 1 and 2 also had different attribute bonuses for different stats, and multi-classing, and all the oddness of the saving throws mechanics from original Dungeons and Dragons.
3rd edition and 3rd edition revised simplified: multi-classing, saving throws, attribute bonuses, weapon damage types, weapon damage factors based on the size of opponents. Then they complicated the hell out of things with feats, more complex skills, and the interaction of different class abilities in multi-classing. Five steps forward, anywhere from three to fifty steps back depending upon who you ask.
4th edition simplified skills again, reduced the relative impact of feats, simplified the magic rules, and rewrote the multi-classing rules to be less flexible and less easy to understand but easier to control (e.g. it made it harder for players to discover combinations that gave them an unfair advantage relative to the other players in the group). 4th edition also gave each class a set of choices of a series of special abilities, which makes for great flavor, great fun, but yet again tons of added complexity.
I had forgotten that a lot of skilled Perl users use "perl -e (commands)" with piping to get things done. You're right, that's extremely handy and definitely not something you can do with Python.
I think the perl6 windmill is worth tilting at - at worst it makes the people jousting more knowledgeable about writing interpreters and virtual machines, and gives ideas to the general community that improve other existing languages. That includes Perl 5, I understand some of the features in Perl 6 made it into Perl 5.14 and 5.16. If we have to wait another twenty years before Perl6 is rock solid, so what? Barring an unfortunate accident, I'll still be writing code then.
As a linked topic, at my day job I work on Java. I don't have many opportunities to use Perl 5 for more than toy scripts to accomplish simple tasks. But I find the general mentality of the Perl 5 and Perl 6 community refreshing - a good mix of brilliance and practicality. My personal experience with the Java community is that there is intelligence and innovation around the edges but a lot of stale repetition and over-engineered solutions that choke on their own complexity in the mainstream. If I could figure out how to transition from Java development to Perl development without taking a 20% pay cut, it would be tempting.
While I want to be able to use Perl6 today, writing software is not going to go away any time soon. If it takes another ten years for Perl6 implementations like Rakudo to be feature complete and another ten years for it to run as efficiently as Perl5, that's fine - developers twenty years out will have one hell of a fun and productive new tool at their disposal, and they can use it from then until the collapse of civilization.
If you have a family, you can have two cars - one electric car for most driving, and another combustion engine vehicle for long trips.
Otherwise, if electric cars become a lot cheaper to buy and remain cheaper to fuel, you could consider using an electric car for your local driving and renting other cars for long trips. It certainly doesn't make sense now, but if the 2020 equivalent to the Nissan Leaf or Ford Focus Electric costs the inflation-adjusted equivalent to $25,000, it might make sense then.
I think the real hope might be improvements in the range-extended hybrid technology pioneered by the Chevy Volt and the Fisker Karma. The Volt gets an average 35 mile range electric, and then a relatively disappointing 35 miles per gallon on gasoline. But if GM improves that technology to the point that it reaches 60 miles purely electric and 40 or better miles per gallon on gasoline, it's probably the closest you can get to a perfect compromise.
But superior battery technology has been one of the holy grails of engineering for over a hundred years. This isn't some minor technical problem that can easily be solved if Toyota or Mercedes decides to sink an extra billion or even five billion dollars into the right kind of research. If it was within reach, we would have electric cars with a 600 mile range and 10 minute charging time available at some price point, even if it was for a million dollars apiece.
That "long run" in which electric can't be beat may be a hundred years away or longer.
This sounds a lot like Homogeneous Charge Compression Ignition engine technology - check the wikipedia article, http://en.wikipedia.org/wiki/Homogeneous_charge_compression_ignition Honda, General Motors, and a number of other companies have been working on this for years, and I doubt Exxon has bought them all off.
More likely the nifty technology that works just fine at certain operating temperatures, atmospheric pressures, and engine speeds has problems outside those ranges which are difficult to manage. From the wikipedia article, the General Motors version of the engine has to switch to conventional spark ignition at certain speeds.
I understand that. But we're talking about CEOs of Fortune 500 companies - they get paid tens or hundreds of millions of dollars per year precisely because they are supposed to be the unparalleled geniuses of the business world. Steve Ballmer's path from 2000 to today looks like something a multitude of reasonably bright people could have followed.
While Ballmer is a classic example of this, most modern corporate executives have the same problem. The RIM executives, as mentioned above, probably saw the doom of Blackberry as early as 2005 or 2006 and were not bright enough to stop it. The CEOs of Aol, Nokia, Yahoo, Chrysler, General Motors, and MySpace were all paid a fortune for their ability to be dramatically smarter than the average MBA, and they all failed to deliver. And of course worst of all there is Wall Street, where tens of thousands of people were paid hundreds of millions of dollars to devise financial instruments that caused a massive recession - and most of them are still employed in the same industry.
Steve Ballmer has done just fine for a bright middle manager. But he's been paid to be the brilliant visionary leader of one of the most powerful companies in the world, and I don't see him apologizing to the board of directors and offering to pay back his executive compensation.
Consider their relative positions in the market. RIM was successful, but then the market started to shift with the iPhone and Android. The RIM CEOs needed to keep or grow Blackberry's market position in a fight with two competitors that both had far more money, developers, and public brand awareness than RIM itself. They should have done better, they didn't deserve their millions of dollars in compensation for total failure. But the task was difficult.
By contrast, in 2000 Microsoft had massive public awareness, a tremendous pool of intelligent talent, and a horde of cash. RIM had carved itself a happy corner in the phone market and then two juggernauts from other corners of the tech industry moved in and blew it out of the water. Microsoft was and still is one of the juggernauts, it should have stayed at the leading edge of the industry in some areas and set the curve in others - under a better leader, maybe Zune would be alive and iPod would be forgotten, Windows Phone would be alive and iPhones a niche product, Bing the leader in search, Hotmail the most popular free email service, and Windows RT tablets more popular than Android or iPads. And look beyond that, I'm using iPod, iPhone, iPad, Google Search, and Gmail as examples because they're what I know - but under good leadership maybe Microsoft would have innovated in some other completely unexpected way - a Kinect on every television, or the equivalent of the Ford Sync voice-controlled entertainment system in most cars by 2006, or pioneering the self-driving car, or whatever.
I realize that Apple releases some of the changes they make as open source, and taken as a whole it's a lot of code. But the monetary value of the source code Apple releases is insignificant when views as a percentage of their annual income. They could fund an industry-changing amount of free software, and they choose not to because their entire business model is built around steering customers towards their proprietary software. I'm grateful for the code they have released back to the community, but that is clearly not a major priority for Apple as a company. Contrast that to Red Hat, which spends a significant portion of its annual budget developing code that gets released back to the community.
A company can take a project from open to proprietary if it's easy to locate all of the contributors, or if the project has required developers to assign copyright of contributions to the project. A lot of free software projects have neither, and I like that - you couldn't release the Linux kernel under a BSD license even if you wanted to, because it's impractical to track down every contributor who still has code in the active kernel and get them to agree.
And while companies like Apple and Microsoft shy away from working with or on projects with a GPL license, it works just fine for other companies and volunteer projects. Hence Debian, Red Hat, Ubuntu, etc... The GPL isn't winning the hearts and minds of the huge firms, but the truth is that while we would love to have their money and their resources, the GPL exists mainly to make it hard for them to exist. If Apple and Microsoft have to constantly struggle to convince consumers that their offerings are technically superior to software they can get for free, then the GPL is working as intended. It's a rising tide - proprietary software companies have to keep moving to higher ground to prove their worth, as soon as they rest on their laurels the baseline (software consumers can get for free) surpasses them in quality. And no matter how they would like to push the water level lower, they can't stop the ocean.
You can fix bugs in either one. But other people and companies can also fix bugs in either one. With BSD the people and companies can choose whether to share the changes when they distribute new binaries based on the changes. With GPL they have to share the changes when they distribute new binaries based on the change.
Yes, there are cases like FreeBSD and WebKit where most of the useful changes are passed upstream to the parent project. But it's overly optimistic to assume that this model will always work or even that it usually works. Microsoft, Apple, Oracle, and Sony, just to name a few, take what they can use from BSD licensed products and then do their best to steer people away from using the upstream projects and towards their proprietary offerings. That's great for them but bad for everyone else.
I'm out of mod points, sorry. I agree on all points. I'm frankly astonished at this view that the GPL or Stallman are evil or hateful or built with malicious intent.
Most big companies prefer a BSD or MIT license to GPL because it lets them take what they want and allows them to give back as much or as little as they want, including nothing. If your primary interest is promoting your own business, this makes sense. The GPL was not designed with facilitating profit as a goal, and as a result it doesn't fit the wants of Apple, Microsoft, Oracle, and most other large software companies.
As an employee of a software business and a shareholder in software businesses, I want them to use BSD and MIT. As a home user of computer software and software hobbyist, I want as many people as possible to use the GPL and if I ever find the free time to contribute to a free software project it will be one that uses a GPL license.
If your proprietary program breaks or has a security flaw and the company is out of business or charges a fee you cannot or will not pay, you cannot fix it. If you fix it yourself, you can't share the fix. I work at a small company, we had some proprietary software that cost $650 per server in 2003 and cost $15,000 per server in 2010, and that's when we switched to a free software alternative.
With free software, if it breaks for you, you can fix it. If you can't fix it, you can pay someone else to fix it - maybe the original author, maybe someone else. And no matter whether you fix it yourself or have someone else fix it, you can share the fix.
To me, shuffling code is the best part, provided it's solving real technical problems and not writing yet another script to manipulate a text file or add a differently shaped icon to a weekly report that gets mailed to investors. My goal for my 40s and 50s is to be working as a lead developer or chief software architect or equivalent - I don't care about the official title, that's just the kind of work I hope to be doing.
Retirement in your 50s is realistic if you have no children or had a really well-paying job, but once you have kids the expenses are likely to postpone retirement a long ways. When they're young you pay for daycare or lose half the household income as one parent stays home to watch the kids. You need a larger living space than a single person or couple would require, and that increases your purchase price, heating and cooling costs, and property taxes. You will also either pay tuition to send your children to a private school or choose to spend more money than you otherwise need to get your home so that you have one in a good school district. You spend more on food and medical insurance. You will probably opt to purchase a larger and less fuel efficient vehicle, because while a practical compact car can fit child seats in the back, getting the children in an out of the seats is a hassle and fitting groceries for a family of 3 or 4 in the trunk of an economy car is often difficult. (I am not defending the use of sport utility vehicles and huge pickup trucks as commuter transport, but even a switch from a Toyota Corolla to a Toyota Camry carries a higher cost in purchase price, fuel, and insurance.) There's also sporting equipment, music lessons, and other miscellaneous expenses. And last but not least you will probably contribute at least some of the cost of your children's college tuition. Add all that together, and you can kiss your retirement in your 50s good bye.
The instability of Unity is not a grand conspiracy by people who dislike Ubuntu. Unity crashed every few minutes for me on 11.04, I had to switch desktops to GNOME classic (2.32). Unity has never crashed for me in 11.10 or 12.04 - but I highly doubt all these claims that it still crashes are fabricated.
Anecdotes don't make for good statistical evidence, but I've been using Ubuntu since 10.04 and the four upgrades since then all ran flawlessly.
Then late last month I was rearranging hardware and ripped the damn SATA connector on my primary hard drive in half, so I had to reinstall from scratch. I had backups, so no data was lost, but when I bought a replacement disk I decided to give Linux Mint a spin.
I find all this venom between the different distributions disturbing. The free software community makes some amazing cool stuff, and I love Linux and enjoy using it. But it's not hard to understand why corporations with tens of billions of dollars in the bank can invest more in bug-testing upgrade processes than projects backed almost entirely by volunteers (Debian), funded by a relatively small business (Ubuntu), or funded by a slightly larger business (Red Hat). If Microsoft still has upgrade bugs galore, and they have complete control over the operating system stack and are the primary customer of all the PC hardware vendors, it should be no surprise that the free software community does too.
I understand what you're saying. Money is extremely important - I can't be happy if I can't eat, I can't be happy if I can't pay the rent. But when you pay people more money the quality and speed of their work does not improve unless they were underpaid before. If the prevailing wage for a junior developer is $60,000, paying him $40,000 will get you shoddy work relative to what he or she can do at their best. Paying him or her $60,000 will get you reasonable work relative to their skill level. Paying him $90,000 will not improve their work. You'll get a temporary bump in the first few weeks after the raise (or bonus), but then things will return to status quo. Once he is paid at or above market rate, getting better work out of him requires making the work more interesting, making the work environment more pleasant, and giving him as much self-governance as possible.
The problems with rewards are like this:
1. People focused on rewards tend to take less risks. It stifles creativity because you're afraid of losing the reward, so you do exactly what you're told in the way you were told to do it.
2. People focused on rewards tend to lose interest in the work itself and focus more on the reward. So offering someone more money to administer servers makes them happy about money but less interested, in general, in learning the best methods to administer servers, less interested in reading about server administration in their spare time, less interested in learning new things, etc... This is why the person who gets into hacking (using the non-perjorative meaning of the term) for the joy of it generally tends to be more skilled than the guy who only does it for money, even if the guy who only does it for money is otherwise exceedingly intelligent.
3. People focused on rewards tend to be more competitive with their coworkers. That competitiveness breaks down teamwork, and since all of us can accomplish more as a well organized group than we can as motivated individuals working alone, it's counter-productive.
4. The mere action of giving rewards and announcing rewards to people tends to make them consciously or subconsciously resent the fact that the person giving the rewards has clear authority over them. We don't like having other people in a position of power over us.
Again, check out the book I listed above or find others like it. The argument the author makes is compelling. And while there are lies, damn lies, and statistics, my semi-informed read of his statistical evidence to back up his theories is that they're solid.
Actually, there have been studies done. If you pay people less than market rate, their performance sucks. But if you pay them above market rate, their performance does not improve. The way to get people to work more efficiently and with more creativity is to give them respect, as much autonomy as possible, and as much interesting work as possible. Look up "Punished by Rewards" by Alfie Kohn.
HTML5 is reasonably well supported by most browsers, including mobile browsers, and the support will improve with time. So if a developer writes something that works on Blackberry, he can host it at a web page and someone on iOS or Android or Windows Phone can just bookmark the page. That's what RIM (and Mozilla's Boot 2 Gecko, and the Tizen project) are trying to achieve. You draw in the developers by telling them that if they develop for your platform, bookmarks let your app work on all of the other platforms with no extra work. That's an even bigger target audience than building just for Android or just for iOS.
A scripting language like Javascript generally won't run as efficiently as a compiled language, even against a bytecode compiled language like Java. On the other hand, Microsoft, Mozilla, Webkit (Google, Apple, Nokia, and others), and Opera are in an incredible web browser arms race to build the fastest, most efficient Javascript engine possible. I don't think any other scripting language is receiving even half the work on optimization that Javascript is getting. And in three years just about every mainstream smart phone will have over a GB of memory and a quad core ARM processor. The speed difference is not a problem.
I'd like to counter the common recommendations for an hour of exercise per day or bouts of intensive activity with books like this (yes, it's an Amazon link, and no, it's not tied to my account so I do not get a cut of the sales) http://www.amazon.com/The-First-20-Minutes-Surprising/dp/1594630933/ref=sr_1_1?ie=UTF8&qid=1336655628&sr=8-1 "The First 20 Minutes" - basically, most of the benefits of exercise are realized from the first 20 minutes of exercise, a few times per week. Doing more than that is better, provided you don't injure yourself. But going from sedentary to an hour and a half of exercise per week carries tremendous health and quality of life benefits, and it's something almost anyone can manage.
Also, sitting for long periods of time has been proven to be very bad for health. I set an alarm on my phone every hour during the day to ensure that at a minimum once per hour I get up and move around.
Last and perhaps most important, if you think you have other health issues, get them addressed. I've needed 9-10 hours of sleep per night since I was a teenager. I thought it was just genetics, but my wife finally persuaded me to get tested for sleep apnea. It turns out I have severe sleep apnea, and now that I'm using a Continuous Positive Air Pressure (CPAP) machine to ensure I breathe normally while sleeping, I got two hours of my day back. It's now ten times easier to find the energy to exercise. Being fat increases your risk of sleep apnea, but lots of thin people also have the disease.
I'm sure you know the answer to that - at the time when Diaspora was launched, Ruby on Rails was the highly hyped holy grail of web development and the reputation of Perl as "write once, read never" was near its peak. I mean no offense to the Diaspora team when I say this, but I suspect if they had a few more years of industry experience before they tackled the project it would have given them a better perspective for examining the merits of Ruby on Rails versus Perl plus CPAN (or for that matter PHP and Drupal or Python and web2py or whatever).
I wouldn't trust them with my security. I know the bare basics about website software security - use named parameters on database queries, at a minimum validate all of your inputs on the server side, escape your input strings so that posted code is just stored and rendered as text, and for every single action check both authentication (is the current user logged in) as well as authorization (does the current user have the right permissions to create, read, update, or delete the current object). I assumed the Diaspora guys knew that, and I'm disappointed that they did not.
I exaggerated the difficulty of using C++. It's an outstanding language, there's nothing wrong with it. But there is a reason that millions of websites are built on scripting languages like Ruby, Python, Perl, and PHP: the rapid developer feedback loop. Write code, save changes, restart webserver or reload application, refresh browser page. With most compiled languages, the extra step to compile code causes a massive slowdown. Depending upon how large your code base is, it might only add 20 or 30 seconds to the whole feedback process. But if you're changing and testing hundreds of times per day, the developer using the scripting language is easily three times as productive. You get lean, fast, efficient code, and he gets bloated and memory hungry but working code in one third the time.
I'm sure a highly skilled C++ developer, especially with a lot of experience building C++ web applications, can write good web applications every bit as fast as a skilled developer in another language. But the Diaspora group wasn't a group of highly skilled veterans, it's a bunch of motivated college students. I guarantee they would have been slower in C++.
Upgrading user software is going to be a headache for Diaspora no matter what toolkit or web framework they used. I think the choice of Ruby on Rails was reasonable. In an ideal world I would like to see something like Diaspora written in C++ or something similar, so that it runs well on old PCs and on tablets and entry level smart phones. But if they used C++ we would probably still be waiting for the 0.1 release.
The security flaws, on the other hand, were a disappointment.
This isn't toilets, where you have clear physical evidence of the problem and pay someone to fix it. This also isn't drugs, where you have lives at stake in case of an error and hundreds of millions of research dollars to pour into examining the cases where it has an unintended effect. This is not even a technical problem at the office where a paid employee is physically present and tasked with fixing the problem. This is software distributed for free over the web - reproducing the problem is harder, money to fund time spent on a fix is scarce, and lives are not at stake.
Apple is one of the richest corporations in the world, and their contributions to free software as a percentage of their revenue from software sales is insignificant. Two of their biggest and most widely used free software projects are the printer system CUPS which is GPL and the Webkit web browser engine which is partly LGPL. I am not, by the way, complaining about the contributions Apple has done. I'll take what I can get. But clearly the BSD license lends itself to the major corporations picking and choosing what benefits them the most and excludes their competitors, and contributing back as they see fit. Great for the company, great for the shareholders, bad for the industry, bad for consumers, bad for people who want to learn and tinker.
Compare Apple to Red Hat, which is a tinker toy company next to Apple but spends a comparatively huge amount of their billion dollar revenue directly funding GPL projects. Companies can profit from GPL software, just not from licenses. Red Hat makes its money from support contracts. Try to name all of the multi-million dollar companies built around a BSD license software project that release most or all of their code under BSD. I don't think there are any.