The link you provide goes to a fascinating page, but the page has nothing to indicate that Emacs has a reasonably quick learning curve.
I exaggerated my point in the earlier post, so I will repeat it more honestly here: it will take weeks of work dedicated solely to mastering Emacs before a typical person can have better productivity than someone with two or three days dedicated to learning a decent IDE.
Two nice pieces of some object-oriented languages are encapsulation and polymorphism.
C doesn't let you mark certain methods private, or do anything equivalent to that. You have to hope the person using your class (which could be you a few months later) remembers to read the comments on which methods and variables are available for the world and which are used in a potentially intricate internal state machine.
C also, as far as I know, does not let you do polymorphism. I have parent class Animal and child class Dog and Cat, and each child class has additional public functions and variables. I want a function that accepts an Animal input and manipulates it. Can you do that with C?
You may be right about home users, but I think you're wrong about business users.
Microsoft doesn't care what they sell to a business, as long as they have plenty of revenue. But if the business is going to spend, say, an average of $200 per employee on the next version of a Microsoft operating system, the ability to avoid an additional $400 per employee in Vista-capable hardware is extremely nice.
On the other hand, it's not too crazy to guess Intel, AMD, and PC manufacturers are subtly urging Microsoft to keep increasing system requirements. If Vista and Windows 7 ran fine on hardware that supported Windows XP, new hardware sales to businesses would drop dramatically. The ever-escalating system requirements can be viewed as planned obsolescence.
Like hell it is! Imagine if a company with 500 Windows XP Professional PCs could upgrade to Windows Vista Business without buying a single piece of extra hardware! Millions of PCs are still running Windows XP, and will never be upgraded because the added cost of hardware upgrades or complete hardware replacement for Vista or Windows 7 is more than the company/government organization/whatever is willing to pay.
Imagine if home PC buyers could get a full feature, full performance version of Vista on a home PC for $100 or $200 less in hardware costs than what they need now, and with no 'Vista Capable' scandals. For laptops, the cost effects of the requirements jump from XP to Vista is even larger - right now, the cheapest $400 and $500 laptop configurations from most vendors are blazingly fast on XP, but if you want equivalent performance on Vista you need to spend $300 or $400 more.
PC gaming enthusiasts aren't particularly bothered by the new system specs, because they will buy pretty robust machines regardless. Everyone else would benefit tremendously if Microsoft worked on reduced system requirements for Windows 7. It's a sure thing Microsoft would have sold a lot more copies.
Aside from mentioning a continuation of the Vista and Server 2008 kernel, the article has no surprises and no really interesting information.
Nothing new to bash, really - although I'm sure plenty of old rants will be re-hashed. Either Sinofsky can't talk about anything really new and interesting, or there is nothing really new and interesting to talk about.
Personally, I see only two things necessary to make Windows 7 a success:
1. Better device and driver compatibility and stability.
2. Much lower system requirements and better performance. With tens of thousands of developers and five years of development, you would have thought Vista would outperform XP, and not vice versa. Windows 7 is Microsoft's chance to redeem themselves.
A good IDE like Eclipse offers:
1. Auto-complete - if you have an object "foo", type "foo." and it will give you a scrollable list of all methods and variables of foo legally accessible from the current context along with their parameter list
2. Hot-key recompiling of your entire project
3. Handy refactoring methods - for example, select a file, right click, select refactor, move and rename to another package, and then Eclipse moves the file and updates all package imports and name references in your entire project for you
4. Auto-insert of common code, like getters and setters or extracting an interface or super class from a class, and a nice tree directory of your project you can navigate without needing a separate Konqueror/Windows Explorer window.
5. Right click on any class, variable, or method in your code and generate a list of clickable links to every instance of that item.
6. The option to use Emacs or Vim as your embedded text editor instead of the default.
7. Drag and drop addition, removal, and update of dependencies like modules and libraries, without having to touch all of the affected configuration files by hand.
8. Integration of CVS and Subversion including the ability to quickly visually diff files with what is in the repository or with a different branch.
9. A clickable link of errors and warnings with each compile so that you can quickly navigate to problems at the line number they occur.
A sufficiently godlike Vim or Emacs user with a monster typing speed and complete memorization of dozens upon dozens of commands with many custom macros and the ability to do shell escape complex commands can conceivably work as quickly. But it would take weeks of effort purely focused on mastering your text editor to match the same productivity you can get from a few days playing with your IDE.
Me personally, I support it. I would also like to see something equivalent to the Apollo Program devoted towards developing economical Fusion power, since from my (admittedly limited) understanding, fusion produces radioactive waste with a much shorter half-life than fission. Fuel for fusion is also much easier to obtain.
But I figure wind, solar, and maybe something like biodiesel from algae farms can all contribute to a solution with less environmental impact than coal and less dependencies upon sources in foreign countries than petroleum.
But the person here made a comment about environmentalists opposing windmills for the sake of birds. That's not a position most environmentalists take. Call it a strawman argument, call it a red herring, whatever.
I have no problems with rational non-advocates. The person who tried to paint every environmental advocate with the same brush is not one of those.
Actually, just anti-environmentalists looking for ways to paint every environmentalist as a raving lunatic.
Most of us who like the idea of wind technology don't particularly care about the handful of birds it might effect, and resent getting stereotyped by the people who want to marginalize everything we stand for.
If you read the website, Wine has some internal APIs it uses. For the previous releases, those APIs were subject to change. From 1.0 forward, they are expected to remain stable.
So from an end-user perspective, the move to 1.0 is not noteworthy as a release. But for developers, you hope that contributing to the project becomes easier with a higher likelihood of forward compatibiliy.
So if a capitalist dumps poison in my well because he's too lazy to clean up after his manufacturing process, he's not infringing on my rights? But if the government orders him to stop, it is infringing on his rights?
select survey_taker.last_name, survey_taker.first_name, survey_taker.dob, survey.survey_name, ans1.val as "val1", ans2.val as "val2", ... ans143.val as "val143" from survey_taker left join survey_event on survey_taker.id = survey_event.survey_taker_id left join survey on survey_event.survey_id = survey.id left join answer ans1 on ans1.survey_event_id = survey_event.survey_event_id and ans1.question_code = 'ques1'
left join answer ans2 on ans2.survey_event_id = survey_event.survey_event_id and ans2.question_code = 'ques2' ... left join answer ans143 on ans2.survey_event_id = survey_event.survey_event_id and ans143.question_code = 'ques143'
Order by....
That was an almost word for word first stab at SQL for me as a database newbie. I tested it against a relatively small copy of our database, and it ate half the processing power and 100% of the disk IO on our test server for an hour and a half before spitting out the results I wanted. If you ran that or something like it on a production server, system performance will slow to a crawl. Picture needing 5 minutes to add an item to your cart at an online store, or similar.
cyteen02 is probably quite happy to give these people access to his data. But access on a production server, by people not very good at minimizing the impact of their queries, is dangerous. I wholeheartedly agree with everyone who recommends that he give the client access to a second copy of the database running on a separate server, or use a tool (like the one in Oracle) to limit their slice of the CPU and disk access.
P.S. Instead of the query above, I figured out how to dump the three tables to text files and use Gnu sort, sed, and regular expressions in Perl to give me the data I wanted in CSV files. Whole process takes less than 10 minutes for 350 MB of answers on antique hardware.
Java loads a huge number of libraries at startup, and then as it translates its bytecode into machine code there is a lag. So the code startup is a very royal pain in the ass.
But once your Java application or server is running, the performance of a decent Java app can be within 20% of C++, which is plenty quick and much faster than any scripting language equivalent. You don't need a commercial grade server.
I'm not saying Java's the greatest language. But a lot of people seem to think the language is stuck in 1995.
5 dead cat bounces of 10% in a year give you at least a 45% annual rate of return, even after (ridiculously low) US capital gains taxes.
No matter how you slice it, that's good.
The trick is consistently finding the dead cat bounces instead of grabbing something just part way into its slide to oblivion. It's my understanding that the vast majority of day-traders who try to time the market in things like this end up losing money. I wish the author of the parent post good luck, it's not a game I want to play.
Well, Java is a better example by virtue of not having the same backwards-compatibility cruft to deal with. Even if the language itself is two steps forward and two steps back (depending upon who you ask) from C++, it has no real equivalent to the legacy API layers and apps.NET has to deal with.
I don't get the Java hate anyway. Performance is quite good now, SWT and some other tools make GUI design less painful, and a lot of the uglier toolkits (Struts 1.x, EJB 2, etc...) have nice new open source replacements. The Java development tools are now GPL. Until companies start hiring more developers to to work on Haskell or Scala, Java pays the bills and I neither hate it nor love it.
The Debian installer from release 'Etch', which is over a year old, is pretty easy to use. I'm not sure if it's as easy as the ones for the other distributions tested in the original article, but it certainly was much easier than the installer for Woody, Potato, and earlier versions of Debian.
However, Debian is not as focused on including the latest and greatest software in their general releases as compared to many other distributions. Debian Etch works fine, and gets all relevant security updates very quickly, but lags most of the distributions listed for its versions of KDE, GNOME, Firefox, and so forth.
(In case anyone is confused by the release names, they are from characters in the Disney/Pixar movie Toy Story.)
I thought about that, but it would take a lot of schooling and the corporate atmospheres my wife keeps finding at her physical therapist jobs are worse than the nonsense I've had to put up with at IT firms (go figure).
Still, the job security is sensational. She hasn't had her resume posted anywhere in over a year, and we still get 2-3 recruiter calls per week.
I can't speak for anyone else, but the mistake my wife and I made was related to changes in pay after graduation from college.
In our summer jobs and part time jobs at school, a $800 or $1000 in net monthly pay was a big deal. Then you get a decent job after college, and suddenly your monthly take home is above $2000 each. We felt like it was an unbelievable amount of money, and lived large for years before realizing that it was all too easy to eat through $4000 in net monthly income, and we had a mountain of debt.
Even if I wanted to change careers at this point, I couldn't because I need every cent we earn to stay above water.
I can't speak for elucido, but to me being a stay at home Dad is a fantastic profession. I was out of work for a while, and caring for the kids was much harder but much more rewarding than the day job that I lost.
However, for the spouse that is going to work outside the home, the family of the hardest working, most caring, best-intentioned minimum wage earner in the world is going to have a tough time. You don't need to be a workaholic fixated on a six figure income, but simply doing what you love and struggling to pay for home heating and groceries won't work either.
Also, we don't know the financial situation of the person who started this discussion. His current debt situation may put him in a position where he can't accept a pay cut. If he was lucky or smart enough not to be in that position, a career change would be great. But otherwise, he's stuck. That's just one more reason for careful financial planning - so if you want to make a change, you have the option.
I'd rather make $50k at 20 hours a week than $100k for 40 hours a week, but I'm not aware of many opportunities to work that kind of hours and make that kind of money.
My wife can make almost $50k as a part time medical professional, so if I can manage $50k in 20 hours we can schedule our hours differently, the household budget will be fine and the kids will split their time at home between us.
Care to make any suggestions for a $50k/20 hours a week job?
Another benefit of automated testing (unit, functional, and integration) is to guard against regressions when refactoring or implementing new features. I think that's the biggest value. If you are 100% certain that your initial design is adequate and the software will be static, unit tests are much less necessary.
But they are spectacularly useful for refactoring.
I feel the reason we have so few good programmers is not for lack of intelligence, but for lack of good instruction and training. Almost all jobs are "sink or swim". So the naturally good barely survive and the not so good hide their work. There's two other problems you're missing. First, because training is so poor, lots of developers out there, including senior developers, have gaps in their knowledge. They may be too embarassed to try to teach a new hire for fear of looking stupid.
Second, knowing how to design, write, and document decent code and knowing how to teach someone else how to do those things are two separate skills. Even if someone else in the company is delegated to teach the new hires, knows their stuff, and wants to help, it does not mean they can effectively pass on what they know.
This is complicated by the fact that the vast majority of Universities (which train most of the programmers, unfortunately) do not have experienced programmers on staff. So at no point in their careers do most programmers get anything like appropriate training. I think that speaks to my second point above. Some Computer Science professors are brilliant instructors. Some are brilliant software developers. Few that I have encountered are both.
So one passes on concepts and basic knowledge very well but can't teach you what you need to know to be great. The other knows everything you need, but can't pass anything on.
I considered getting my PhD in Computer Science and becoming a professor, but I don't think I have what it takes to teach the stuff either. (Hopefully I'm a good developer already. But who knows.)
"Seriously, threaded processing in C is damn simple."
The basic concepts are dead simple. Avoiding a race condition or resource conflict that hangs the system is often non-trivial, and testing for all possible combination of interactions between multiple threads is incredibly difficult.
Multi-threading in C is certainly possible, and many proficient developers around the world do a damn fine job of it. But some other programming languages and libraries make error-free concurrent programming much easier.
Seconded. Many of the AJAX frameworks out there handle almost all of the Javascript coding for you, and you need to do just a bare minimum of Javascript coding on your own.
And the nice thing about AJAX is that most end-users are already familiar with web interfaces. Depending on your target market, even a pretty simple and intuitive rich client application can be intimidating to end users, even if the user interface is nearly identical to what they would get in a web application.
The link you provide goes to a fascinating page, but the page has nothing to indicate that Emacs has a reasonably quick learning curve.
I exaggerated my point in the earlier post, so I will repeat it more honestly here: it will take weeks of work dedicated solely to mastering Emacs before a typical person can have better productivity than someone with two or three days dedicated to learning a decent IDE.
That makes complete sense, and I don't know how I failed to think of it before.
Thanks.
Two nice pieces of some object-oriented languages are encapsulation and polymorphism.
C doesn't let you mark certain methods private, or do anything equivalent to that. You have to hope the person using your class (which could be you a few months later) remembers to read the comments on which methods and variables are available for the world and which are used in a potentially intricate internal state machine.
C also, as far as I know, does not let you do polymorphism. I have parent class Animal and child class Dog and Cat, and each child class has additional public functions and variables. I want a function that accepts an Animal input and manipulates it. Can you do that with C?
You may be right about home users, but I think you're wrong about business users.
Microsoft doesn't care what they sell to a business, as long as they have plenty of revenue. But if the business is going to spend, say, an average of $200 per employee on the next version of a Microsoft operating system, the ability to avoid an additional $400 per employee in Vista-capable hardware is extremely nice.
On the other hand, it's not too crazy to guess Intel, AMD, and PC manufacturers are subtly urging Microsoft to keep increasing system requirements. If Vista and Windows 7 ran fine on hardware that supported Windows XP, new hardware sales to businesses would drop dramatically. The ever-escalating system requirements can be viewed as planned obsolescence.
Thats just flat not a market requirement.
Like hell it is! Imagine if a company with 500 Windows XP Professional PCs could upgrade to Windows Vista Business without buying a single piece of extra hardware! Millions of PCs are still running Windows XP, and will never be upgraded because the added cost of hardware upgrades or complete hardware replacement for Vista or Windows 7 is more than the company/government organization/whatever is willing to pay.
Imagine if home PC buyers could get a full feature, full performance version of Vista on a home PC for $100 or $200 less in hardware costs than what they need now, and with no 'Vista Capable' scandals. For laptops, the cost effects of the requirements jump from XP to Vista is even larger - right now, the cheapest $400 and $500 laptop configurations from most vendors are blazingly fast on XP, but if you want equivalent performance on Vista you need to spend $300 or $400 more.
PC gaming enthusiasts aren't particularly bothered by the new system specs, because they will buy pretty robust machines regardless. Everyone else would benefit tremendously if Microsoft worked on reduced system requirements for Windows 7. It's a sure thing Microsoft would have sold a lot more copies.
Aside from mentioning a continuation of the Vista and Server 2008 kernel, the article has no surprises and no really interesting information.
Nothing new to bash, really - although I'm sure plenty of old rants will be re-hashed. Either Sinofsky can't talk about anything really new and interesting, or there is nothing really new and interesting to talk about.
Personally, I see only two things necessary to make Windows 7 a success:
1. Better device and driver compatibility and stability.
2. Much lower system requirements and better performance. With tens of thousands of developers and five years of development, you would have thought Vista would outperform XP, and not vice versa. Windows 7 is Microsoft's chance to redeem themselves.
A good IDE like Eclipse offers:
1. Auto-complete - if you have an object "foo", type "foo." and it will give you a scrollable list of all methods and variables of foo legally accessible from the current context along with their parameter list
2. Hot-key recompiling of your entire project
3. Handy refactoring methods - for example, select a file, right click, select refactor, move and rename to another package, and then Eclipse moves the file and updates all package imports and name references in your entire project for you
4. Auto-insert of common code, like getters and setters or extracting an interface or super class from a class, and a nice tree directory of your project you can navigate without needing a separate Konqueror/Windows Explorer window.
5. Right click on any class, variable, or method in your code and generate a list of clickable links to every instance of that item.
6. The option to use Emacs or Vim as your embedded text editor instead of the default.
7. Drag and drop addition, removal, and update of dependencies like modules and libraries, without having to touch all of the affected configuration files by hand.
8. Integration of CVS and Subversion including the ability to quickly visually diff files with what is in the repository or with a different branch.
9. A clickable link of errors and warnings with each compile so that you can quickly navigate to problems at the line number they occur.
A sufficiently godlike Vim or Emacs user with a monster typing speed and complete memorization of dozens upon dozens of commands with many custom macros and the ability to do shell escape complex commands can conceivably work as quickly. But it would take weeks of effort purely focused on mastering your text editor to match the same productivity you can get from a few days playing with your IDE.
IDEs are popular for a reason.
Me personally, I support it. I would also like to see something equivalent to the Apollo Program devoted towards developing economical Fusion power, since from my (admittedly limited) understanding, fusion produces radioactive waste with a much shorter half-life than fission. Fuel for fusion is also much easier to obtain.
But I figure wind, solar, and maybe something like biodiesel from algae farms can all contribute to a solution with less environmental impact than coal and less dependencies upon sources in foreign countries than petroleum.
But the person here made a comment about environmentalists opposing windmills for the sake of birds. That's not a position most environmentalists take. Call it a strawman argument, call it a red herring, whatever.
I have no problems with rational non-advocates. The person who tried to paint every environmental advocate with the same brush is not one of those.
Actually, just anti-environmentalists looking for ways to paint every environmentalist as a raving lunatic.
Most of us who like the idea of wind technology don't particularly care about the handful of birds it might effect, and resent getting stereotyped by the people who want to marginalize everything we stand for.
If you read the website, Wine has some internal APIs it uses. For the previous releases, those APIs were subject to change. From 1.0 forward, they are expected to remain stable.
So from an end-user perspective, the move to 1.0 is not noteworthy as a release. But for developers, you hope that contributing to the project becomes easier with a higher likelihood of forward compatibiliy.
So if a capitalist dumps poison in my well because he's too lazy to clean up after his manufacturing process, he's not infringing on my rights? But if the government orders him to stop, it is infringing on his rights?
Explain that to me.
select survey_taker.last_name,
...
survey_taker.first_name,
survey_taker.dob,
survey.survey_name,
ans1.val as "val1",
ans2.val as "val2",
...
ans143.val as "val143"
from survey_taker
left join survey_event on survey_taker.id = survey_event.survey_taker_id
left join survey on survey_event.survey_id = survey.id
left join answer ans1 on ans1.survey_event_id = survey_event.survey_event_id and ans1.question_code = 'ques1'
left join answer ans2 on ans2.survey_event_id = survey_event.survey_event_id and ans2.question_code = 'ques2'
left join answer ans143 on ans2.survey_event_id = survey_event.survey_event_id and ans143.question_code = 'ques143'
Order by....
That was an almost word for word first stab at SQL for me as a database newbie. I tested it against a relatively small copy of our database, and it ate half the processing power and 100% of the disk IO on our test server for an hour and a half before spitting out the results I wanted. If you ran that or something like it on a production server, system performance will slow to a crawl. Picture needing 5 minutes to add an item to your cart at an online store, or similar.
cyteen02 is probably quite happy to give these people access to his data. But access on a production server, by people not very good at minimizing the impact of their queries, is dangerous. I wholeheartedly agree with everyone who recommends that he give the client access to a second copy of the database running on a separate server, or use a tool (like the one in Oracle) to limit their slice of the CPU and disk access.
P.S. Instead of the query above, I figured out how to dump the three tables to text files and use Gnu sort, sed, and regular expressions in Perl to give me the data I wanted in CSV files. Whole process takes less than 10 minutes for 350 MB of answers on antique hardware.
Java loads a huge number of libraries at startup, and then as it translates its bytecode into machine code there is a lag. So the code startup is a very royal pain in the ass.
But once your Java application or server is running, the performance of a decent Java app can be within 20% of C++, which is plenty quick and much faster than any scripting language equivalent. You don't need a commercial grade server.
I'm not saying Java's the greatest language. But a lot of people seem to think the language is stuck in 1995.
5 dead cat bounces of 10% in a year give you at least a 45% annual rate of return, even after (ridiculously low) US capital gains taxes.
No matter how you slice it, that's good.
The trick is consistently finding the dead cat bounces instead of grabbing something just part way into its slide to oblivion. It's my understanding that the vast majority of day-traders who try to time the market in things like this end up losing money. I wish the author of the parent post good luck, it's not a game I want to play.
Well, Java is a better example by virtue of not having the same backwards-compatibility cruft to deal with. Even if the language itself is two steps forward and two steps back (depending upon who you ask) from C++, it has no real equivalent to the legacy API layers and apps .NET has to deal with.
I don't get the Java hate anyway. Performance is quite good now, SWT and some other tools make GUI design less painful, and a lot of the uglier toolkits (Struts 1.x, EJB 2, etc...) have nice new open source replacements. The Java development tools are now GPL. Until companies start hiring more developers to to work on Haskell or Scala, Java pays the bills and I neither hate it nor love it.
The Debian installer from release 'Etch', which is over a year old, is pretty easy to use. I'm not sure if it's as easy as the ones for the other distributions tested in the original article, but it certainly was much easier than the installer for Woody, Potato, and earlier versions of Debian.
However, Debian is not as focused on including the latest and greatest software in their general releases as compared to many other distributions. Debian Etch works fine, and gets all relevant security updates very quickly, but lags most of the distributions listed for its versions of KDE, GNOME, Firefox, and so forth.
(In case anyone is confused by the release names, they are from characters in the Disney/Pixar movie Toy Story.)
Thanks a lot. :-)
I thought about that, but it would take a lot of schooling and the corporate atmospheres my wife keeps finding at her physical therapist jobs are worse than the nonsense I've had to put up with at IT firms (go figure).
Still, the job security is sensational. She hasn't had her resume posted anywhere in over a year, and we still get 2-3 recruiter calls per week.
I can't speak for anyone else, but the mistake my wife and I made was related to changes in pay after graduation from college.
In our summer jobs and part time jobs at school, a $800 or $1000 in net monthly pay was a big deal. Then you get a decent job after college, and suddenly your monthly take home is above $2000 each. We felt like it was an unbelievable amount of money, and lived large for years before realizing that it was all too easy to eat through $4000 in net monthly income, and we had a mountain of debt.
Even if I wanted to change careers at this point, I couldn't because I need every cent we earn to stay above water.
I can't speak for elucido, but to me being a stay at home Dad is a fantastic profession. I was out of work for a while, and caring for the kids was much harder but much more rewarding than the day job that I lost.
However, for the spouse that is going to work outside the home, the family of the hardest working, most caring, best-intentioned minimum wage earner in the world is going to have a tough time. You don't need to be a workaholic fixated on a six figure income, but simply doing what you love and struggling to pay for home heating and groceries won't work either.
Also, we don't know the financial situation of the person who started this discussion. His current debt situation may put him in a position where he can't accept a pay cut. If he was lucky or smart enough not to be in that position, a career change would be great. But otherwise, he's stuck. That's just one more reason for careful financial planning - so if you want to make a change, you have the option.
I'd rather make $50k at 20 hours a week than $100k for 40 hours a week, but I'm not aware of many opportunities to work that kind of hours and make that kind of money.
My wife can make almost $50k as a part time medical professional, so if I can manage $50k in 20 hours we can schedule our hours differently, the household budget will be fine and the kids will split their time at home between us.
Care to make any suggestions for a $50k/20 hours a week job?
But they are spectacularly useful for refactoring.
Second, knowing how to design, write, and document decent code and knowing how to teach someone else how to do those things are two separate skills. Even if someone else in the company is delegated to teach the new hires, knows their stuff, and wants to help, it does not mean they can effectively pass on what they know. This is complicated by the fact that the vast majority of Universities (which train most of the programmers, unfortunately) do not have experienced programmers on staff. So at no point in their careers do most programmers get anything like appropriate training. I think that speaks to my second point above. Some Computer Science professors are brilliant instructors. Some are brilliant software developers. Few that I have encountered are both.
So one passes on concepts and basic knowledge very well but can't teach you what you need to know to be great. The other knows everything you need, but can't pass anything on.
I considered getting my PhD in Computer Science and becoming a professor, but I don't think I have what it takes to teach the stuff either. (Hopefully I'm a good developer already. But who knows.)
"Seriously, threaded processing in C is damn simple."
The basic concepts are dead simple. Avoiding a race condition or resource conflict that hangs the system is often non-trivial, and testing for all possible combination of interactions between multiple threads is incredibly difficult.
Multi-threading in C is certainly possible, and many proficient developers around the world do a damn fine job of it. But some other programming languages and libraries make error-free concurrent programming much easier.
Seconded. Many of the AJAX frameworks out there handle almost all of the Javascript coding for you, and you need to do just a bare minimum of Javascript coding on your own.
And the nice thing about AJAX is that most end-users are already familiar with web interfaces. Depending on your target market, even a pretty simple and intuitive rich client application can be intimidating to end users, even if the user interface is nearly identical to what they would get in a web application.