Germans Who Refused to Execute Civilians During World War II (1988) [pdf] - <AUTHOR> https://sci-hub.tw/10.2307/1429971 <comment><USER2> I recommend reading book - Ordinary Men: Reserve Police Battalion 101 and the Final Solution in Poland.

Well researched (based on testimonials) and well written.

Some men get used to the job, some enjoyed it, some kept refusing.

> Twelve out of 500 soldiers opted out when allowed to leave freely.[34] Those > of them who felt unable to continue shooting at point-blank range of > prisoners begging for mercy, were asked to wait at the marketplace where the > trucks were loaded.[35] The action was finished in seventeen hours. The > bodies of the dead carpeting the forest floor at the Winiarczykowa Góra hill > (about 2 km from the village, pictured)[36] were left unburied. Watches, > jewelry and money were taken.[3]

Unfortunately some of those men who refused were hanged after the war for made up war crimes. History has bitter sense of humor.

> For a battalion of less than 500 men, the ultimate body count was at least > 83,000 Jews.[50]

[1] [https://www.amazon.com/Ordinary-Men-Reserve-Battalion- Soluti...](https://www.amazon.com/Ordinary-Men-Reserve-Battalion- Solution/dp/0060995068)

[2] [http://hampshirehigh.com/exchange2012/docs/BROWNING- Ordinary...](http://hampshirehigh.com/exchange2012/docs/BROWNING- Ordinary%20Men.%20Reserve%20Police%20Battalion%20101%20and%20the%20Final%20Solution%20in%20Poland%20\(1992\).pdf)

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

</comment><comment><USER3> The courage to stand up against your own ingroup is the highest form of courage and morals.

It requires independence of thought and high principles.

<comment><USER4> The other one is to acknowledge and believe deeply that your acts were wrong. I cannot think of another country that breathes these values so sincerely and profoundly. I am sure everyone knows that Germany is in no way unique in its killing of millions.

I have no German ties whatsoever but I am in deep admiration of their capacity to accept, correct and be vigilant of repetition.

I know neo-nazism exists. I hope it continues to be an aberration.

<comment><USER5> I moved to Germany from America precisely because of Germans' lack of hubris about their ability to take responsibility for the crimes of their nations' past - while America is, without doubt, not ready to confront its own heinous crimes, being committed in present time, as yet.

Neo-nazism doesn't scare me as much as the average American patriot, whose political cover allows many, many crimes to be committed in their name with, seemingly, no repercussion.

However, as a believer in karma, participating in such a society is not on - thus, I moved.

My only concern now is that the Germany of the future will have what it needs to address America - because it doesn't look like Americans are going to be roping in their criminal death cult any time soon ... and all signs point to an America, in the future, which will have to deal with the crimes being committed in its name, today.

</comment></comment></comment><comment><USER6> In Dortmund, Germany, on Good Friday, a commemoration ceremony took place in the afternoon at the Bittermark memorial ([https://en.wikipedia.org/wiki/Mahnmal_Bittermark](https://en.wikipedia.org/wiki/Mahnmal_Bittermark) ). 300 POWs and resistance fighters were murdered there just weeks and days before the end of the war.

1700 demonstrators showed up this year. We must not forget.

<comment><USER7> You are looking for the keyword "Endphaseverbrechen". Particularly crass: Willi Herold, the Butcher of Emsland.

<comment><USER8> There was a movie ( _The Captain_?) released about that guy within the last year.

</comment></comment></comment><comment><USER9> > There's a time when the operation of the machine becomes so odious—makes you > so sick at heart—that you can't take part. You can't even passively take > part. And you've got to put your bodies upon the gears and upon the wheels, > upon the levers, upon all the apparatus, and you've got to make it stop.

\-- Mario Savio

I really think there is something to the idea of not going along because you just _cannot_. I think sometimes the "no" comes first, and then comes finding or making a way, maybe.

Though I think disgust with what one is complicit in, and the sheer inability to go on with it, are ultimately also based on positive values, and on not betraying oneself, so it's always a "no to X, to uphold a yes to Y" IMO.

from [https://www.neh.gov/humanities/2014/marchapril/feature/the-t...](https://www.neh.gov/humanities/2014/marchapril/feature/the- trial-hannah-arendt)

> Arendt had removed the guarantee of absolute innocence and automatic guilt > from the question of moral responsibility. What did she put in its place? > The capacity to exercise an "independent human faculty, unsupported by law > and public opinion, that judges in full spontaneity every deed and intent > anew whenever the occasion arises." And who evidenced this capacity? They > were not distinguished by any superior intelligence or sophistication in > moral matters but "dared to judge by themselves." Deciding that conformity > would leave them unable to "live with themselves," sometimes they even chose > to die rather than become complicit. "The dividing line between those who > want to think and therefore have to judge by themselves, and those who do > not, strikes across all social and cultural or educational differences."

Hannah Arendt's essay "Personal Responsibility Under Dictatorship":

[https://grattoncourses.files.wordpress.com/2017/07/arendt- pe...](https://grattoncourses.files.wordpress.com/2017/07/arendt-personal- responsibility-under-a-dictatorship.pdf)

</comment><comment><USER10> Interestingly, the Geneva Convention was barely used at all, and the "excuses" given were mostly based on the politics of the military instead.

<comment><USER11> That's because civilian protections where only added in 1949 to the Geneva Conventions. The Geneva Convention as-of WW2 would only be applicable to PoWs, not civilians.

<comment><USER12> To be fair I don't think anybody saw systemic violence upon civilians during a war between states (as opposed to a civil one) as a realistic possibility during the inter-war period. It was well outside the customs of war in our corner of the world at that point.

The national-social cocktail completely tore apart common decency.

<comment><USER11> > To be fair I don't think anybody saw systemic violence upon civilians during > a war between states (as opposed to a civil one) as a realistic possibility > during the inter-war period. It was well outside the customs of war in our > corner of the world at that point.

Really? Atrocities against civilians in war were common even then. No need to look further than e.g. the colonies.

<comment><USER13> > Really? Atrocities against civilians in war were common even then. No need > to look further than e.g. the colonies.

I think the point was that scale of it was quite different in WW2. In WW2 the majority of casualties were civilians, which was new compared to previous conflicts.

<comment><USER11> [https://en.wikipedia.org/wiki/Civilian_casualty_ratio](https://en.wikipedia.org/wiki/Civilian_casualty_ratio) is of relevance here. WW1 already had an almost 1:1 ratio, though this ratio isn't really indicative of atrocities per se. E.g. previously you might have rather seen pillaging. Going a bit back, the people's crusade of 1096 mostly pillaged European cities and landscape.

</comment></comment></comment></comment></comment></comment><comment><USER14> i get a [PDF] from the submission. no complaints from me but usually a tag [PDF] is appended to title. That being said there are those that just love the excuse of just following orders, and those that have a moral boundary stronger than a perceived social duty.

in a lot of cases there was a cloak such as, we are not told to do it immediately i have more efficient plans.

>Oskar Schindler (28 April 1908 - 9 October 1974) was a German industrialist and a member of the Nazi Party who is credited with saving the lives of 1,200 Jews during the Holocaust by employing them in his enamelware and ammunitions factories in occupied Poland and the Protectorate of Bohemia and Moravia.<

These people were declared essential servants and diverted from concentration.

<comment><USER15> Highly recommend watching this 4 minute piece about Sir Nicholas Winton. Makes you feel good about humans.

[https://youtu.be/PKkgO06bAZk](https://youtu.be/PKkgO06bAZk)

<comment><USER16> Thank you so much for sharing. We should know this man's name. [https://en.wikipedia.org/wiki/Nicholas_Winton](https://en.wikipedia.org/wiki/Nicholas_Winton)

<comment><USER15> You are welcome.

Thank you for spreading his name, here and hopefully elsewhere. He and the people he helped deserve it.

</comment></comment></comment></comment><comment><USER17> It makes me angry, when I see people online talking about the whole of the WWII Wehrmacht as if they are all uniform, fungible movie villains. This was a huge organization of human beings. The degree to which any individual is culpable needs to be considered on an individual basis. Human rights are absolute, even for the soldiers of the enemy. Principles like that are what separate free countries from tyranny.

This is not to say, that there isn't a group accountability for an organization like an army, where people are all wearing the same regalia and literally marching under the same banner. This implies a group responsibility for calling out the wrongs of one's own side. The morality of the faction can be measured as a whole by how well it calls out its own failures of principle, and by what principles it says it upholds and by what principles it eschews.

<comment><USER18> As the paper clearly illustrates, there were so few documented cases of refusal that they are negligible when weighing the war crimes of the Wehrmact and its members.

Less than one hundred out of millions.

Viewing them all as "fungible villains" is a very accurate approximation with a ridiculously low error.

<comment><USER19> You're shot for refusing orders. In a war situation no one is going to bother recording this. You'll either get a letter home that you were a deserter and died dishonourably, so your widow and kids won't even get a pension, or you'll be lucky and the commander sends back a letter that you were killed in the line of duty or from injury/disease.

One way or the other, there will be few situations where such refusal is possible, much less written down.

<comment><USER20> Better to die with a clear conscience than to murder the innocent. If you were cunning you could take the commanding officer out instead.

</comment></comment></comment></comment><comment><USER21> I think it's worth noting that the armed forces and the Nazi party itself were not in lock step for the duration of the 3rd Reich. While the SS answered more or less directly to the Nazi party there were certainly individuals throughout the leadership of the armed forces that did not like their resources being used to carry out genocide and or help the SS because they had little interest in that, they wanted to fight a real war. A lot of the leadership of the armed forces resented the fact that the Nazi party has usurped some of their power so they weren't too keen on bending over backwards to further the goals of their unspoken political opponents. Also have to remember that until they got the death camp system up and running most executions were done by firing squad. Doing this to civilians at large scale is kind of a shitty task so there's going to be really little enthusiasm for it from the lower officers and the grunts who will generally drag their feet and stall.

<comment><USER2> It is always better to study history then to make broad general statements.

As an example Babi Yar one of largest mass execution of Jews during II WW.

> Contrary to the myth of the "clean Wehrmacht", the Sixth Army under the > command of Field Marshal Walter von Reichenau worked together with the SS > and SD to plan and execute the mass-murder of the Jews of Kiev.[1]

[1] [https://en.wikipedia.org/wiki/Babi_Yar](https://en.wikipedia.org/wiki/Babi_Yar)

</comment></comment><comment><USER22> The last line resonated with me a lot "In every case of documented refusal to obey orders to exterminate people, the coercive powers of the Nazi system proved to be impotent or ineffective."

I would have expected the opposite. I guess this means, the structures of society and rule of of law were actually sort of still working, but that most people feared going against the zeitgeist.

<comment><USER23> In fact, the Nazis had perverted the law and its rule but retained the structure of a lawful state, as chaos and anarchy were pretty much out of fashion in Germany after the 20s. Think of the Nazis as a gang of uneducated mobsters winning some decent hotel in a game of poker. They had to retain the reception, the service personal and the kitchen. But they behave disgustingly at every opportunity.

<comment><USER24> "Think of the Nazis as a gang of uneducated mobsters"

Only that they were quite educated. Not the lower troops of SA. But the party members were very much into classical education, classical music etc.

And they totally went by law and order. "Just" a different order. With racism as its core fundamentals and the neglect of humanism in general.

<comment><USER23> It was a metaphor.

<comment><USER24> I know .. but many people have this picture of the Nazis. So I wanted to clarify ..

</comment></comment></comment></comment></comment><comment><USER25> The OP link is dead for me: returns 0 bytes. Anyone got another link?

<comment><USER26> Try this:

[https://sci-hub.se/10.2307/1429971](https://sci-hub.se/10.2307/1429971)

<comment><USER25> Thanks, that worked.

</comment></comment></comment><comment><USER27> This link doesn't seem to work in Australia (Optus). Censorship?

<comment><USER20> Server overload. You can get it from here for the price of creating a login: [https://www.jstor.org/stable/1429971](https://www.jstor.org/stable/1429971)

</comment></comment><comment><USER28> The White Rose pamphlets, by Germans who opposed Nazism during World War II, are fascinating -- [http://whiterosesociety.org/WRS_pamphlets_home.html](http://whiterosesociety.org/WRS_pamphlets_home.html)

</comment><comment><USER29> Conclusion at the end is the biggest surprise.

</comment><comment><USER30> Most people go with the flow. I'd imagine that this was true also when it came to the torturing of prisoners by America post 9/11\. How many refused to go along with that I wonder? Nazi Germany, like the USA, seems to have been a country where the courts were able to operate with a degree of independence and due process consequently existed to some extent. By contrast I remember solzhenitsyn writing how he would much prefer to end up in the clutches of the Gestapo than the NKVD. You had a chance of the Gestapo releasing you if you managed to persuade them off your innocence whereas your fate was already sealed with the NKVD from the moment they decided to arrest you.

<comment><USER31> Was this post intended as sarcasm, or did you actually mean to equate the torture of a small number of prisoners with mass executions of millions of civilians?

<comment><USER30> I never said they were equal. I don't know if anyone was punished for doing it though.

<comment><USER31> Your post appears to be apologizing for the actions of Nazi Germany by comparing the Nazi legal system's civil protections with those of the modern- day United States of America.

The OP discusses instances where individual Germans refused to follow orders. One example:

> By his action to obtain this order, Griese refused the request of the SD to > have his men participate in the execution of Jews in his area.

>In fact, the SD had shot the 365 Jews themselves while he was on his journey to and from Konigsberg

Nazi leadership recognized that mass execution of Jews (and others) by firearm was taking a psychological toll on the Germans being ordered to do so, which is one of the reasons that more abstract, industrial methods (e.g. gas chambers) were developed.

<comment><USER30> How an I apologising for the Nazis? Is it necessary to always preface any remarks in which Nazi Germany and another country may both be referenced with some kind of explanation or risk being called a Nazi apologist? Can we not let the actual arguments speak for themselves? America has tortured people. It has also destroyed Nations it regarded as Savage. How is that an apology for the Nazis?

<comment><USER32> Don't encourage him. He obviously likes feeling morally superior.

<comment><USER31> Perhaps you misunderstand. This is an issue better approached with logic than with emotion.

I draw attention to the parent's false equivalency of Nazi Germany and 21st Century USA. I describe the Nazi regime's recognition of the morale toll on its soldiers of gunning down innocent souls. Himmler himself saw this as an "issue."

Conjecture basis the article that the Nazi German legal system is similar to the modern American system is logically fallacious and dangerous insofar as it suggests that Nazism is compatible with contemporary American political and ethical values.

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> The Milgram Experiment[1] shows that most people do go along with what an authority figure tells them. It's one of the more depressing experiments in social psychology.

[1] [https://en.wikipedia.org/wiki/Milgram_experiment](https://en.wikipedia.org/wiki/Milgram_experiment)

<comment><USER34> The Milgram experiment shows people will role-play if you put them in a role play situation.

It doesn't tell you anything about what people do in the real world in real situations.

<comment><USER35> That's just not correct.

In the original form of the experiment (and several subsequent replications), the "teacher" was under the impression everything was real and wasn't aware the "learner" (the person pretending to get shocked) was an actor.

Today, you'd never get an ethics board to approve the experiment in this form, as several former "teachers" were distraught, after being told the true nature of the experiment, because they naturally assumed they'd never be capable of such terrible acts.

There is no evidence to support the view that the "teachers" who administered dangerous shocks were somehow clued into the fact that it was an actor. That would have made the entire experiment worthless, as "Will people pretend to do evil things while role playing?" isn't an interesting question because thats well understood to be true. Milgram set out specifically to see if every-day people would commit acts that go against their personal conscience if directed to do so by authority.

<comment><USER36> Eh. [https://digest.bps.org.uk/2017/12/12/interviews-with- milgram...](https://digest.bps.org.uk/2017/12/12/interviews-with-milgram- participants-provide-little-support-for-the-contemporary-theory-of-engaged- followership/)

<comment><USER37> That is an interesting article. There are certainly lots of reasons for thinking that the behavior of the participants was much more complicated than is sometimes presented, but nevertheless, it seems not beyond possibility that, when questioned after the event, participants might have made somewhat self-serving statements about actions of theirs that they may have had qualms about at the time.

I find it interesting that the article makes an issue over the point that "the majority do not appear to have continued out of commitment to science," as this particular motivation seems to me to be one of the lesser issues raised by the exercise.</comment></comment></comment></comment></comment>


Cryengine Source Code - <AUTHOR> https://github.com/CRYTEK/CRYENGINE/ <comment><USER2> This is on the front page again. Please take some time to read this wonderful function: [https://github.com/CRYTEK/CRYENGINE/blob/release/Code/CryEng...](https://github.com/CRYTEK/CRYENGINE/blob/release/Code/CryEngine/CryPhysics/livingentity.cpp#L1300)

EDIT: That whole function is a minefield. Just taking a quick look:

* 814 lines of code

* goto inside 3 nested for-loops

* macros

* commented out code

* new/delete, with no RAII

* thread specific variables and locks (?)

<comment><USER3> 800 lines long. The movement component class in ue4 is about 10k lines. Why do game engines separate their code so much less than in other software?

<comment><USER4> Here's a good article from John Carmack on why that can be a good approach in game development: [http://number- none.com/blow/john_carmack_on_inlined_code.htm...](http://number- none.com/blow/john_carmack_on_inlined_code.html)

I feel like this Cryengine example may be a bad example of that, though.

<comment><USER5> Not just in game development. If you have a function that is only called once, it shouldn't be a function yet. Make it a function when you have a second or third use for it. Then, and only then, you will know what the parameters should be.

<comment><USER6> I disagree. Splitting a function up can help with readability and testability. The parent function becomes shorter and the child function can have a descriptive name. The parameters to a function are the fields that are needed for the function to perform its function.

<comment><USER7> Function calls have an overhead, and if the function is only used once it makes no sense to break it out.

It also makes no sense to have a rule on the maximum number of lines for a function. These rules are often created by people who don't write software that needs to have high performance.

<comment><USER8> A function that is called once will always be inlined. Trust the compiler.

<comment><USER9> > A function that is called once will always be inlined.

That is objectively false. Even though I agree with the spirit. For starters, unoptimized builds won't have that. Second, exceptions tend to inhibit inlining. Compare [https://godbolt.org/z/c8Jayf](https://godbolt.org/z/c8Jayf) with [https://godbolt.org/z/Uoo2YA](https://godbolt.org/z/Uoo2YA). Third, it's easy enough to push one of the heuristics used for inlining high enough in the wrong direction (e.g. function size). I recommend the clang optimizer view on godbolt.

Also note that it can be hard for a compiler to prove that a function is not used outside the current translation unit (although anonymous namespaces help with that). Number of calls is only one of the heuristics for inlining though anyway.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Many of the filed issues are "X not work" and not very interesting, but this one...this one is a real gem. [https://github.com/CRYTEK/CRYENGINE/issues/763](https://github.com/CRYTEK/CRYENGINE/issues/763)

<comment> duncan-donuts I'm gonna go with this is a feature not a bug

</comment></comment><comment><USER11> Would it be an overreaction to not want to touch this licence with a barge pole?

Even ignoring the "We may change this licence at any time and it applies to you" parts, there seem to be serious restriction on usage and basically have to ask them to do _anything_ beforehand.

Maybe it makes sense if you are already in a project that is using this Licenced? Is this intended as a general engine licence rather than viewing the source code?

<comment><USER12> Unreal shares its source purely for the sake of people who already license it and need to know how something works/fix something/customize something. Wouldn't be surprised if the same is true here.

</comment></comment><comment><USER3> I considered using cryengine recently but there was an almost total lack of learning resources: I could barely find a tutorial that was newer than 5 years, especially one that involved it's c++ APIs.

I suspect that lumberyards greatest advantage over cryengine in the future will simply be usable documentation provided by amazon. Cryengine is simply not usable without better docs or else an incredible amount of time. Crytek is having financial troubles but I bet their engine would have 10x adoption if they hired a team technical writers

Unreals docs are fairly bad also, but at least there are some third party resources to turn to

<comment><USER13> Unreal docs are fairly good for making games but if you want to modify the structure of the engine it's quite annoying/nonexistent.

Case in point: Vehicle physics is no where near as good as the docs imply (not a toy but still 20 year old vintage), but there is almost no documentation of how PhysX interacts with the Unreal engine proper i.e. you can get the PxRigidWhatever handle but you can't easily replace PhysX with a proper MB package. Epic seem to be transitioning to Chaos but it's not documented yet.

If I ever get good Vehicle physics working I'll write it up (it's definitely possible but I'm not sure how ACC does it)

<comment><USER14> People customizing the UE4 engine professionally or on large projects put a lot of work into the areas they are interested to the point where it's not really UE4 anymore in that area. Gears of War is a good example where areas of the rendering system would be almost unrecognizable as they have put in countless man years of work diverging from the base engine.

<comment><USER13> I'm sure it's possible I'd just rather not read thousands of lines of code to find the nitty gritty.

I want to make the basics of an open source (sim)racing game (as a test bed for writing tyre models), without using the fairly lacklustre offerings included by default (e.g. no sprung mass, no carcass stiffness etc., idealized suspension etc.). I have no need to go into the bowels of the rendering engine but it struck me that the interactions between PhysX and the actual actor model for the vehicle is almost not documented at all. I assume it's possible to do it solely with PhysX (proper suspension) but I cannot find any case studies of people doing it with the possible exception of their drive project which is under $$$ and NDA I'm guessing.

I was also slightly surprised that I had to go looking for the option to connect to the PhysX debugger. It wasn't hard to find but I was half expecting it to be included with the engine.

</comment></comment></comment></comment><comment><USER15> Used to work with cryengine some time ago. That is by far the worst c++ codebase i've ever seen.

<comment><USER16> Interesting sentiment, I sometimes wonder if a "messy" codebase can have advantages for performance.

Many very highly performance tuned applications I saw in the wild would fall into the category of "horrible codebase" when looked at through that lens.

<comment><USER17> It falls more in the category of having a lot bugs which could've been caught if they used static code analysis, code review, etc...

I understand that you might think that messy could mean it's fine tuned for performance. In this case, I highly doubt it and think it's more reasonable to think it's messy because they had deadlines.

The messy part isn't about performance optimizations. It's more about things that got crammed in there and only works for a very specific subset of parameters. And even then you can't be sure it'll work...

I don't blame the programmers, it feels they had deadlines to uphold from managment.

<comment><USER3> What sorts of static code analysis tools do people here use in their game projects? I know carmack is a big fan of them

<comment><USER17> Here are the results for cry engine specifically:

[https://www.viva64.com/en/b/0417/](https://www.viva64.com/en/b/0417/)

[https://www.viva64.com/en/b/0495/](https://www.viva64.com/en/b/0495/)

[https://www.viva64.com/en/b/0574/](https://www.viva64.com/en/b/0574/)

I'm not endorsing pvs studio nor am I saying it's bad. Try out some tools and see what works best for you.

<comment><USER18> It's funny because many of these are the exact possible errors you expect when someone is swimming in a large code block doing lots of copy and paste. Large blocks of code are very hard to test thoroughly, so I imagine the testing was mostly looking to see if things look right followed by play-testing.

</comment></comment></comment></comment></comment></comment><comment><USER19> That license looks like a minefield. Any lawyers able to chime in on the reality of becoming tainted? Given their recent history, this is one codebase you really wouldn't want to risk becoming tainted by.

<comment><USER20> What is their recent history?

<comment><USER19> Crytek v. Cig, which the court ruled largely in favor of Cig, and even called out Crytek's behavior (which was an absolute circus). Crytek will prosecute given even the most questionable grounds.

The consequences of taint are a very real risk here.

</comment></comment></comment><comment><USER21> If curious see also from 2016: [https://news.ycombinator.com/item?id=11760298](https://news.ycombinator.com/item?id=11760298)

Related significant threads: [https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...](https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=Cryengine%20comments%3E10&sort=byDate&type=story)

</comment><comment><USER22> The real issue is clear from their announcement post.

master (now main) was not always stable (of course, stable code are in the stable and release branches) so silly people complained, and the silly PM reacted by closing down pushes to main, and hereby closing down issues and PR's. He clearly has no idea how open source code development works. Now they have to maintain two repos, the internal one and thd public one, and get no feedback from outside. Well, feedback on one year old code.</comment>


Uber is ending its services in Denmark - <AUTHOR> http://www.businessinsider.com/uber-ending-services-in-denmark-2017-3 <comment><USER2> Uber's business model simply cannot survive in sensibly regulated markets when they have to follow the regulations.

Uber is probably better than taxi services in markets that lack basic safeguarding regulations or have questionable regulations like restricted tradable taxi medallions leading to high prices. But this is not the case in many places around the world.

<comment><USER3> _Uber 's business model simply cannot survive in sensibly regulated markets when they have to follow the regulations._

Uber could follow the regulations, charge approximately the same as a taxi, and still make a moderate profit. There's nothing about Uber's business model that says they have to be cheapest or have a monopoly. The only reason they choose not to do that is ambition (or greed if you're being less generous to them).

This is just Uber showing governments around the world that they're willing to leave a market entirely if they don't get their own way. Uber are betting on their customers becoming vocal opponents of the regulation and lobbying their government to change the law in order to allow Uber back without the rules, and for other governments to become fearful of enforcing their regulations in case they anger Uber's customers too. It might work. On the other hand, maybe people aren't actually that bothered about which particular ride company they use, and Uber's strategy won't work. It'll be interesting to see what happens.

<comment><USER4> > Uber could follow the regulations, charge approximately the same as a taxi, > and still make a moderate profit.

That's what they're doing here in Berlin and I really wonder if they make a profit, especially when the competing apps are also funded by deep pockets that don't necessarily try to make direct profits.

<comment><USER5> That's the real problem - Uber has a load of investor money they can use to artificially keep a low price, establish their name, push competition out of the market by undercutting, etc. Until they start to want to make real money.

<comment><USER6> Unfortunately they're going to have to do a _lot_ of establishing to change the associations with that name, now. Short of Kalanick being struck by a freak bolt of lightning, that seems unlikely to happen. Far from it, a place that toxic is going to keep bleeding over time.

<comment><USER7> I assure you that you could ask 100 people in Berlin and no one would have any idea what you are talking about.

<comment><USER6> Between Applebaum, Waymo, and the crash that got the Waymo suit mentioned in every article about the crash for a couple of days... well, maybe they'll hear about it sooner or later. Certainly any Uber competitors must be sitting in a room with their marketing departments and thinking about how to capitalize on this, once they're past the "Hand them lots of rope and give them space," phase.

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> For some reason, Uber in Denmark was never cheaper than taxis. And this despite that practically every taxi here is a high-end Mercedes (and priced accordingly). So Uber skirted regulations and were _still_ not cheaper than the overpriced and politically protected taxi services. Can't say that I am going to miss them. Shame though, because the taxi services here badly needs competition.

<comment><USER8> My experience is that Uber was roughly ~20% cheaper overall.

The good outcome is that the taxi companies ramped up, got out a decent app (with most of the features from the Uber app) and we got discussion and even law changes about how Taxis operate (though not necessarily all for the better).

<comment><USER9> Finland got some updates to taxi law, too, and Uber stays illegal (drivers will be prosecuted for providing an unlicensed taxi service). Sounds like a fair outcome.

</comment></comment></comment><comment><USER10> Seems a reasonable decision by Uber to pull out..."mandatory fare meters" is a bit over the top. But, given the current PR tide, they can hardly afford any more headlines that even sound negative on the surface. They must be dying for a positive piece to be written.

<comment><USER11> Grocery stores are required to have validated scales to measure produce, how is it "over the top" for taxis to have validated meters to measure distance?

<comment><USER12> it is over the top. when I go to a store and buy 2 bananas, i dont really give a shit about whether the scale is validated. I want those two bananas and if the scale says its 2.19, and im fine with that, do I really care whether the scale showed the correct weight? Seriously?

With uber, its the same thing. I want to go a place. The app says it'll be X. Do I give a shit about a meter? Probably not.

This kind of regulation is retarded.

Its about "fraud". I cant be defrauded by a scale. Maybe that was different 100 years ago when this kind of regulation came up. I don't know. I wasn't there. But when Im in a supermarket looking at a piece of produce that I want to purchase and the device that figures out the price says its X dollars, I don't really care how it arrived at that price. I want to buy the thing, or I don't. God forbid it fucks me out of the 2 cents 10 extra grams would cost. Oh lord.

I'd certainly pay a premium to be able to actually get a ride instead of waiting for a fucking taxi with a pissed off driver for an hour.

<comment><USER13> would you care if every transaction you did on your bank account also fucked you out of 2 cents?

We (me in Portugal but a lot of Europe as well) have laws to prevent this kind of fraud. Gas stations, scales in supermarkets, etc all have to be 'validated' every year to make sure no funny business is going on. If you end up fucking up, the fines can/will probably make you close shop.

You may not care, but if for each litre of petrol the station sells, it pocketed one cent, we are talking thousands of euros fraud per day. If most shops do this, the customers are being defrauded of millions.

You still think it is ok?

<comment><USER10> I think it's okay in this case, with taxi meters. The Uber app shows you the route and cost before you commit to it. And, you can verify the calculation with other free tools if you want. A meter in the taxi is actually less useful. It accurately measures distance, but doesn't tell you if the driver took the shortest route.

<comment><USER14> Taxi charges continue while the car is at rest. So the shortest route doesn't mean much if the traffic is barely moving.

</comment></comment></comment></comment></comment></comment><comment><USER15> What is really remarkable about this is that the current minister of transport is a huge supporter of Uber, and his party have again and again explicitly promulgated their support for the company and their business model.

So it is a huge failure for Uber that they couldn't stay in the Danish marked, even with partial endorsement of the Danish government. The problem for Uber is that their business model is clearly illegal in Denmark, and so incompatible with Danish law that even a benign government can't help them.

<comment><USER16> The problem for Uber was that this benign government didn't have a parliamentary majority for the new law without the Danish People's Party who are not particularly interested in supporting Uber or its business model.

</comment></comment><comment><USER17> The government did as much as they could while preserving tax revenues (the new law deregulates the industry). There have been plenty of cases where older meters were hacked back in the 90's. Not requiring meters and seat sensors would have made cheating easy.

</comment><comment><USER18> One thing that was awesome about Uber, was that you could go into a city internationally and just use one app (instead of installing new apps every city or multiple apps for one city!)

The taxi game is becoming more like the Social Media game where you have multiple platforms like Fb, Twitter, Snapchat etc each doing it's own thing.

While that's great, I have 10 different apps on my phone just to deal with Social Media.

BTW I am not suggesting that Uber not be regulated or anything of the sort, but just that, if all taxi companies start having their own apps, I won't install any (from a registration, security and ease of use point of view).

<comment><USER19> From this comment and others, it seems to me there's a business to be made creating a unified app that all taxi services can integrate with. It seems like a large momentum to overcome, but faced with extinction via uber/lyft/etc might be the catalyst to make it happen. Priceline et al made something similar happen to the hotel industry, so it seems possible.

<comment><USER20> This already exists and ironically Uber is leading the charge. [https://www.uber.com/ride/ubertaxi/](https://www.uber.com/ride/ubertaxi/)

It's very, very hard to get taxi monopolies onboard with something like this though. That's why Lyft/Uber had to forcefully enter the markets like they've done. The market is too corrupt for something standardized like priceline to take hold.

</comment></comment></comment><comment><USER21> Not surprising. In highly regulated markets such as Denmark, Uber has always had a hard time. In the early days they played the "ask for forgiveness card", but being a gigantic operation now, that does not fly anymore.

In my home country Germany, Uber also essentially retreated and only has a token presence at very few cities, as the regulatory environment just does not allow the Uber economics to work.

So focusing on the markets where regulation is soft or where Uber has leverage to change regulation is the winning strategy here.

</comment><comment><USER22> Uber's end game, if they cannot get autonomous cars to market before they run out of runway, is to license their technology to taxi's and other transportation firms. There is still a lot of money on the table for them, but probably not in their current vision for the company.

</comment><comment><USER23> beyond the article, sad to see even businessinsider.com blocks ad-block. what a tragedy.

</comment><comment><USER24> I'm sure there's much interesting discussion to be had over Uber's decision to leave Denmark. Unfortunately due to the advertisement banner covering 40% of the screen, I was only able to read 60% of this article.

</comment><comment><USER25> Its popular to hate on uber right now, but we need uber and i hope it survives, the same as we needed airbnb. I had a car crash recently, and while waiting for my car to be fixed had to relay on public transport and taxis. One is slow, allot of time not available, other is unreliable ( they promise you a taxi but it never comes because thy took somebody else) and expensive.

With regular taxis the supply is limited, they will rather make smaller number of rides per day for bigger price. And that is what everybody in monopolistic position will do ( see Intel when AMD is weak, or any other example ). I dont think we should enable them to do that.

There probably needs to be some kind of regulation, government wants those taxes, but lets not cheer for uber to die.

If uber withdraws everybody will lose.

<comment><USER26> I disagree.

We need alternatives or modernization to current transit systems and companies; we don't need Uber.

I'm living abroad at the moment in St. Petersburg Russia, and the local taxi company's response to Uber was basically to clone Uber. People here are just as ready to summon a Yandex taxi or one from the multiple other taxi services publicly available as they are to use Uber. My last experience with a Yandex taxi was seamless - driver was to our location in a few minutes, fare was ~ 500 RUB (little under $10), no tip expected, and they made exceptions for us having multiple stops for different people.

There is nothing unique or special to Uber except the huge amount of hype and VC money behind them - just like we saw in the US with Austin, TX, Uber's model is easily replicable and scalable for local companies.

Uber is throwing its weight around and finding out that it really doesn't carry as much weight as it thinks it does, and pretty soon investors and other transit companies are going to start to capitalize on this.

<comment><USER27> As a local, this may solve your problem in St. Petersburg. But what if i am a traveller and regularly travels b/n different places in the world. Do i need to keep track of every taxi service? That will be painful. It does not mean that i support Uber as a company. I support for their global transport model. We will help you go from Point A to Point B without much hassle wherever you are in this world. That's why, if Uber dies, no one will again dare to attempt to solve this amazing problem. I am really surprised with different regulations in different countries for such a beautiful solution which they are offering. That's really a pity. :/

<comment><USER28> A global transport model would be nice. But it _should not_ rely on a single operator. Instead it should be based on a standard (like HTTP, etc) such that _all_ taxi companies are independent and able to live up to national standards.</comment></comment></comment></comment>


Ending the Era of Patronizing Language Design - <AUTHOR> http://blog.objectmentor.com/articles/2009/07/13/ending-the-era-of-patronizing-language-design <comment><USER4> This article has so much crazy that I almost don't know how to respond to it.

C++ coddles programmers and Ruby doesn't. Really? That sounds like a sensible thing to say?

C++ avoided reflection because it would be misused by programmers? Only a profound misunderstanding of the design goals of C++, or having never actually used it, could inspire such a claim.

ActiveRecord is a Rails innovation that took decades to realize? What? Why would you think this?

</comment><comment><USER5> _So, why aren't more people crashing and burning?_

because:

a) You're awesome, as long as you're using Ruby no matter how ridiculous you look when seen without rainbow colored glasses - <http://www.infoq.com/presentations/ford-large-rails>

b) The "you're doing it wrong crowd" will shout you down the moment you admit having troubles - [http://glu.ttono.us/articles/2007/04/15/on-twitter-rails- and...](http://glu.ttono.us/articles/2007/04/15/on-twitter-rails-and- community)

c) Most failed Ruby (which in all fairness usually means Rails) projects never gain any publicity.

d) Ruby projects coming close to the gargantuan scope of some of the bigger Java projects are (thankfully) exceedingly rare (if not non existent).

Lastly I had no clue that Saeed al-Sahaf is now working for Object Mentor, awesome!

Disclaimer: I worked for 3 years as a Ruby developer, including on one of the bigger (> 50.000 loc) Rails projects out there and I encountered some crashing and burning myself (I know I did it wrong).

</comment><comment><USER6> The author acts as though languages like Ruby, which defers to the programmer to not screw himself, are a new thing. Just because the "enterprise" has been trapped with C++, C#, and Java for the last two decades says less about language designers in general (as the author posits here) and more about the thinking of large organizations in choosing languages to build their software in.

</comment><comment><USER7> He admits that he doesn't know Ruby deeply, but then he goes on to assert that Ruby people don't seem to create messes that paint themselves into corners.

From what I've read plenty of people have done just that in Ruby because of monkeypatching.

<comment><USER8> I've been coding in Ruby/Rails for 3 years now, and been active in the community, and I haven't yet done that or encountered anyone who had done that. People are warned that monkey-patching is dangerous, they learn how to monkey-patch responsibly, and they act accordingly and responsibly - <USER2> something does go wrong with monkey-patching (which, as I've said, seems not to happen), the person who did the patching is aware of why things are going wrong, and doesn't blame it on the language - I can't remember reading a single query in, say, #rubyonrails, where the problem was due to monkey- patching.

<comment><USER5> _I've been coding in Ruby/Rails for 3 years now, and been active in the community, and I haven't yet done that or encountered anyone who had done that._

Than you seem to have had much more luck than I did.

<comment><USER9> Grammar nitpick: That would be "then", not "than" (this particular error never fails to gum up my non-native English spearker's parser).

<comment><USER10> Nitpick nitpick: This statement refers to the first "than," not the second, which is used correctly.

</comment></comment></comment></comment></comment><comment><USER11> Another problem I see with creating artificial barriers is the demoralizing effect in can have on someone trying to learn a language. Whenever I'm prevented from doing something because some committee thought it was too complex for me, I begin questioning whether I'm using the right tool. Who knows what other random rules are going to jump out and bite me later.

I would much rather do something the wrong way and be burned by it (and probably learn a lot in the process), than be prohibited outright from using certain techniques.

</comment><comment><USER12> I like the idea of having the freedom to do everything but also having intelligent defaults to nudge the programmers in the right direction. Optional immutability is a great example of this. When you make something the default, you send the message "this is usually the right way to go about things".

<comment><USER13> When immutability is optional, you can no longer rely on it to reason about the program. Specifically, you have to verify that any two pieces of code you're worried about actually don't interact, because you no longer have a guarantee that they can't. I think a lot of restrictions are like this.

Edit: To quote a great comment on the article,

> Invariants make software more reliable. Weaker languages have stronger > invariants. There's less stuff to test.

</comment></comment><comment><USER14> From the outset, I'm aware that programmers who haven't tried to design programming languages will likely disagree with me; but I'll express what I've learned anyway.

The truth, from the language designer and compiler author's perspective: programmers should be protected from their own worst instincts, and programming languages that do this well are of a higher quality than languages which don't. Patronizing, to a point, is good. The flip side is that features whose use should be encouraged should be included in the box, turned on by default, made easy to use, etc.

Ruby is patronizing because it's memory safe. C and C++ programmers don't like this kind of patronization. Ruby, and Python, are unlike C and C++ in this way: they are rigid and uncompromising in their type safety, disallowing unsafe casts and operations.

Michael makes some category errors in his rant. For example, he says:

 _"[...] we've made the assumption that some language features are just too powerful for the typical developer -- too prone to misuse. C++ avoided reflection"_

The problem with this abutment is that C++ avoided reflection in its quest for power (or what C++ users thought was power), rather than its avoidance of power: C++ users wanted to hew to a philosophy of pay only for what you need. The problem with that philosophy is that if you make certain features optional, or pay as you go, then the community in general cannot assume that everyone is using available features. Instead, third-party library authors must assume that only the lowest common denominator set of features is available if they want to maximize usage.

Java and C# have avoided multiple inheritance for good reason; and Michael's rant is not a good reason for them to reintroduce that feature, because it remains problematic.

 _"The newer breed of languages puts responsibility back on the developer"_

This is simply untrue, and bizarrely myopic, in my view. The developer always has responsibility, but the responsibility has shifted to different places, as the emphasis on abstraction level in programming languages has shifted. To take Michael's thesis at face value, you would need to believe that C mollycoddled the user and didn't bite their fingers off when they didn't take care of their pointers, or carefully handle their strings, or foolishly used fixed-size buffers for dynamic input.

Of course C put responsibility in the hands of the developer for these things. But guess what? Ruby, Python, C#, Java etc. all take away responsibility from the developer for these things! Michael says that dynamic languages like Ruby hand over the power of monkey-patching etc. to the developer, and that this is a new development; but to get equivalent power of dynamic behaviour overriding in a C application, you'd be using very abstract structures, likely looking like a Ruby or Python interpreter behind the scenes, where you would have a similar degree of responsibility. But not only that; you'd also be responsible for the dynamic runtime, as well as the memory management and all the other unsafe stuff that comes with C.

<comment><USER15> Interesting points, but I think you're bordering on straw manning the author. I'll grant you that maybe C++ is about as bad an example as you can get of putting responsibility in the hands of the programmer.

In fact, it was behind a lot of Java's decision to take that power _out_ of the developers' hands. I would argue that Java was an overreaction. It corrected the safety issues, but also removed a lot of the ability to create abstractions. Want a global variable? Those are bad, don't use them. Want multiple inheritance? That's bad, don't use it. Want operator overloading? That's bad, don't use it.

The problem is that the fact that those things are bad in some cases (even arguably most cases), doesn't mean they should be forbidden. I know what I'm doing. If I want to use a global variable I should be able to. I know what I'm writing. The language designer doesn't.

In other words, to make a long story short: I don't think he was trying to say that responsibility needs to be in the developers' hands in _all_ cases. But I think that he makes a valid case that newer languages are right in moving some of that responsibility back to the programmer.

<comment><USER16> Java supports global variables just fine -- in fact, most Java code uses far too many globals for my taste.

Multiple inheritance and operator overloading aren't _bad_ , but at the time Java was designed, nobody had any idea how to use them properly. Python 2 gets MI right (though Py3 fucks it up a bit with magical super()), and Haskell provides a clean implementation of overloading, but it'll be years before these improvements filter through to Java (if they ever do).

<comment><USER17> > _Multiple inheritance and operator overloading aren't bad, but at the time > Java was designed, nobody had any idea how to use them properly._

Really? I was coding C++ using multiple inheritance and operator overloading around then, and AFAICT was using them properly.

<comment><USER16> Sorry; I meant language designers didn't know how to use them. C++ is a perfect example of operator overloading gone horribly wrong.

</comment></comment></comment></comment></comment><comment><USER18> The problem with saying "you can do things in whatever way you want in Ruby" is that the moment you have more than one developer it collides rather drastically with the "principle of least astonishment". This is not to say that making everything out of eg Java boilerplate is the solution. The key is writing well-behaved and consistent code, which you can do in most languages.

<comment><AUTHOR> The argument I take is that while you can write well-behaved and consistent code in any language, there is no language that forces you to do so. So picking a language on the basis that it will force/encourage people to write well-behaved and consistent code--even if they don't want to/don't know how to/don't give a toss because they're a cheap contractor six time zones away-- is a broken choice.

<comment><USER14> Programming languages are UIs. Your assertion is tantamount to saying that there is no such thing as a bad UI; that a choice between UIs is a broken choice, because you can still get your job done no matter what UI is there, or similarly you can still do a crappy job no matter what UI you use.

But this is just wrong-headed thinking, to my mind. UI definitely influences user behaviour. One thing currently in vogue is game mechanics; the whole point of using game mechanics in your UI is to encourage certain kinds of behaviours, and it works, dagnabbit! Most UIs that have any coherence to them at all have a way of working with their grain, and many more ways of working against their grain. If they're good UIs, working with the grain ought to reduce your non-essential work load and make working a pleasure. If they're poor, you'll have to work against the grain, fighting the design, to get your job done.

Programming languages are directly analogous to this.

<comment><AUTHOR> I agree with everything you're saying about programming languages having a grain, and of making some things easy and other things hard. That's the general case.

However, the two specifics we're talking about are well-behaved code and consistent code. Most language in theory make it ridiculously easy to re-use code, to make code DRY. Languages like Ruby actually give you more tools for making code consistent than languages like Java.

Yet, there is a lot of awful Ruby code and some elegant Java code. I've seen some amazing assembler code. It seems that somehow languages don't seem to have a lot of influence over what we might call architecture.

Perhaps the issue is that languages are hand tools, but programs are cathedrals.

p.s. If I had to bet, I'd say there is more of a correlation between languages and architecture than a causal relationship. Paul wrote about this some time ago: <http://www.paulgraham.com/pypar.html>

<comment><USER19> _It seems that somehow languages don't seem to have a lot of influence over what we might call architecture._

My instinct suggests instead that languages differ as to the standard deviation of quality of code written in them.

</comment></comment></comment></comment></comment><comment><USER20> I think the best comment on this comes from Glenn Vanderburg:

[http://www.vanderburg.org/Blog/Software/Development/sharp_an...](http://www.vanderburg.org/Blog/Software/Development/sharp_and_blunt.rdoc)

The money quote here is this:

 _"Weak developers will move heaven and earth to do the wrong thing. You can't limit the damage they do by locking up the sharp tools. They'll just swing the blunt tools harder."_

Which is so very, very true in my experience.

Designing a language around the idea of protecting weak developers from bad choices is a recipe for failure and mediocrity. Instead, look toward designing in a way that guides experienced or at least thoughtful developers toward greater success.

tl;dr: Don't make bumper cars for people who can't be trusted to drive, make nomex suits and roll-cages for race car drivers.

</comment><comment><USER21> It's not about being patronizing. It's about recognizing our human limitations: "As a slow-witted human being I have a very small head and I had better learn to live with it and to respect my limitations and give them full credit, rather than try to ignore them, for the latter vain effort will be punished by failure." (Dijkstra, EWD249)

<comment><USER22> I understood Dijkstra to be arguing for simple languages, being more susceptible to formal proof, easier to understand, etc.

Langauges like, say, C# are complicated _and_ patronising. That's the sort of language I thought the article was comparing Ruby with.

<comment><USER21> > I understood Dijkstra to be arguing for simple languages, being more > susceptible to formal proof, easier to understand, etc.

Yes, he was. In a way, though, isn't Dijkstra's sort of "designing for simplicity" and even the goal of making a language "easier to understand" the very definition of "patronizing"?

<comment><USER22> I don't think so. For one thing, he wasn't just driving at "easier to understand", he was also after "easier to formally prove correct", which isn't at all patronising.

I also don't find a goal of "easier to reason about" particularly patronising; it makes the rather un-patronising assumption that the target audience is willing and able to reason about the matter at hand.

The language features I find patronising are the ones that make it hard to do things a certain way, regardless of how carefully considered my reasons are.

<comment><USER21> > The language features I find patronising are the ones that make it hard to > do things a certain way, regardless of how carefully considered my reasons > are.

Any in particular that you have in mind? Historically, many people have had very carefully considered reasons for using features like goto, type puns, etc. but many languages exclude them as problematic. Is it patronizing to exclude such features even from the toolbox of programmers who carefully consider their use?

<comment><USER22> My current least favourite patronising language feature: in C#, you can only override a method if the base class lets you.

In answer to your second question, I think it depends. Including gotos in a language is problematic for reasons other than the fact that programmers tend to misuse them. I think it comes down to the rationale. With the C# feature I mentioned, the stated reason was, inter alia, that programmers tended to misuse inheritance. I found that patronsing. That leaving out goto makes it easier to formally prove a language correct I do not. Leaving out goto because programmers tend to misuse it, that I would find patronising.

<comment><USER21> I apologize for not having the time to make this comment appear less like interrogation and more like a discussion ("if I had time, I would have written a shorter letter"), but I'm in a hurry :) Rest assured, I'm not arguing with you, but genuinely interested in your responses.

> My current least favourite patronising language feature: in C#, you can only > override a method if the base class lets you.

My recollection from the design of Java is that such "finality" is necessary to allow the type system to reject code that attempts to override security- sensitive methods: is that not still true of C#?

> I think it comes down to the rationale. With the C# feature I mentioned, the > stated reason was, inter alia, that programmers tended to misuse > inheritance. I found that patronsing.

What of a language that eschews inheritance entirely, both because it makes reasoning about software more difficult and because the vast majority of programmers cannot use it correctly?

"Patronizing" seems to indicate that a designer considered himself smart enough to use a feature, but determined his "subjects" were not. What of designers who recognize their own limitations and remove features they know to be error prone in their own practice of programming? Is that still patronizing, or does it deserve a different descriptor?

<comment><USER22> > My recollection from the design of Java is that such "finality" is necessary > to allow the type system to reject code that attempts to override security- > sensitive methods: is that not still true of C#?

That's still true. The "feature" I has in mind is that methods in C# are not virtual by default. This is in direct contrast to Java where they are. This interview has a discussion on the motivation behind this (IMO incredibly tiresome) feature: <http://www.artima.com/intv/nonvirtual.html>.

My view is that the real issue is that inheritance is all too often used when composition is more appropriate, which problem this change does nothing to help.

> What of a language that eschews inheritance entirely, both because it makes > reasoning about software more difficult and because the vast majority of > programmers cannot use it correctly?

If it only makes the language better for "bad" programmers, I would consider it patronising. It also comes down to the intent of the language designer, by definition.

> "Patronizing" seems to indicate that a designer considered himself smart > enough to use a feature, but determined his "subjects" were not. What of > designers who recognize their own limitations and remove features they know > to be error prone in their own practice of programming? Is that still > patronizing, or does it deserve a different descriptor?

I think that's worthy of a different descriptor. A failure to anticipate the needs of programmers who are smarter or more disciplined or whatever - <USER3> is what such an omission seems like to me - may be a problem, but I don't see it as patronising.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> I know everyone's read it 100 times already, but:

 _Like the creators of sitcoms or junk food or package tours, Java's designers were consciously designing a product for people not as smart as them. Historically, languages designed for other people to use have been bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp._

From here: <http://www.paulgraham.com/javacover.html>

<comment><USER24> Fun quote, but factually incorrect. For example, who was the first user of C++? Bjarne himself. He needed the power of Simula, but at the time Simula implementations didn't scale. He took the ideas he found useful in the language and put some into C, as he was building large scale C/BCPL applications.

To me that's the definition of building a language for yourself. You actually write a language that you need to solve a specific problem you have.

And I find his categorization of good vs bad languages somewhat absurd. What actually makes Ada, C++, and Pascal bad? His lack of understanding? What makes C, Perl, and Lisp good? The inverse?

While I have my own personal prefernces with respect to languages, I fully believe a large part of it is familiarity. I've NEVER met anyone who could argue why a particular language was truly bad. They usually are just passionately arguing religion, and I find that tiring. It was cute when I was in high school, but those debates are getting tired.

<comment><USER21> Also, according to Kay's "The Early History of Smalltalk" [1], Smalltalk was very much designed with end users in mind.

[1] <http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html>

</comment></comment></comment><comment><USER25> You have to patronize at least a little bit to write something that is more than a glorified assembly language - otherwise you have no basis to build your other abstractions on.

With C, for example, there's a predefined model for the callstack based around having a fixed set of arguments for function calls and singular return values.

Forth, on the other hand, treats words as simple nested subroutines, keeps data on a global stack, and lets the data carry over from one word to the next. No explicit arguments or return values are necessary.

C can be characterized as "safe," while Forth is "flexible," depending on your use case, but in terms of pure performance both models have strengths and weaknesses.</comment>


The Wild Ones - <AUTHOR> https://magazine.atavist.com/the-wild-ones-grand-canyon-colorado-river-first-women <comment><USER2> Such an interesting expedition, pioneering for the women in particular. There is one thing I wonder: how they manage menstruation. Unfortunately propriety probably kept them from writing the details (and the same goes for much of pre-60s history). Nowadays, you can take the pill to avoid it for a long period which is easier. But in those days, I imagine they had only cloth pads which were not very hygienic nor efficient - I cannot imagine, on the heaviest day of my period, having to navigate rapids while wearing uncomfortable menstruation aids. I wish we had more historical knowledge on the topic.

See #10 here for what these women might have had to wear [https://metro.co.uk/2015/05/20/history-period-a-look-at- mens...](https://metro.co.uk/2015/05/20/history-period-a-look-at-menstruation- through-the-ages-in-15-fascinating-facts-5204085/)</comment>


Is there a Sales School for Hackers? - <AUTHOR>

Something akin to much of the 'learn to code' type of classes that have gained popularity in the past year?<p>It seems that a good hacker would have much more to gain by doing a 'learn to sale' type of class than a bizdev guy taking coding classes. <comment><USER2> You don't need a school to learn the basics of selling. You already have the knowledge, what you need to expand on is your confidence and structure. Structure is easy. You are a hacker, thus design comes to you naturally. In sales, design applies to the steps needed to find and move prospects from one point to another. Something like: prospect sees your first ad after searching for a product like yours, prospect visits site, subscribes to mailing list in exchange for free report, receives three different emails that try and clos the sale, if nothing is sold then receives a link with a video brochure, etc., until the sale is closed. It is just hacking, and I even code my own marketing campaigns in code. You should try it out.

Now, confidence. That you only get by selling something every day. No matter what the outcome, you go out and sell.

</comment><comment><USER3> Just as you learn to code by doing, you would learn to sell by doing, but ideally with a mentor. Now how do you find a skilled salesperson willing to take a sales noob under the wing. They might if any received royalties were waived or greatly reduced.

Also, consider which type of sales do you want to learn. The fast close (we meet for the 1st time, you demo and try to close me in 10 minutes) or the slow method (build relationships over time, many demos, many trips, close once and receive royalties on repeat orders).

</comment><comment><USER4> I've written a few articles about this - do you think this something people might be interested in learning in a Skillshare class?

[http://www.jasonshen.com/2012/13-strategies-to-get-buy-in- fo...](http://www.jasonshen.com/2012/13-strategies-to-get-buy-in-for-your- great-ideas/)

[http://www.jasonshen.com/2011/ive-heard-great-things- about-y...](http://www.jasonshen.com/2011/ive-heard-great-things-about-you-a- nondouchey-guide-to-personal-branding-and-self-promotion/)

</comment><comment><USER5> Funny you should mention that. A sales trainer fried of mine is working on one right at this moment.

If you're interested in "beta testing" it just let me know.</comment>


SciFi Interfaces – Example from Black Mirror - <AUTHOR> https://scifiinterfaces.com/category/black-mirror-2011/ <comment><AUTHOR> Some of the posts that I liked:

* _Her_ : [https://scifiinterfaces.com/2014/02/11/her-interface-compone...](https://scifiinterfaces.com/2014/02/11/her-interface-components/)

* Enterprise combadge: [https://scifiinterfaces.com/2014/01/23/the-wearble-combadge/...](https://scifiinterfaces.com/2014/01/23/the-wearble-combadge/#more-5680)

* Ironman HUD: [https://scifiinterfaces.com/2015/07/01/iron-man-hud-a-breakd...](https://scifiinterfaces.com/2015/07/01/iron-man-hud-a-breakdown/#more-7964)</comment>


A web application to build your Blog on GitHub - <AUTHOR> http://blog.hubpress.io/

<comment><USER2> This is very cool! It reminds me of Jekyll for github blogs. What blog software are you using? It looks like Ghost? Good job! If you use Bitcoin would love to tip.</comment>


How to Improve Your Thinking in One Step - <AUTHOR> https://dev.to/mtdvio/how-to-improve-your-thinking-in-one-step-2gb9 <comment><AUTHOR> Transforming implicit mental models into explicit is the most important step in learning for me. And it's only possible to understand whether I had done it right when I try to apply them in practice.</comment>


Scientists Find Record 2.7M-Year-Old Ice Core in Antarctica - <AUTHOR> http://www.smithsonianmag.com/smart-news/scientists-find-27-million-year-old-ice-core-antarctica-180964566/?no-ist <comment><USER2> This appears to be how they computed the date: [https://en.wikipedia.org/wiki/K%E2%80%93Ar_dating](https://en.wikipedia.org/wiki/K%E2%80%93Ar_dating)

With just 1 sample they can't conclude much, but if they find a bunch of others, they'll have an interesting set of datapoints from the composition of the tiny air pockets in the ice.

<comment><USER3> You can read more in this open-access PNAS article[0].

[0][http://www.pnas.org/content/105/24/8232.full](http://www.pnas.org/content/105/24/8232.full)

</comment></comment><comment><USER4> Does this mean it should have 2.7 million ice core layers in the cross section?

<comment><USER5> Apparently not. They say the ice "is not organized into neat layers", so they have approximated the age based on potassium and argon concentration.

Though it doesn't mention what potassium and argon have to do with age. Short explanation, anyone?

<comment><USER6> Isotopes of potassium decay to argon and the amount of accumulated argon - combined with knowledge of the decay rate - allows one to use the system as a clock:

[https://en.wikipedia.org/wiki/K%E2%80%93Ar_dating](https://en.wikipedia.org/wiki/K%E2%80%93Ar_dating)

<comment><USER7> that assumes you know how much it started with and what the environment was like then

<comment><USER2> The Wikipedia page covers these issues, albeit for crystalized rock instead of ice. The measurement is a ratio, so the key thing is establishing that Argon 40 is normally not present in rain or brand new ice.</comment></comment></comment></comment></comment>


Show HN: VisitorEngage - Feedback, notifications & Surveys - <AUTHOR> http://visitorengage.com

<comment><AUTHOR> VisitorEngage is a SaaS platform to get a feedback button, run fastest surveys/polls & proactively push notifications on your website based on visitor behavior.

Instant setup, built for marketers. I'm the founder/ceo of this. We launched in beta around a month ago. Looking to know the views of HN community.</comment>