Go Away: Artist colonies are mysterious places (2012) - <AUTHOR> https://themorningnews.org/article/go-away <comment><USER2> Are there any colonies like this for programmers?

<comment><USER3> I've occasionally thought it would be interesting to have a place where programmers and other people involved in "knowledge work" could live and work half of each day at intellectual tasks and spend the other half in physical labor to support themselves. So you get up and milk the cows, then go write some code, then later in the afternoon hoe the corn. I get most of my best thinking done when I'm doing a repetitive task like washing the dishes or maintaining the lawn, anyway.

<comment><USER4> Seymour Cray used to dig tunnels.

NOTE: This is probably a very dangerous activity.

<comment><USER5> Heck yeah it's dangerous! Ever read about the bitcoin millionaire who hired someone to dig a tunnel system under his house and the worker ended up dying on the job? Crazy story: [https://www.cbsnews.com/news/md-millionaire-charged- in-death...](https://www.cbsnews.com/news/md-millionaire-charged-in-death-of- man-he-hired-to-dig-tunnels-beneath-his-home/)

<comment><USER6> To be fair, digging tunnels is not quite as dangerous when your boss isn't a complete nutcase. This was an exceptional case.

</comment></comment></comment></comment></comment><comment><USER7> Lovely. This kind of article always ignites some obscure desire to become a professional writer, even though I would probably be crap at it :)

<comment><USER3> The only way to know if you'd be crap is to try writing. Short stories are a fun place to start, just pick a genre you like and give it a shot. Like everything else, it takes practice and your first few attempts will be crap. Advice: don't spend any time on writing forums or subreddits, they're full of people who'd rather talk about writing than actually do it, but despite all their theorizing they still can't turn out a decent page.

<comment><USER8> _The only way to know if you 'd be crap is to try writing. Short stories are a fun place to start, just pick a genre you like and give it a shot._

It's enough to simply read the right authors, or at least it was for me. You can tell if you belong in their company or not. If you can't, well... that's a strong hint in itself.

<comment><USER9> Find their first published stories. Find their earlier stories, sometimes they get used to fill out a shorts collection for laughs. Then ask yourself if you belong in _that_ company.

And then ask yourself if you care, maybe you'll never write enough to have a shot at a publishing deal, much less a bestseller, but maybe you just like telling stories to yourself and maybe a few friends.

</comment></comment></comment></comment><comment><USER10> Obligatory My Dinner with Andre reference:

[https://www.findhorn.org/](https://www.findhorn.org/)</comment>


What cold showers and exercise have in common (2014) - <AUTHOR> http://gettingstronger.org/2014/02/what-cold-showers-and-exercise-have-in-common/ <comment><USER2> I started taking cold showers about 3 months ago when my cofounder challenged my statement of: "Why don't more people eat healthy and exercise? It sucks at the beginning but it just keeps getting better." With the statement of "for the same reason you don't take cold showers." I'd never heard that cold showers were good for you and after validating his claims, I gave myself two weeks to get used to as-cold-as-possible showers. After about ten days it started being less painful, and now I can barely imagine going back. Yes the 3 degree Celsius showers still kinda suck; but they wake you up and they make the towel afterwards so warm and inviting. They make you hardened to the outdoor cold and they make you not need that first coffee in the morning.

If fixing diet and exercise are number 1 and number 2 to being a happier human. I'd put fixing the person you're dating at number 3, the people you're friends with at number 4, and the temperatures of the showers you take at number 5. A+ / 5 star - would have my cofounder challenge me again.

<comment><USER3> I tried cold showers for at least a month. I can confirm it gets easier & feels less painful over time, and there is a kind of rush that you get from it.

But ultimately I stopped. Partly because my hair never washed right in the cold water, but mostly because the showers were making me grumpy & irritable for the rest of the day. I didn't enjoy that feeling, I didn't particularly enjoy the showers, and I didn't notice any productivity or health benefit.

I first heard about cold showers from Joel Runyon, so I'll give him a link [1]. But it quickly went from blogs about "here's a self-motivation idea I'm trying" to "here is my TEDx talk and Cold Shower Therapy™ email course and download the Cold Shower Therapy™ app on the App Store".

[1] [http://impossiblehq.com/cold-shower- therapy/](http://impossiblehq.com/cold-shower-therapy/)

<comment><USER4> I've taken cold showers every weekday for the last few years. The way I get around the problems raised (washing hair, etc.) is that I have a really hot shower just before bed. This helps me sleep by lowering my core body temperature.

Cold showers are great and, as someone who's suffered from depression in the past, I go into each day thinking, "what's the worst that could happen"?*

*I realise that sounds flippant, but it's true...

<comment><USER5> So you shower twice a day? My skin wouldn't approve...

<comment><USER6> I've been doing this (both hot, though) most of my life. My skin is fine, but my hair used to take a beating -- now I only wash it every other day, rinsing in between, and it seems to work well.

</comment></comment></comment></comment></comment><comment><USER7> While this may or may not be true hacker news is particularly susceptible to exercise fads with unconventional scientific explanations.

I think it'd be easier to convince the readership of HN to lose weight and get fit by eating live maggots whilst suspended upside down in a vat of soylent than to just show up to the gym 3x a week.

The most important way to get fit is to show up and do work. The virtues of a programmer (laziness, impatience, hubris), are the opposite of what you need to succeed at physical fitness.

<comment><USER8> Ok but when I'm showering up at the gym - is a cold shower better? Will I see better/faster/more lasting results?

Seriously. I shower at the gym pre-work, so I'm usually taking a cool shower as it is, but I hadn't heard of cold showers being a thing before this.

<comment><AUTHOR> Look it up, but it's possible that cold showers are not good post-exercise due to them hindering blood flow and preventing removal of waste materials from muscles.

</comment></comment></comment><comment><USER9> The writer's about page says:

> Todd's philosophy of Hormetism is the result of years of personal > investigation into the role of moderate stress in adaptation, as applied to > health, nutrition, rehabilitation and psychology.

Hormetism is the idea that a low dose of a chemical can induce a response that's the opposite of the response seen at a high dose [1].

Hormetism is, to say the least, very controversial. It is at best a seldom observed, poorly understood phenomena that's important for the biological role of nitric oxide and a few other chemicals. At worst, it's like homeopathy: quacktacular pseudoscience. So take this article with a grain of salt.

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

<comment><AUTHOR> French Academy of Sciences has publicly claimed that radiation hormesis is a fact.

I would not call hormetism 'very controversial'.

<comment><USER10> Water must fall into the same category, as I have seen reports of people dying after drinking too much.

</comment></comment></comment><comment><USER11> Simple physics analysis

Almost all of the energy we get from food is used to heat our bodies, mostly indirectly via our liver, spleen and brain. [ [https://www.boundless.com/physics/textbooks/624/work-and- ene...](https://www.boundless.com/physics/textbooks/624/work-and- energy-6/power-65/humans-work-energy-and-power-287-6037/) ]

A 40 degC person exposed to 0 degC air would lose heat at twice the rate of normal (40 degC person in 20 degC air). That's because convective heat flow rate is roughly proportional to temperature difference. All that heat has to be made up for by the body's metabolism. So you would burn calories at nearly twice the rate you would normally. It doesn't matter if it comes from brown fat, shivering, waste heat from your brain, or some other process, as long as it's internal to your body, it's taking energy that would otherwise not have been used.

A shower in 0 degC water could be on the order of 100 times more effective than 0 degC air, so you could get the same value from a shorter exposure. [ [http://www.engineersedge.com/heat_transfer/convective_heat_t...](http://www.engineersedge.com/heat_transfer/convective_heat_transfer_coefficients__13378.htm) ]

A cold shower for a couple of minutes a day (0.1 % of your life) would be equivalent to cold air for a couple of hours (10% of your life). That's about 10% more energy used than otherwise. So it sounds like even from a simple heat transfer perspective, cold showers must be effective at losing weight, as long as you don't compensate for that some other way like feeling more hungry afterwards :P

<comment><USER12> A cold shower lowers your skin temperature, which in turn causes your body to restrict the blood flow to save heat. When you get out of the shower and back in to the warm you start pumping blood back to the surface again. There is no additional work done to warm you up. Your physics approach is betrayed by biology. We've had thousands of years to evolve an efficient solution to the problem of heat conservation.

<comment><USER13> So having a cold shower has no effect on core temp? What about a cold bath? What about being in the sea after an accident at the higher latitudes??

Also I think you will find that returning your skin to a normal temperature after chilling in in any way (water, aircon, etc) temporarily decreases core temperature after which you expend energy to return it to normal.

We may have had thousands (if not millions) of years to evolve solutions to heat conservation but they aren't perfect, or people would never die in freezing water or conditions.

<comment><USER11> If your core temperature drops, it's probably because you're losing heat faster than you can generate it. That kind of points to how effective this could be in the limit of being nearly fatal - If you can lose more heat than your body can produce, you're surely doing a pretty good job of burning calories!

Yes, I agree we're far from perfect at conserving heat. We're optimized for other conflicting purposes instead. We don't even have fur.

</comment></comment></comment></comment><comment><USER14> One thing I know that cold, exercise, and _loud noises_ all have in common is that the body responds to them by producing adrenaline. People are told by nutritionists to take compounds like tyrosine to make up for the essential nutrients (i.e. phenylalanine) that sustained adrenaline production uses up, if they work in an environment with frequent "shocks" of any of the above types.

I do wonder if actually being in such a phenylalanine-depleted state (which is then also a tyrosine-depleted, phenylethylamine-depleted, L-DOPA-depleted, dopamine-depleted, adrenaline-depleted, and norepinephrine-depleted state) has any long-term effects on the body, which might even be positive. Goodness knows it certainly makes you want to sleep for a week.

(Come to think of it, an interesting question would be whether people with phenylketonuria who grew up on a compensatory dietary-restriction regimen low in phenylalanine—thus causing such sustained deficiencies of all the above—have any physiological differences to people without phenylketonuria.)

<comment><USER15> Can you comment on whether chronic stress could be added to that list of factors contributing to phenylalanine depletion?

<comment><USER16> The wikipedia page for Tyrosine suggests yes:

[https://en.wikipedia.org/wiki/Tyrosine#Medical_use](https://en.wikipedia.org/wiki/Tyrosine#Medical_use)

</comment></comment></comment><comment><USER17> I've been taking cold showers for years, it gives such a good kick in the morning it's MUCH more efficient than coffee to get you from that lethargic state you can get in the morning to full-speed. Oh and if you had a heavy evening the night before, it's also a good way to remove the potential lingering headache you woke up with :-)

It does take a little willpower to get in, but the 'cold' effect lasts about a second; I no longer even have the unrestrained strong shiver I use to have due to the thermal shock.

Oh, and even in really cold water, I can stay there for quite a while, wash my hair etc. The sign that I've been there too long is when the top of my feet start to hurt a little.

Once you get out, metabolism is at full speed and you'll pretty quickly feel very, very warm (while staying outwardly cold for a while).

Only downside I know of is that I'll sometime feel too warm when I get in the office, as the metabolism goes overboard a bit.

My wife doesn't understand how I do it, she calls me 'glaconman' (french version of iceman) since I'm definitely not getting any cuddles for the next 20 minutes or so -- but well, it does work very well for me...

<comment><USER18> >Only downside I know of is that I'll sometime feel too warm when I get in the office, as the metabolism goes overboard a bit.

This and picking the right shampoos and soaps at the beginning. It's hard to them "foamy" in cold water, especially during winters when tap water gets even colder. My usual 10 min baths went to 20 with cold water simply because of it.

<comment><USER19> This is why I start my showers luke-warm and then go cold. My hair is medium- long and really thick and I just cant seem to make any progress washing it if the water is too cold.

<comment><USER20> You don't have to have cold showers everyday. I default to cold, and when grimy go for hot. You only really need to soap the places where the sun doesn't shine. And your hair doesn't need shampooing everyday. But each to their own.

</comment></comment></comment></comment><comment><USER21> Also of interest may be the Mammalian Diving Reflex ([https://en.wikipedia.org/wiki/Mammalian_diving_reflex](https://en.wikipedia.org/wiki/Mammalian_diving_reflex)) - Exposing your face to cold water and holding your breath can induce bradycardia (slowing of pulse), dropping it by 10-20 BPM.

In my experience, it leaves me with a sense of calm and general body- relaxation similar to how I feel 30-60 minutes after cardio workouts.

<comment><USER22> _If_ you can manage to keep calm long enough for bradycardia to set in.

I took a marine biology course in high school and we had an experiment to show braycardia that involved holding your breath and putting your face in a bowl of ice water. No matter how hard I tried, I couldn't keep my body from panicking and pulling away.

<comment><USER21> This is the quintessential way to activate the Mammalian diving reflex at brunch, cocktail parties, the office, or the classroom. Unless you are inclined to panic, you and your more medically-minded friends will be fascinated by the significant and immediate effect it can induce on your PNS and heart rate.

</comment></comment></comment><comment><USER23> The homepage of this website is currently encouraging "natural" correction of myopia via slightly incorrect prescription and intentional straining. Most of the evidence I'm aware of (see references in e.g. [http://www.bbc.com/future/story/20140513-do-glasses- weaken-y...](http://www.bbc.com/future/story/20140513-do-glasses-weaken-your- eyesight)) concludes that this makes things worse. My reaction to such things (especially when focussed on natural methods) tends to be distrusting objectivity.

</comment><comment><USER24> Article is from 2014.

Also this guy thinks he has the solution to back pain and bad vision as well, so I would take all of his solutions with a "not verified by actual scientific studies" grain of salt.

<comment><USER25> But I already bought his Cold Water Magic Beans®!

</comment></comment><comment><USER26> Interesting. The article reads a bit like bro-science but there are plenty of references to scientific studies... I'll be curious to see whether 'cold therapy' starts appearing as a buzz word in weight loss treatments.

<comment><USER27> Close to it for sure...

[https://coolfatburner.com/](https://coolfatburner.com/)

[https://www.coldshouldervest.com/](https://www.coldshouldervest.com/)

[http://www.theatlantic.com/magazine/archive/2015/01/does- glo...](http://www.theatlantic.com/magazine/archive/2015/01/does-global- warming-make-me-look-fat/383509/)

<comment><USER28> Tim Ferris based a huge chunk of his "24 Hour Body" book on the concept of cold baths.

<comment><USER15> 4 hour body - the dude optimises way past 24 hours!

</comment></comment></comment></comment><comment><USER29> I have been on cold showers for almost a year now. Can't imagine going back to warm showers, even in the dead of the winter. The coldest shower I took was perhaps in Switzerland in December - I lasted for a couple of minutes or so in the shower. It was a fabulous experience nonetheless. Why take a cold shower ? I was spending way too much time in hot showers, almost 20-30 minutes. Criminal waste of time and water. Am not sure about the benefits, haven't noticed anything change in my body, but it's a great feeling to come out of an icy cold shower. Suddenly, the world feels warmer :)

<comment><USER30> Just make sure you don't catch deep sinus infection from having your head exposed to cold too much/often, like it happened to me (1+ year of cold showers). You don't want to be knocked out for a month.

<comment><USER29> I did catch an infection and was knocked out for a couple of weeks. Haven't had any issues after that. I'll watch out though. Thank you.

</comment></comment></comment><comment><USER31> Cold showers remind me of my experience in a Japanese bathhouse in Kyoto. At first, the hot baths are _way too hot_ and the cold bath is _absolutely freezing_. But, if you power through it, the results are amazing. The process of (rinse > hot bath > cold bath) repeated over and over again was incredibly calming.

It ended up being one of my favorite things about Japan, and I spent 2-3 hours there everyday during my week in Kyoto.

</comment><comment><USER18> I wrote about my experience with cold showers here before: [https://news.ycombinator.com/item?id=8808859](https://news.ycombinator.com/item?id=8808859)

490 days later, I'm still using cold water only. Except for ears: switched to using warm water when experienced some buzzing in one ear during last winter. I've upped my game by adding snow/ice baths during the winter. Since last autumn I have added daily HIIT - 10-15 mins of advanced body-weight exercises with 20 sec. rest intervals.

Now, how it affects my weight. Since the last time I wrote about it, I've actually begun to follow my weight numbers. Back at the time I was about 84kg. Cold showers alone, with some gym here and there didn't do much for weight: it went down to 83 sometimes, but bounced back to 84 later. Yet, I must say, I was well into the practice by that time, and few years before I could weight as high as 88 kgs. So, perhaps, cold showers did lower my weight somewhat without my notice. Adding HIIT gave a steady weight loss, albeit a slow one: three months into I lost only 2-3kgs. It is possible that HIIT burned more fat yet balanced weight by adding lean mass: some muscles are bigger now. Mind you, all that time weight was of no concern to me: followed it just out of curiosity. Last January though, my old trauma reminded about itself and I needed to lose weight. Since I was already doing most of the recommended stuff, I just cut on calories by completely removing sugar and keeping 12 hour window for eating. In one month I lost about 6kgs going to 76-77kgs and decided to keep it their by increasing calories. TL;DR: Cutting calories is the fastest way to lose weight, neither cold-showers, nor HIIT can compete with it in short term.

On the upside, both cold showers and HIIT are downright pleasure to do once you get addicted to them. I do HIIT after the work before evening meal, at about 5 - 6PM, follow it with a cold shower and feel full and energetic as if I've just waken up in the morning.

</comment><comment><USER20> I like cold showers, and hot ones. I can never have a shower hot enough though, and getting out always is chilling. Whereas once you get out a cold shower, you only feel warmer. Preferably you don't want to leave the cold for freezing. I swam in a mountain stream late autumn last year (in the UK). It was so icy entering the stream, I thought it was never going to happen. After a few attempts and acclimatisation I was happily immersed. A little sun on the skin afterwards left me totally re-energised and awake. So just stick with it if you want to give it a go. Much like a cold shower, it's initially shocking, but becomes pleasurable. The human body is quite odd!

</comment><comment><USER32> I'm into my second year of extreme Scottish showers -- first 5 minutes as hot as I can stand (and keep turning it up as I get used to the temp) ... last 5 minutes as cold as it goes. I expect there are legitimate physical health benefits; however, for me, the main benefit is the challenge & discipline of it, of stepping out of the shower thinking that the hardest thing I'll do today may already be behind me.

</comment><comment> blubb-fish I'm exclusively showering cold now for more than a year. If I recall correctly one of the reasons was a VICE documentary on Wim Hof - that quite impressed me - though after a while I came to the conclusion that he is mostly well marketed (by his son - who he refers to as the biggest asshole he knows - [https://youtu.be/VaMjhwFE1Zw?t=1311](https://youtu.be/VaMjhwFE1Zw?t=1311)) and that most claims are rather blown out of proportion.

For example his scientific research on suppressing immune response to an infection is sold as a medical revolution while it has absolutely no practical value - if you think about it - quite the opposite as an immune response is usually something rather useful.

Anyway - I think it is worth it for several obvious reasons:

\- it's definitely very refreshing!

\- it helps waking up a lot

\- it is a simple way to train discipline

\- it's less stressful to skin than hot water

\- it's nice to know that I am not depending on hot water

</comment><comment><USER33> I did it for over year. It's still uncomfortable as I remembered that I always need to mentally get ready. My upper arms, especially triceps, are the most painful, coldest body parts when showered in cold water. I'm not sure why. During winter, I literally had to jump up and down, screaming to withstand the absolutely torturing coldness for the first five seconds. It gets a little better after that. I couldn't never take cold shower too long before the freezing water penetrating the skin and shivering the bone. That's when I know it's time to finish and get out.

<comment><AUTHOR> Water is colder in winter....

Best thing would be having a thermometer and showering with same temp water all year round.

</comment></comment><comment><USER34> I started to shower cold (actually first warm, then cold, then "neutral") every day when I was 9. I'm 30 now, so 21 years of that :).

I almost never feel cold, when I do i'm sick or very tired.

I do martial arts and I gain muscles very very easily, so maybe that's because of that?

And all my blood values have always been in the optimal range, except cholesterol which is always a bit too high (runs in the family).

</comment><comment><USER35> An alternative for people in colder climates: just wear less clothing day-to- day. I generally wear one layer fewer than people around me. It really doesn't take long for the body to acclimate to it to the point it's no longer uncomfortable.

I love my hot showers too much to give them up, so this seems preferable.

</comment><comment><USER36> I ran D1 track in college and our strength coach advised us to take cold showers before lifting as a way of warming up and calming down, but mostly calming down. He said it was a good idea before races too.

The guy was absolutely ripped so I'd believe what he says, and he usually backed it up with studies.

<comment><USER37> One word of caution: it's not a coach's _own_ accomplishments or physique which are qualifications, but the _results_ they promote among their _athletes_.

I've known horribly bad coaches with excellent physiques. And excellent ones who were quite literally paralysed.

</comment></comment><comment><USER38> There is a lot of controversy surrounding Irisin.

[http://blogs.sciencemag.org/pipeline/?s=Irisin](http://blogs.sciencemag.org/pipeline/?s=Irisin)

Quotes Peter Attia? He isn't a researcher.

</comment><comment><USER39> I would certainly take a lot of cold showers if I didn't have to be conscious during the shower.

</comment><comment><USER40> How cold should be cold showers ?

<comment><AUTHOR> Practically, you can't do anything else but use the cold water from the shower.

However, even in summer it is usually quite invigorating, even though it might be 15-20°C. It can be a good deal colder in winter though.

</comment></comment><comment><USER41> Please refrain from using abusive terms here on this forum.

<comment><USER42> Wow, get real rituch.

<comment><USER43> You "get real". Not everyone is from an English speaking country or can differentiate 'earthy banter' from sincerely offensive epithets online.

<comment><USER44> Which is why the default reaction shouldn't be offense

<comment><USER43> Who said the default reaction should be offence then? Who even said rituch was personally offended by it?

If someone doesn't recognize it as relatively harmless banter (which may be a matter of opinion anyway), then why would they _not_ think it's inappropriate here, when this forum is known for being more civil than most, partly for the reason rituch gave?

The "default" should be to recognize that misunderstandings happen online, and to definitely not post a rude, redundant comment like "get real" to an already heavily downvoted post that two other people have already addressed.

Edit: Well, judging by the down and upvoting, it seems I'm in a minority, or a lot of 'free speech' warriors here don't understand the concept of private forums with rules, and think posts simply telling people to "get real" add to a discussion.

<comment><USER45> How about he came out and said

"yo bitch, that's crazy" or "my nigga, that's insane"

These would be deemed unacceptable and rightly so.

<comment><USER43> I assume you mean AJRF. Just because those two examples are unacceptable doesn't mean "wow, get real" is acceptable. If you disagree or don't understand why someone said something, then either forget about it, or reply to it for clarification or discussion.

I mean why don't we all just post "get real" to everything or everyone we disagree with? Apparently a surprising number of people here can't think of a reason why not, since they think "get real" a fine response.

Edit: Actually, I think you mean if the "motherfucker" guy had said those things, in which case, I agree. People defending the use of "crazy motherfucker" may indeed be offended by the examples you gave, or feel they are inappropriate here, but can't seem to understand that terms they think are fine may be considered inappropriate to other people.

</comment></comment></comment></comment></comment></comment></comment><comment><USER46> Wim Hof people Wim Hof

<comment><USER47> Wim Hof is an individual case study that has done research in this area, and other related phenomena (breathing and autonomous response control)[1]

Not sure it's any more or less "bro science" then this article, but it's interesting and relevant enough to be worth talking about here I think.

[1] [https://www.radboudumc.nl/Research/Pages/PNASIceman.aspx](https://www.radboudumc.nl/Research/Pages/PNASIceman.aspx)</comment></comment>


The privacy trade-offs of cheap Android smartphones - <AUTHOR> https://www.fastcompany.com/90408472/cheap-smartphones-have-a-disturbing-secret <comment><USER2> The authors don't know much about cheap smartphones. I examined a cheap Android tablet's ROM dump and it had a backdoor that would allow manufacturer to install any application remotely and an adware that would activate about 2 weeks after turning the tablet on and show ads above browser window (so that the user thinks that it is an ad from a website).

If the user tried to delete adware, the backdoor would reinstall it. The backdoor would not activate if the phone is in China.

I downloaded ROM from the link at the manufacturer's website to make sure it is really built-in into the ROM and the tablet was not infected by virus. Either manufacturer or those who made the ROM pre-installed backdoor to earn money from clicking on the ads.

Also on a Russian forum about smartphones I saw similar reports about other cheap models.

UPD: I googled around and it seems that the backdoor (named Cosiloon) has been found and described by antivirus vendors:

\- [https://news.drweb.com/show/?i=10345&lng=en](https://news.drweb.com/show/?i=10345&lng=en)

\- [https://www.androidauthority.com/cosiloon-malware-android- de...](https://www.androidauthority.com/cosiloon-malware-android- devices-869407/)

\- [https://blog.avast.com/android-devices-ship-with-pre- install...](https://blog.avast.com/android-devices-ship-with-pre-installed- malware)

When I found it, there was no information about it anywhere.

<comment><USER3> It never ceases to amaze how malicious manufacturers can get, installing so many anti-features, without breaking _some_ law and going to jail.

Imagine if a real-estate agent kept breaking into houses he sold (through extra doors only he has the key to), and when people complained, he'd point to some fine print on page 23 of a contract you didn't even sign - it was just posted on the door, after you bought the house, stating that entering the house constitutes agreement.

There'd be a million laws against it in a heartbeat.

<comment><USER4> Until data storage becomes recognized legally as a kind of real property, your outrage won't matter. Most law is concerned only with computers as an extension of simpler technology, and the data as IP. There isn't any concept of people's "lives" being on these devices.

<comment><USER5> IANAL, but I've always wondered if one good way to approach this is as a "micro-theft" of user resources. Specifically, network bandwidth, battery capacity, and screen size.

An additional theft, which is your attention, can also be priced according to "the market", and indeed, if an ad obscures another sites ad then there is, in fact, another (large) set of people the manufacturer is stealing from. Moreover, that last class of people have some powerful advocates in the way of the networks, to wit, Google. But this theft is less straight-forward, I think.

I would argue that the most important theft, which is your right to be secure in your computer mediated dealings, is hardest to argue. But that's there, too.

It's entirely possible that this theory has already been tested, and lost, in US courts.

<comment><USER6> Without touching on legality of such things, it's interesting also in that these things probably have have a very clear record dollar amounts involved for such an act in terms of revenue generated, CPMs for ads, etc.

This scene from Office Space comes to mind.[1]

[1][https://www.youtube.com/watch?v=yZjCQ3T5yXo](https://www.youtube.com/watch?v=yZjCQ3T5yXo)

</comment></comment></comment></comment></comment><comment><USER7> I'm using a Xiaomi A2 Lite. The cheapest one I think (160€) and so far I am ok with it. To my eyes, this is like the only phone I see it has Android One OEM installed, and nothing on top of it. I am no expert, but this is how I've chose when buying a phone. Should I be concerned? Privacy became important to me (I've quit all social media) and I am setting up every single privacy feature I can. I'm also considering moving to Apple since they offer more layers of privacy than Android One.

<comment><USER8> +1 for Xiaomi A2 as well. I would never buy a non-Android One device again, after seeing the experience on this one.

My only complaints is lack of NFC on this device, and that A3 is worse performance/weight wise.

<comment><USER9> The A3 has a lower screen resolution (which should improve performance) but better blacks/colors because it's an OLED screen.

The CPU of the A3 should be roughly equivalent to the A2 CPU. The camera is probably a lot better.

The lack of NFC is unfortunate.

</comment></comment></comment><comment><USER10> Wouldn't a solution be to install Lineage OS [1] or similar custom ROM and have the advantages of a cheap phone and the privacy of a high-end one?

[1] [https://wiki.lineageos.org/devices/](https://wiki.lineageos.org/devices/)

<comment><USER11> Since the change - from Cyanogenmod to LineageOS - the amount of supported devices shrinked and nowadays I can't even find old LineageOS builds any more for devices they used to support, but not any more. I've lost faith in LineageOS.

<comment><USER12> Take a look at [https://e.foundation/](https://e.foundation/)

It's a LineageOS fork which bundles MicroG and several apps to make a more usable out-of-the-box OS.

They have also re-added frequent builds for many of the phones that Lineage had dropped - including the OnePlus X which I have.

<comment><USER13> /e/ has quite a few security issues that haven't been addressed.

Infosec Handbook did a rundown when they first came about: [https://infosec- handbook.eu/blog/e-foundation-first-look/](https://infosec- handbook.eu/blog/e-foundation-first-look/)

Then they did it again, more recently: [https://infosec- handbook.eu/blog/e-foundation-second-look/](https://infosec- handbook.eu/blog/e-foundation-second-look/)

There's also this site: [https://ewwlo.xyz/evil.html](https://ewwlo.xyz/evil.html)

</comment></comment></comment></comment><comment><USER14> Another reason privacy is becoming a commodity. Eventually only the rich will be able to live a "private life" while everyone else can't afford it.

<comment><USER15> Thats not what commodity means. What you describe is privacy being a luxury.

<comment><USER16> "Commodity" seems right. "Luxury" carries another sense that I think is fitting, too.

\- Something useful that can be turned to commercial or other advantage.

\- Advantage; benefit

<comment><USER17> Surely personal data is the commodity turned to commercial advantage? Personal privacy, or lack of is the symptom or consequence. Privacy is a luxury for those able to opt out, usually via wealth.

</comment></comment></comment></comment><comment><USER18> I think the main issue here is that _resellers_ may modify perfectly fine phones to include adware. This was pretty common with eBay resellers of xiaomi phones a while back untill xiaomi stepped in and added some method to verify device integrity.

I assume same thing could happen on iOS if one could find a way to make the adware to survive system updates.

<comment><USER19> Exactly this - I bought a Xiaomi Mi Note Pro and found is was packed with malware - I went to the Xiaomi site and got the right ROM and all was good - it was obviously the reseller who stuck it on. The issue was the malware was pretty ropey looking, it was easy to spot - if they had been cleverer I wouldn't have guessed or updated the phone...

<comment><USER18> I feel the device should refuse to register a new user from anything but the clean state.

This is pretty straightforward on modern hardware.

If any Google engineers are reading this: maybe something to consider for Android 11?

<comment><USER20> I can see the angry HN comments now.

"Google bans reselling. Do you really own your phone?"

<comment><USER21> I think clean slate here means "factory image" \- resellers if you buy on gearbest or other Chinese sites often will preload with malware and adware before giving you the device.

<comment><USER20> I know that. That wouldn't stop the HN comments.

</comment></comment></comment></comment></comment></comment><comment><USER22> I wonder if Xiaomi's Redmi Note 7 is affected.

It costs around $180 and is quite popular in Europe.

I ask because I've seen some users complaining about ads.

[https://www.amazon.com/s?k=redmi+note+7](https://www.amazon.com/s?k=redmi+note+7)

<comment><USER21> The Xiaomis are kind of interesting in that if you buy a legitimate one direct from the official store it's likely to be in Chinese but also somewhat-clean (for a questionable definition of clean - expect bullshit battery saver / storage cleaner apps that to me would border on malware).

If you have the misfortune to buy through a reseller (gearbest, dx, unofficial stores, amazon, etc) out of several phones I've purchased from resellers, they have all come with malware on them.

This may partially be why Xiaomi is enforcing up to 180 day minimums before they allow a bootloader unlock (to prevent flashing/sideloading system malware apps) by shitty resellers for $ before they ship. It does piss me off once I get the device that I have to go sign up on their forum and beg for a "possible approval" for a bootloader unlock.

</comment></comment><comment><USER23> I have a Ulefone from China, with an American operating system. It was locked with Factory Reset Protection when I got it so I used Albanian hacking software to circumvent that, as it was easier than shipping it back.

I do not trust this phone a single bit, luckily I only use it as an emergency phone for outdoors using a separate Google account and a separate SIM-card.

</comment><comment><USER11> > has apps that can't be updated or deleted

[edit] sell them rooted

[original] Root it. Unless it's something like Triada[^1], in which case, it's f'd.

Around ~2001, everyone at high school knew how to reinstall windows and find cracks for games. Maybe it's time to be at least that "tech savvy" again with smartphones.

[^1]: [https://forums.malwarebytes.com/topic/200072-trojantriada](https://forums.malwarebytes.com/topic/200072-trojantriada)

<comment><USER24> Unfortunately, a majority of new Unisoc (Spreadtrum) chips have bootloaders that cannot be unlocked without a key, which is not provided by the SOC manufacturer, and is beyond the control of the ODM. Many low-end Android smartphones are powered by such chips, and the end result is that root is impossible on those devices, i.e. ZTE Blade A5 2019, Doogee N10, etc. (Unisoc SC9863A)

edit: I have obtained the source code of the U-boot bootloader used on those devices, however, the algorithm for the key verification is stored on the Trusted Execution Environment, which means it cannot be extracted (the TEE is a SecureEnclave-like device, with no possible direct access to it's memory or storage, besides de-capping it and reading the bits with an electron microscope) -- more info here: [https://source.android.com/security/trusty](https://source.android.com/security/trusty)

<comment><USER11> I wasn't aware of this, for some reason I thought most of the low-ends are mediatek, and unlocking android 6 mediateks was not a hard feat.

EDIT I don't think Doogee N10 falls into low end, at least not by specs. Compare it with Moto C, which is indeed low end.

<comment><USER24> Oh, Mediatek is so-"friendly" to unlocking, with no verified boot and the ability to flash it with the infamous SP Flash Tool.

SC9863A and many other SOCs _are_ flashable with Spreadtrum's ResearchDownload Tool. However, Spreadtrum actually does verify the whole boot process, meaning that booting a modified binary is impossible. If you change the boot partition, it will infinitely reboot with a black screen and vibration. If you leave the boot as-is, but change system, it will get to the splash screen and then reboot. etc.

It genuinely does cryptographicaly verify the signature and hash of every partition. Which is great for security, in theory, unless the OS has preloaded spyware, but the secureboot process prevents you from removing it.

re-edit: Doogee N10 costs 85$. I don't think you can go much lower-end, without basically giving the manufacturer a huge profit margin (i.e. a phone that costs $60, but has 512 MB RAM, has a bigger profit margin than a phone that costs 85$ but has 3 GB RAM.)

<comment><USER11> > SC9863A and many other SOCs are flashable with Spreadtrum's ResearchDownload > Tool. However, Spreadtrum actually does verify the whole boot process, > meaning that booting a modified binary is impossible. If you change the boot > partition, it will infinitely reboot with a black screen and vibration. If > you leave the boot as-is, but change system, it will get to the splash > screen and then reboot. etc.

Been there, and I didn't even realised the cause. I'm sorry if my previous comment seemed light hearted, I didn't want it to be so.

<comment><USER24> I understand fully. I just want to shine light on the problems of consumers loosing control of _their_ devices that they _own_ and paid for. I would understand that a work-provided device has such protections, and spyware, because it's provided for a single purpose, usually under contract.

A device that you buy with your own money cannot "hand-wave" the contract (TOS, EULA, Policies, etc), and say it's OK that you don't own your device or your data.

</comment></comment></comment></comment></comment></comment><comment><USER25> I suppose privacy is a premium now.

<comment><USER26> We return to the same adage(s): -there is no such thing as a free lunch -if it is free then you are the product.

As always I suggest NoRoot Firewall for everything-Android. But yes it's called a trade-off, like accepting a "free" security software from your ISP which technically invalidates all your encryption efforts.

<comment><USER27> Except even if you _pay_ you're _still_ the product. Data is a currency, they'll happily take it if you offer it :)

</comment></comment></comment><comment><USER28> Too true. I'm in the market for a new phone and came across dontkillmyapp.com [1]. I find this ranking lines up pretty well with high privacy risk + low cost given the hardware.

For those unaware, a new thing phones do is quietly kill apps in order to extend battery, and the extent to which this is done can vary by device and/or software.

[1] [https://dontkillmyapp.com](https://dontkillmyapp.com)

<comment><USER29> This has nothing to do with privacy.

It's battery saving.

You can create exceptions for apps.

<comment><USER30> It's a quite dirty way to save battery. It may say something about the tendency of certain manufacturers to cut corners instead of walking the right path.

</comment></comment></comment><comment><USER31> Solution: Android One devices

</comment><comment><USER32> I find it ironic (for lack of a better word) that Android is based on Linux, yet it's the single largest spyware vector in the world. There's maybe a story to be told here about how an altruistic motive or dont-care liberalism or whatever contributes to its own demise and the enslavement of large parts of the populace behind addictive spam devices and into cloud dystopies, tragedy of the commons and all. But at least a discussion about Linux licensing wrt proprietary drivers and boot loaders, as well as mandatory apps seems about time.

<comment><USER33> It brings to mind paradox of tolerance, how knowledge includes the ability to abuse it and the morality of hammers and knives - it is fundamentally up to the user if they want to build a house, prepare a meal, remove a tumor, or murder and any attempt to limit it only sabotages the purpose.

Blame would be misplaced - even the most zealous licensing wouldn't have made a bit of difference in the end. Linux itself was a free rederived fork of Unix. If Google had to rederive their own fork of Linux they could have easily done so with only a little more early expense and reputation damage. At the cost of another proprietary fork gaining influence and control over free software or even open source.

<comment><USER34> Yeah, I doubt Fuschia, for example, will magically make mobile malware disappear

</comment></comment></comment><comment><USER9> _By 2025, WARC estimates that 3.7 billion people, or over 72% of projected internet users, will be smartphone-only internet users._

Things will get so much worse, it's frightening!

</comment><comment><USER35> How much can the private data of poor people really be worth? The whole point is to send them ads, right?

</comment><comment><USER36> Using an old unpatched version of Android might also suggest the hardware could be older and easier to support by other systems. Did anyone attempt at flashing a free OS + free drivers on one of those cheap phones, that is, removing entirely the factory software/firmware? If doable that would turn them into interesting devices.

<comment><USER37> Main issue is that drivers are only in binary form and not compatible with recent linux (kernel) versions.

</comment></comment><comment><USER38> >In the United States, these users are mainly made up of economically disadvantaged individuals, who are disproportionately black and Hispanic.

I mean you could say the same thing about everything. This affects poor people, and those are "disproportionately black and Hispanic". It's like the writer is trying to trigger someone.

<comment><USER29> The person that got triggered is you.

<comment><USER38> It's more like the writer was saying "nobody cares about poor people, but hey, if we say the victims are blacks and latinos... that's going to get some support from someone". Which is rather sad since being poor is bad for everybody, no matter whether you're black white or green.

</comment></comment></comment><comment><USER39> All android smartphones data are exploited by Google through google services, by manufacturers through uninstallable bloatwares and by app providers through apps. If a user disables a permission, the app refuses to work.

The cheap smartphones are sold mostly in the Asian and African markets where the mass can afford that, and data privacy means nothing to those users.

So, Your data, my data, all are up there somewhere, no matter how cheap or expensive devices we use. Why do we still live in the illusion of data privacy? Is there any?</comment>


Ask HN: Is it possible (convenient) to code an Android app using only Kotlin? - <AUTHOR> Is Kotlin ready for prime time? I'd like to learn android development, but I've always hated Java and strived to avoid it.
Is it possible (convenient, no major roadblocks) to create an Android app using only Kotlin? Or is it likely you will need to drop into java to interface with popular libraries?
How does Kotlin/Java compare to Swift/Objective-C? <comment><USER2> You hate Java but you know JavaScript, then try React Native. You can create most of the applications using React Native which works for both IOS & Android. Or you can try Flutter which uses DartLang.

</comment><comment><USER3> Yes. It is hundred percent possible to create an app using kotlin. You don't need to write java code to interface with libraries (though you can if you want to).

Since both Java and Kotlin compile down to the JVM Bytecode, using Java libraries with kotlin won't be an issue.

Convenience might be an issue if you are starting new. Most of the turorials and the official documentation for android are written with Java in mind. There are good books and tutorials available for kotlin and they will only increase day by day. But you will have to work hard for the initial period.

<comment><AUTHOR> I've been programming for 14 years now (if you can count HTML as an 11 year old :p). I've reached professional proficiency in Python, JavaScript. I have minor experience (at least one project) in C, C++, PHP, Prolog. I'm also proficient with bash, SQL, etc... Point is, learning a new language is not a problem for me.

That said, I have very little, basically no Java experience (used it 8 years ago in high school, and for a bit at an internship). I also have no Kotlin experience. So either way, I need to learn something if I want to develop natively for android (I'm interested in creating an app heavily dependent on system networking API's, so while I could use JS for the presentation layer, native code is a requirement at some point).

How would you recommend approaching this? Should I learn the basics of android programming with Java first, then move to Kotlin? Should I learn them simultaneously somehow? Any resources you can point me to?

Thanks for your time.

<comment><USER4> Is your goal building an Android application or learning a new language?

Instead of asking "Should I use Kotlin or Java to create an Android application?" ask yourself "Do I want to create an Android application using Kotlin or Java?"

You're going to get mixed answers from external forces because this is a mostly subjective question. People who used Java for 10 years will obviously recommend one over the other, while early Kotlin adopters will praise their own choice.

The biggest concern when choosing a language should be "Can I achieve the same results?" in this case is a yes, because you can always use both in the same project if you need to dive deep into some Android API.

Put 10-15 minutes into a simple Hello World in each one, and see which one is more fun and engaging for you to learn.

<comment><AUTHOR> Good advice, thanks. I suppose the goal is to code an Android application but avoid (re)learning Java. I guess I was looking more for validation that this is possible without major headaches.</comment></comment></comment></comment>


Motion Smoothing Is an Abomination - <AUTHOR> https://thebulwark.com/motion-smoothing-is-an-abomination/ <comment><USER2> I wish we would switch to higher FPS video already. Youtube at least supports 60FPS which is watchable, but most feature films are stuck at 24. I remember a while The Hobbit[0] tried to move the bar to 48FPS but it didn't catch on.

[0]: [https://en.wikipedia.org/wiki/The_Hobbit:_An_Unexpected_Jour...](https://en.wikipedia.org/wiki/The_Hobbit:_An_Unexpected_Journey#High_frame_rate)

</comment><comment><USER3> I used to agree but turning off these settings on a modern (IE. OLED) TV and you might as well throw it out. 24 FPS on a OLED without these techniques looks like something is about to shake apart. It is completely unwatchable. Didn't check the date but I hope this is an old article because it doesn't hold on any good screen these days.</comment>


Toddlers' Favorite Toy: The iPhone - <AUTHOR> http://www.nytimes.com/2010/10/17/fashion/17TODDLERS.htm Smartphones may mollify a fussy toddler, but does this new Toy of Choice inhibit a child's development? <comment><USER2> My 2 year-old is constantly asking to watch youtube videos on my iPhone but gets frustrated when she tries to grab the device and accidentally starts touching the screen and the home button. She doesn't get the connection.

Really, what I need is a 4" solid state video player with lockable buttons. Or I need to hack my iPhone to disable the home key and touchscreen.

</comment><comment><USER3> I'm really excited that children are growing up in an age where direct manipulation interfaces are so mainstream.

</comment><comment><USER4> So true. Every day when I come home from work my 2 year old runs up to me and asks to play on my phone. (Android in my case) She knows how swipe to unlock, open the apps and find her favorite game.

</comment><comment><USER5> I'd never have expected so much technophobia from a NYT article...

<comment><USER6> It is legitimate fear though. I can feel how my attention span and capacity for deep thought has been attenuated by technology as a mid 20s male. Kids with developing brains and thought processes we should be even more careful of.

<comment><USER7> Who cares? Let's just see what happens.</comment></comment></comment>


Creating a life that reflects your values... - <AUTHOR> http://imgur.com/r/pics/66DxiHX

<comment><USER2> Source: [http://zenpencils.com/comic/128-bill-watterson-a- cartoonists...](http://zenpencils.com/comic/128-bill-watterson-a-cartoonists- advice/)

</comment><comment><USER3> Kids are a bit of a loaded example, but this cartoon makes a fair point. The rat race is very dehumanizing.

I for one am working on leaving the cities... I want to explore multi-decade spans of nature in my own garden, while eating fresh food, at the same time as computing. Now I'm studying natural building techniques, water and electrical systems first with the aim to build a place to support those dreams. Next up is cheese and winemaking. I don't worry about how many of those things I'll suceed at... I'm already having loads of fun learning!</comment>


Implementing 'focus and reply' for Fastmail with JMAP - <AUTHOR> https://jvns.ca/blog/2020/08/18/implementing--focus-and-reply--for-fastmail/ <comment><USER2> > _someone very helpfully suggested just wrapping the plain text email in a > <pre> tag to protect against XSS_

This is bad advice.

[https://www.cs.dartmouth.edu/~sergey/langsec/occupy/](https://www.cs.dartmouth.edu/~sergey/langsec/occupy/)

<comment><USER3> I actually realized that this must be on HN because 2 different people emailed me to tell me this XSS workaround was bad advice :). Updated the post.

<comment><USER4> Hey! Awesome that you updated it! Thanks for all of your blog posts. You're one of a few go-to blogs when I want inspiration on new things to learn. I even used your website design as a model for the default template for a static site generator I built :)

</comment></comment></comment><comment><USER5> The last mention of JMAP got me to sign up for three years of Fastmail. I used their auto-configure script to add it to my personal MacBook. The system then became more unstable than it has ever been, frequent crashes of the WindowServer and complete system lockups. Combined with scary messages about my Gmail and iCloud accounts asking for re-authentication. I seriously thought I had been owned.

I removed the Fastmail accounts (mail, calendar, etc.) and everything was immediately fine again. I'm scared to try this again to troubleshoot what is happening.

<comment><USER6> Wow, that's really worrying that an autoconfig file could even do that!

We have had reports of the autoconfig being annoying if you need to change any settings because it locks some of them in place, but I've never seen any mention of that kind of crash.

Regarding the re-authentication messages, I suspect the reason is that you have migrated calendar events across into Fastmail from those other systems, and those events contain links to authenticated resources which your Mac is trying to load. This isn't really something we can fix other than stripping those out of your events, but that has its own downsides!

<comment><USER5> I didn't migrate anything into Fastmail.

When I removed the Fastmail accounts everything else went back to normal. It could very well be a problem with MacOS.

When I have time I'll try setting it up again and see if it happens again.

Works fine on my iPhone.

<comment><USER7> Were you just using Fastmail as a copy if Gmail? Or were you manipulating gmail through jmap?

<comment><USER5> Gmail and Fastmail were not linked in any way. I have had my Gmail account set up in MacOS for years. I added my Fastmail account. My system became unstable and all my Internet accounts started prompting for logins.

</comment></comment></comment></comment></comment><comment><USER8> I'd love to see a non-Fastmail writeup of using JMAP - I was seeing if I could implement push notifications for certain emails coming in and it looks like I'd need to handle the entire mailbox.

</comment><comment><USER9> Cool beans, I love the simple and straightforward lightweight client based approach.

Shameless plug - I built the screening workflow / Imbox bit of Hey for IMAP servers about a month ago [https://www.feval.ca/posts/screenr/](https://www.feval.ca/posts/screenr/). We're just missing a couple more features and we'll have their full feature set for any mailbox :)

<comment><USER10> And I built send plugin: [https://addons.mozilla.org/en- US/firefox/addon/massfastmail/](https://addons.mozilla.org/en- US/firefox/addon/massfastmail/)

<comment><USER11> Thank you for this!

</comment></comment></comment><comment><USER12> I've experimented with JMAP a bit (related to my work with [https://forwardemail.net](https://forwardemail.net)). Cool hack.

</comment><comment><USER13> The chaining of requests/method-calls is a really interesting concept.

</comment><comment><USER14> Great write up! I actually lol'd at step 0. The irony of hey.coms vision to simplify email and you're first intuitive step.. hilarious

For those who are perusing the comments w/o reading (like me all the time)...

Step 0: "make the feature simpler"

<comment><USER15> Fwiw I read the article but I don't remember that heading so also for readers without perfect recall it's good to reference what you're talking about.

</comment></comment><comment><USER16> Good to see this. I also really miss send later and undo send when I use Fastmail. Two major missing Features.

The biggest issue I have with Fastmail is how lousy the tech support is. I had issues with IMAP and they take days between replies to get back with you.

I started sending them hourly updates hoping for a faster response. Then I copied the CEO to the email chain. After about 20 emails to them I gave up.

A few days later someone got back to me that every time you email their support it resets their clock on when they will respond...

Literally the worst of the worst in email support. That is sad because they have good policies and a fairly robust web frontend.

<comment><USER17> Gmail is the worst of the worst in email support: It has none.

Always had great support experiences with FastMail. Spamming them hourly seems like being a bad customer though.

<comment><USER2> I've noticed there's only ever effusive praise for Fastmail on HN, which itself probably leads to the kind of thing that Feynman warned us about re oil drops.

Spamming folks notwithstanding, I also had a terrible experience with Fastmail on the two occasions that I filed support tickets. I once wrote before: if the options are no support from a service where it's never needed, versus the illusion of support from a different service (paid, even) where the emptiness of the promise will be made evident, then the former is better.

Having said that, I don't actually use or condone Gmail; I give my money to a Fastmail competitor.

<comment><USER18> I also had some bad experiences with Fastmail, they're very aggressive at shutting down your account if billing fails (expired cc) with zero warnings. Ended up missing emails on two occasions because of this (I was using fastmail for forwarding). For recovery, they offered to read my emails to confirm my identity which was the final straw. Related thread here: [https://twitter.com/shazow/status/1021570521987731458](https://twitter.com/shazow/status/1021570521987731458)

<comment><USER3> it's really worrisome that they offered to look through your email data to confirm your identity.

I'd be really curious to know more about what Fastmail does to safeguard customer data from malicious activity by employees.

<comment><USER18> Agreed! That's one thing that I know Gmail is _very_ good at, at least. I didn't get the impression that Fastmail cares particularly about that problem yet.</comment></comment></comment></comment></comment></comment>


Chinese spy allegedly caught stealing self-driving car secrets from Apple - <AUTHOR> http://www.cultofmac.com/603708/chinese-spy-allegedly-caught-stealing-self-driving-car-secrets-from-apple/ <comment><USER2> It is worthwhile noting that people are sensitive to titles like this, and "chinese spy" is probably an unwarranted term. It does seem true that the Apple employee was taking all kinds of IP with him to a competitor. That's illegal, and theft.

When Levandowski was caught apparently taking files from Waymo (allegedly to give to Uber) he wasn't characterized as an "american spy".

[edit] When you say "American spy" there is the implication of a professional connection to the US govt apparatus. So we don't use this term for private American industrial espionage, it's sloppy, and deliberately misleading at worst. I think this is probably a privately motivated deal to make some money, as in my Levandowski example.

<comment><USER3> Did you read the article? This is the second paragraph:

> The FBI reportedly arrested a Chinese national working for Apple the day > before he was set to fly back to China with thousands of files on his laptop > that contained Apple's intellectual property. He was reportedly planning to > take all the info to one of Apple's competitors in China.

It's pretty accurate to characterize him as a Chinese spy.

There's a certain level of competition between countries and it makes sense for Americans to want to keep American-made IP in America. There's nothing wrong with that.

<comment><USER2> >Did you read the article?

Yep, in fact I posted another article on the same incident: [https://news.ycombinator.com/item?id=19037738](https://news.ycombinator.com/item?id=19037738)

</comment></comment></comment><comment><USER4> Queue 'America shouldn't complain, because of Samuel Slater' arguments...

<comment><USER5> Not America shouldn't complain, rather America shouldn't claim a moral high ground. Complaint is part of serving your own interests, totally necessary and justified.

<comment><USER4> Yup, just like America can't claim moral high ground over Mauritania because of large amounts of slavery happening there, because after all America was all into slavery 200 years ago.

<comment><USER6> > America was all into slavery 200 years ago.

American didn't abolish _de jure_ slavery until 153 years ago.

It retained _de facto_ slavery for much longer, as it did little to enforce the prohibition on except terminating overt chattel slavery until WWII (the federal order to federal prosecutors announcing the policy shift that stopped eseentially ignoring this was issued five days after Pearl Harbor, 77 years ago.) [0]

[0] [https://en.m.wikisource.org/wiki/Circular_No._3591](https://en.m.wikisource.org/wiki/Circular_No._3591)

<comment><USER4> Okay, I edit my previous statement to be: "just like America can't claim moral high ground over Mauritania because of large amounts of slavery happening there, because after all America was all into __de facto slavery 77 years ago. __"

I don't believe the point is particularly changed though.

</comment></comment></comment></comment></comment><comment><USER7> Good luck with that, maybe you'll make it work.

</comment><comment><USER8> Were they "allegedly caught" or are they "allegedly a Chinese spy"? :)

<comment><USER9> the article doesn't help sluice that out much... "Another alleged Chinese spy has been caught apparently trying to steal secrets from Apple's mysterious self-driving car project."</comment></comment>


How to design a replacement for C++ - <AUTHOR> http://apenwarr.ca/log/?m=201007#22 <comment><USER3> I find his talk about a language's suitability for kernel writing to be like people buying sporty cars they will never race or off road vehicles they will never drive off road. Most people, _even including_ embedded programmers, will never actually write (or need to write) a kernel.

Especially his comment about garbage collection: if you're _not_ going to have garbage collection, frankly, what's the fucking point? You might as well continue to use C/C++ then.

He is demonstrably wrong that you cannot reliably combine garbage collected an non-garbage collected memory with a mark sweep collector! My C++ to Io binding library builds C++ objects in script and stores script objects in C++, and Io uses a mark-sweep collector and I am using it _right freaking now this very minute_ in a game I'm programming without trouble. I regularly profile it in valgrind; there are no memory corruptions. The solution? Give the script- created C++ objects the same semantics as C++ code does. C++ temporaries are created in script with a "temp" keyword and get passed by value. Long lived C++ objects are created with a "new" keyword (in script) which stores a pointer to the C++ object. You have to manually call "delete" (again, in script) on the script-object-containing-the-C++-pointer to delete the objects. Here's the beauty of the logic: as long as you are holding the pointer, the script object will not be collected. If you do allow the script object to be collected, by definition that means it is unreachable, so by definition you FORGOT to call delete on it, ergo the system could then throw an exception if an undeleted C++ pointer is ever collected. So rather than a problem, it actually _helps_ you catch undeleted memory.

For C++ objects that hold script objects, I simply force any C++ object that wants to hold a pointer to a script object to implement my IMarkable interface, and the script binding is smart enough to know that if a C++ implements IMarkable, it gets included in the mark-sweep so it can mark off its owned script objects.

</comment><comment><USER4> The recently-revealed "Rust" appears to be your salvation: <http://wiki.github.com/graydon/rust/language-faq>

Written by Mozilla employees, and very much like Go, except that shared state is immutable by default, no global GC, and no null pointers. It does have fine struct layout control, RAII always, and type-parametric user code (purely structural too!).

It does have a real module system for grownups, which even if it doesn't preclude your fetish for #include, it will at least make you feel bad about it.

</comment><comment><USER5> An immediate issue with the article: the author takes issue with the liberal attitude taken by C++ in adding features and then proceeds to state:

      Maybe you like [lambdas], maybe you don't, maybe you think
      they're God's gift to programming and any language
      without them is an infidel. But adding them would be
      harmless, anyway.

Well I agree on this point, it seems like a poor argument. You can't just declare a feature harmless if you ignore it. You make lambdas first-class and you end up baking them into libraries. Now you _must_ use them.

Otherwise no issues, but it does feel like the author is advocating C++0x minus heavy template metaprogramming - which is a perfectly fine language in my book. Why not just use that and get on with life?

<comment><USER6> If your language isn't completely terrible, then you can choose to use a named function anywhere an anonymous function will do. The libraries can never force you to not give your functions a name or not put them in a global context. That's why it's a harmless feature.

Templates might have been harmless if there was a way to do basic obvious stuff (callback functions, strings) without using them.

<comment><USER7> I'll hazard the guess that hazzen is interpreting 'lambdas' to involve closures.

<comment><USER5> Yes and no. If a library assumes a lambda is easy, you will see a lot of code like this (using somewhat bastardized OCaml types):

      interface 'a collection {
        void sort(lt:'a -> 'a -> bool);
      }

So, if you want to use lambdas, you would get:

      foos.sort(fn x y -> x.bar() > y.bar());

And if you don't want to use lambdas, you would get:

      bool sort_by_bar_gt(x:Foo, y:Foo) {
        return x.bar() > y.bar();
      }

      foos.sort(sort_by_bar_gt);

And that is assuming you can nest functions, but chances are you will have to put that function somewhere removed from the actual call to sort. This is the exact problem the STL hits: it assumes, for many things, you want a functional style - and then it doesn't give you a way of writing lambdas. You are left with one-off functors littering your code, wishing you could write that lambda.

I would like to stress: I think lambdas are a requirement for any language, I just take issue with the argument presented to convince lambda haters.

</comment></comment></comment></comment><comment><USER8> Agree with most parts of the article, one huge issue I didn't see mentioned.

Working with C/C++ for embedded systems often means you have to have total control of the memory layout of your objects. You sometimes want to define classes which have data members that directly map on to something in memory, and you have to know _exactly_ how the class will be layed out in memory, and more importantly, that it won't take up extra memory without your knowledge.

Specifically, his point #5, "Automatic vtable generation.", might get in the way. C++ gets away with vtables because they aren't included by default, only included when you define a virtual method. The same needs to be true of any replacement.

</comment><comment><USER7> 1\. Hey, I more or less agree with this guy

2\. Hahahahahaha

3\. Aside from the fact that his wording is backwards from his meaning, I agree that it should be possible to write code that doesn't ever garbage collect.

4\. Ok

5\. Does this guy know the function of a linker?

6\. Again, he asserts something you are to avoid, when really he should be emphasizing what you need to support: code without runtime checks.

7\. Wrong. This is one of the few opportunities you have to beat C at its own game. C hardcodes assumptions about the stack that prevent certain low level optimizations.

His #8 is then a summary of the entire article, and really is the only valid point he's made. C is close to a sweet spot for wrapping low level code in somewhat higher level clothing. You can't beat it at the same level of simplicity (not if you count the cost of any potential switch anyway). The way to beat C is to naturally support the high level / low level hybrid that he's doing with python+C in a single language.

<comment><USER9> > C hardcodes assumptions about the stack that prevent certain low level > optimizations.

Would you please expand on this? I can't think of any assumptions C makes about the stack that C++ wouldn't make; neither can I think of low-level optimizations that said assumptions prohibit. I'm curious about what you have in mind.

<comment><USER7> I just meant that the role of the stack is hardcoded. In most assemblys you can write to the stack pointer and presto, you're working with a new stack. This is a capability of assembly that C doesn't expose.

<comment><USER10> longjmp()?

<comment><USER7> No, that only lets you jump out - not e.g. jump between several suspended computations.

<comment><USER9> Sure you can. This is how user-level threading packages work if you don't have kernel support.

<comment><USER7> Interesting, it seems many C implementations do support this. It's not standard C, though.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> "(Talking about C++ macro) [...] Well fuck you. If you take it out, I can't #include stdio.h, and I can't implement awesome assert-like macros. End of discussion."

This statement is simply wrong, and saying "End of discussion" is useless, if not plain stupid.

It's like saying: 1+1 = 3, End of discussion.

<comment><USER6> I honestly can't begin to contemplate how you expect stdio.h to work (without writing extra wrappers) if you don't support macros and a preprocessor.

Some of the "functions" in there _are_ macros.

<comment><USER7> import_c<stdio.h>

You can import C headers without your language being a superset of C.

<comment><USER12> Yes. Many a time I have wished to import a library's symbols _without_ importing its macros. Or better yet, import its symbols under alternate names. "namespace x = import<y.h>" anyone?

<comment><USER3> Yes, the biggest problem with #includes is the namespace cross contamination they can cause. I once tracked a build problem down to someone #defining usleep(time) to 'sleep(time/1000)' (or something similar). Problem was, usleep was included later, so the definition of the _real_ usleep got replaced with gibberish that did math inside a function declaration.

</comment></comment></comment></comment></comment><comment><USER13> Sounds like he is begging for <http://ooc-lang.org/> =)

Opt-out garbage collection, type inference, operator overloading, full-blown OO but you can use covers if you just want to have methods on primitive types, some type inference, saner syntax, you can include C headers all you want (but it has a real, good module system), one-time declarations in any order, objects are by-reference....

Besides, you can replace the SDK pretty much as you want, you're not tied to any 'threads' implementation, the proof being: there's actually an OS written in ooc! <http://github.com/tsion/oos>

(Of course I'm barely scratching ooc's features right now)

</comment><comment><USER14> I have two questions. Which qualities of C++ would one want to maintain in a replacement, and what is one using the replacement for?

For the second question, the article's answer is: _kernels, drivers, highly performance-sensitive code like game engines, virtual machines, some kinds of networking code, and so on. And for me in particular, it also includes new plugins to existing C-based legacy systems, including Microsoft Office._

I think this is the first step to discussing "a replacement". I fear that every C++ programmer would give a different answer to each question.

The ideal replacement in the article can be summarised as most/all language features of C, plus some chosen subset of the features of C++.

Although with most of them implemented differently to how C++ has implemented them. Presumably that better implementation is to be done without compromising it's C-like qualities. Which sounds to me like the same trap that C++ itself fell in.

<comment><USER15> The problem with C++ isn't so much that it's compatible with C or that you shouldn't pay for any features that you shouldn't use -- it's that they used the same dumb linker as C and so most advanced features are grossly limited and ended up as a twisty maze of text manipulation and includes.

<comment><USER6> That's no longer true; the linker has been massively extended to support templates at this point. (Otherwise every file that instantiated a particular template would result in all the code for that template being duplicated in the final executable. This actually used to happen in older C++ compilers.)

<comment><USER15> I don't consider that _massively_ extended -- that's a optimization but it's not really a fundamental change in the way the linker works.

</comment></comment></comment></comment><comment><USER16> I like the article a lot (i.e., the suggestions for a newer alternative). But C + Python is much tricker than you might think (because of the GIL mainly) for any non-trivial, high-performance desktop or mobile app. Because any non- trivial, high-performance app is going to involve queuing and you just can't do that cheaply in CPython (it's not just the GIL, it's that the interpreter is more or less a singleton -- Stackless Python is different -- but with a singleton interpreter on top, the design -- whoa, I feel like I just read a Paul Graham article on this :) -- the design gets a little top heavy).

I personally prefer C + C libraries + the non-invasive suggestions which are mentioned which are already found in C++, Obj-C, etc.

<comment><USER6> I would have called it bottom heavy :) In python+C, every time something is too slow, all you have to do is push more stuff down into the C layer. You have control of the continuum between 100% optimized (100% C) and 100% clean and readable (100% python).

I don't know any other programming environment that can claim that without adding tons of complication (the C/python interface layer is the simplest I've ever seen, except maybe for c/tcl).

<comment><USER16> Right, but the problem is that the root node is always going to be Python, and any code that uses Python is going to have to go through the root node (hence all Python code is really part of the root subtree). This becomes problematic if you have more than one queue that you're watching (e.g., input, network, graphics output, etc.).

Were it possible to have Python code be in some non-root node, it'd be great (e.g., for parsing text, or doing something algorithmic). As it is, when everything has to be fed through the interpreter, the design becomes top-heavy from a performance standpoint because the slow stuff is on top. And any time you want to optimize something but then use some Python, you're stuck (it becomes part of the root subtree again).

At least that was my experience. But Python does encourage interesting alternatives for performance (with generators, etc.). And if you're already mostly doing Python anyway (I'd say the threshold has to be 70%), then it seems to make sense (v. the opportunity cost of switching contexts between languages -- if you are spending more than 30% in C, I find it difficult).

But it's a really interesting issue. C, C++, and Obj-C all take a much longer time to develop up front. But if you refactor into libraries, maybe not in the long-run...

<comment><USER17> In my experience, having python as the root node for multithreaded C/python programs generally doesn't present a problem. When calling into external C functions through ctypes, the GIL is released such that multithreading at the C-level is unaffected. I personally use this feature heavily to perform numerically intensive work with multiple threads as directed through python with C doing the grinding.

Additionally, all IO code in the standard library and most C-extensions that I've seen release the GIL around blocking IO calls. This allows multi- threading to be used for the standard blocking IO use cases. Further, the computationally intensive routines in numpy and scipy that I'm familiar with also release the GIL to facilitate multithreading at the C-level

The GIL only becomes an issue if you want multiple threads to be executing Python bytecode concurrently. I don't believe this is a common problem as one rarely runs computationally intensive code at the python level. Such computationally intensive work is generally performed through C extensions or through external C functions (as accessed through ctypes). As long as such C extensions properly release the GIL, multithreading at the C-level is unaffected.

<comment><USER16> These are really good points. I suppose the only problem I see is when the C modules develop their own hierarchy of types and then they have to interface with Python's hierarchy of types. That's really the only issue.

If what you're doing in C is numerical or computational in a functional way that doesn't need a hierarchy of types -- then keeping all your types in Python and calling into C for IO, computation, etc., makes a lot of sense.

Where I've run into problems is if the C modules themselves get sophisticated and start having scene graphs or hierarchies of shapes, etc. Because then it makes sense to mirror the hierarchy in Python -- but then you get real performance issues.

So I guess if you can ensure that your C modules have a clear functional interface (or at least one whose side effects are clearly defined) and doesn't involve anything but a shallow type hierarchy, then Python + C is all good for that. I.e., the C modules have to be very well-defined or have just about no 'code smell' (at least near their interface with Python). Arguably you can always do this if you make an effort to refactor your C modules. But yeah, because Python must always be at the root node, one is sort of constrained to serve the 'top', so to speak. And that may encourage a sort of top-down design which is less amenable to bottom-up programming (as mentioned in On Lisp), etc.

</comment></comment></comment></comment></comment><comment><USER18> If I recall correctly, D allows you to disable garbage collection and do your own memory management, and it does give the programmer a lot of power over how memory is managed, up to and including literally using C's malloc and free. I think it's more accurate to say that D has optional, on-by-default garbage collection. I still wouldn't write a kernel in it, and I can't agree more about D 2.0, but it's a bit misleading to say that D "requires" garbage collection.

<comment><USER19> Can anyone explain or provide a reference for the problems with D 2.0?

</comment></comment><comment><USER20> D is the best replacement of C++. Why reinventing another language ? Many people have gone through the same process before.

</comment><comment><USER21> Just throwing these out there... since he didn' put out many alternatives...

<http://live.gnome.org/Vala>

<http://ooc-lang.org/>

<comment><USER22> +1 for Vala

</comment></comment><comment><USER23> ATS (ats-lang.org)

1\. Can embed and call C code with no overhead, uses C representation internally

2\. Embedded C can use CPP, otherwise the language has macros

3\. GC is optional

4\. No "system" thread

5\. Optional standard library

6\. Static typing, linear types, types as propositions, programs as proof.

7\. ML-style exceptions, not insane

8\. Examples from K&R C translated into ATS <http://www.ats- lang.org/EXAMPLE/KernighanRitchie/>

</comment><comment><USER24> Is there any non-legacy reason to have macros in C++? I've been coding C++ now for over 3 years, and as soon as I learned all the features (especially templates), I have never needed them again. Indeed, I despise them, because they break debuggers and can conceal bugs easily.

I'd like to see an example, if anyone has one. But for me, the template system is the best thing about C++ - they are much closer in functionality to Lisp macros than preprocessor macros are!!

</comment><comment><USER25> Wow it shrunk by +1.16%

[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

Outstanding.

<comment><USER26> :-) One can argue about the validity of "tiobe", but still...as much as people would like to see that "C and C++ are on the decline and they're just going to get smaller," it somehow just doesn't happen. ;-)

Even in my case, I was happily coding in C# in the last 3 years, and in January - bam! - I am on another project written in, well, C++.

</comment></comment><comment><USER27> > But there will always be programs that have to be written in a language like > C and C++. That includes kernels, drivers, highly performance-sensitive code > like game engines, virtual machines, some kinds of networking code, and so > on.

Thank you. I am not looking forward to the day when people begin to advocate Java or something like that for these applications, and I am glad to see this explicitly acknowledged.

</comment><comment><USER22> Sounds like Vala: reference counting instead of GC (full pointers underneath if you want), zero cost to call C, lambdas, generics, signals/properties, native unicode strings and other sugar such as foreach.

Can't do operator overloading though because they want to compile down to C without mangling names

</comment><comment><USER28> _2\. Do not remove the cpp preprocessor._

 _7\. One-time declaration/definition of functions._

Aren't these in conflict? A C-style preprocessor is crippled without the header-file model. You'd do better to replace it with some other kind of metaprogramming.

<comment><USER15> If you've got one-time declaration/definition of functions, that's just one less thing you need the CPP preprocessor for. There would be no conflict, it would just end up being used for macros only.

I think you might be right though, I'd loose the cpp preprocessor but add built-in hygienic macros and constants to make up for the loss.

</comment></comment><comment><USER3> Some comments on your proposed additions (my other comments were about the proposed reductions):

\- I don't think .NET-style generics can be implemented in a statically typed language that doesn't have a common base class (e.g. everything derives from class Object). This is an oversimplification to say this but at some level generics are implemented as syntatic sugar for typecasts between Object and the type parameter type. If you want generics instead of templates, a lot of C#'s design gets pulled in along for the ride. Nothing wrong with that (C# is a fine language), just as long as you understand it will happen and why. But also be aware that it means you will never be able to make a generic array class that performs as fast as a C++ STL vector does - which violates your own starting criteria, that it has to be as fast as C++ to succeed.

\- Most of the time I wish pass-by-reference were implicit, but pass by value has some special consequences in C++ that make it unlike many other languages. I was able to write a class that does fast bit-twiddling on itself, with its internal representation being an integer, and the entire thing was no more expensive in memory or speed than C functions bit twiddling on an int. So I was able to get abstraction and raw speed with no compromises. That's a rare use case, but I think it is illustrative of why pass by value is in C++ - <USER2> don't need it most of the time, but when you need it, you really need it.

As for not being able to reseat a reference, I found that frustating too until I started learning LLVM and about SSA (static single assignment). The common answer to why you can't reseat a C++ reference is just that it has something to do with compiler optimizations. That common answer is too weak; it has EVERYTHING to do with how the compiler optimizes the code. Basically, if you're asking why can't I reseat a reference, you don't understand what a reference is. But it's not your fault: what you really don't understand is that C++ uses the _word_ reference to refer to a thing that is not exactly like references as used in other languages. I used to think a reference was syntactic sugar for a pointer; that's not quite true. A C++ reference literally IS the object; it's just converted to a pointer during the process of a function call. The reason you can't reseat the reference is that if you could the static analysis of the program becomes immeasurably harder and later in the code the compiler cannot be absolutely sure that it knows what the reference really refers too.

In a way, not being able to reseat a C++ reference is a lot like not being able to assign to a constant defined by a macro or not being able to assign a new address to a function at runtime. It's part of a class of things that happen at a stage before runtime, and to change the system so that it would be possible would require introducing a level of indirection.

<comment><USER29> Generics requiring type casts and a common base class is Java type-erasure braindeadness.

CLR (.NET) generics compile separate code for each value type parameter, so you can have eg. vectors of structs, with the same performance as in C++. (for reference types, it uses the same code with an additional hidden "generic context" parameter, but that's an implementation detail). CLR has pass-by- value too, and although older versions of the MS.NET JIT did not inline such functions, the current version should have performance similar to C++.

Unfortunately, few programmers know how to get the maximum performance out of the CLR.

About not being to able to reassign references in C++ - the main reason is probably because that would require a separate operator, since assigning to a reference calls operator= on the class.

C++ has subtle interactions in many areas of the language, especially operator overloading, allowing you to override even assignment. If C++ can not do something apparently simple, there is probably a good reason for that, only obvious to those who know the spec inside out.

<comment><USER30> I think this is probably true too, that they didn't want to have a separate operator just to reassign a reference. I think it could have been made to work, but just wasn't worth it.

Fortran for example has this - pointers in fortran behave like value types (like C++ references) when performing operations on them, however there is a special => operator to change the actual pointer. I never used operator overloading in fortran but I don't think it would be much of an issue, you would be able to overload the operator for anything except a pointer type.

</comment></comment></comment><comment><USER3> 1\. Instead of the ability to directly call and be called by C/C++, include a really kick-ass Foreign Function Interface that can JIT the hookups and wrappers. And more important than _call_ compatibility IMO is C++ object ABI compatibility. (I realize there is no universal C++ ABI; just pick one and be compatible with it.) If you can declare a struct or class in the language and make its layout match a C or C++ class/struct to the point of being able to pass them back and forth, that's the important feature. The other important thing is some C API's use callback functions, without passing a user object that you can use to implement a closure out of it. A language with the ability to dynamically emit new functions (built in JIT) would be able to build a new C function just for one object to receive a callback.

2\. Fuck the C preprocesser. An architecture based on #include files is a joke; you will never make something better than C++ if you stick with that compilation model, you'll only make another C++ (corollary to the phrase, those who don't understand Unix are doomed to re-implement it poorly). Here's an idea: sandbox the god damn shit preprocessor and parse its output to provide input to the FFI (foreign function interface) JIT compiler. Under no circumstances allow macros defined in an #include to spill into the language proper. _This_ is not negotiable.

3\. No, mark-sweep garbage collection can be made to coexist with C++-style memory management.

4\. If you aren't going to include built-in threading or some better form of concurrency, why bother? Unless you have a time machine and intend to go back to 1980 to introduce your language there.

5\. I don't think it's that clear cut (about requiring (or not) a standard library) but I won't argue this point.

6\. I think you're right in the sense that if you _do_ include dynamic typing it is going to lead to creating something completely different than the stated goal. I'd say it would be a _better_ language, but it would not be the _correct_ language for replacing a statically typed one.

7\. I think exceptions are an important language advance, but I can't dispute that they can cause a mess of problems when it comes to cross-language (or cross-thread) boundaries.

8\. If you look at C, it is not too verbose for coding the types of concepts which it supports (function calls with a small number of control-flow statements). But it does not allow you to define new concepts. Of _course_ C is terse for calling functions: _those are C's atoms, it's fundamental language element!_ So IMO comparing to C code based on how easy it is to call a function is the wrong thing to think about. True improvements would come at the macro scale from better organization of groups of functions (e.g. into classes) or at a semantic level, by not needing to specify a function explicitly at all (e.g. operator overloading).

<comment><USER31>
      I think exceptions are an important language advance, but
      I can't dispute that they can cause a mess of problems
      when it comes to cross-language (or cross-thread)
      boundaries.

Exceptions are not completely problem-free, but there is no alternative. If you don't have exceptions, every single line of code:

      doSomething();

Becomes:

      int result = doSomething();
      if (result != OK) return result;

... and that is the simple case, without memory management, an actual result to return, unfortunate interactions with your other control flow statements, and so on. And you still end up with your application helpfully saying "ERR: -1923876".

This is simply doesn't work. And few people programming C/C++ appear do it correctly; I'd imagine that many security flaws come from improperly proceeding code that should have checked a return code.

<comment><USER32> I prefer return values over exceptions in languages that make it safe and easy.

Haskell does a pretty good job, I think. With Maybe or Either, you have to check it to extract your value, but if you are doing a lot of things that will result in/use the results of Maybe/Either, you can just operate in a Monad that makes them the default.

Similarly, languages with multiple return values make you explicitly ignore the return value.

Exceptions have their benefits, but I have a personal preference for return values because they make it explicit in the interface. Also, I find that it makes more sense to handle various success and failure scenarios in the same bit of code instead of writing a best-case flow and assuming that exceptions will be thrown and errors will be dealt with somehow.

Exceptions are great if you can't continue due to programmer error, but most cases where people use exceptions are just expected execution paths that (in my view) make no sense to handle via non-local control flow.

</comment></comment></comment><comment><USER33> tl;dr, he just wants a language that somehow magically has all the features of C++ while somehow magically not sucking at the same time. Also, regarding the first 2: fuck you too, author.

</comment><comment><USER34> I figure closures would be hard to do in a programmer-friendly way without GC.

<comment><USER35> The C++ closure library we use internally at Google has you specify whether the callback is permanent or not. If it isn't permanent, its deleted right after executing. It is a little painful maintaining the memory of your arguments, but people have generally converged to packing them all into a heap allocated struct and deleting when appropriate.</comment></comment>