Esperanto: the language that never was - <AUTHOR> http://www.prospectmagazine.co.uk/features/the-language-that-never-was-esperanto-languages <comment><USER2> To what extent are many languages today "artificial"? Modern Hebrew was resurrected from a language unspoken for millennia outside of religious services and given an up-to-date vocabulary. Shakespeare and Elias Lonnrot invented thousands of everyday words used today in English and Finnish respectively. Standard German and Italian are products of their unification/nationalist movements, supplanting old regional dialects, as is the Greek _Katharevousa_ (official language until 1976).

Esperanto and other conlangs are more an extreme case, but there's surprisingly little that's "natural" about the "natural" languages either.

<comment><USER3> Most standardised languages are sorts of conlangs. I can be a testimone for Turkish, where the language was cleared from persian and arabic loanwords by very oppressing revolutionary govt action. So much so that one generation had difficult time talking to grandparents, they say.

<comment><USER4> To add to this, I met someone who claims she cannot read Neitzsche because she doesn't know most of the terms recent Turkish translations use and can't find any older translations.

<comment><USER3> She's right, especially in philosophy, every translator invents his own language, and never care enough to inform the user with a translator's note or whatnot. I had my worst experience till now with translations of Lajos Egri and Schopenhauer. Sometimes it's easier to just learn the original language...

<comment><USER4> This is a little odd but I stalked you a little and think you've made some cool comments. I'm also in Istanbul, would you be down to grab coffee sometime? I would send you an email but your profile doesn't have any contact information.

</comment></comment></comment></comment></comment><comment><USER5> I like the idea around Lojban[0]. Esperanto feels like another standard to replace the 99 others where lojban seems to be more than that. I don't like inconsistency in structured language and there's always glaring inconsistency in natural spoken language. If I learn a linguistic rule that is only applicable in ~70% of cases, its becomes a mental stressor.

However, I'm not certain any secondary language can ever really become a universal language. Until there's direct economic force behind adoption, I see it as a hobby language. I am also not sure any constructed language can remain _pure_ when it becomes popular. Languages, dialects, idioms etc. like to drift between isolated or semi-isolated groups. As communication and transportation become cheaper though, who knows how prevalent that will be in the future.

[0] [https://en.wikipedia.org/wiki/Lojban](https://en.wikipedia.org/wiki/Lojban)

<comment><USER6> Where do you find Esperanto inconsistent?

<comment> iso-8859-1 Esperanto is a compromise since it tries to be familiar AND logical. The word ovaro "collection of eggs" pointlessly duplicates the meaning of nesto "nest".

From: [http://miresperanto.com/konkurentoj/not_my_favourite.htm](http://miresperanto.com/konkurentoj/not_my_favourite.htm)

<comment><USER7> What makes you think 'nest' and 'collection of eggs' are synonyms? True, it's common for a collection of eggs to be found in a nest, but they don't mean the same thing.

</comment></comment></comment></comment><comment><USER8> Esperanto was the first (beyond my native, obviously) language I learned about twenty years ago. What I enjoyed about it then (and still do today, although I've learned a couple of natural languages since) was that I could learn it to a useful level (as in reading novels without a dictionary) in probably a couple of hundred hours. I still haven't managed that in other languages with much more study even in ones where I have reasonable conversational ability.

To use a hacker's analogy, learning a natural language is like learning C++, and learning Esperanto is like learning a scripting language like Ruby or Python.

<comment><USER3> That's mostly about how you study. My approach is sort of Lisp-like, and I become comfortable very early on with a mostly exploratory and immersive process.

</comment></comment><comment><USER9> Interlingua is designed to be understandable by anyone who speaks one of a few common European languages. [https://en.m.wikipedia.org/wiki/Interlingua](https://en.m.wikipedia.org/wiki/Interlingua)

<comment><USER10> There is also Folkspraak which does the same thing but with Germanic languages instead of Latin languages. [https://en.wikipedia.org/wiki/Folkspraak](https://en.wikipedia.org/wiki/Folkspraak)

If you speak English it's pretty easy to get the gist of both.

 _Interlingua_

        Patre nostre, qui es in le celos,
        que tu nomine sia sanctificate;
        que tu regno veni;
        que tu voluntate sia facite
        como in le celo, etiam super le terra.

_Folkspraak_

        Ons Fater, whem leven in der Himmel,
        Mai din Name werden helig,
        Mai din Konigdom kommen,
        Mai din will werden,
        in der Erd und in der Himmel.

<comment><USER11> I recommend Arika Orkent's "In the land of invented languages" for people who are interested in the history of invented languages. Esperanto is still the only which is in any sort of regular use, though.

<comment><USER12> Klingon now has more speakers than Esperanto, no?

<comment><USER13> Esperanto has way way more speakers than Klingon.

"Arika Okrent guessed in her book _In the Land of Invented Languages_ that there might be 20–30 fluent [Klingon] speakers."[1]

"In 2009 Lu Wunsch-Rolshoven used 2001 year census data from Hungary and Lithuania as a base for an estimate, resulting in approximately 160,000 to 300,000 to speak [Esperanto] actively or fluently throughout the world, with about 80,000 to 150,000 of these being in the European Union."[2]

"As of 1996, there were 350 or so attested cases of families with native Esperanto speakers. Estimates from associations indicate that there are currently around 1,000 Esperanto-speaking families, involving perhaps 2,000 children. In all known cases, speakers are natively bilingual, or multilingual, raised in both Esperanto and either the local national language or the native language of their parents."[3]

[1]: [https://en.wikipedia.org/wiki/Klingon_language#Speakers](https://en.wikipedia.org/wiki/Klingon_language#Speakers)

[2]: [https://en.wikipedia.org/wiki/Esperanto#Number_of_speakers](https://en.wikipedia.org/wiki/Esperanto#Number_of_speakers)

[3]: [https://en.wikipedia.org/wiki/Native_Esperanto_speakers](https://en.wikipedia.org/wiki/Native_Esperanto_speakers)

</comment></comment></comment></comment></comment><comment><USER14> Studies have shown Esperanto is a useful aide for teaching languages. For example, teach students Esperanto for 1 year and French for 3 years, and they end up speaking French better than the group who just learned French for 4 years. Learning one language makes learning other languages easier, and as a constructed language, Esperanto is very regular and thus easy to learn.

See: [https://en.m.wikipedia.org/wiki/Propaedeutic_value_of_Espera...](https://en.m.wikipedia.org/wiki/Propaedeutic_value_of_Esperanto)

<comment><USER15> That's important because IMHO the most important point in the language debate is that we must become much more efficient language learners.

A part of my experience is that people start with grossly inefficient methods to speak foreign languages. Spend way too much time. Discard it as too difficult or not worth it.

Another part of my experience is that speaking a foreign languages is actually totally doable. We human beings are naturally skilled at it.

So what about esperanto? (One my languages).

There is still this misconception (also in this comments section) that it had the goal to do to existing languages what the euro did to existing currencies. That would have been silly, fortunately it has been a non-goal from the start.

What makes much more sense is that since it has a much nicer learning curve, young people and monoglots can use it as a testbed to get how to learn a language. Then reach much quicker a level where they can have a casual conversation in that or those other languages they are interested in.

That strategy work actually quite well, but require a non-conformist mind. People have a malthusian approach to language learning and _will_ tell you that you are just being silly.

</comment></comment><comment> yoz-y One big problem I see with many of these artificial languages is that they do not put the ease of pronunciation at the topmost priority. I think it would be interesting to make a study on what sounds can anybody produce. It is also important to study the different subtleties that people perceive as different sounds. For example in my experience the Chinese have a hard time understanding you if you mangle the different tones they use for vowels, however they completely ignore the 'length' of a tone which is very often used to distinguish words in the slavic languages.

<comment><USER16> Esperanto is very easy to pronounce even for Chinese

<comment> yoz-y But is it for Japanese? In general I think that an artificial language should never put two consonants together.

<comment><USER16> I only have second-hand accounts from proselytes, and they say esperanto is nowhere as bad as English for Chinese, Japanese and Koreans. Just google around if you want to read from them. English is so difficult to pronounce correctly than my prior is to believe them.

<comment><USER17> One infamous example being the consonant car crash that is 'strengths'.

</comment></comment></comment></comment></comment><comment><USER18> Esperanto's underlying desire for language simplification is still worth keeping in mind. Perhaps a standardized, simplified, "minimum viable _English_ " could be identified _and declared to be socially acceptable_ "because we say so." Non-native speakers might find such an MVE to be easier to learn and more comfortable to use.

The easy part would be to develop a set of tweaks to the more-arcane grammatical- and spelling rules of English, using crowd-sourced suggestions. For example --- and as a language purist it pains me deeply to say this:

\+ Allow _they_ and _their_ (and even _there_ ) to be used as singular generic pronouns; so, for example, _Any student can learn to speak English if they put there mind to it._

\+ Allow _there_ to be used as a possessive (vice _their_ ).

\+ Allow consistent apostrophes for possessives; so, for example, _The spread of English is hindered by some of it 's fussy rules_ (which in currently- standard usage is incorrect).

This might be a useful project for someone working in linguistics: Collect and organize real-world examples of how people actually use English in non- standard ways, then _propose a subset of those examples as MVE._

The hard part would be convincing the world that it's just as socially acceptable to speak and write MVE as it is to speak and write "standard" English.

<comment><USER19> Similar work has been done. [https://en.wikipedia.org/wiki/Basic_English](https://en.wikipedia.org/wiki/Basic_English)

<comment><USER11> A common accusation against Esperanto is that a lot of the complexity it takes away from grammar, it sneaks back in the form of idioms - but that's nothing to Basic English.

</comment></comment></comment><comment><USER20> The only flaw with Esperanto is that it is a language. Languages hate staying still unless they're dead. I say this as someone who spent several months studying Esperanto and holding a few conversations. :) I treated it more as a "springboard" to language learning. Learning a second language is tough - learning a third language less so! So picking an easy second language, I found, helped speed up language acquisition (which was my goal).

Languages naturally change over time as the population invents slangs and irregulars, typically out of laziness. Certain vowels will be mixed or slurred, parts of words might change entirely, etc.

Even if Esperanto was taught to every individual as a second language - various regions would invent their own slangs based on the "native language of the region". Borrowing loanwords from their parent language and creating various dialects of Esperanto that may or may not be understandable with other dialects to varying degrees.

I highly recommend learning Esperanto to anyone interested in learning a second language - to use it as a springboard to your third.

</comment><comment><USER21> Ithkuil is my favorite conlang, it has an amazing amount of depth that can be presented in surprisingly few syllables. It was designed to be a sort of uber- language. Have the most amount of information in the least number of syllables while allowing absolutely no ambiguity. It also attempts to be somewhat tailored to map to how we naturally think about concepts, and a lot of information you have to get from context in languages like English are made explicit in the grammatical forms of the language. I think the grammar of it is really something special, however, it was never designed to be either learnable or really even speakable, which is a shame. I think given the right overcoat the grammar could form the base of a surprisingly usable language.

</comment><comment><USER22> Esperanto's design may have been a good idea 100 years ago. But its design is too shortsighted for this modern world. All it solves is spelling and pronunciation problems, when it could do so much more.

<comment><USER6> Not quite. It also has a very regular grammar, handles regular composition of words (skribmaŝino, bovido, ...), regular formation of words like [nowhere, someone, whatever], simplifies the formation of verb tenses (also handling things like the future of the past which do not exist in other languages), has a choice of roots that makes it familiar for people knowing any indoeuropean language, and more

</comment></comment><comment><USER23> It's a wonderful and practical idea to try and standardize language, albeit a naive one.

IMO it's pointless to try and debate the design of esperanto, or any other forced language. Because it's just that, it's forced. I just don't believe you can force a language on people.

Languages are as naturally ocurring as anything else in nature. They evolve organically. If we were hypothetically able to force esperanto on a part of the populace then that very same populace would evolve the language and the wordlists would be rewritten by the people introducing new words.

<comment><USER24> > I just don't believe you can force a language on people.

Forcing English on large parts of the world seems to have worked very well. ;)

<comment><USER25> Only for the native english speakers. Others we must do a tremendous effort. Even worse, in a discussion —because you are not native— you feel always weaker. So my point will be for a non natural language. Easy to learn for everybody so we all play with the same rules.

[EDIT] The idea is not to replace natural languages, but to pick an extra non- natural language as an international one

<comment><USER26> As a non-native English speaker I think this is a horrible idea. So rather than for us to all communicate in English which is spoken natively by around half a billion, you'd rather international communication take place in a language nobody speaks natively?

That seems like a horrible idea. When the lingua franca is some common natively spoken language at least people who can confidently correct you exist.

Having everyone speak a non-native language would just lead to a regression towards the mean, and such a language would be much harder to learn than any existing language because it wouldn't come with a culture. There would be very few books, movies etc. in that language.

<comment><USER25> English is the third most spoken language. There is more people speaking Spanish and almost double speaking Chinese. More or less 1 of every 7 people in the world speaks Chinese. Should we make Chinese the lingua franca? Why is english better? Also, there are more people speaking Spanish than English.

<comment><USER26> One of the inherent fallacies in your initial comment that I didn't address, but which you've brought up here: Nobody makes anything the lingua franca, it's something that happens organically.

I'm sure you're as aware as I am why English is the current lingua franca. It's mostly a historical accident, and it's what we've got.

Whether the lingua franca might be English, Chinese or whatever is unrelated to your initial comment, which is what I was replying to.

There you were proposing that everyone should learn some artificial language for international communication. I think this is a bad idea for the reasons I stated above.

Now instead of defending your argument that we should all use some constructed language you're off on a digression about why English and not Chinese, both of which are natural languages.

<comment><USER25> I'm still defending my argument. And for that reason I'm saying that "English is already spoken by X people" is not argument. And that is the argument I always hear about this topic.

My argument is that to learn and master a natural language will take years —and even with a lot of effort— you will probably not master it. Which makes English an elitist skill. Should the international language be an elitist thing? No, it should not. If your mother tongue is a Germanic one then you will find English quite easy. Otherwise not.

Non natural languages like esperanto are easier to learn and master. In a couple of months you are used to them.

<comment><USER26> I wasn't making any argument for why English _should_ be the lingua franca. In any case all such arguments are academic, it's not like there's going to be some meeting where the lingua franca gets decided.

Let's say that there was such a meeting and "we" all decided that we're going to speak Klingon or whatever as a lingua franca. How do you think that would work? People wouldn't care what the decreed language is, maybe you'd have UN meetings in it, pass laws to teach it in school in lots of nations or something.

It would probably become even more of an elitist skill than just using a language that already has lots of native and non-native speakers already and lots of culture to go along with it, just like Latin was back when we effectively had this sort of arrangement, sans the constructed language.

Finally, if you really haven't heard a better reason for why English became the current dominant language than "it's already spoken by X people, but how come not Chinese and Spanish" you really owe it to yourself to read some of the things that come up when you Google the likes of "history of lingua franca" etc.

<comment><USER25> What makes English an elitist skill is precisely its natural language nature. I hope you had some time to visit europe. All of us get English as a second or third language at school.In european countries were films and tv programs are translated to their own language is not that easy to find common people that can speak English beyond the pretty basic. And this is a reality in countries like Italy, Spain, France or Germany.

In such countries, when you want to learn english —and you do not have a lot of money— your best deal is to travel to UK and get a crappy job so you can learn the language.

If instead of a natural language they got taught a non natural one, they will not need to that, because one of their advantages is that you get them really fast.

<comment><USER26>
        > I hope you had some time to visit europe.

I've lived there my entire life, and not in native English speaking countries. As I said at the start of this thread I'm not a native English speaker.

        > In european countries were films and tv
        > programs are translated to their own language.

This isn't the case in all European countries. I don't think Germany, Italy, Spain etc. are doing themselves any favors by doing this. Not dubbing your movies is the perfect opportunity to teach your population the lingua franca, they're missing out, and it shows in their English skills.

I didn't grow up with dubbed movies, and I think it helped by language skills immensely.

        > your best deal is to travel to UK and get a
        > crappy job so you can learn the language.

Plenty of people learn English a near-native level without living in a natively English speaking country. I did, just watch some TV (not dubbed) and read lots of books (not translated).

        > If instead of a natural language they got
        > taught a non natural one.

I guess, maybe, but really this is never going to happen, we might as well fantasize over how easy it would be if we did away with this whole communication via sound waves fad, and just all learned the same sign language instead.

We live in an increasingly globalized world, English is the de-facto world language by sheer inertia. States that don't have it as a native language that aren't teaching their children it at a native level are at a distinct disadvantage.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> I've been trying out different Romance languages, and have heard that learning Esperanto makes learning such languages easier. Does anyone know if that's true or not?

<comment><USER28> Honestly, for your purposes it sounds like learning basic Latin would be a much better choice. Having Latin syntax and vocab in the back of my mind definitely helped when I was learning French and Portuguese (even though my Latin is terrible, just knowing things like verb conjugations helped a lot with seeing the patterns in what initially looked like arbitrary differences between the two languages).

<comment><USER29> Being native in German I found having to learn Latin in school didn't help me in any sense for French, Spanish or Portuguese. If you like Latin, feel free to learn it. But I consider it as a waste of time, in particular if you just want it to learn as a foundation for modern foreign languages.

<comment><USER30> Makes sense to me what you say. People often say that knowing latin is good if you want to study medicine. It's ridiculous. Learning a list of 100 relevant latin root-words would likely achieve as much.

</comment></comment></comment></comment><comment><USER30> Too lazy to check if it's still a thing but iirc way back there used to be shortwave radio programmes in esperanto

<comment><USER31> China Radio International still has daily transmissions on shortwave. I listened to one yesterday night, as it happens.

<comment><USER30> I am impressed by both you and china radio. Are you part of a community of esperanto speakers or is it a solitary pursuit?

<comment><USER31> Listening to languages I'm vaguely familiar with - I also like the BBC in Persian and Hausa - seems to have become part of my evening routine (I work as a technical translator). I learned Esperanto on a whim in uni in the 80s but haven't used it actively ever since.

</comment></comment></comment></comment><comment><USER32> There are two different ways to treat Esperanto, both of which come up in the comments. One way is to take Esperanto seriously as a proposal for a world auxiliary language that people from all over the world can use for intercommunication if they didn't grow up speaking a common native language. This first way of treating Esperanto for discussion immediately runs into practical issues and real-world trade-offs. As the article kindly submitted here for our discussion notes, "Because, of course, the massive, trumpeting, stamping, ear-flapping, blanka elefanto in the room is… English; English; English; the English language; the widespread global adoption thereof." It is already well known that the plurality of daily use of English around the world is use of English as an "interlanguage," communicating among persons who are not all native speakers of English, including millions of conversations a day in English that don't include any native speakers of English.[1] I have personally overheard hundreds of conversations in English in multiple countries among people who didn't grow up speaking English, and English is of course the interlanguage of online discussion sites such as Hacker News. (I have also overheard, and participated in, many hundreds of conversations in Modern Standard Chinese that include no native speakers of that language, as Chinese is my most proficient second language.)

For practical value for a language learner, incentives matter. People respond to incentives in deciding which languages to learn, and how attentive to be to opportunities to learn languages. And more opportunity to learn, with more sound recordings to listen to and more texts to read, makes it easier to learn a language. The pervasiveness of English all over the world makes English an easy language to learn--I'm not kidding. Precisely because hundreds of millions of people use English every day as an "interlanguage," English is quite "fault tolerant," full of social conventions about how to get around people with a beginning command of the language communicating with one another, including officially adopted controlled vocabularies for occupations like seafaring.[2] (Again, Modern Standard Chinese is similar in that poorly pronounced Mandarin Chinese is an actual lingua franca in many parts of southern China.) English-language daily newspapers abound all over the world, English-language videos number in the millions on YouTube, many recorded by second-language speakers of English, and English-language books and advertisements make up the plurality of the world's books and advertisements.

Languages spread around the world mostly by people using them or not for practical purposes. The majority of the settlement of the interior of North America by Europeans was done by Europeans who were not native speakers of English. (For example, both of my maternal grandparents, both of whom were born in Great Plains states, grew up in German-speaking families and had all of their schooling in the German language.) The freedom of the United States included a freedom to speak whatever language people pleased. (Abraham Lincoln funded German-language newspapers to help his presidential campaign, and Theodore Roosevelt campaigned in English, German, and French, the three languages he knew from childhood, in various places in the United States.) English was the customary language of governance in the United States, and still is not official at the federal level, but mostly English won out in the world's third most populous country because it was a common language that immigrants from a variety of places could use to communicate with one another (as happened in my paternal ancestral line). The huge population base of native speakers of English (in the following generations) in the United States who still had family ties to other countries provides English with a great advantage in spreading around the world.

Another way to treat Esperanto is to take it as a hobby, an exploration of the characteristics of a constructed language. Many language hobbyists have explored Esperanto from that point of view,[3] as I have. For a hobby language, the main criterion is fun, and I do not judge anyone else's opinion about what is fun. I don't waste my time in online discussion debating whether coin collection or knitting is a better hobby, for example. To each their own in hobbies.

[1] [https://en.wikipedia.org/wiki/English_language#English_as_a_...](https://en.wikipedia.org/wiki/English_language#English_as_a_global_language)

[2] [https://en.wikipedia.org/wiki/Seaspeak](https://en.wikipedia.org/wiki/Seaspeak)

[3] [http://interlanguages.net/Esp.html](http://interlanguages.net/Esp.html)

[http://miresperanto.com/konkurentoj/not_my_favourite.htm](http://miresperanto.com/konkurentoj/not_my_favourite.htm)

[http://www.zompist.com/kitespo.html](http://www.zompist.com/kitespo.html)

[http://jbr.me.uk/ranto/](http://jbr.me.uk/ranto/)

<comment><USER33> You suggest that the choice is between taking Esperanto seriously as a proposal for a world auxiliary language or take it as a hobby. My experience relates to neither of those. I see Esperanto as a remarkable success story, by far the most successful auxiliary language. It has survived wars and revolutions and economic crises and continues to attract people to learn and speak it. Over 400,000 people have signed up to the Duolingo Esperanto course in the last year. Esperanto works. I've used it in about seventeen countries over recent years. I recommend it to anyone, as a way of making friendly local contacts in other countries. English is not enough! I've made friends around the world through Esperanto that I would never have been able to communicate with otherwise. And then there's the Pasporta Servo, which provides free lodging and local information to Esperanto-speaking travellers in over 90 countries. Over recent years I have had guided tours of Berlin, Douala and Milan in this planned language. I have discussed philosophy with a Slovene poet, humour on television with a Bulgarian TV producer. I've discussed what life was like in East Berlin before the wall came down and in Armenia when it was a Soviet republic, how to cook perfect spaghetti, the advantages and disadvantages of monarchy, and so on. I recommend it as a very practical way to overcome language barriers.

I will never learn more than the basics in Armenian or Slovene or Finnish, but I make use of Esperanto to get to know about the history, economy and the legal systems of countries I visit.

</comment></comment><comment><USER34> Its a pretty cool phenomenom</comment>


Ask HN: Anyone know of a decent startup lawyer? - <AUTHOR>

Hi all,
Does anyone know of a decent startup lawyer in the Bay Area? I'm in NY but moving out west and want to can my current one because all I seem to get are bills and very little council on things that really matter. Happy to have a discussion on the side.
thanks!
OP <comment><USER2> Can't speak to his qualifications, but I know Scott Edward Walker will be stuck in my head from the long time his firm advertised on Mixergy :-) The way Andrew described his service was more direct service oriented, not so much trying to do an equity play. According to their website, the firm has offices in both NY and SF

[http://walkercorporatelaw.com/](http://walkercorporatelaw.com/)

</comment><comment><USER3> Once you get out here, network. You'll be able to find any number of startup lawyers at any number of meetups that happen almost any night of the week.

But, an introduction has a cost (which most people don't seem to understand). Why should I use my social capital on you? What are you doing or what have you done? Why should I care?

I'm not trying to be a jerk, but referring a dud to a personal / professional connection reflects negatively on the referrer. So, make sure there's something in it for the referrer.

I'm not trying to be a jerk. But, requests for referrals happen all the time and I don't think most folks consider the actual cost of a referral.

<comment><AUTHOR> thanks for the reply. I'll be networking once I'm out there. Just looking to get a head start. I'm also willing to connect before any intro's are made.

</comment></comment><comment><USER4> Couple of big firms doing law in Bay area with focus on tech startups - Cooley, Gunderson, Wilson and Sonsini

</comment><comment><USER5> inventuslaw.com</comment>


Ask HN: Business logic in the database – your thoughts - vanilla-almond I realise the question of whether you should store business logic in a database will never yield a definitive answer but I'm still keen to hear your opinions.<p>What has been your experience with putting business logic in a database? How much business logic did you place in the database and do you think it was a good choice? Thanks <comment><AUTHOR> If you're talking about storing business logic in the database for building an MVP, e.g. using stored procedures and views in your app, then yeah, go for it. Deal with the existential risk (your business might not work) before you deal with the risk of needing to fix tech debt.

If you have the resources to avoid putting business logic in the database, in a production app context, I'd avoid it if possible. It's just another thing tying you to that database, and if you ever decide to migrate, it's another hurdle preventing you from doing that.

</comment><comment> rigged-system Are you talking about at the schema design level or more from a stored procedure point of view?

Can you give an example of the business logic you have in mind?

<comment> vanilla-almond I was thinking in terms of what level of detail is preferred in a database. Is it merely the database schema? Is it adding constraints and data validation logic to that schema (or placing that outside in your programming language code)? Or is it also adding (stored) procedures using the database language too? I'm guessing that everyone will have a different opinion based on the projects they've worked on.</comment></comment>


Ask HN: What should I do about a lazy and unproductive programmer? - <AUTHOR> At my startup there is a three person programming team. There is one team member who has been working here for about a year - I'll call him Rob - who is very competent, but has had issues that I think stem from laziness.
The most experienced programmer on Rob's team has complained to me that Rob will take 3-5x longer to finish a task because he lacks the work ethic to get it done sooner, and he has also complained numerous times (including once on the public team Slack channel) that Rob often pushes buggy or sloppy code to production with the hopes that someone else will clean it up for him.
I was skeptical of this claim at first (a lot of the stuff Rob's worked on was experimental in nature and hard to efficiently track) but after paying closer attention, I now agree completely with this team member's complaints.
The only discussion I have had with Rob so far about this came during his performance review at the beginning of the year. At the time I didn't quite appreciate the extent of the issue and told him very generally that he excelled with the big picture but needed to needed to be more detail oriented. So although Rob's team member has called him publicly I don't think Rob even remotely realizes how poorly he stands. This startup is small (8 people) and very close knit, so I'm worried that if I simply let him go it would come out of left field and hurt the morale of the rest of the company (with the obvious exception of Rob's disgruntled team member).
If the issue was simply him pushing buggy code live I would sit down and discuss the issue with Rob and make clear that this is not appropriate and needs to be changed. However the issue seems far deeper than that, and he has already lost the confidence of the best programmer on the team.
The only time I've had to deal with a poor performer was a much more cut and dry situation, so I feel a lot of uncertainty right now for such an important decision. So Hacker News, what do you think I should do? <comment><USER2> Make sure Rob tests his code and gets it reviewed before check-in. Don't single Rob out, though -- make the process universal.

If the lead programmer complains about the new process, make it as minimum a burden as possible, and make code quality the focus of the process. The lead programmer and the third programmer can review each others' changes, and Rob will need one of them to review his changes, which might improve communication between them, and make Rob look better.

Rob may be stuck not knowing what to do, or unmotivated because he does not see a future in his work. If this is possible, then give Rob work which directly impacts customers (internal or external), even future customers not yet realized.

If Rob is working on something which doesn't impact customers in the form of a product or service, this may be demotivating, and he may not know what to do next. Even if he's told what to do, if he doesn't see it having any real impact on the customer product or service, then he may be demotivated and may not be able to prioritize his work correctly.

Rob needs feedback, whether in the form of code reviews, direct communication, or in the form of comparing his work against customer requirements. If the requirements are unclear to him, or he cannot mentally connect his work to customer requirements, he may be stuck or unmotivated, even if he's very bright and has been assigned specific tasks.

</comment><comment><USER3> Here is something to weigh against:

Is the "most experienced programmer" also the hardest working hero in the group?

Is the "most experienced programmer" working at a sustainable pace for your company, including themselves and others (including Rob)?

Have you truly identified 1) is Rob really pushing buggy or sloppy code, and 2) is his intention really so someone else can "clean it up"? Perhaps Rob is spitballing and trying stuff and trying to contribute to the greater collective of the "correct" code. Does your process support this kind of exploration?

Has Rob worked with any other team members? Do they have the same feeling?

Could it be that your "most experienced programmer" is also an *hole control freak, and you are seeing the "most experienced programmer" with rose tinted glasses? What happens to the team if you remove the "most experienced programmer", do the rest of the team thrive or at least sustain?

<comment><AUTHOR> I would say that the "most experienced programmer" and the third team member (who I haven't mentioned at all) work equally as hard. They are both very competent, but the third team member definitely looks to the "most experienced programmer" for guidance.

I do not think Rob is purposefully pushing buggy code, I just think he has no desire or motivation to properly test it.

The third team member has no negative complaints about Rob besides saying that he prefers to pair program with the "most experienced programmer".

From my own perspective if we removed the "most experienced programmer" the team would sustain in the short term, but it would really struggle in the long term.

The "most experienced programmer" speaks highly of the third team member. That doesn't mean he isn't a jerk or a control freak, but from our daily stand up meetings it feels like him and the person he speaks highly of are efficiently delivering high quality code while Rob is having trouble delivering things at a similar pace and has complaints about pushing buggy code.

These complaints have been going on from the "most experienced programmer" for 6-8 months now and I think part of the reason it has festered this long was because I was not sure at the beginning whether there was any credence to what he was saying, but now I feel like his complaints are very valid.

<comment><USER3> It sounds like you have considered all the angles. I've just seen situations where management was blinded by the "hero programmer". However, with the perspective of the third member, it sounds like Rob is the weakest link (BTW, someone has to be the weakest). If he really is messing up your team's mojo, then either work towards the goal of "Making Rob Better", or make a business decision and let Rob go.

</comment></comment></comment><comment><USER4> Sounds partially that management wasn't doing their job. I think more intervention early on would have been best. Bluntly describing the issue, describe why it is a problem, and provide examples of expectations (or what Good/acceptable looks like in your opinion). You really can't fault someone for not hitting your expectation if you never clearly told them your expectation. Nt good to allow things to fester.

You wouldn't let a wound on your body fester until your only option is amputation, right? You'd go see the doctor and intervene early on, to stave off the amputation.

<comment><AUTHOR> >Sounds partially that management wasn't doing their job. I think more intervention early on would have been best.

Since it is an 8 person company I am the entirety of management, and I would agree. In retrospect I think I did a very poor job.

Since I can't go back and change that, do you think I should do those things I probably should have done months ago, or should I skip ahead of that?

<comment><USER4> Tough to say. Only you truly know how 'hopeless' the individual may be. Ask yourself if you see ANY room for change - can the ship 'course correct' and still reach it's destination? OR - is the boat just too far off course.

</comment></comment></comment><comment><USER5> If you don't have HR, find an HR professional for this.

Performance improvement plan is what your going to put him on.

Your going to want to document what is going on, and your going to want to be out about why your doing it. The HR professional is there to make sure you hit all the marks before you let him go. The last thing you want is to "fire someone" and end up in court.

Some people shape up, some people quit, some people you have to let go.

If you here there are issues "at home" then you may be more sympathetic, but stick to the plan and be a compassionate ear if you can.</comment>


Sbd.vim "Smart Buffer Delete" — a new and much useful Vim plugin - <AUTHOR> https://github.com/orftz/sbd.vim

<comment><USER2> ah, this is great. i started using nerdtree recently and bound control+x to :bd, and it annoyed me that doing that would close the buffer window leaving the nerdtree open, rather than just going to the next buffer. this plugin seems to fix that with control+x now bound to :Sbd.</comment>


What Will Microsoft's GitHub Buy Mean for Controversial Code? - <AUTHOR> https://www.wired.com/story/microsoft-github-code-moderation/?mbid=social_twitter_onsiteshare <comment><USER2> They don't mention how Github also censored the satirical "social justice warrior" programming language called C+=

There was nothing illegal in the repo. No pressure from nation states. They simply didn't like who the repo was making fun of.

[https://tech.slashdot.org/story/13/12/14/1618239/github- take...](https://tech.slashdot.org/story/13/12/14/1618239/github-takes-down- satirical-c-plus-equality-language)

<comment><USER3> Did not see that before. How lame is that...

<comment><USER4> This kind of thing was a reason why I wanted to switch away from GitHub long before Microsoft came on the scene. If anything, Microsoft's ownership might put an end to this nonsense.

I never did switch away, however, strictly due to laziness.

<comment><USER4> Well, here's a funny story. After being kicked off of GitHub, the project was moved to GitLab, but on GitLab, there was nothing but a notice that the project had moved to Gitorious. There was nothing at all on Gitorious, and doing a Google seatch showed me that the project could be found... wait for it... once again on GitHub.

[https://github.com/ErisBlastar/cplusequality](https://github.com/ErisBlastar/cplusequality)

Either they repented of their views about censoring satire, they haven't noticed it's back, or they think it's a real thing. <shrug>

</comment></comment></comment></comment><comment><USER5> So wired jumps on the pro-censorship waggon, to suppress repos on pure moral grounds. Code that could be used to create deepfakes needs to be censored by Microsoft. Oh my. Directly jumping into the Köhntoppsche Idiotenfalle

</comment><comment><USER4> I think the maker of xbill is safe. The game was last updated in 2002 and the page promises anonymous CVS access coming "soon".</comment>


Adding 'Blockchain' to your company name may cause stocks to surge - <AUTHOR> https://twitter.com/thestalwart/status/915570029739089921 <comment><USER2> It's a weird concept but maybe true. I love doing Bitcoin trading, as it's the BEST way and that happened thanks spretting.co.uk, who guided me so brilliantly with spread betting and all those. Plus, I came across Plus500 broker under whom, it was so easy to do Crypto trading. It's since then that everything has worked perfectly for me.

</comment><comment><USER3> Is a 9$ stock really a "penny stock"? If it is, I was under the impression that violent ups and downs with no real reason behind them was par for the course for penny stocks</comment>


Ajqvue Covid-19 SQLite Database, (US Daily) Hospitalization Anomaly - <AUTHOR> http://ajqvue.com/covid-19.html <comment><AUTHOR> There appeared an anomaly in COVID-19 Tracking Project for April 12, 2020, US Daily Hospitalized Increase. Plot shown. Perhaps bad data or maybe not.

danap.</comment>


What every developer needs to know about GitHub's new API - <AUTHOR> https://medium.com/apollo-stack/the-new-github-graphql-api-811b005d1b6e#.xibeu892w <comment><USER2> I can't wait to see how public GraphQL API design evolves. The current state of REST APIs took a long time to get polished up, and this is just the first example of a big public GraphQL API.</comment>


Factorization of RSA-250 - <AUTHOR> https://lists.gforge.inria.fr/pipermail/cado-nfs-discuss/2020-February/001166.html <comment><USER2> Estimating a cost of 1 cent per core-hour, this cost more than 200k€. Since INRIA is a national research institute, I am guessing at least part of this has been paid with taxpayer money, either directly from the Institute or from grants.

I am wondering how such an expense can be justified.

It's an honest question: I find all of this very exciting and brilliant, however having written grant proposals myself, I am wondering how could they 'sell' factoring larger and larger numbers as worth funding.

<comment><USER3> Noob here. Could this work as a benchmark and tell us how safe RSA-1024, RSA-2048, RSA-16384 etc. are?

BTW, why shouldn't everyone switch to RSA-16384? According to [https://wiki.gnupg.org/LargeKeys](https://wiki.gnupg.org/LargeKeys) "elder versions supported creating of keys up to 16 KiB." When it was possible to create 16384 long keys, it must still be possible to use them with new versions of GnuPG, right? And [https://www.keylength.com/en/compare/](https://www.keylength.com/en/compare/) tells me that 16384 bits are way better than 4096 bits. According to "Lenstra Updated" your data is protected until the year 2153 with 16384 bit keys and until the year 2060 with 4096 bit keys.

<comment><USER4> I would think a primary reason for that is performance. A key that large would require a lot of entropy for initial generation, a large(r) amount of memory, as well as making encryption much more computationally expensive. I'd also be worried that with such large keys there might be greater potential for side- channel attacks.

<comment><USER5> It's also much more complicated in practice to exchange huge key files than the 32 byte string that an EC key is</comment></comment></comment></comment>


Secure Kubernetes on Hetzner Cloud with a Node Driver for Rancher - <AUTHOR> https://vitobotta.com/2020/01/17/secure-kubernetes-hetzner-cloud-rancher-node-driver/ <comment><USER2> Hi SkyLinx - Thanks for writing this guide and for posting it! We love when Hetzner users share their knowledge with each other. If you didn't know already, you can earn credit on your Hetzner account by writing tutorials for our Community page. [https://community.hetzner.com/](https://community.hetzner.com/) \--Katie, Marketing</comment>


Wordpress Svbtle Theme - <AUTHOR> https://github.com/gravityonmars/wp-svbtle <comment><USER2> It's nice, but surely the time taken cloning the initial Svbtle network look, feel and experience would have been better used making something different that surpasses the original.

<comment><USER3> I think making something different wasn't the original intent. It is Svbtle "easiness" and look as a theme, for the most popular weblog engine. It looks great, and it is open to the masses. I love it!

</comment></comment><comment><USER4> Nice work! This is really great - I've been looking for a theme!</comment>


Show HN: Ling Academy, an adaptive data-driven approach to learning Spanish - <AUTHOR> https://ling-academy.com <comment><USER2> I've been studying multiple Chinese dialects over the years and I think the one thing I want in a language learning application is a direct path to success.

I start on lesson A and continue to lesson Z. Too many are just a collection of random words and phrases.

<comment><AUTHOR> Thats why I value ranking words by their frequency. That way, the most used words are learned first.</comment></comment>


New Jersey becomes second state to ban cashless shops and restaurants - <AUTHOR> https://arstechnica.com/tech-policy/2019/03/new-jersey-becomes-second-state-to-ban-cashless-shops-and-restaurants/ <comment><USER2> I am having trouble finding an injured party here.

<comment><USER3> There are lots of humans who transact in cash.</comment></comment>


Ask HN: Would you accept a job offer without salary negotiations - <AUTHOR> If you were presented with an offer letter with your prospective salary, would you take it knowing that you had had no negotiation prior to that? Especially if the offer is a semi-overseas offer? Like, nobody talked or setup any conversations around compensation and out of the blue emerges an offer letter with the $$ amount already decided for you. The job description does not mention any per-hourly rate or any such figure. <comment><USER2> You could certainly think of the offer letter as their opening offer in the negotiation process. It feels like it is there attempt to communicate "This is what we pay for this position" and hope that you aren't in a position or confident enough to make a counter-offer.

Things to ask yourself:

> How strongly do I want to work at this company and in this position?

> Based on a bit of research do I think this is a fair, market-competitive > offer?

> Based on my own experience and compensation at current or recent jobs is > this an enticing offer as it currently stands? Or am I feeling devalued by > the offer?

Even if you are feeling good about the offer after answering those questions you should probably still make a counter-offer. If you feel really good about their offer you can make the counter more of a token - something that is easy for them to say yes to.

<comment><AUTHOR> Would an offer letter come with an employment agreement? the said employment agreement gives me a period of 5 days to mull on and then accept.

Would a proposed job offer word it so that the onus is on you to reach out to them if you dont agree with the terms?

I have usually had a call with the manager of a team who would then discuss the $$ and we'd call it good. The paperwork would follow. But would an offer letter say that 'to discuss blah blah please contact blah'? Seems a little odd.

I agree with all the points you've made so far.

<comment><USER2> It might just be a ploy to try to forgo any negotiation. I wouldn't worry about the fact that they arrived together. Don't sign it yet, reach out to your contact within the company and see if they seem open to negotiation through conversation and when you reach what seems to be agreement submit a formal counter-offer or tell them - send me a revised offer with these terms and I am ready to accept and sign the employment agreement.

<comment><AUTHOR> Yeah, it sounds like a ploy.

I haven't signed it. I reached out to them via email,regarding a few minor terms that I'd like to have modified. I hope to then use that to go broad(er), ask for a verbal discussion and modified terms.

Negotiation is tough,it should've been a course in engineering school. Thank you for the advice.

</comment></comment></comment></comment><comment><USER3> It depends what the salary number is, but in general -- no, you should negotiate. If they chose the number, they chose somewhere around the lowest possible number they thought you might accept.

<comment><AUTHOR> Thanks, I agree with what you said.But to me it is unusual that they start off with a draft agreement and want me to reach out to them to negotiate. Seems backwards.

</comment></comment><comment><USER4> Is this a position you've explicitly applied for? Unsolicited letter bearing a job offer with dollar amount included sounds illegitimate to say the least.

<comment><AUTHOR> yes, I did apply for it.</comment></comment>


Small-town America is primed to beat Silicon Valley in innovation - <AUTHOR> https://medium.com/@scobleizer/here-s-how-small-town-america-is-primed-to-beat-silicon-valley-in-innovation-3923049865ed#.157e0tv0x <comment><USER2> Definitely and interesting read.

I agree that small towns are becoming more friendly to entrepreneurship (of the tech variety) and should only help innovation since talent that might not want to risk the move to Silicon Valley and instead take a safer job with an older company might consider startups closer to home.

This is definitely a net-positive for innovation.</comment>


Ask HN: I want to become a Web developer - <AUTHOR> Any good suggestions on a good book or videos or wbesite to learn how to be a Web Developer? I'd like to start the journey now.
I know some basic PHP and Javascript HTML.
Should I start with JS or PHP? <comment><USER2> I started the same way you did ~15yrs ago. I first learned JS, then PHP (this remains useful: the other way around would only allow you to generate static pages). PHP is a mature language today, you can get very far by learning frameworks such as Lavarel. Needless to say, also for JS there are huge frameworks with famous names you already heard off. There are people who do frontend programming only nowadays. This wasn't the same 15yrs ago.

I really recommend you not to get too attracted by AngularJS and friends. Proceed with learning programming basics: Back in my days, I made the step of the popular "P" scripting languages: PHP, Perl, Python. Then, in mid 2000, the "LAMP" stack was the thing: Linux, Apache, MySQL, one of the P languages. I learned all of this, and Linux was an eye opener.

Today, LAMP might be really old fashioned, but Linux is not, and SQL is also fresh and young as it has been 40 years ago. Make the step towards Linux, it will change the way how you percieve computing and especially programming. This is also true if you want to stick to web development -- a number of modern age utilities are written as command line utilities which you can only really easily and quickly make use of with Mac OS X or Linux (thinking of preprocessors and server side compilers).

<comment><AUTHOR> can you recommend good PHP book?

</comment></comment><comment><USER3> What kind of projects do you want to working on? You have the basic building blocks: HTML, JS, CSS, and PHP. It's time to build stuff!

You can use PHP to build a backend REST API using the Slim or Lumen frameworks. You can do the same with JS using Node's express framework. Deploy on Heroku to get started for free, and no I don't work for them.

Maybe learn a little bit of database architecture and deploy that using AWS RDS. Free for a year! Google has a similar option.

Or maybe you want to be cutting edge and setup a GraphQL server with Apollo or Prism! Up to you.

With JS, you can learn React, Vue, or Angular and consume the API while generating UI's for the user. Use Netlify for your front end deploys! It's free for personal projects.

Build a few projects that aren't basic "calc", or "weather" apps. Maybe create your own user authentication system with oAuth2, heck even JWT.

Download a UI Kit from ui8.net so you don't have to design from scratch. This will make your project look legit when you showcase. (Mostly not free, but good investment)

I hire a lot of engineers, I look at their work but also the design of the project (even if they didn't design it)

Good design establishes legitimacy, even if it's demo app!

Keep building, looking for jobs, and eventually you'll land one.

Finally, start calling yourself a web developer today. Congrats.

</comment><comment><USER4> Before asking which language ask yourself whether you want to do frontend or backend. You can eventually learn both and become a "full stack" developer but you still need to start somewhere first.

I'd personally recommend backend - the ecosystem doesn't move as fast as on the frontend which means the thing you learn today is less likely to become obsolete the next day.

Language-wise, on the backend, I'd avoid PHP like the plague. It's bearable with the right frameworks (I recommend Laravel if you really want to do PHP) but even then it's a pretty badly designed language, not intuitive, etc.

I would say go with Python & Django instead if you want to get started on the backend. Here's a tutorial: [https://docs.djangoproject.com/en/2.1/intro/tutorial01/](https://docs.djangoproject.com/en/2.1/intro/tutorial01/)

</comment><comment><USER5> I would master HTML first. Then move on to PHP and get to the point you can comfortable do some simple apps. I'm not a PHP guy but might be worth checking out PHP books at a store and see which one gels with you. First do PHP without a Database then once comfortable learn about Databases. Books on MySQL would be good here.

Later on move onto frameworks like Laravel.

I'd leave JS to last because it's a whole different paradigm and I think with the PHP stuff alone you can create a useful web app.

Finally make sure you are learning modern PHP, get a book from 2018/19.

But with JS alone, in theory you can create an app but it's more advanced.

</comment><comment><USER6> How much do you know right now?

<comment><AUTHOR> A little bit of Javascript HTML and CSS , PHP nothing to advanced though</comment></comment>


War veteran, 99, raises £9m for NHS by walking lengths of back garden - <AUTHOR> https://www.theguardian.com/society/2020/apr/14/war-veteran-99-raises-2m-for-nhs-by-walking-lengths-of-back-garden <comment><AUTHOR> (Previous link) [https://news.ycombinator.com/item?id=22884127](https://news.ycombinator.com/item?id=22884127)

I've resubmitted (I'm a different poster) with age and feat in the title in the hope it will get more traction, it's a fab story.

</comment><comment><AUTHOR> It's now £12m and still rising. What a guy.

[https://www.justgiving.com/fundraising/tomswalkforthenhs](https://www.justgiving.com/fundraising/tomswalkforthenhs)</comment>


Doodle Kids app created by a kid - <AUTHOR> http://www.start-up.co.nz/doodle-kids-created-by-a-kid/

<comment><USER2> > Lim started using computers at age 2 and is fluent in six programming > languages.

Only six languages by 9, yeesh -- by that time I was already fluent in 35. Kids these days are just barely getting by.</comment>


Symbols - <AUTHOR> http://eve-language.blogspot.com/2008/07/symbols.html

<comment><USER2> Bad title on my part, really, since most of the entry is about pattern- matching.</comment>


Lambda expression comparison between C++11, C++14 and C++17 - <AUTHOR> http://maitesin.github.io//Lambda_comparison/ <comment><USER2> I love lambdas, but a lot of commenters are throwing around the word "closure" here, and c++ lambdas are definitely not closures. You can capture outside variables by value or by reference, but that value can expire before the lambda runs if the reference no longer exists; in which case, you are in trouble. Unlike a true closure (as in lisp or other languages), where the closed-over value stays around.

If we talk only about c++ capture lists by value (i.e. [=]), then you could make a case for a more appropriate use of the word "closure" but since many lambdas do more than this, I think the distinction is necessary.

However, even in by-value captures, if you are capturing a pointer by value, the issue remains. So, really it is not a good idea to think of lambdas as closures in the functional sense typically used in other languages.

<comment><USER3> I find that pointlessly pedantic. By the same measure, languages that don't offer bignums don't offer integers. Even Lisps need to implement closures in one way or another, and you may be surprised to see how they actually do it.

<comment><USER4> I think you miss the point, the OP was mentioning the property that in most languages, closures whose outer variables they are bringing into scope stay in scope (even if the outer function ends). In C++ they expire (is what I got from his comment, anyway).

<comment><USER5> Closed-by-value variables (I.e. the default) in C++ don't expire. Referenced or pointed-to object might, but this is completely consistent with the rest of the language.

Remember that C++ is a by value language. Pointers are explicit, fist class and distinct from the pointed to object.

References are werid, though.

</comment></comment></comment></comment><comment><USER6> Nice overview. Just a small correction: the smallest possible lambda is

        []{}

and not

        [](){}

as stated in the article. The parameter list is optional.

<comment><USER2> >The parameter list is optional.

To avoid confusion, only an empty parameter list is optional. You can't omit the parameter list if you take args, unlike lambda shortcuts in languages like clojure which allow you to implicitly refer to arguments inside the body using a universal variable name, and therefore omit the parameter list for all lambdas. That possibility does not exist in c++.

</comment></comment><comment><USER7> Another mildly obscure feature of lambdas is the ability to capture a variadic number of parameters.

Example (slightly contrived):

      #include <future>
      #include <iostream>

      template<typename... Args>
      void log(Args&&... args) {
          (std::cout <<  ...  << args) << std::endl;
      }

      template<typename... Args>
      std::future<void> log_async(Args&&... args) {
        return std::async(std::launch::async, [args...] { log(args...); });
      }

      int main()
      {
          auto f = log_async(1, 2, 3);
          f.wait();
      }

<comment><USER8> For those of us still stuck on C++98 at work, would you mind explaining what's going on here? In particular, I can't figure out why the ellipsis is so separated from `args` here:

            (std::cout << ... << args) << std::endl;

That looks like some black magic to me. The rest makes sense, I think.

<comment><USER7> [http://en.cppreference.com/w/cpp/language/fold](http://en.cppreference.com/w/cpp/language/fold)

<comment><USER8> Neat! Thank you :)

</comment></comment></comment></comment><comment><USER9> Taking a concept such as a lambda function and making it look this ugly...this is why I hate C++. I wish I wasn't forced to program it every day.

<comment><USER7> How is it ugly? The capture list is a necessary complexity in a language with manual memory management.

<comment><USER10> The syntax is not the prettiest, but it is legible once you understand what [](){} means.

In C#, there is no such thing, but there is a part of me that wishes we had such a thing. I like the ability explicitly state what variables are being captured.

<comment><USER11> I'm not 100% sure, but C#'s compiler should automatically capture what you need (and leave out the rest).

I think the primary need for manual declaration is because in C++ you need to differentiate between pass by copy semantics and pass by reference semantics.

<comment><USER12> > I think the primary need for manual declaration is because in C++ you need > to differentiate between pass by copy semantics and pass by reference > semantics.

That's not actually a _need_ , C++ includes [=] and [&] (capture everything by value or by reference). You can get a mix by creating references outside the body then capturing the environment by value (capturing the references by value and thus getting references).

On the one hand it has a bit more syntactic overhead (you have to take and declare a bunch of references before creating the closure), on the other hand there's less irregularity to the language, and bindings mean the same thing in and out of the closure.

FWIW that's what Rust does[0], though it may help that Rust's blocks are "statement expressions", some constructs would probably be unwieldy without that.

[0] the default corresponds to C++'s [&] (capture by ref), and a "move closure" switches to [=] instead

</comment></comment></comment></comment></comment><comment><USER13> This is the first time I've looked at C++ lambdas. They appear magnificently powerful and also like another pile of easy ways to get completely screwed up.

Ah well, that's just the C++ way I suppose.

Makes me glad for Rust, that's for sure!

<comment><USER14> Here take your rustwin point!

I really like the explicit capture of C++'s lambdas more than the implicit one in most other languages (C#, Java, Python...) where you easily ends-up with a closure not referencing the expected variable. See: [https://blogs.msdn.microsoft.com/ericlippert/2009/11/12/clos...](https://blogs.msdn.microsoft.com/ericlippert/2009/11/12/closing- over-the-loop-variable-considered-harmful/)

<comment><USER15> I was burned by the same thing in Javascript.

"Explicit is better than implicit". Therefore, I agree with you that explicit closure list, with the ability to copy _and_ reference captured variables, is actually what C++ does right, not wrong.

<comment><USER8> The explicit capture list is only necessary in C++ because memory ownership and lifetimes are managed by the programmer in C++. Compare that to a garbage- collected language like Scheme or C#: when the implementation can figure out where memory needs to be freed and ensures you can't use-after-free, it frees the programmer from thinking about ownership (but not necessarily lifetimes: you can still wind up with memory leaks in GC'd languages if you're not careful to let go of references you no longer need). As mentioned elsewhere in this thread, Rust also offers the same level of explicit control without capture lists (though I'm on the fence about which way I prefer).

My point is that in languages with automatic memory management, explicit capture lists don't make much sense because the programmer is not tasked with managing memory and can safely capture references all the time. There's no need to ask oneself, "Do I own this pointed-to memory? Do I need to worry about it being freed before this closure? Should I make a copy?", etc. This is because, in a sense, the garbage collector itself owns the memory, but checks to make sure nothing else can use it anymore before it frees it.

<comment><USER15> You only talk about the memory management part and I guess most language designers think the same. What you and they fail to account for is that explicit capture list can reduce logical bugs.

For one, if I were allowed to explicitly capture the counter variable by copy, the surprising behavior mentioned above would never occur. In languages with mutability, the ability to make some part immutable is a virtue.

For two, in languages without explicit variable declaration, which variable is defined where quickly becomes murky when you have implicit capture. I have so many frustrations where the inner `i` variable clashes with the outer `i` in Python. Yes, I could just use a different name, but naming is hard, and with a new scope I should be able to reuse the name. That is almost the whole point of opening a new scope!

For three, in Javascript where closures are everywhere due to the amount of callbacks, the reference graph is just impossible to analyze. A closure may closes over another closure which closes over an object with a reference to the original closure. An explicit capture list makes the programmer think, and ease the job of anyone who tries to spot memory leaks from the source code. (But I guess that is just not the Javascript style, as they are so fond of never letting the programmers know about their mistakes. At least in C++ we trade that for speed. I don't know what Javascript trades that for.)

<comment><USER8> > You only talk about the memory management part and I guess most language > designers think the same. What you and they fail to account for is that > explicit capture list can reduce logical bugs.

I suppose, as a language designer, I tend to think that the more I do automatically, the more I ease the programmer's burden. However, as you point out, that's not always true. That said, my point wasn't (isn't?) that explicit capture is only a good idea sans automatic memory management (it may well be -- you've certainly given me some food for thought here), but rather that it's only _necessary_ in that case, and I think that point still stands.

> For one, if I were allowed to explicitly capture the counter variable by > copy, the surprising behavior mentioned above would never occur.

That's a failure of language design and I don't think the proper solution is to force explicit capture on closure creation (also note that you need _more_ than just explicit capture because to prevent such an error, you need the ability to specify that the "captured" variable ought to be copied rather than actually captured). I think the proper solution to that problem is the one that the C# team went with: limit the scope of iteration control variables to the iterated block. This is typically what programmers used to block- structured languages would expect, anyway, unless the variable were clearly declared outside the scope of the iteration.

> In languages with mutability, the ability to make some part immutable is a > virtue.

That's an orthogonal issue, and can be done in many other (and more general) ways.

> For two, in languages without explicit variable declaration, which variable > is defined where quickly becomes murky when you have implicit capture. I > have so many frustrations where the inner `i` variable clashes with the > outer `i` in Python. Yes, I could just use a different name, but naming is > hard, and with a new scope I should be able to reuse the name. That is > almost the whole point of opening a new scope!

You're right: that _is_ the point of opening a new scope! That sounds like a flaw in Python's design and could be remedied by making variable definition syntax different from assignment syntax. Consider Lua with its `local` syntax, C and kin with their type annotations, the Lisps with their completely separate forms for variable definition and assignment, and so on. There's also the Tcl strategy of "it's a definition unless it was imported into this scope with `global` or `upval`; otherwise it's an assignment".

> For three, in Javascript where closures are everywhere due to the amount of > callbacks, the reference graph is just impossible to analyze. A closure may > closes over another closure which closes over an object with a reference to > the original closure. An explicit capture list makes the programmer think, > and ease the job of anyone who tries to spot memory leaks from the source > code. (But I guess that is just not the Javascript style, as they are so > fond of never letting the programmers know about their mistakes. At least in > C++ we trade that for speed. I don't know what Javascript trades that for.)

JavaScript is a shitty language to begin with, and fixing it wouldn't be as simple as fixing C# or Python... You make a good point here, but I still think that better tooling for data-flow analysis is a more attractive choice than a compulsory explicit capture list. On the flip side, an optional capture list could be a good compromise.

<comment><USER15> > On the flip side, an optional capture list could be a good compromise.

That is exactly what I am thinking about. Or, rather, what C++ has done right: You can let the compiler infer what to capture, like [=] or [&], or you can explicitly list the variables to capture.

> you need the ability to specify that the "captured" variable ought to be > copied rather than actually captured

Yes, that is what I am talking about, and again, what C++ has done right. Most other languages give you no choice whether the capture is by copy or by reference.

<comment><USER8> Ah, then I see we're in agreement :)

> Most other languages give you no choice whether the capture is by copy or by > reference.

That's because in languages that have traditionally had GC (i.e., languages in the Lisp tradition or in the ML tradition), the distinction didn't matter. Those languages did not "suffer" from a value/reference dichotomy (e.g., in Scheme, you're literally capturing the _variable_ rather than a copy or reference to the value stored within -- under the hood, that variable might always store a reference for convenience, or it might store a value for performance, but it doesn't matter as it's strictly an implementation detail).

I'm glad that the C++ committee didn't just dump closures into the language without considering this sort of interaction with other aspects of the language. Without the capture lists, closures in C++ have the potential to _really_ suck. That the explicit capture lists even exist is evidence that they've carefully considered how the new features are going to play with existing characteristics of C++. Kudos to them for that!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> A question people who use C++ regularly, is C++ becoming easier to read and code?

<comment><USER17> Absolutely, and without a doubt.

* `unique_ptr` as a local variable. Before C++11, I needed to either (a) define a holder class for anything that should be deleted at the end of a scope or (b) delete it manually and pray that there isn't an exception thrown. Now, I can just declare it, and trust the destructor to clean up after me.

* `unique_ptr` as a return value. Previously, if a function returns a pointer, there was no way on knowing who was responsible for calling `delete`. Now, I can clearly indicate intent. `unique_ptr` means that the caller now owns the object, while C-style pointer or reference means that the callee still owns the object.

* With lambda statements, I can call `std::sort` in-place, with the sorting criteria immediately visible. Previously, I would need to define a function elsewhere in the code, obscuring what may be a simple `a.param < b.param`.

* With range-based for loops, I can loop over any container without needing the very long `std::vector<MyClassName>::iterator` declaration.

* `= delete` to remove an automatically generated method, such as copy constructors. Previously, you would declare that method to be private, then never make an implementation of it. `= delete` shows your intent much more clearly.

* `static_assert`, so that you can bail out of templates earlier, and with reasonable error messages.

* Variadic templates. These aren't needed in 99% of cases, but they are incredibly useful when designing libraries.

* `std::thread` No more messing around with different thread libraries depending on which platform you are on.

<comment><USER18> Re unique_ptr as a local variable: in C++98 you can use auto_ptr.

<comment><USER17> True, I didn't mention it, because it has its own issues. The move-on-copy semantics of auto_ptr makes it incompatible with std containers, and makes for some rather unexpected behavior.

</comment></comment></comment></comment><comment><USER19> Clang's C++1z support: [http://clang.llvm.org/cxx_status.html](http://clang.llvm.org/cxx_status.html) (scroll down a bit)

And gcc's: [https://gcc.gnu.org/projects/cxx- status.html#cxx1z](https://gcc.gnu.org/projects/cxx-status.html#cxx1z)

Unfortunately neither supports constexpr lambdas at the moment.

</comment><comment><USER20> One aspect of C++ lambdas that I really don't like is the visual confusion caused by allowing "return", since at a glance this seems to affect the _parent_ function. I have already found myself adding comments inside lambdas like "return x; // return-from-lambda" to make sure that I see what is really happening. Python by contrast does two things better: Python makes it really hard to write long expressions as lambdas, and no "return" is used in a Python "lambda". Of course, Python also allows "def" inside a "def" as a convenient way to write longer one-time functions.

I also found that while I could use C++ lambdas for things like iteration, e.g. "object->forEachThing([](Thing const& t, bool& stop){ ... })", this makes the keyword problem worse. In this type of call, if I want to implement something that is _logically_ like a "break" or "continue" of the loop, it has to use the "return" keyword (from the lambda only) with special conditions attached such as a "bool" variable to request the break. And that is confusing to read, even though conceptually it is similar to the Objective-C NSArray "enumerateObjectsUsingBlock:" that takes a similar approach (in that the block takes a "stop" argument).

</comment><comment><USER21> Not a bad article. I wish the first example wasn't so complicated. C++ lambda syntax is pretty gross. The initial breakdown is great. But why use a std::vector and std::transform in the first real example? Stick to integer addition. Keep things simple.

</comment><comment><USER22> There is another interesting feature in C++17 for lambdas:

Possibility to cast a lambda to a function pointer.

It will become possible to store a lambda as a struct/member that could bind to "this" (like in Javascript).

<comment><USER2> I assume this is only for stateless lambdas, that have not captured anything? Because otherwise a function pointer would not be enough, right?

Currently, any stateless lambda can decompose into a function pointer and be passed to any function that expects a function pointer, right?

Are you saying that ++17 has augmented this, and if so can you provide more details or a reference (or an example) as I'm quite curious to know more.

<comment><USER22> [https://isocpp.org/files/papers/p0018r3.html](https://isocpp.org/files/papers/p0018r3.html)

It's the best reference I found. The paper only talks of capturing "*this" by value (as in the original post of the topic).

I think I read that in a draft about coroutines. The idea was to capture "this" by reference and convert the lambda to a function pointer to make it movable.

It would useful for delegates or signals too.

</comment></comment></comment><comment><USER23> Nice. I am a bit confused -- before c++17 it is impossible to capture this by copy; is it possible to capture other objects by copy? seems like it is?

<comment><USER19> Yes, it is. Just write:

      [a](...){ ... }

and the variable "a" will be captured by copy.</comment></comment>


Don't publicize how small you are - <AUTHOR> http://www.centernetworks.com/dont-publicize-how-small-you-are <comment><USER2> is this advice for relationships or companies?</comment>


TechFellow Awards  - <AUTHOR> http://www.techcrunch.com/techfellow/ <comment><AUTHOR> It's obviously being encouraged, but self-nomination just seems presumptuous. Shouldn't stop anyone though...at the very least you'll get read by someone in that impressive looking nominating committee.</comment>


Blue Apron Plans to Cut 24% of Staff Barely a Month After IPO - <AUTHOR> https://www.bloomberg.com/news/articles/2017-08-04/blue-apron-plans-to-cut-24-of-staff-barely-a-month-since-ipo <comment><USER2> Look, I get that most people are just going to read the headline, hell most people who share this article will probably never open it, but that's really no excuse for writing an 'article' that has no more substance than the headline.

Questions I want answered in an article like this:

* What is Blue Apron's reason for the job cuts?

* What are Blue Apron's plans for the future? Focusing on core markets, expansions, grocery store partnerships, more product offerings?

* What do their finances look like? Things like customer acquisition, subscription length, service costs? How did the job cuts affect them?

* What is the author's analysis of the situation?

* How's the meal-prep market doing overall?

* Is there a downward trend in these kinds of convenience services?

* Was this going to happen anyway or was there increased pressure from the IPO?

* Is this typical for companies that IPO?

<comment><USER3> >that's really no excuse for writing an 'article' that has no more substance than the headline

I don't really agree. This is breaking news and it is unlikely that the distributor has any of the answers to the questions you've asked. Readers of a new distributor (here, Bloomberg) get the convenience of having to only follow one source to get a variety of breaking news.

<comment><USER4> Seems like there's an opportunity for a publishing platform that can pull up answers to rudimentary questions like these and include them in sidebar to breaking new like this.

</comment></comment></comment><comment><USER5> Didn't Blue Apron and Square Space alone underwrite like half the podcasts in the world last year? Wonder what this means for podcast advertising in Q4/Q1-18

<comment><USER6> Never heard 'underwrite' used in that context. Can you provide links?

<comment><USER7> A bit of context:

Due to regulations about advertising on publicly owned wavelengths, one cannot place a 'direct response' ad on a public radio station (think of your local NPR station here). Instead, there is an 'underwriting message' allowed– typically shorter than a traditional ad, and with no direct sales pitch.

Usually somebody that buys podcast ads is also buying radio ads, and sometimes the terms they use get muddy. 'Underwrite' is probably the wrong term to use for podcast advertising, but since it's frequently used for public radio the meaning would be clear if you were in the industry.

<comment><USER8> So you can't use offer codes and promo codes on fm/am? Pretty sure I've heard people use those. Is my definition of "direct response" not correct?

<comment><USER9> The restrictions @mkmk is talking about apply to public radio stations, like NPR (and maybe some college stations).

The key distinctions are that underwriting has to be short (15 seconds each, 60 seconds total), non-competitive (you have to mention them all underwriters of a program), only at the beginning/end, and can't include a call to action. In other words, an underwriting message can say "This program brought to you by Crazy Eddie's Autos, purveyors of new and antique European cars" but not "COME ON DOWN to CRAZY EDDIE'S AUTO'S. WE'RE HAVING A BLOW-OUT SALE THIS WEEKEND ONLY blah blah"

Privately-owned stations can and do run either kind, however.

</comment></comment></comment></comment></comment><comment><USER10> That headline is misleading. CNBC is reporting this:

"The company's employees were given the option to transfer to the new facility located in Linden, New Jersey. The 1,270 cut jobs indicate those who decided not to transfer, the company said."

[https://www.cnbc.com/2017/08/04/blue-apron-to-cut-more- than-...](https://www.cnbc.com/2017/08/04/blue-apron-to-cut-more- than-1200-jobs-by-october.html)

<comment><USER10> And now the Bloomberg headline for the same link changed to "Blue Apron Is Closing Jersey City Facility and Moving 1,270 Jobs". This is irresponsibly different from the original "Blue Apron Plans to Cut 24% of Staff Barely a Month After IPO" headline.

</comment></comment><comment><USER11> "... the meal-kit delivery company shifts operations to a bigger site opening in the state later this year...the cuts reflect employees who chose not to make the move."

Sucks for employees who can't make the move, but from the company's perspective, this just precedes growth, no?

<comment><USER12> Yes it seems that way and the headline is extremely misleading.

</comment></comment><comment><USER13> Looks like this isn't true: [https://twitter.com/mdudas/status/893540763921002496](https://twitter.com/mdudas/status/893540763921002496)

</comment><comment><USER14> Seems a bit clickbait-y to me, as the article implies the 1,270 cuts are employees that chose not to move to a new facility that's only 15 miles away.

<comment><USER15> A bigger facility, at that. Sounds less like trouble and more like growth.

</comment></comment><comment><USER16> <cutting 1,270 jobs from its New Jersey facility according to a public notice Friday. It had 5,202 workers as of March 31.

Doesnt that seem like a lot of employees?

I know an average walmart non supercenter store has around 210 total employees.

There tasks must be very labor intensive

<comment><USER17> > _There tasks must be very labor intensive_

If these are the folks doing the food prep, almost certainly. Have you ever used something like Blue Apron? All the ingredients have to look good, and be packaged into little individual servings - think two cloves of garlic in a vacuum sealed bag.

Times six for the five other ingredients in the bag, many of which are probably more fiddly than "put two cloves of garlic into bag, and place into vacuum sealer."

Times, say, five thousand packages that have to go out and get delivered tonight so people can make their dinner.

<comment><USER16> So.. Their orders won't decrease 24%

The remaining employees will have to work faster and harder.

<comment><USER17> Or the quality of their product may suffer. Or they've come up with a way to automate or 'outsource' garlic-bag-stuffing.

<comment><USER18> Most likely once the garlic guy is fired, the recipe selections will no longer include garlic-lime chicken, or situation extremely similar to this.

<comment><USER19> What is extreme similarity? Identity?

<comment><USER18> Garlic is simply too common in most cooking to eliminate, so the outcome will be extremely similar with obscure ingredients like lemongrass or papaya or thai chile paste.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> This IPO has been a complete disaster: The initially lowered the price range, and then did the IPO at the low end of $10. Stock opened for trading at exactly that level, instead of higher, and has lost around 40% since then.

Normally this IPO would not have been that big of a deal. But since the tech IPO pipeline is largely frozen at the moment, APRN was widely seen as a canary in the coalmine for the sector. The fact that it was this poorly received, only underlines the fact that there is currently sector rotation out of tech going on.

<comment><USER21> This isn't a tech* company. It's a prepared food/grocery delivery business with too much VC and some fancy design.

*there's actually no such thing as a tech company at all

<comment><USER22> The way that I think about a "tech" company is that it is able to scale its growth non-linearly with its staff (or human resources). This isn't a binary rule, and obviously many successful companies are in a gray area -- but I think that it serves as a good litmus test / starting point when thinking about companies.

For example, an app that is running on a few servers can gain users more quickly than it needs to hire additional workers. A company like Blue Apron has to grow its warehouse staff as it gains new subscribers, effectively meaning that its SG&A and overhead costs scale fairly evenly with growth.

<comment><USER23> My general definition of a technology company:

 _Do you make /sell Software

_Do you make/sell computerized hardware

*Do you have a platform that fundamentally solves what would otherwise be a technology problem for other people, ie expose your technology so others can leverage it(via API/SDK, SaaS or other such on-boarding method).

None of this is clear cut as there are many grey areas but in general if you are creating technology for others to use and that is your core operation then you're a technology company.

Selling packaged food while using an App or Website does not make you a technology company. Blue Apron could completely outsource their technology work and I doubt it would fundamentally change the makeup of the company, you couldn't do that with a technology company.

<comment> tom-_- Some other ways I measure the "techiness" of a company; how much of the payroll is spent on engineers and if they're using software to replace value typically provided by people.

</comment></comment></comment></comment></comment><comment><USER24> Blue Apron sucks. This week was the first time we ordered from them. The garlic they sent was spoiled and rotten. It took quite sometime to make and the instructions are unclear. We will trying other services but never Blue Apron

<comment><USER25> We've been through most of them. I liked Hello Fresh but that wasn't amazing either. Even though ingredients are mostly prepped the preparation and cooking can be pretty time consuming. Lately we've been working on recipes with small ingredient lists that share ingredients. It's cheaper, easier and bigger portions. I like having leftovers to take to work the next day. We don't like grocery shopping but most of the stores near us are doing either at the door pickup or even delivery.

</comment></comment><comment><USER26> This is EXTREMELY unusual -- in fact, _unheard of_ \-- for a company that just consummated its IPO.

Historically, companies that IPO are in growth mode; they use the IPO to raise more money to fund more investment in growth opportunities.

Think of it this way: in an IPO (initial public offering), a typically young company offers newly issued shares to public-market investors in exchange for fresh money. The investors buy those newly-issued shares if they believe the company can put the money to good use, for example by investing in growth opportunities. If investors believe the company has no growth opportunities or is in retreat, an IPO is unlikely to be successful.

Yet here is a company that consummated its IPO only a month ago and now is firing a quarter of its employees!

<comment><USER27> From what I understand of the last 15 years, IPOs are now for cashing out when you've manufactured a solid enough filing to convince normal people that you're worth what the 10 VCs who gave you money say you're worth.

No company IPOs if they don't absolutely have to. It's like conceding that you can't make enough profit privately to recoup your investment on any kind of reasonable timescale.

<comment><USER28> In theory that can't be true. To IPO you don't need to convince "normal people" to IPO you need to convince institutional investors (those that run funds that are called on to fund retirement payouts, people who manage university endowments etc) on a road show that investing in your company will be a 'good thing' because the company is growing. The S-1 and prospectus should tell you all about the risks in clear detail and what is and is not known about the market. These people are not 'normal' people in that they analyze investment opportunities all the time. They usually ask detailed questions and want detailed answers. Usually a representative from the independent accounting firm that audited your financials is along to answer questions as well as the company's CFO to put the best possible spin on it.

These investors are not going to buy your initial stock and then turn around and dump it because that would kill the value of any stock. Instead they have to believe that they can buy your stock and hold it for 12 - 36 months and it will become more valuable so that if they chose to they could sell it into the market over enough months to not disrupt the price and make a return on the money they invested. They need that return because the people who pay them to manage the fund demand a certain standard of performance or they get fired.

If the goal was to just 'cash out' you have to convince all of these people that you're not really going to cash out in order for them to buy into your IPO. That is hard to do with dozens of new investors.

<comment> FLUX-YOU I'm pretty sure underwriting and IPO standards have nose-dived:

[http://www.rollingstone.com/politics/news/the-great- american...](http://www.rollingstone.com/politics/news/the-great-american- bubble-machine-20100405)

</comment></comment></comment></comment><comment><USER29> From the article, they purport to be gunning to automate the function of most of the folks who will be cut, but whether the cuts are based on some dire condition of Blue Apron or are just part of getting more efficient is obfuscated by the site move and clever explaining.

More to the point in the comments here about Blue Apron and other underperforming IPOs, and the sense of IPOs being cash-out schemes for VCs and founders: Is there a growing climate of such IPOs that would elicit a feeling that tech IPOs are a means to extract money from the public/an exchange by IPO'ing high and letting the share price slide to something real?

</comment><comment><USER30> Title is absurdly click bait once you actually read a couple of articles about what they are actually doing</comment>


Apple banning apps built with PhoneGap - <AUTHOR> http://blog.nachbaur.com/2009/05/open-letter-to-apple-iphone-developer.html

<comment><USER2> Google's Android looks more attractive every day.

Although I do understand that Apple has to keep some level of quality in their store (they're not doing a good job imho), clearly they haven't learned anything from their own history ... a platform friendly to hackers wins in the long run.

<comment><USER3> That depends on what you mean by "win". If by winning you mean their platform is adopted by hackers and becomes popular with the subculture, then yes I agree with you.

On the other hand, they may be more interested in defining "winning" as selling product to an audience that is not opposed to paying a premium price for quality if that means sacrificing some flexibility.

Anyway, I'm not sure what's so "hacker un-friendly" about the current SDK. You can write and use anything you want on your own phone by paying nothing more than the $99 "anti-bozo tax", you just can't count on being able to distribute it via iTunes. If you're serious about being "open and free", you can even distribute your app without restriction in source code form.

...and for "serious" hackers, there's always the jailbreak option. Yes that will void your warranty and such but when has that stopped a good hacker before?

<comment><USER4> Hackers care about being able to work unfettered. Not being able to distribute your application in a form that anyone with the hardware can use would qualify as fettered.

The jailbreak option is not a viable option when jailbreaking requires extra work on the user's part and carries the risk of impeding the upgrading of the phone's operating system.

</comment></comment></comment><comment><USER5> As someone who has an iphone app live in the app store created with PhoneGap I call BS on this one. I think the problem is consistency within the approval process instead of lying the problem at PhoneGap.

<comment><USER4> How is it BS? Are they not disapproving iPhone apps on the grounds that they use Phonegap?

</comment></comment><comment><USER6> In the short term, open and/or free might not be as attractive, but after you've seen these things come and go, they become more attractive, even if there are some initial deficiencies with regards to proprietary systems.

</comment><comment><USER7> I think the developers of phone gap are at fault here for suggesting that their platform/toolkit is usable on the iPhone. Whether or not developers agree with the restriction against interpreted code, it has been very clear since long before the public iphone developer kit that it was not allowable to write code in an interpreted language.

The exception to this is websites running javascript when a browser visits them (i.e. client side javascript for a webapp), and that is quite different than packaging javascript into an application and deploying that application to an iPhone.

<comment><USER8> Here's the actual text from the iPhone SDK Agreement:

"No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple's Published APIs and built-in interpreter(s)."

It only forbids applications from interpreting code that they download. The JavaScript code for PhoneGap apps is installed on the phone. Also, it has an explicit exception for using built-in, documented interpreters like WebKit/JavaScriptCore. (Otherwise no applications that embedded a WebKit control could legally view any web page that contained script elements.)

<comment><USER7> Although I understand the appeal of your argument, using a 3rd party workaround to provide support for performing javascript interpretation outside of the browser--whether or not they happen to be hijacking the system's underlying javascript interpreter--is not an "Apple Published API".

<comment><USER8> As far as I can tell from the PhoneGap source code, it just embeds a UIWebView and hooks into its standard APIs and events. I didn't spot any unpublished APIs in use. Can you give an example of what you mean by "hijacking"?

If I built a non-PhoneGap application that used a WebView to display pages I built with HTML/CSS/JavaScript, do you think that would violate the SDK agreement?

<comment><USER3> PhoneGap doesn't appear to expose any of the Private API's however it does expose parts of the SDK that are not normally available to web-based applications when run via Safari. I have a post above that elaborates on why Apple may find this objectionable.

</comment></comment></comment></comment></comment><comment><USER9> If this is merely based on platform, Apple is simply setting a precedent for other frameworks. From a business perspective, they don't want to lose direct control of the development of applications, especially since the Apple app approval ;) process has been shown to have holes as of late.

</comment><comment><USER10> software dictators!

</comment><comment><USER11> I think the problem might be that Phonegap allows people to develop rich internet applications. From there, it's only a hop and a skip to implementing a web browser, which they do not want app developers to do. Look at these two pages to see how I arrived at that theory: [http://groups.google.com/group/mozilla.dev.platforms.mobile/...](http://groups.google.com/group/mozilla.dev.platforms.mobile/browse_thread/thread/ca8a7fe623451635/04b770306a55326b) [http://gizmodo.com/5072333/opera-for-iphone-ready-to-go- if-n...](http://gizmodo.com/5072333/opera-for-iphone-ready-to-go-if-not-for- apples-app-store-policies)

<comment><USER12> I don't think this can be true - look at iCab Mobile, for example - it's pretty upfront about being a web browser.</comment></comment>