Skills Don't Pay the Bills - <AUTHOR> http://www.nytimes.com/2012/11/25/magazine/skills-dont-pay-the-bills.html?pagewanted=all <comment><USER4> I see a similar problem even in software jobs. Employers frequently advertise for highly specific skill sets that almost nobody has. Then when nobody or only fraudulent people apply, they reject them all and claim a skills shortage. The problem seems to be a basic misconception about how transferable software skills are. An excellent programmer with no experience in Python will be out performing a poor Python programmer in a matter of weeks, even though they have had to learn an entirely new language. This idea, however, seems entirely lost on most HR departments, and the result is an almost entirely "fake" skills shortage.

<comment><USER5> It's not just HR. I did an interview with a YC startup that obsessed over my lack of Rails experience. I have several years of industry relevant professional experience in Java, Python and PHP, but only ever dabbled in Ruby and Rails. Their offer (which did come through, grudgingly, through many repetitions of "so will you commit to teaching yourself rails before starting?" (No, I won't.) was quite a bit on the low end, but I'd probably have turned it down anyway for that strange lack of comprehension of programming skills.

<comment><USER6> I've had a lot of encounters with YC founders, most of them negative.

This anecdote well encapsulates the impression I had of a lot of them.

I'd really like to meet the better of the crop, because I can't imagine PG and Jessica (she's usually the expert on character and personality in YC interviews) are intentionally picking petty people.

I'm not the only person in the startup industry who's had this impression either. They remind me a lot of underqualified legacy Harvard kids who think they're god's gift because they snagged a status symbol.

Maybe the better founders are too busy shipping product to run into me :)

<comment><USER7> I can imagine that for a company with a runway measured in months, immediate skills might be more important than for a well established company.

<comment><USER8> I'm not sure about this.

When I was at my startup, I hired a guy with no Django experience and minimal python. He made his first bug fix within 24 hours of showing up and was productive within a week.

Maybe RoR has a much steeper learning curve, or maybe the people doing the hiring just don't get it.

<comment><USER6> >When I was at my startup, I hired a guy with no Django experience and minimal python. He made his first bug fix within 24 hours of showing up and was productive within a week.

I had the same experience with Django walking in with the same repertoire (minimal Python, no Django) back when I lived in NYC.

I don't do Django anymore, but it taught me a lot about trusting people to pick things up on the fly. Especially with the right person and environment.

</comment></comment></comment></comment></comment></comment><comment><USER9> Economist Dean Baker comments on this: That Shortage of Skilled Manufacturing Workers is Really a Shortage of Employers Willing to Pay the Market Wage

 _News stories have been filled with reports of managers of manufacturing companies insisting that they have jobs open that they can't fill because there are no qualified workers. Adam Davidson at the NYT looked at this more closely and found that the real problem is that the managers don't seem to be interested in paying for the high level of skills that they claim they need.

Many of the positions that are going unfilled pay in the range of $15-$20 an hour. This is not a pay level that would be associated with a job that requires a high degree of skill. As Davidson points out, low level managers at a fast-food restaurant can make comparable pay.

It should not be surprising that the workers who have these skills expect higher pay and workers without the skills will not invest the time and money to acquire them for such a small reward. If these factories want to get highly skilled workers, they will have to offer a wage that is in line with the skill level that they expect._

[http://www.cepr.net/index.php/blogs/beat-the-press/that- shor...](http://www.cepr.net/index.php/blogs/beat-the-press/that-shortage-of- skilled-manufacturing-workers-is-really-a-shortage-of-employers-willing-to- pay-the-market-wage)

<comment><USER10> I think it is important to note that the fast-food jobs with comparable pay are low level _managerial positions_ , not entry level ones. You can start working for minimum wage at a fast-food job without any previous experience and/or skills. These jobs require very little training, and allow employees to add value almost immediately (and well before promotion to the $15-$20 an hour positions).

Contrast this to the skilled manufacturing jobs which require up front experience. Though many blue collar fields offer entry-level positions with on the job training, apprenticeships, and opportunity for advancement, this doesn't appear to be common practice in manufacturing. Why not? I think the main reason is that it is very hard for a low skill worker to add value to a manufacturing company. There aren't any comparable entry-level positions that allow the employee to learn while still being productive.

Because of this, hiring an unskilled employee for the purpose of training them is a huge risk, since it requires a significant investment. And since this industry is already very unstable with razor-thin margins, it's not something many employers seem willing to do, which is unfortunate.

So maybe the solution is coming up with better training programs, so that manufacturers can hire new employees without taking on such large risks?

<comment><USER11> _I think the main reason is that it is very hard for a low skill worker to add value to a manufacturing company. There aren't any comparable entry-level positions that allow the employee to learn while still being productive._

And that is an artefact of industry killing on-the-job training and apprenticeships in any meaningful way.

My dad went from sweeping the floor to designing satellite test rigs with on- the-job training. My partner's dad went from painting ships to designing nuclear reactors with on-the-job training.

My dad never went to university. Started off helping out at my granddad's shop. Moved from there to an apprenticeship scheme at a local engineering firm. From there went into the drafting room. From there learned more engineering. When I was in my teens he was designing satellite test rigs for BA. Ended up a very expensive contractor specialising in conveyor systems of all things.

My partner's dad never went to university. Entered an apprenticeship scheme at Chatham Dockyard. Started off painting navy ships during construction. Moved into drafting office. Started doing more engineering work. Became a member of the Institution of Mechanical Engineers as a Chartered Mechanical Engineer in 1966. Worked on the design and building of early UK marine nuclear reactors, nuclear containment facilities, etc. He ended up working in nuclear medicine before he retired.

On the job training is possible. Just nobody in the US and UK seems to want to do it any more ;-(

(Favourite "I wish I knew that at the time and kept it" moment from my youth. My dad always brought home used A1/A0 paper from his design work for me and my brothers to scrawl on. I remember one when I was about seven or eight that was of this massive array of tiny ovals in a mesh of wires. I though the pattern was cool and stared at it for some time, before turning over to try to improve my drawing of Spider-Man. I now know what I was looking at was an A0 schematic of some magnetic-core memory (<http://en.wikipedia.org/wiki/Magnetic- core_memory>). So wish I had that now so I could frame it for the wall ;-)

</comment></comment></comment><comment><USER12> Classic: according to the article, the definition of a qualified new hire is one with the qualifications to get accepted into university engineering programs.

Ya'll have probably read some of Prof Peter Cappelli's editorials (he's been making the rounds to promote his book "Why Good People Can't Get Jobs"). One of the things he's pointed out is that HR use of resume databases encourages people with poor search habits to believe there is no choice. Basically, it's a failure consider the Bayesian math of nested filters.

Consider a company, in a city of a million people (don't want to pay for relocation), which wants someone with a bachelor's degree and five years of experience. The US unemployment rate for people with bachelor's degrees or higher is ~3.8% and about ~7% of the population is between 25-29 years old. Rough and tumble numbers put the pool of candidates around 2500-2700 before including any subject-specific knowledge. Ask for a specific discipline, like "Computers, mathematics, and statistics" for which 4.2% of bachelor degrees were awarded, and you can cut your your pool of candidates down to about 100 (1/10,000). If you also filter to require mastery of PHP, javascript, and Marqui, 10 years experience with Server 2008 and fluency in a Romance language...

tl;dr: the absence of time travelers in the applicant pool is not evidence of a skills shortage.

</comment><comment><USER13> "The so-called skills gap is really a gap in education, and that affects all of us."

That closing line doesn't really sound like the gist of the piece at all. It sounds like manufacturing employers just don't want to or don't feel they can afford to pay works a fair wage.

<comment><USER14> Exactly. This article makes it sound like manufacturers somehow aren't restricted to the supply and demand of their labor.

If laborers are leaving manufacturers for better pay at fast food companies, workers need higher pay. Its not that complicated. If the company can't afford higher wages, maybe the demand for this skilled labor isn't what we think it is.

If these skills are actually in high demand, they _will_ pay the bills.

<comment><USER15> It is the same thing with propping up the auto industry. If a company can't afford higher wages and it isn't economically rational for people to invest their time in an area then maybe the only rational thing to do is for that manufacturing to head offshore.

<comment><USER16> Which is basically an artificial pushdown of car prices.

</comment></comment></comment></comment><comment><USER17> This is fairly speculative, but I have been thinking this paradox over for a while.

A high demand for scarce highly skilled workers _must_ drive salaries up in competition.

Unless the skills are not actually high skilled, but _obscure skills_. I predict that "high skilled manufacturing" is a morass of proprietary solutions to highly specific process needs - that is, the metal fabrication plant alluded to at 10USD per hour has highly specific machinery doing a fixed task, and that the skill is mostly one of repairing the proprietary code.

From a software perspective, that mostly means the machinery is "legacy" - <USER2> impossible to refactor. So it can never be improved upon, only replaced.

I am not a 3d-printer fanboi - the advantages of additative manufacturing are hugely over hyped (at the moment), and likely to remain elusive for, lets say, a generation, before it becomes obvious to all we throw away factories and their jobs and build millions of thing-o-matics.

However in that generation there will be huge opportunity for semi-general manufacturing - robots with sufficient flexibility in parts and software that they can be re-purposed easily as part of a (virtual) conveyor belt.

This sounds truly skilled work - flexibly adapting as processes and customers change.

if providing semi-general manufacturing machines is uneconomic compared to proprietary simpler but "obscure skill" machines, then we cannot expect a productivity premium for actual highly skilled workers and should expect 10USD phour jobs to limp along till Shanghai takes their lunch.

If however semi-general machines can be made to adapt to different manufacturing requirements, then our whole manufacturing base may be in want of replacing.

Again something emerging economies will have an advantage in.

So, overall, the West should view itself as Great Britain was at the end of the 19th Century - a pioneer whose advantages had run out, and without wholesale massive investment will simply enter a managed decline.

Disruption opportunities - Development of semi-general robotic manufacturing solutions that can quickly be re-purposed. And proving that it is both ecomnomic for a greenfield site and an installed base.

<comment><USER18> Both you and gvb seem to perhaps lack first-hand experience of machine shops.

It's not just "repairing code"... Oftentimes, small job shops will be taking a dimensioned drawing and write their own G code to actually generate the objects.

This will probably involve some back-and-forth with the machine stepping through the part manufacture, and must be done carefully to guarantee that both the machining is done efficiently by the machine and that the program doesn't result in a catastrophic failure damaging the workpiece, the tool, the machine, the operator, or some combination of the above.

This is, in fact, skilled work. Moreover, experienced operators know how to check parts for proper dimensioning (QC at the bench), perform maintenance on their machines and change tools, and watch a part in progress to make sure something really dumb isn't about to happen.

Moreover, the job doesn't stop at the machining center--you may still have to go and clean things up manually, do welding, do polishing, or any number of finishing touches.

Keeping this all working together is not something to laugh at.

I haven't even touched on the logistical challenges of retooling or upgrading equipment, or operating with machines that (unironically) still accept paper tape.

<comment><USER17> I am struggling with the economics behind this - we seem to have discovered an entire industry that sits in a eddy of economic thought - the value added by an operator has a very low ceiling, so they cannot negotiate much, plus the operators themselves have non-interchangeable skill sets - so the number of jobs they are actually qualified for is very low, especially in a given locale. Hence 10 USD an hour.

In short, the manager of a Mcdonalds can move to a local KFC or Wendys with very little effort. An operator of machinetools X has no chance just picking it up on tools Y.

What I think we are seeing is the result of automation destroying jobs - <USER3> ChuckMcM says up page. And if so I am interested suddenly in rereading the Communist Manifesto - because in 20 years, we cannot continue having money flow to the owners of the means of production as defined now - if almost all production is automated, what happens then?

I am too tired to do much more than realise there is an interesting path of thought leading away from here - one I suspect having been trodden by many other thinkers before me. Any travel guides welcome.

edit: too vitriolic

<comment><USER19>
      but then if the skills were transferrable (ie not
      proprietary) then the market would adjust - but it seems
      that there are very very few people with Machine X
      experience in each locale, and they are desperate for jobs.

It's not a problem of proprietary skills - Siemens controllers, Fanuc controllers and Heidenahin controllers are extremely similar. Changing between Siemens and Fanuc is more like changing from Eclipse to Netbeans than changing from Java to C.

The problem is the entire market for CNC machine operators is very small.

Edit: I see you've edited your comment.

<comment><USER17> Yes sorry about that - as a general rule for comments and emails, if I put f%%k in there, I really should rethink it.

opendna below suggests there is research that small (isolated) pools of labour fail to benefit from the intuitive supply/demand wage growth.

My antennea are wavering - this feels like a disruption happening. If I ever pick up my research MSc I think this will be the perfect subject.

</comment></comment></comment></comment></comment><comment><USER20> _Part of Isbister's pickiness, he says, comes from an avoidance of workers with experience in a "union-type job." Isbister, after all, doesn't abide by strict work rules and $30-an-hour salaries. At GenMet, the starting pay is $10 an hour. Those with an associate degree can make $15, which can rise to $18 an hour after several years of good performance._

I'm not a fan of unions or work rules, but those are terrible wages. How does the guy expect to get 21st century skills for 20th century wages?

<comment><USER21> Fortunately the market tends to weed guys like him out if he refuses (or is unable) to raise salaries to meet his required quotas, unless he's just clever enough to get government handouts that keep his company afloat indefinitely.

</comment></comment><comment><USER22> If an Entrepreneur can't pay for the resources needed to build/ensure a product/service at their market prices, he should and eventually will, close business.

There is nothing wrong with that. That is the economical system in the works.

If no one is willing to pay for his product/service at the price he needs to charge, it is because either people do not need it, or they can get it cheaper somewhere else. In business, if you can't compete, you shouldn't.

In this specific case, these jobs are getting oursourced to china or replaced by machines. This is wonderful. Not for infimal number of people that lose their jobs, but to the huge number of people who will be able to afford that product/service cheaper.

I can't set up an ice-cream kiosk in antartica and whine about how business is hard and what will be of the antartica ice-cream industry.

<comment><USER23> What does that mean for us though, the "skilled workers" when everything is being shipped overseas? A friend of mine who works as a systems engineer for Verizon said their dumping 30% of their US staff and shipping it to overseas. This seems to be the pattern (anecdotally) as of late for a lot of large companies. When there's someone with comparable skills on the other side of the world who will do your job for a fraction of the cost, what's to stop a race to the bottom?

<comment><USER24> >what's to stop a race to the bottom?

Absolutely nothing, welcome to one of the big problems of capitalism.

<comment><USER25> The "race to the bottom" benefits the consumer, don't forget. We will make less money in wages, but we will also have access to far cheaper goods and services because of increased productivity globally. It's not a big problem of capitalism that people in third world countries can pull themselves out of poverty, it's one of its great triumphs.

</comment></comment></comment></comment><comment><USER26> Okay, so if there is a problem, what's the solution? Sure enough, highly skilled labor in Taiwan, for instance, that is willing to do the same work for a fraction of the cost, isn't going to stop working just because US employees don't find $10/h attractive. It's a free market and if we want to make things in US, we have to keep the costs comparable.

Now, assuming blue collar is done, as robots can take care of most of the tasks, could someone explain why we need workers to oversee the computers?

The way I see it, you need a really expensive robot, and you need a really expensive programmer to make it work; everything in the middle is cheap. Software should be able to distill anything that is happening on the robotic side and present it in such a way that a trained mechanic would understand and be able to fix it. If that's not the case, then we need better developers (and in this case, perhaps, better designers and human-factors engineers) to write better software.

Now, a few folks mentioned that what you need is really a mixture of experience in the mechanical side of things and understanding of the software - presumable that allows you to react and solve problems whenever something goes astray. Well, that could probably be solved by having a few engineers on staff who would help when needed.

That leaves us with yet again, fairly simple mechanical labor. Perhaps then, the article is right, we have a serious education problem. Those who attain enough education, leap forward and presumable learn more to subject themselves to mundane mechanical tasks, while those who would be greatly fitted to do the jobs, actually don't have enough education to understand even the most basics.

Someone's suggested comparing the math needed at Mc'Donalds with the math needed at one of these factories. I'd be curious to know too; although I suspect that in McDs all the calculations are done by a computer and all humans need to do, is simply not to f-up. Even then, when humans fail to add 2+2, all they lose is an occasional McFlurry, while at a factory they could impact tens of thousands of dollars at once.

So, here we have a conundrum. We need labor to work the $10 jobs, but the pool of employees is simply atrocious. At the same time, qualified labor has better things to do with their time. Now, back to my questions - what's the solution?

<comment><USER27> There isn't any. Unless you can pay more for skilled labor than unskilled labor, you are not going to be able to hire anybody.

The solution is to adapt or close the factories down, and go work at McDonalds (or get a better skilled job elsewhere).

</comment></comment><comment><USER28> I cannot fathom how the author takes the side of the employers at the end of this article. So workers should reduce their expectations so that certain manufacturers can succeed while paying them below-expected rates? Does the author legitimately expect individual workers to look out for the country's employment best interests above their own?

The candidates smart enough to realize that they could earn 2x-5x as much after college won't take these jobs, and most of the people who can't earn those wages elsewhere aren't qualified to do these jobs.

</comment><comment><USER29> From the article: "The secret behind this skills gap is that it's not a skills gap at all. I spoke to several other factory managers who also confessed that they had a hard time recruiting in-demand workers for $10-an-hour jobs. 'It's hard not to break out laughing,' says Mark Price, a labor economist at the Keystone Research Center, referring to manufacturers complaining about the shortage of skilled workers. 'If there's a skill shortage, there has to be rises in wages,' he says. 'It's basic economics.'"

Agreed. That is the basic problem. If a worker can produce hundreds of widgets a day after specialized training with new computer-controlled machinery, but the worker could make just as much money per hour right after high school flipping hamburgers at the local fast-food restaurant, there is no reason for the worker to go through two years or more of specialized training, especially at the worker's own expense.

Much of the rest of the article discusses the overall rationality of workers seeking jobs that they can obtain with the least investment of their own time in training for a given income. Of course. Part of the problem is that if companies hire on the basis of course completion certificates rather than on the basis of demonstrated competence, they will miss out on good workers, and yet hire some lousy workers, and thus be reluctant to offer competitive starting wages. (It's expensive to hire a worker who can't do the job, and it's also expensive to let go workers who don't learn on the job and to hire their replacements.)

In what I think has become my best-liked comment on HN, I've collected references other participants here helped me find about company hiring procedures. Companies need to hire on the basis of actually being able to do the job, not on the basis of what classes workers have attended. The review article by Frank L. Schmidt and John E. Hunter, "The Validity and Utility of Selection Models in Personnel Psychology: Practical and Theoretical Implications of 85 Years of Research Findings," Psychological Bulletin, Vol. 124, No. 2, 262-274

[http://mavweb.mnsu.edu/howard/Schmidt%20and%20Hunter%201998%...](http://mavweb.mnsu.edu/howard/Schmidt%20and%20Hunter%201998%20Validity%20and%20Utility%20Psychological%20Bulletin.pdf)

sums up, current to 1998, a meta-analysis of much of the HUGE peer-reviewed professional literature on the industrial and organizational psychology devoted to business hiring procedures. There are many kinds of hiring criteria, such as in-person interviews, telephone interviews, resume reviews for job experience, checks for academic credentials, personality tests, and so on. There is much published study research on how job applicants perform after they are hired in a wide variety of occupations.

[http://www.siop.org/workplace/employment%20testing/testtypes...](http://www.siop.org/workplace/employment%20testing/testtypes.aspx)

EXECUTIVE SUMMARY: If you are hiring for any kind of job in the United States, prefer a work-sample test as your hiring procedure. If you are hiring in most other parts of the world, use a work-sample test in combination with a general mental ability test.

The overall summary of the industrial psychology research in reliable secondary sources is that two kinds of job screening procedures work reasonably well. One is a general mental ability (GMA) test (an IQ-like test, such as the Wonderlic personnel screening test). Another is a work-sample test, where the applicant does an actual task or group of tasks like what the applicant will do on the job if hired. (But the calculated validity of each of the two best kinds of procedures, standing alone, is only 0.54 for work sample tests and 0.51 for general mental ability tests.) Each of these kinds of tests has about the same validity in screening applicants for jobs, with the general mental ability test better predicting success for applicants who will be trained into a new job. Neither is perfect (both miss some good performers on the job, and select some bad performers on the job), but both are better than any other single-factor hiring procedure that has been tested in rigorous research, across a wide variety of occupations. So if you are hiring for your company, it's a good idea to think about how to build a work-sample test into all of your hiring processes. If the job you are hiring for involves use of a computer-controlled machine tool, have the candidate put the machine to use making sample parts (advertise the job in a way that makes clear a work-sample test is required, to screen out people who have no clue how to operate such machines). Hire the able, and pay them what they are worth.

Ask yourself about any hiring process you have ever been in, as boss or as applicant: did the applicant have to do a work-sample test based on actual work results expected in the company? Why not?

<comment><USER30> >If you are hiring for any kind of job in the United States, prefer a work- sample test as your hiring procedure. If you are hiring in most other parts of the world, use a work-sample test in combination with a general mental ability test.

Why would you use a mental ability test outside of the US, but not in the US? Is it illegal in the US or something?

<comment><USER31> Yes, using a general mental ability test (IQ type test) in hiring is illegal in the USA. Some protected groups do worse on average on such tests.

<http://en.wikipedia.org/wiki/Griggs_v._Duke_Power_Co.#>

<http://en.wikipedia.org/wiki/Civil_Rights_Act_of_1991>

<comment><USER32> > Some protected groups do worse on average on such tests.

Are those the same protected groups which tend to not have degrees or other certifications? Because "ban the IQ test, ask for a degree" might have a similar effect.

</comment></comment></comment></comment><comment><USER33> This is the transition between manufacturing as a blue collar occupation and manufacturing as a white collar occupation.

</comment><comment><USER34> The name of the article is misleading. It is all about the greedy fat cats that want mice to go to the mousetrap, but moaning about high prices for cheese, so they are unable to charge the mousetrap properly. Good for mice, bad for cats.

</comment><comment><USER35> I wonder what kind of skills are lacking. Claims of deficiencies are qualitative.

For example, how much math does somebody need to know for this kind of job? Is it trigonometry to find hypotenuses? Are they writing programs or entering in data to notepad?

This is an important distinction because we need to compare these skills to those of a shift manager at McDonald.

For example, at a hotel the shift manager must supervise the employees, handle money, and keep journal entries. The later two involve rudimentary mathematics and computer skills. There is a good chance that this is a fair wage when compared to similar jobs.

<comment><USER36> From my experience of college level instrumentation design, if one want to design parts and run CNC to its full potential, he/she should be decently proficient in curve drawing, understanding gear design, etc, and the math required for it can be quite involved. This is after you know the broad design detail. Some difficult things involve how to best approximate a curve on given CNC constraints, figuring out best fit for parts, etc; and then write appropriate programs for it. IMO, there are only a very few people who would have skill set like these, but not enough to move on to higher level engineering jobs.

Although, a lot of this thing is getting automated, and there is a huge push towards figuring out how you can feed a CAD design directly to CNC and let it figure out best way to implement it.

PS: I cannot expect that you can ever hire enough good people in this category for $10 an hour. They would probably be writing VB scripts and earning more money. Working in a fast food chain would be totally a waste of potential of decently skilled workers.

</comment></comment><comment><USER37> _...highly skilled manufacturing jobs — the ones that require people who know how to run the computer that runs the machine._ \--

Thinking meta for a moment here: How far does this concept go of machine process. Could we program machines that can run the computers that run the machines? And how about machines that program those machines?

One of my favorite Twilight Zone episodes : <http://en.wikipedia.org/wiki/The_Brain_Center_at_Whipple%27s>

<comment><USER38> No we can't. I base that on being a software architect who sat through endless useless _marketing_ meetings from IBM & their ilk promising the imminent advent of _Doodleware_ (have a business person with domain knowledge & no technical skills draw a process on this monkey-easy UI tool & we'll generate a working application from it.)

I maintain that being a programmer will still be a highly paid skill in demand for decades to come for one simple reason : You can't bullshit a computer. You can't sweet-talk a machine into accepting your algorithm because of your great personality , looks or any other intangible except for knowing what you're doing. if you want a parallel, look no further than the sorry state of machine translation & that despite the enormous amounts of datasets they've been playing with. Human intelligence & judgement, even on a very very narrowed use case is not something computers are close to replicate.

<comment><USER39> I dunno. Perl does a pretty good job of "do what I mean" style programming. Sure, not every hard problem can be solved automatically, but a lot of tasks can be accomplished by a short script or banging keywords into Google, etc.

<comment><USER38> You still need to _tell_ Perl your intent, laid out in a very specific way. by the time you're ready to write your code, you've already solved 99.9999 % of the problem at hand. you're severely underestimating your smarts.

</comment></comment></comment></comment><comment><USER40> When applying for programmers I'll refuse to hand in a résumé without being able to demonstrate my skills and provide sample work first.

The hiring process that most companies use is backwards, and I think mostly due to people that go to school to learn HR and taught this impractical approach.

</comment><comment><USER41> Companies are simply offering wages that are comparable to some worker in China would get. It only makes sense in a flat world. Question is: do we want that?

In the IT industry, specially IT support and break-fix development the same thing happens. Local people don't want to accept low salaries? Let's look what India or the Philippines are charging. Problem solved.

</comment><comment><USER42> I read about this so often, that I can't think anymore that the problem really is the low pay for high skilled jobs. There must be a reason why in so many countries for so many years nobody increases their hourly rates and hopes to get well educated people for the current rates.</comment>


Stop hyping Twitter - <AUTHOR> http://jacquesmattheij.com/content/twitter-hype

<comment><USER2> First step; stop writing blog posts about Twitter.</comment>


What is your most productive shortcut with Vim? - <AUTHOR> http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118/ <comment><USER3> Not necessarily in line with what the SO question is asking for, but this is by far the best thing I have ever added to my .vimrc:

      " make space execute the 'q' macro (press qq to start recording, q to stop,
      "       then [space] to execute.  super convenient)
      noremap <Space> @q

This streamlines making and executing macros to such a degree that I'll often do that instead of merely making 3 or 4 complex series of edits manually. You just perform the edit once, then get in a few satisfying "thwocks" on the spacebar.

 _(Note that to effectively create macros on the fly, you need to have a firm grasp on vi "as an editing language". If you are merely moving around with hjkl and otherwise treating it like nano, you aren't going to get much mileage out of this unless everything you are working on has the same number of lines.)_

<comment><USER4> Learning muscle memory for nonstandard mappings is a bad idea. I used "jk" as an escape for a long time. It's nicer than using esc, but no other program that has vim emulation supports mappings like that.

Also, you can do <num>@q (e.g. 4@q) anyways, and @@ to repeat a macro, so that isn't that useful of a remapping anyways.

<comment><USER5> Eh, I disagree. First, vim emulation is horrific -- absolutely horrific. With the exception of ViEmu, and possibly the new Emacs one (haven't had the chance to try it), there's not a single good Vim emulator. Second, @@ is two keystrokes, and it's incredibly annoying to type @@n@@n@@n@@n@@n@@n in order to invoke the macro 6 times. " n n n n n n" is much easier.

<comment><USER4> What do you mean by "n"? Moving to the next position in a search? You can structure a macro to end with going to the position of next edit. Then you can hit 100@@ or whatever and do all of the edits in one go.

<comment><USER5> Most of the time you want to individually review each instance of what the macro is doing before invoking it, so 100@@ is rarely used. (At least by me.)

</comment></comment></comment></comment></comment><comment><USER6> I suppose I don't use enough of Vim's namesake improvements; I don't know if I have ever found myself using anything outside of standard vi functionality.

That being said, I do feel gimped in other editors without vi(m) commands. Most editors do have vim modes, but it doesn't quite feel the same.

<comment><USER7> It doesn't "feel the same" because it (almost always) isn't--at all. Editors with "vim" modes generally boil down to "you can enable vim-like keyboard shortcuts for the thing that this editor can do." The key problem is that the power of vim isn't the keybindings; it's the grammar system to which those bindings apply. Other editors lack vim's text objects and, as such, the "nouns and verbs" metaphors can't really apply.

Really learning to use vim effectively involves learning to think about text differently. It's about training your mind to think in terms of text objects and exploring the various ways to manipulate those objects.

The truth is that "vim mode" generally boils down to using h,j,k,l in lieu of arrow keys and a token nod to the idea of normal mode vs. command mode.

But, honestly, that's ok. Vim exists--why do I need another editor to behave like vim?

<comment><USER8> Fun fact: most of the commands in Sublime's vintage mode are direct API calls. Sublime's text-manipulation engine is more powerful than what is exposed to the user via the usual Ctrl+Alt+Shift+key combos and its WIMP UI and activating vintage mode is the only way to use all of that power.

</comment></comment></comment><comment><USER8> Search/replace the word under the cursor in the current paragraph (for <leader>r) or the whole buffer (for <leader>R). Beats the crap out of "multiple cursors" in the typical "change a variable name" example:

        nnoremap ,r :'{,'}s/\<<C-r>=expand('<cword>')<CR>\>/
        nnoremap ,R :%s/\<<C-r>=expand('<cword>')<CR>\>/

Another approach of the typical "multiple cursors" example, using the beautiful gn command. Hit ,x to "change" the word under the cursor then <Esc> and repeat for the next occurrences with the dot (or n to skip):

        nnoremap ,x *``cgn
        nnoremap ,X #``cgN

Move to next and previous quickfix error:

        nnoremap <End>  :cnext<CR>zv
        nnoremap <Home> :cprevious<CR>zv

Traverse the buffer list effortlessly:

        nnoremap <PageUp>   :bp<CR>
        nnoremap <PageDown> :bn<CR>

In my lightweight "noplugin" vimrc (used on remote machines) I have these as well:

        set wildcharm=<C-z>
        set path=.,**

        " juggling with files
        nnoremap ,f :find<Space>
        nnoremap ,s :sfind<Space>
        nnoremap ,v :vert sfind<Space>

        " juggling with buffers
        nnoremap ,b :buffer <C-z>

       " juggling with tags
       nnoremap ,t :tjump /
       nnoremap ,p :ptjump /

Beside all those custom mappings, macros, Ex commands, motions, text-object and in general the whole "grammar" that ties everything are killer features.

</comment><comment><USER9> Is there a reason why a simple visual editor such as notepad++ cannot be used via the terminal (e.g., for Linux administration)? I'm trying to do some LAMP related server administration using vi and I cannot believe how many weird commands one has to learn to do simple text editor functions. It's also probably a hugely intimidating factor that prevents more newbies from moving to Linux.

<comment><USER7> To do absolutely basic text editing, you really don't need to learn much at all:

i - enter insert mode. ESC - leave insert mode. ZZ - save and quit :q! - <USER2> without saving.

Since, in insert mode, vim basically behaves like a simple notepad, that's really all you need.

FYI, if you want a "simple," notepad like editor for console on linux, check out nano.

[http://www.nano-editor.org](http://www.nano-editor.org)

<comment><USER10> I think most people would consider copy/paste and undo/redo to be included in "basic" text editing.

<comment><USER9> If the Linux community wants to attract more newbies, they need to come up with an easily "grokked" text editor.

<comment><USER3> There are plenty... nano/pico/joe if you want to work in the terminal _(though who is trying to woo newbies with terminal based text editors?)_ , and gedit/kate/kwrite in the GUI department. The idea that Linux is somehow floundering because only Vi and Emacs exist and those are difficult is absurd.

Perhaps the real question is _do_ we want to attract more newbies? _Why_ do we want to attract newbies? If more non-technical users are the solution to our problems, then why is Android (with their _legions_ of newbies) such an _absolute shitfest_ compared to traditional Linux distros?

</comment></comment></comment></comment></comment><comment><USER4> I feel like this has been posted 100 times on here and /r/programming. Anyways, if you don't know vim, I wouldn't waste your time learning. It is a better way of editing text than chord based editors, but ide's are much nicer tools for development. And if you're using one, there's going to be significant mousing around anyways, and none of emulation modes are that great for the non text editing/navigation stuff.

<comment><USER11> > there's going to be significant mousing around anyways

Which is one of the many reasons why people (including myself) _don 't_ consider IDEs as a nicer tool for the job.

> but ide's are much nicer tools for development

Just because you think they are doesn't mean everyone else does.

<comment><USER4> Don't get me wrong, ide's are terrible, they're just better than anything else we have right now. And I'm someone who has programmed with vim and plugins, bash and friends, etc. for 10+ years, so it's not like I've only used ide's. Writing code can be fine with the more minimalist approach, but ide's are much better for reading and navigating previously written code.

> Just because you think they are doesn't mean everyone else does.

? Of course, it's just my opinion.

<comment><USER11> Here's a friendly piece of advice: distinguish claims that are opinion or personal preference from statements of fact.

This is mundane: "IDEs work much better for me."

This is controversial (and probably silly): "IDEs are the best."

Maybe the intent is obvious, but it wasn't to me and at least one other poster.

</comment></comment></comment></comment><comment><USER12> Most productive due to the sheer frequency of usage:

        inoremap jj <ESC>
        nnoremap ; :
        vnoremap ; :

        " Fix vim's terrible default regexp scheme
        nnoremap / /\v
        vnoremap / /\v
        vnoremap ? ?\v
        nnoremap ? ?\v

        nmap <silent>]c :cnext<CR>
        nmap <silent>[c :cprevious<CR>
        nmap <silent>[C :cfirst<CR>
        nmap <silent>]C :clast<CR>

<comment><USER13> For VIM n00bs, care to explain what these do/why you use them?

<comment><USER8> I'm not the parent but…

Hit jj instead of <Esc> which many people find too far.

        inoremap jj <ESC>

Exchange ; and : because : is used a lot and you need to press Shift (on an american keyboard) while ; is less used and available without a modifier key:

        nnoremap ; :
        vnoremap ; :

\v means "use verymagic mode for the rest of the pattern", normally, you'd have to use a lot of backslashes to escape parentheses and other "spacial" characters but "verymagic" allows you o type less and obtain more readable patterns. Example:

        /f\(oo\)ba\[zr\]
        /\vf(oo)ba[zr]

With these mappings, search-based navigation is a lot less expensive because it use s "verymagic" by default:

        " Fix vim's terrible default regexp scheme
        nnoremap / /\v
        vnoremap / /\v
        vnoremap ? ?\v
        nnoremap ? ?\v

:cnext, :cprevious and friends are quickfix commands: thay allow you to navigate through the errors displayed in the quickfix window without using the window itself. Even in their shortened form (:cn, :cp, :cfir, :cla) they represent a lot of typing and a good occasion to create much more useful mappings:

        nmap <silent>]c :cnext<CR>
        nmap <silent>[c :cprevious<CR>
        nmap <silent>[C :cfirst<CR>
        nmap <silent>]C :clast<CR>

nmap means "normal mode mapping".

nnoremap means "non-recursive normal mode mapping", see learnvimscriptthehardway.stevelosh.com/chapters/05.html#nonrecursive-mapping

vnoremap means "non-recursive visual and select mode mapping", it should be xnoremap (visual mode only).

<silent> means "don't print the executed command".

<comment><USER12> Thank you, didn't see the question to reply in time.

</comment></comment></comment></comment><comment><USER14> I continue to be annoyed by the growing popularity of the word "grok". It is synonymous with well understood (ha.) words, but for some reasons, techies and sci-fi junkies seem to prefer a word only they know.

<comment><USER15> Have you read "Stranger in a Strange Land"? The word originates there, and has a more nuanced meaning than just "understand". The book is strange and interesting. I didn't pick it up until I'd read (and enjoyed) other of Heinlein's stuff, and after I'd read about the word in the Jargon File. I had always thought of it as a synonym of "understand", when in reality it is more like a superset. As a nerd and an appreciator of language, I am very glad that I read the book and understand the word better, as it really is an interesting idea.

It's as big of a difference as speaking German with an accent is from being fluent (along with thinking and dreaming in the language). Understanding "grok" is like understanding the German concept of "friend"-vs-"acquaintance" and thinking about your own friends in the same way, rather than our American way of "everyone's my friend". (In German culture, most people -- coworkers, teammates, etc -- are not __friends__. They're people you know, and maybe know well, but "friend" is much more similar to an American's concept of a "best friend", or group thereof. (I have about three.)

... none of that explains what "grok" means as well as reading the book. Wikipedia [1] doesn't quite even cover it, but has a good collection of newer uses of it that help.

In the case of this article, "grok" is entirely appropriate. It might even be the best word. As a user, I can figure out commands in vim, I can use a cheat sheet, but until I start thinking about using the tool in a way which fully embraces the tool in the way it was meant to be used (e.g., verbs + marks), I'll always be a poor and dissatisfied user.

1: [http://en.wikipedia.org/wiki/Grok](http://en.wikipedia.org/wiki/Grok)

</comment></comment><comment><USER16> personally my favourite is I mapped 'jk' and 'kj' in insert mode to Esc, to get to the normal mode from insert mode. type 'i' to get into insert mode and then just press my fore finger and ring finger at the same time on the home row, it can register 'jk' or 'kj' and takes me to normal mode.

<comment><USER4> [https://news.ycombinator.com/item?id=6579149](https://news.ycombinator.com/item?id=6579149)

<comment><USER3> If this was actually a problem that pycassa experienced, then I doubt he would have the affinity for the mapping that he obviously does.

</comment></comment></comment><comment><USER17> Without a doubt turning on the following was the biggest win for me and Vim:

      set relativenumber

<comment><USER18> If you're doing that to move vertically, you might want to try vim-sneak[1] instead.

Personally, I disable the line-numbers column altogether (and display the current column:line in the status bar).

[1] [https://github.com/justinmk/vim-sneak/](https://github.com/justinmk/vim- sneak/)

</comment></comment><comment><USER19> Wait, vi does syntax hilighting?

<comment><USER3> Technically no, the standard for Vi says nothing about syntax highlighting. In practice, maybe? The 'Elvis' implementation of Vi adds syntax highlighting for instance.

</comment></comment><comment><USER9> Computer nerds showing off. The question asker's concern is valid. It's a very difficult process to become properly speedy at using vi. There's a huge cognitive cost involved in memorizing all those keyboard commands.

<comment><USER20> If you're a programmer you have lots of time and motivation to learn your tools. Even IDE users learn the hotkeys, and they're no easier to learn than vim commands.

<comment><USER15> I think they are easier for most people. We've been conditioned to using C-C, C-X, C-V, etc for editing, with C-arrow for faster movement, etc, from apps like Word for many years, so that is already relatively familiar. So, learning editor shortcuts are often just layered on top of that.

In contrast, using emacs (which I have likely outed myself as a user of, via my above notation ;)) or vi require you to be more mindful (at first) of what you are doing while editing text. Both tools are likely to be frustrating if you don't think of things in a way that matches the worldview that each was built with.

<comment><USER20> If I'm not mistaken, C-C, C-X, C-V came from windows, or maybe DOS. A lot of Unix editors are older than that, so you can't blame them for not using those.

To be a programmer, you have to learn a programming language. Learning an editor is easier than that. A lot of programmers probably don't invest the time to learn an editor, but it not much time in the long run, and it's worth learning your tools.</comment></comment></comment></comment>


Show HN: File Upload Hacking Challenges - <AUTHOR> https://github.com/breakthenet/file-upload-exercises <comment><USER2> PHP's file-based layout is one of the biggest mistakes in web security I can imagine, coupled with the lack of a built in secure file upload functions. I've seen so many websites coded with checks like "if .jpeg in filename", which is easily bypassed. Then once the file is up there you just have to navigate to it and BAM, you have RCE and a shell. Ridiculous.

</comment><comment><USER3> I remember messing around with hack this site a long time ago. This looks like it will be a valuable lesson for all of the php devs out there who don't handle files often.</comment>


Efficient Recursive Fibonacci - <AUTHOR> A thought I wanted to share:
As a programming beginner you often get in touch with fibonacci to explain recursion:

  def fib1(n: Int): Int = {
    if (n <= 1) n
    else fib1(n - 1) + fib1(n - 2)
  }

 And then you get told that this is simple but very inefficient. You see an efficient loop implementation afterwards and agree.
I think that this could give the impression to a lot of beginners that recursion is inefficient in general (it was like that for me). So recently I thought of an efficient and simple tail-recursive fibonacci implementation and came up with this one:

  def fib2(n: Int, a: Int = 0, b: Int = 1): Int = {
    if (n == 0) a
    else fib2(n - 1, b, b + a)
  }
 I think this is simple enough as well and could help to introduce recursion to beginners without the wrong impressions.
(The examples are written in Scala and can be tested online here: https://scastie.scala-lang.org/iushI0EXSHy51MPXsFZOUQ. If you don't know the formula of Moivre/Binet, this is interesting as well: https://en.wikipedia.org/wiki/Fibonacci_number#Closed-form_expression) <comment><USER2> The tail-recursive form is more efficient, but requires a lot more understanding of the problem to follow how one gets from the mathematical definition to the code.

If you're teaching a language that emphasizes tail-call optimization, it's valuable to cover an even simpler case like factorial in detail. A function like "fib2" above is then a further demonstration of how to transform code into tail-call form.

</comment><comment><USER3> > And then you get told that this is simple but very inefficient. You see an > efficient loop implementation afterwards and agree.

And then you're shown that a function can return a tuple.

      -module(fib).
      -export([fib/1]).

      fib(N) ->
        {A, _} = fib2(N),
        A.

      fib2(1) ->
        {1, 0};
      fib2(N) ->
        {A, B} = fib2(N - 1),
        {A + B, A}.

</comment><comment><USER4> Computing Fibonacci numbers using only addition is very slow. Here's a much faster algorithm that uses multiplication:

        fibonacci n = fst (fib n) where
          fib 0 = (0, 1)
          fib n = if even n then (c, d) else (d, c + d) where
            (a, b) = fib (div n 2)
            (c, d) = (a * (b * 2 - a), a * a + b * b)

<comment><AUTHOR> Interesting, thank you for sharing. Though my main concern was more about introduction to recursion without an exponential algorithm.</comment></comment>


Microsoft: No GPLv3 Software for Windows Phone and Xbox Apps. - <AUTHOR> http://jan.wildeboer.net/2011/02/microsoft-absolutely-no-free-software-for-windows-phone-and-xbox-apps/ <comment><USER2> They aren't prohibiting "Free Software", they are prohibiting software that is under a license that requires the distributor to pass certain rights along to the recipient.

Hence GPL like licenses that require distribution of source code, and that you grant redistribution rights to everyone you distribute it to are being explicitly prohibited. (And in fairness I can see why those licenses would cause problems for Microsoft as distributors)

On the other hand BSD like licenses that allow you to repackage and distribute without source and without passing rights forward are acceptable.

<comment><USER3> Exactly. Also GPL style licenses are a virus that while they promote freedom, in reality they take it away. It assumes that people are naturally untrustworthy and thus forces them to act in a way the creators of GPL see as the right way. Because of how the GPL licenses are worded, especially insane versions like the AGPL, everything they touch may be affected negatively. MIT and BSD style licenses on the other hand assume the best in people, and gives them the real freedom to do with code whatever they want.

<comment><USER4> You're probably just trolling, but it needs to be said every time: The freedom that the GPL takes away is the freedom to bring down the system. It keeps people in check and prevents corruption. If you enjoy the freedoms of MIT and BSD style licenses - why do you complain about the GPL? It seems that it only takes "freedoms" away that you don't appear to be interested in anyways?

<comment><USER5> Because freedom also means freedom to use my code and keep it to yourself if you want to. There isn't any corruption in that. Tons of software here are using bsd/mit licensed code and not releasing their change, that has nothing to do with corruption (or you don't understand what corruption is, go read a definition).

Using the GPL means you're free to use my code ... As long as the result is under gpl too. You lose your freedom to chose a license. You lose your freedom to keep changes to yourself if you release the resulting binary (why ? because you want to). You lose your freedom to use other piece of code that are not gpl compatible.

I have nothing against the gpl and I use tons of software using it, but it is a fact that it cuts down some of your freedoms compared to other licenses.

<comment><USER6> The GPL does _NOT_ prevent redistribution, please don't spread more incorrect information. It prevents _redistribution without redistribution of source_. You're still free to get GPL code, change it yourself, and never release it again.

Licenses like the AGPL were created in part because of this problem; some folks think that, morally speaking, code running on a server behaves like distributed code, and should be available. But for example: you're absolutely allowed to take GPL code, change it yourself, keep the source private, and run a web 2.0 business on top of that source code.

<comment><USER5> Where in my message did I say it prevented redistribution ? Can you quote the sentence that made you understand that ? (this is a serious question)

It's not what I meant, and I don't thing it's what I've written either. If anything, it actually forces redistribution in case some might not want to (when you release a binary but want the sources to remain yours).

</comment></comment></comment></comment></comment></comment><comment><USER7> They're only preventing GPLv3 (and its ilk). There's a reason they mention GPLv3 and not GPLv2.

GPLv2 just requires the sharing of source code for a given binary. GPLv3 takes it a lot farther and requires that a mechanism also be provided to use derivative works. So if a car manufacturer uses GPLv3 code, they not only have to distribute the source code (which may or not be an issue), they also have to allow people to flash their own code onto the car's embedded computers.

This problem stemmed from TiVo, they used GPL code on their set-tops but signed their binaries. People could make derivative works, but couldn't use them.

In the embedded space, you can imagine that GPLv3 is very much hated. It's a big reason why a lot of projects haven't switched to v3.

<comment><USER8> You are the first to actually hit that point, and I believe rightly so. I don't see how you could actually comply with V3 and release your software on any of these stores. The obtaining of a developer signing key is not free, and there is no guarantee that the derived work would actually be accepted.

<comment><USER9> I _think_ you could on the Android store. Android phones have a setting to "allow installation from non-Market sources", which means there is no restriction on distribution.

</comment></comment></comment><comment><USER10> Looks like they're trying to preempt the whole "can you distribute GPLed programs via the app store" problem that Apple's been facing.

<comment><USER11> So it's the same as Apple then. "Can you distribute GPL?" "No."

<comment><USER12> Actually, it's better than Apple. Apple will let you distribute GPL'd applications until a takedown notice is issued even though doing so is illegal; Microsoft is clear about it up-front.

</comment></comment></comment><comment><USER13> It's a pragmatic choice by Microsoft, but I'm amazed by their ability to piss off developers almost every time they make a decision.

<comment><USER14> Wouldn't this be more accurately described as the choice of the Free Software Foundation, rather than Microsoft? The major feature of GPL3 was to prevent use in these type of "tivoized" applications.

Seems that Microsoft is taking heat for respecting the wishes of the GPL. Talk about a can't win situation.

<comment><USER15> Well, one who thinks that the GPL's wishes are a good idea could certainly feel that they deserve heat for being what the GPL was meant to prevent in the first place. But, that's no comfort to less ideologically zealous developers who want to use a [AL]GPL-licensed library they're used to using and can't.

</comment></comment></comment><comment><USER16> If they distribute GPL software aren't they also responsible for making the source available. Why would they want to open themselves to that headache?

<comment><USER17> If the free linuxes can do it, im sure MS can handle it. It's not much of a hassle to add an extra menu item.

I think the real problem is unlocking & GPLv3. MS was never GPL friendly either.

</comment></comment><comment><USER18> The license in question forbids GPLv3 by name. It does not appear to forbid the BSD, MIT, and similar permissive licenses.

<comment><USER19> Well, it is quite clear that the "share alike" clause is the bone of contention here: _""Excluded License" means any license requiring, as a condition of use [...] that the software or other software combined and/or distributed with it be (i) disclosed or distributed in source code form (ii) licensed for the purpose of making derivative works; or (iii) redistributable at no charge."_

<comment><USER20> So, BSD, MIT, Apache, and similar are OK.

</comment></comment></comment><comment><USER21> I don't want my platform to restrict what software I can run, especially not based on license. Is there any mobile platform these days that doesn't try to be your nanny as well?

<comment><USER22> You haven't cracked root on your Android phone yet?

<comment><USER21> I know it's possible to crack firmwares to get around any restrictions. But I think it's silly to have to hack your own device to have control of it. I'd prefer a platform in which that is the default...

<comment><USER22> 1) Google Nexus phones do come with this as the default.

2) For many Android devices (kit from MOT excepted), the hacks are pretty trivial. I suspect the protections on HTC phones are more of a "Warranty void if removed" sticker than something to really bar you from gaining root.

</comment></comment></comment></comment><comment><USER23> There is no issue here, only fear-mongering. To me it seems like a pragmatic choice.

I'm not sure if the perception of Microsoft will ever change in the eyes of developers.

</comment><comment><USER24> Microsoft's strategy is to build/own the platform and then add value to the platform by harvesting what is on top (buying software/copying ideas etc). From a game-theoretic view point, GPL is a strategy that works well vs harvesting and should be kept 'on the table'. For more on this and Microsoft read: [http://www.amazon.com/Keystone-Advantage-Ecosystems- Innovati...](http://www.amazon.com/Keystone-Advantage-Ecosystems-Innovation- Sustainability/dp/1591393078/ref=sr_1_fkmr2_1?ie=UTF8&qid=1297874874&sr=1-1-fkmr2)

</comment><comment><USER25> I think they are trying to prevent people from redistributing others source. Like what occurred with Lugaru HD.

</comment><comment><USER26> AFAIK the Wii and PS3 have similar terms (although there's no uproar because the terms themselves are secret). I get the impression that console APIs are generally NDAd and so releasing the source of a console game would indirectly expose the APIs.

</comment><comment><USER27> Where did my DB server go?

</comment><comment><USER28> Does warranty come into this at all? There are terms in a lot of Free Software licenses that remove the obligation to provide support, accept liability for the product or even to guarantee its fitness for purpose.

It seems to me that these aspects introduce a gap in the level of support Microsoft can offer for a product distributed on its platform since it doesn't necessarily have a way to delegate responsibility back up the chain.

<comment> mkr-hn I think that's standard for both EULAs and free software licenses.

<comment><USER28> Thanks, maybe I should read a EULA sometime. ;-)

<comment> mkr-hn Read one, and you've read most of the rest. I've thought about reading one carefully, making notes, and running a diff on new ones.

Saves time and avoids risk.

</comment></comment></comment></comment><comment><USER29> as long as they don't require all software to come from the marketplace (a la apple), i have no problem with that.

<comment><USER30> As best as I can tell, they are requiring everything to come from Windows Marketplace. Developers can side load up to 10 applications on their phone, but it seems Microsoft even borrowed Apple's $99 yearly developer fee model.

Developer side loading: [http://msdn.microsoft.com/en- us/library/ff769512(v=VS.92).as...](http://msdn.microsoft.com/en- us/library/ff769512\(v=VS.92\).aspx)

$99 Annual fee: <http://create.msdn.com/en-us/home/membership>

<comment><USER29> that's sad. they might make some money in the short term, but i think they'll bleed mindshare in the long term. of course, it might work out the other way, where developers flock to them the way they did to the apple store, because there's a chance they'll make more money that way.

</comment></comment></comment><comment><USER31> This is amusing in the light of Microsoft's attempts in recent years to cosy up to open source and pretend that they're embracing it via Codeplex, Mono, MPL, etc. I think this shows what their true values are.

<comment><USER32> I think the Microsoft hydra is too large to have any single set of core values anymore. Every project is pulling in a different direction.

</comment></comment><comment><USER33> I can see a certain competitor rubbing their hands in glee that an entire class of applications will be unavailable on Windows Phone 7.

<comment><USER34> What "entire class of applications" has a hard dependency on GPLv3? Emacses?

</comment></comment><comment><USER35> It seems that the site is down

</comment><comment><USER36> Doesn't the Apple App Store have the same problem?

The only difference being that Microsoft actually mentions the GPL explicitly.

<comment><USER37> This actually has been an issue for the App Store recently, primarily concerning VLC. See [http://www.zdnet.com/blog/open-source/no-gpl-apps-for- apples...](http://www.zdnet.com/blog/open-source/no-gpl-apps-for-apples-app- store/8046)

</comment></comment><comment><USER38> They don't want to put in place the infrastructure to distribute source code, nor do they want the legal requirements to do so. Thus GPLv3 prevents Microsoft from exercising its freedom to not put in place a source code distribution system that will appeal to exactly none of its customers.</comment>