South Korea accepts geothermal plant probably caused destructive quake - <AUTHOR> https://www.nature.com/articles/d41586-019-00959-4 <comment><USER2> \---- From the article:

A South Korean government panel has concluded that a magnitude-5.4 earthquake that struck the city of Pohang on 15 November 2017 was probably caused by an experimental geothermal power plant....

Unlike conventional geothermal plants, which extract energy directly from hot underground water or rock, the Pohang power plant injected fluid at high pressure into the ground to fracture the rock and release heat — a technology known as an enhanced geothermal system....

\---

This is both horrifying and incredible. They managed to fracture enough rock to generate energy contained in a mag-5.4 earthquake.

That's around 200 KT of TNT [0]. That's a lot of useful energy if contained. I wonder what the efficiency of the plant would be then.

South Korea already has 23 nuclear plants though [1], I wonder why they decided to go this route, perhaps easier setup and lower associated costs ?

[0] [https://science.howstuffworks.com/environmental/energy/energ...](https://science.howstuffworks.com/environmental/energy/energy- hurricane-volcano-earthquake3.htm)

[1] [http://www.world-nuclear.org/information-library/country- pro...](http://www.world-nuclear.org/information-library/country- profiles/countries-o-s/south-korea.aspx)

<comment><USER3> > South Korea already has 23 nuclear plants though [1], I wonder why they > decided to go this route, perhaps easier setup and lower associated costs ?

Despite South Korea being among the only countries that can currently do successful large nuclear builds, South Korea's government is fairly anti- nuclear, reflecting fear of the public post-Fukushima [1]. This is really sad because the skilled workers and construction management expertise required to accomplish this are very rare, and this team could be instrumental in very rapidly decarbonizing the world if deployed strategically. S. Korea also has some of the best shipyards. Turning them into assembly lines for GW-scale nuclear plants (floating or embanked) is one of the more interesting ways to rapidly and cheaply build out terawatts of clean, safe energy [2].

[1] [https://www.theguardian.com/world/2017/jun/19/new-south- kore...](https://www.theguardian.com/world/2017/jun/19/new-south-korean- president-vows-to-end-use-of-nuclear-power)

[2] [https://news.mit.edu/2015/new-look-floating-nuclear- power-06...](https://news.mit.edu/2015/new-look-floating-nuclear-power-0624)

<comment><USER4> A floating nuclear plant sounds like of one the most dangerous things a society can do. One of the problematic aspects of atomic fission energy plants are their failure behaviour. One of the most important aspects there is the containment of the pollution (in Fukushima they literally freeze the ground water under the plant so it is contained from below, too). If you are free floating in water, possibly even an ocean, you are about as uncontained as you can possibly get.

<comment><USER3> That's a common reaction, but it doesn't stand to much scrutiny. Before radiation gets to the public, about 4 or 5 different barriers have to fail. The first is the fuel pin, then the cladding metal, then the coolant itself (which can often absorb problematic fission products), then the reactor vessel, then the containment, and then dispersal. You're focusing on containment/dispersal.

But how do the first ones fail? The answer is that lack of decay heat removal allows the earlier barriers to heat up, melt, and fail. Well, if you have an intimate connection to an infinite heat sink (the sea), you don't ever lose decay heat cooling. You can't! So your fuel and clad stay intact in almost all scenarios.

Earthquakes? No problem, the sea buffers you. Tsunamis? No problem, stay in moderately deep water and the wavelengths are so long that you'll barely notice them. Heavy weather? The world's largest ship (Prelude) is designed to stay operating (it's a LNG facility) during Cat 5 cyclones. Military attack? Sink and cool passively until a designed recovery operation can occur Ship collision? Stay out of shipping lanes; worse case, sink and don't leak.

Also, keep people out of your exclusion zone by being a few km offshore.

Honestly it's a pretty slick low-carbon rapid deployment scenario that improves construction cost and safety. Operation will likely be more expensive, but maintenance maybe not (since you can go home to the shipyard and be relieved by a spare).

<comment><USER5> Most energy profit comes from externalizing the costs. Floating reactors would do that fantastically!

Love the "sink and don't leak" requirement.

<comment><USER3> Better stated: sink and don't leak because you are intimately linked to a near-infinite heat sink, and heating up/melting are a prerequisite to leaking.

<comment><USER6> that doesn't discuss corrosion though, the ocean is full of salt, how many half-lives until corrosion prevents containment?

<comment><USER3> The ocean would take a while to corrode through a couple dozen cm of steel, especially in cold water. But you're right that eventual leakage is a concern. A viable design of this kind of system would have to come with a sink-safely- and-cool design fully engineered as well as a designed recovery process. In other words, it should be expected that a recovery and disposal operation will be required (even though it's unlikely to be needed). This system should be designed so the salvage/recovery operation is easy.

Nuclear accidents generally worry about something called Large Early Release Frequency. Some of the most bioactive/dangerous fission products decay away in a few days. This kind of scenario completely eliminates those FPs from concern, though we do still have to worry about the longer-lived ones.

<comment><USER6> is that assuming steel at the same temperature as the surrounding salt still water, or assuming steel that is hotter than the constantly convecting stream of fresh salty water?

<comment><USER3> The way the heat transfer would work in this scenario would have small temperature gradients on the outermost layer of heat transfer because steel and water are good heat transfer mechanisms.

This isn't hypothetical. This list may interest you: [https://en.wikipedia.org/wiki/List_of_sunken_nuclear_submari...](https://en.wikipedia.org/wiki/List_of_sunken_nuclear_submarines)

<comment><USER6> I wasn't asking about a list of sunken submarines?

<comment><USER3> They are scuttled floating nuclear reactors at the bottom of the sea. These are real-life examples very similar to the scenario you are inquiring about. They have not corroded away and released wholesale nuclear waste after many decades. If that's not relevant to your line of inquiry then I must be totally misunderstanding you.

<comment><USER6> quoting myself, emphasis added:

>... the ocean is full of salt, how many _half-lives_ until corrosion prevents containment?

quoting you:

>They have not corroded away and released wholesale nuclear waste _after many decades_. If that's not relevant to your line of inquiry then _I must be totally misunderstanding you._

You don't misunderstand me, you purpousely misinterpret my questions so you can give easy answers...

<comment><USER3> Ah, I see what's going on here. Please review the HN guidelines.

I-131 has an 8-day half-life and is the primary threat to populations in large early releases. The direct answer to your question for I-131 is at least 2,000 half-lives. Sr-90 and Cs-137 have 30-year half lives, so for them it's at least 2. As you surely know, the longer half-life nuclides release energy more slowly and are therefore less dangerous to biological systems. At the extreme, U-238 has a few billion year half-life and can be handled safely without shielding.

In the scenario I'm painting, the reactor would be recovered from the sea within ~5 years so none of this matters. The corrosion will not fail the system within those 5 years. I do not propose to just leave any failed reactor down there indefinitely.

<comment><USER6> You must be referencing the following rule:

>Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith.

Which is exactly what I was accusing you of before you reflected the accusation. Please note there are 2 components in this rule:

1\. Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize.

2\. Assume good faith.

I will discuss part 1 in the context of our discussion, but first point out that 2: does not mandate to _keep and maintain the a priori assumption of good faith_ , it only mandates to _assume good faith_.

Now for part 1, lets personally dissociate and review the discussion as being held by Alice and Bob:

After Bob states,

>Better stated: sink and don't leak because you are intimately linked to a near-infinite heat sink, and heating up/melting are a prerequisite to leaking.

Alice _asks_ a concise question:

>that doesn't discuss corrosion though, the ocean is full of salt, how many half-lives until corrosion prevents containment?

and later Alice adds the question:

>is that assuming steel at the same temperature as the surrounding salt still water, or assuming steel that is hotter than the constantly convecting stream of fresh salty water?

All the while Alice is a priori assuming good faith on behalf of Bob.

Now Bob can give multiple interpretations to Alice's question, and he is required to _please respond to the strongest plausible interpretation of what someone says, not a weaker one that 's easier to criticize._

Bob can use interpretation 1 interpreting Alice as Alice1 implying all of the following:

* 1A) Alice is worried about shortlived isotopes

* 1B) moreover she seems to believe steel corrodes in a matter of days in the salty sea, Alice probably never heard of the Titanic recovery, Alice believes that ships can't be reused because after every trip they are decommisioned and a new ship is built for every trip.

* 1C) Also Alice seems to be unaware that Iodine is the most easily mitigated isotope since we can bulk manufacture Iodine tablets containing non-radioactive isotopes.

* 1D) Alice seems to be uninformed about all the above topics despite referencing concepts like nuclear half lives, the corrosion of metal in salty water, convection of hot water in cold water, and the concentration and saturation of metal ions in aquaous solutions...

This interpretation of Alice is easy to criticize, for obvious reasons

or Bob can use interpretation 2 interpreting Alice as Alice2:

* 2A) Alice is worried about _longlived_ isotopes

* 2B) Alice is worried about the influence of energy release in the long tail of nuclear decay: consider a simple system of N identical unstable isotopes decaying to a stable isotope (thats ignoring the worse long decay _chains_ ), after one half life, half the number of remaining radioactive particles has halved, but half of the energy that will eventually be released as _heat_ (not temperature!) is still contained in that long tail. Alice wonders if that energy can speed up the corrosion process on _long time scales_. When salty water dissolves metal, theres a thin layer of water that is saturated by dissolved metal which acts in a self-limiting way. But if the heat causes convection, that thin layer of saturated water will be constantly replenished with fresh unsaturated salty water. Similarily evaporation is much enhanced if convection or wind carries away the saturated air, which is why we like to hang our clothes to dry outside...

If Bob chooses interpretation 1 (which is easier to criticize) over interpretation 2, then it is _Bob_ who is acting in violation of part 1 of the rule from the guidelines...

If Bob then at some point replies "They have not corroded away and released wholesale nuclear waste after many decades." Then Alice _can only conclude_ that Bob has chosen the weaker interpretation Alice1 over Alice2. At that point she simply corrects her _a priori assumption_ that Bob is acting in good faith, and she _explicitly points it out_.

Then Bob escalates by reflecting the identical accusation in a vague reference to the guidelines, simply because Alice is open about her _founded_ conclusion on Bob's behaviour, while Bob never explicitly states he chooses interpretation Alice1 over Alice2 even though it is evident to any reader... Alice _did assume good faith_ on behalf of Bob, but Bob's replies _imply_ he chose the weaker interpretation Alice1. That is unless Bob genuinely believes people like Alice think ships are one-time-use items, that Iodine tablets do not exist, ...

I hope someone (dang?) who can prove their association with the platform can clear this up, perhaps in your favour perhaps in mine (don't care really, I would just like clarity / precedent, so that we maintain equality before the guidelines)

 __*

Also you keep changing attention to a lesser problem of containment, the short-lived nuclides, for example you state:

>Nuclear accidents generally worry about something called Large Early Release Frequency.

Why are you personifying the accident events? Surely you mean nuclear experts instead of accidents? Let me explain why they focus on the short-lived nuclides: because they can be affordibly mitigated with measures like Iodine tablets. abstaining from eating produce from the affected area for a few days, etc...

The longer lived ones are not necessarily safer, they are simply not affordibly mitigatable over longer timespans! (In case of consumption, the shortlived ones have a higher activity of course, but the longer-lived ones with a lower activity would be consumed for long timespans, such that DNA damage can integrate over time)

 __*

Regardless of these issues, would you consider it prudent for mankind to explicitly define an absolute _reference_ background energy-spectrum of radio- activity? i.e. for each gamma energy bin some typical but from then on fixed reference background activity? Because the only references to background I find are currently comparing with whatever local background is found away from a target of investigation, which is good enough on short timescales, but how will future generations be able to compare their background with ours? It seems we keep assuming that the natural background can not be influenced by human activity, which seems dangerously close to the original fallacy that human activity can not influence atmospheric CO2 concentration...

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Just to clarify. The source of the energy of this earth quake was not man- made. It was pre-existing gravitational potential energy.

Similarly, a low-energy scream in the montain can trigger a high-energy avalanche.

<comment><USER8> > Similarly, a low-energy scream in the montain can trigger a high-energy > avalanche.

While this is a popular myth, it's actually entirely false. You can shout and scream all you want - there's not enough energy transmitted to the snowpack to actually trigger an avalanche (by at least two orders of magnitude). This has been debunked by multiple studies, one example here: [http://www.gblanc.fr/IMG/pdf/reuter2009.pdf](http://www.gblanc.fr/IMG/pdf/reuter2009.pdf)

<comment><USER9> It is one of those areas where definitions matter more than reality. Many avalanches happen without external input. At a fraction of a second before one will happen, any extra energy will "cause" it to happen slightly earlier than otherwise. So one could biuld a situation where a shout, or a mouse, could indeed cause an avalanche.

It is like heating a pot of water to 100c. It is about to boil. Shout at it and it will start to boil a picosecond faster than if you didnt shout at it. Be really careful with the temperature and maybe your shouting makes it boil when otherwise it never would.

<comment><USER10> Not all potential avalanches happen. As a positive feedback loop the difference between an avalanche that does or does not happen can be arbitrarily small.

Back country snowboarding is a great example where small avalanches are much more common even if most of them don't become significant. But, because the many small avalanches happen close together they are much more likely to grow. This is also why sound is more effective than you would expect, getting a huge number of tiny avalanches to happen at the same time makes it significantly more likely to form a large one.

</comment></comment></comment></comment><comment><USER11> If the energy was building up anyways, then wouldn't it have come out in an earthquake eventually? In fact, the later earthquake would have been worse. Maybe people will start intentionally fracking near earthquake zones on a regular basis to prevent the energy buildup from becoming dangerous.

<comment><USER12> Yes. In fact, years ago it was suggested that we do that for the San Andreas Fault to prevent a catastrophic "big one" release.

I read occasionally that fracking causes earthquakes, too. While there is controversy around fracking, I see the systematic de-stressing of the earth's surface as a benefit.

<comment><USER13> "I see the systematic de-stressing of the earth's surface as a benefit. "

Those of us in geological fields totally disagree with you. If you start a small earthquake in San Andreas, say up in the northwestern section, you can trigger a full-length chain reaction that culminates in unleashing the big one which will rip all the way through Mexico. What is worse is that the earthquake will get stronger as it propagates along the fault line. What you call the big one in the northwest section where it all began is thousands of times weaker than what gets felt further down the fault.

<comment><USER14> So you would rather just wait for it to randomly unleash as the big one?

<comment><USER15> It does seem better than purposely releasing the big one, or doing so accidentally, which would be a risk until we can build much more sophisticated models that would guide these release efforts.

</comment></comment></comment></comment></comment><comment><USER16> "Hot Dry Rock" geothermal was pioneered by people at Los Alamos:

[http://coloradogeologicalsurvey.org/energy- resources/geother...](http://coloradogeologicalsurvey.org/energy- resources/geothermal-2/uses-2/enhanced-geothermal-systems/)

It was a strange story. It started out with ideas for super-high-temperature mobile reactors that could melt a shaft ten miles down to tap geothermal energy. In the early 1970s the enthusiasm for that kind of thing declined, so they got an idea to tap geothermal energy using "fracking" technology which existed back then but wasn't anywhere near as capable as it is today.

One thing I remember about their work is that they didn't observe any fracking-related seismic activity at all: when you frack sedimentary rock you get the rapid formation of large cracks with obvious seismic activity. At least in that experiment they found that fracking would open up micro cracks in bedrock slowly and that there was no obvious activity from it.

</comment><comment><USER17> I wonder how close this process is to hydraulic fracturing to extract fossil fuels. Is the volume of liquid pumped into the ground similar? I imagine geothermal is pumping more and deeper to get to where the earth is warmer, but I am not sure.

In my area, Pittsburgh Tristate area (WV,OH,PA) fracking is big business. Seems we are fortunate to not have a major fault line running through the area.

edit - clarifying that I am talking about fracking for fossil fuels

<comment><USER18> Perhaps this could be thoroughly tested by performing high-pressure hydraulic fracking in very close proximity to gas pipelines.

</comment></comment><comment><USER19> Something like this happened in Basel, Switzerland in 2007 [1]. I remember that during their work on the enhanced geothermal system small quakes were triggered in the region. They had to cancel the project thereafter.

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

</comment><comment><USER20> Interesting. I always assumed that the energies involved in major earthquakes were far too large for us to affect them in any way.

If we can cause them, I wonder, will we be able to prevent the natural ones as our knowledge increases?

<comment><USER21> Earth's crust "wants" to move. One thing is triggering an earthquake by fracking, another one is stopping the crust with all the mantle below pushing heat into it. That heat has to go somewhere. I guess the best we'll reasonably do is forecasting quakes.

<comment><USER22> Hypothetically, if you could cause earthquakes in a controlled way, it may be possible to perform periodic small stress relief quakes rather than allowing one big one to occur naturally. We can't stop it moving, but maybe we can make it move on our terms.

<comment><USER23> Exactly, this seems like an interesting avenue to explore.

<comment><USER21> I think to remember that wet faults (as in "there is water mixed with the rocks") slide more frequently that dry faults and yield energy in less powerful bursts. If so, lubrificating faults could be a solution. Unfortunately I found a paper from 2017 [1] that suggests that it's not so simple. There are many more micro conditions that can trigger an earthquake.

[1] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5580450/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5580450/)

</comment></comment></comment></comment></comment><comment><USER24> I wonder if someday we'd be able to trigger small earthquakes to release pressure gradually and prevent larger and more destructive earthquakes.

<comment><USER25> Seems unlikely, because the Richter scale is logarithmic. For example, to bleed off the energy released by this magnitude 5.4 earthquake, you'd have to trigger 125000 magnitude 2.0 quakes. Fun little calculator on the USGS site: [https://earthquake.usgs.gov/learn/topics/calculator.php](https://earthquake.usgs.gov/learn/topics/calculator.php)

<comment><USER26> Sure, but isn't this literally just a notation convention?

There's big quakes and there's little quakes. But energy is still linear. The fact that a quake releasing 1/3 of the energy of a 6.0 is not _denoted_ as 2.0 quake, does not mean that it isn't releasing 1/3 of the energy.

I'm not a quakologist. Am I wrong?

</comment></comment></comment><comment><USER27> California had best take heed: The Geysers and Salton Trough have taken way more heat out of the Earth, and I would argue delayed, shifted, and intensified the big one the Hayward Fault is overdue for.

There's been a great deal of ridicule placed on opponents of geothermal energy, saying that geothermal could never contribute to an earthquake. I'm hopeful the ridicule will start to go away now.

<comment><USER28> At least according to the second paragraph of TFA, the problem wasn't the amount of energy they took out of the ground. It was all the fracking.

<comment><USER29> Which shouldn't be confused with the type of fracking we normally do.

<comment><USER30> How is it different?

<comment><USER29> Normal fracking doesent create earthquakes.

<comment><USER28> I've not seen a credible source say that.

The closest I've seen is sources saying that fracking itself only explains a minority of the increase in earthquakes in places like Oklahoma, and that the majority are more properly attributed to other things, particularly the wastewater injection wells that fracking operations use to dispose of all the wastewater that fracking produces.

Which is such an amazingly damn hair-splitty distinction to most of us, but I can see where a spin doctor could have lots of fun with it.

</comment></comment></comment></comment></comment></comment><comment><USER31> It's unlikely that all of that energy was injected into the earth by humans. The high-pressure fluid injection generated cracks and lubricated the surrounding rock, facilitating a release of existing stresses. The area around Pohang is riddled with faults. There's a lot of energy down there just waiting to be released.

South Korea, like most other developed nations, is trying to increase the use of renewable energy. There are many hot springs in Korea, especially around active faults. Geothermal is an obvious candidate in those areas. Of course they're also doing wind and solar where feasible.

</comment><comment><USER32> I'm seeing a lot of folks making a connection between hydraulic fracturing in the US and this earthquake. In fact, the earthquakes in Oklahoma were caused by waste water wells: [https://en.m.wikipedia.org/wiki/Injection_well](https://en.m.wikipedia.org/wiki/Injection_well)

Fracking is happening all over the US (Appalachians, the Dakotas, Texas), but for some reason Oklahoma only gets the quakes. I think it's because only Oklahoma has these bad wastewater wells. Apologies, can't find the sources I found a few years ago that convinced me of this.

<comment><USER33> Statistics for increase in rate of earthquakes in US: [https://en.m.wikipedia.org/wiki/File:Cumulative_induced_seis...](https://en.m.wikipedia.org/wiki/File:Cumulative_induced_seismicity.png)

The keyword is induced seismicity. I hadn't heard of that before.

</comment></comment><comment><USER34> Was there a similar causality between Puna Geothermal and the vigorous lava vent popping up next to it that was entertaining us last year, extending Big Island of Hawai'i by a large chunk, covering whole Kapoho Bay?

</comment><comment><USER35> Side question: why did a magnitude 5.4 quake cause so much grief?

A 5.4 is a quake where Californians finally start paying attention, but generally doesn't cause a lot of grief unless something very unlucky happens.

</comment><comment><USER36> Nuclear obviously has its risks. Exploring alternatives is a viable strategy. Also do not be mistaken to think that nuclear power is unlimited. It requires the mining of a resource that is very very limited.

</comment><comment><USER37> Next step: harness energy released by earthquakes.

</comment><comment><USER38> Sounds like something out of a conspiracy theory.

<comment><USER39> What? There is a huge amount of data demonstrating that the rate of earthquakes increases significantly anywhere that any fracking happens, and the rate of increase is proportional to the amount of fracking that occurs in the region.

What is the conspiracy theory here?

</comment></comment><comment><USER40> Could we use this method to prevent large quakes by splitting them into a series of smaller ones?

<comment><USER41> Earthquake magnitudes are in logarithmic scale so magnitude 1.0 difference is 32 times more energy. So to break up a 7.0 earthquake into a series of 5.0 earthquakes, it'll take 1000 small earthquakes. With our current technology it's not very feasible.

<comment><USER40> Im well aware.

</comment></comment></comment><comment><USER42> So some of those conspiracy theories about earthquake weapon tests could be credible?

</comment><comment><USER43> And here I thought earthquakes were the one kind of natural disaster we still couldn't bring upon ourselves

</comment><comment><USER44> Would this be the first nation to denounce fracking?

<comment><USER45> no, there is quite a long list of countries that banned it. also a few counties and states in US have also banned it

</comment></comment><comment><USER46> I wonder if any countries are trying to weaponize this?

<comment><USER47> I suspect we'd notice if North Korea started drilling wells in California. It's not exactly a suitcase nuke level of concealability.

<comment><USER48> South Korea accidentally discovered a bunch of tunnels that the North had been prepping. They'd gone unnoticed until performing some sort of water investigation iirc. You used to be able to go into them (near the DMZ) on tours. The walls are black and the guide I had noted that upon discovery, the fleeing workers painted the wall with coal to "make it seem like it was a mining operation all along".

So, the "drink your milkshake" level access isn't crazy.

<comment><USER47> Using tunnels offensively and using _earthquakes_ offensively are enormously different things, though.

A tunnel is useful; you can get past the landmines and other defenses. Causing an earthquake a few miles across the DMZ is far less useful.

<comment><USER49> No body/tank is getting through the ironically named Demilitarized Zone dividing South and North Korea, without getting lit up with fast moving pieces of metal hitting with high kinetic energy.

Hence the tunnels.

North Korean government's long standing, highest priority goal is conquest of South Korea through any means, including military invasion.

<comment><USER47> I'm not disputing any of that.

I'm disputing "earthquakes as offensive weapon" being useful. Not tunnels.

</comment></comment></comment></comment></comment></comment><comment><USER50> This is a purely political decision.

The current government, which ousted the former goverment with absurd scandals, is under a huge bribery and corruption scandal which includes kpop stars, police and prosecutors alike.

The current government always tried to shift the media's attention when they were in trouble with former government's incidents and this is one of them.

The government is actually trying to indict former government's staff and let them take all the media's blame, while they clean up their own bribery scandal.

<comment><USER51> Here are the abstracts of the two Science papers. This isn't my area, and although it would be hard to prove causation, they do have good evidence that causation is _plausible_. That's probably as strong a claim as anyone would be likely to be able to make, given the constraints on what is known.

 _The moment magnitude (Mw) 5.5 earthquake that struck South Korea in November 2017 was one of the largest and most damaging events in that country over the past century. Its proximity to an enhanced geothermal system site, where high- pressure hydraulic injection had been performed during the previous 2 years, raises the possibility that this earthquake was anthropogenic. We have combined seismological and geodetic analyses to characterize the mainshock and its largest aftershocks, constrain the geometry of this seismic sequence, and shed light on its causal factors. According to our analysis, it seems plausible that the occurrence of this earthquake was influenced by the aforementioned industrial activities. Finally, we found that the earthquake transferred static stress to larger nearby faults, potentially increasing the seismic hazard in the area._

 _The moment magnitude (Mw) 5.4 Pohang earthquake, the most damaging event in South Korea since instrumental seismic observation began in 1905, occurred beneath the Pohang geothermal power plant in 2017. Geological and geophysical data suggest that the Pohang earthquake was induced by fluid from an enhanced geothermal system (EGS) site, which was injected directly into a near- critically stressed subsurface fault zone. The magnitude of the mainshock makes it the largest known induced earthquake at an EGS site._

</comment></comment><comment><USER52> I think this accident was expected. All construction works in South Korea are corrupted now. Why nobody knows?? It is because these kinds of works are under controlled by some companies. Not only this part but also nuclear power plant part is the same as this catastrophe. Just check out the Nuclear power plants in UAE. Those NEVER going to generate electricity because those are based on this culture...

[https://medium.com/@cyb999999999/nuclear-energy-clean-but- no...](https://medium.com/@cyb999999999/nuclear-energy-clean-but-not- clean-341c26d95fa0)</comment>


Accidental Release: Goldman Engaged in 'Naked Short Selling' - <AUTHOR> http://www.rollingstone.com/politics/blogs/taibblog/accidentally-released-and-incredibly-embarrassing-documents-show-how-goldman-et-al-engaged-in-naked-short-selling-20120515#ixzz1vFq6FTpR <comment><USER2> The Overstock CEO has this to comment: <http://www.deepcapture.com/joe-floren- screws-the-pooch/> (tl;dr: Ha-Ha!).</comment>


Free Application Web Hosting: DreamHost Apps - <AUTHOR> http://www.dreamhostapps.com/ <comment><USER2> I think dreamhost is the company that had its users ftp accounts compromised a few years back.

I wouldn't rely on that company to be honest.

<comment><USER3> Also, as discussed in another thread[1], DreamHost stores passwords in a recoverable fashion (apparently some custom-rolled symmetric crypto algorithm) and supposedly gives devs root access to production machines.

It's not their honesty that worries me, it's their security.

[1]: <http://news.ycombinator.com/item?id=2727396></comment></comment>


Lincos language - <AUTHOR> https://en.wikipedia.org/wiki/Lincos_language <comment><USER2> I've always thought ideas like these to be cool exercises, but ultimately so naive.

It seems there are so many underlying assumptions on what intelligence looks like for this to make any sense. E.g. why do we assume another intelligent being would necessarily follow a linear, sequential conversation? or that the conversation would happen in the same time-scale we are used to as humans? or that an extraterrestrial being would care about conversation at all, instead of exchanging information via other means, like direct chemical reactions, genetics, or apparent random noise, and expecting us to pick all the implicit signals?

I bet we wouldn't be able to recognise certain life forms if they literally appeared before us, because we have such strong biases of what "life" looks like - we can't even reach consensus over viruses being life forms, despite being gene-based, following natural selection, etc. Let alone "intelligent life forms" or anything else that a virtually infinite universe could throw at us.

PS: Maybe my notion of "extraterrestrial" has been deeply influenced by H. P. Lovecraft. :D

<comment><USER3> I think it's quite probable that even if some entity or group finds linear sequences of symbols unnatural, if they're smart enough to pick it up they're also smart enough to piece together the meaning the hard way, the same way we would if presented with something very foreign. Any technological entity has encountered and mastered lots of foreign systems, including us. Biochemistry, quantum mechanics, heck, even classical mechanics don't come to humans naturally, but we're getting by pretty well anyway.

As for recognizing life, eh, I don't think it's an accident that we're carbon- based blobs of relatively flexible, mobile matter. If there was a more likely template, that's probably what we would be based on instead.

<comment><USER4> Our definition of "intelligence" is overfit for humanity. There's no reason why an alien civilization have any interest in linear sequences.

The way I see it, any communication system that doesn't make it possible to communicate with starfish won't make it possible to communicate with aliens either.

<comment><USER5> Well, radio communication is serial (and even television signal is encoded as a linear sequence). Looks like serial protocols are the most natural, simple, and reliable of all. And do not forget about the natural numbers!

<comment><USER6> Lots of natural phenomena are "serial" just due to entropy. Radioactive decay, friction, even pulsars are going to tell intelligent species that things happen sequentially in the time domain.

</comment></comment></comment></comment></comment><comment><AUTHOR> I posted this because Alan Kay linked to it in the context of objects that come with their own interpreters: [https://news.ycombinator.com/item?id=11957719](https://news.ycombinator.com/item?id=11957719).

This was in the same thread where he and Rich Hickey discussed "data": [https://news.ycombinator.com/item?id=11945722](https://news.ycombinator.com/item?id=11945722), which was mentioned here: [https://news.ycombinator.com/item?id=23891069](https://news.ycombinator.com/item?id=23891069).

<comment><USER7> That data thread makes me very sad. Two technology leaders completely talking past each other and not understanding the other over and over again.

<comment><USER8> Maybe they need... an interpreter?

Right, I'll show myself out...

</comment></comment></comment><comment><USER9> From _Gödel, Escher, Bach_ , chap. 6, Douglas Hofstadter:

> In these examples of decipherment of out-of-context messages, we can > separate out fairly clearly three levels of information: (1) the _frame_ > message; (2) the _outer_ message; (3) the _inner_ message. The one we are > most familiar with is (3), the inner message; it is the message which is > supposed to be transmitted: the emotional experiences in music, the > phenotype in genetics, the royalty and rites of ancient civilizations in > tablets, etc.

> To understand the inner message is to have extracted the meaning intended by > the sender.

> The frame message is the message 'I am a message; decode me if you can!'; > and it is implicitly conveyed by the gross structural aspects of any > information-bearer.

> To understand the frame message is to recognize the need for a decoding- > mechanism.

> If the frame message is recognized as such, then attention is switched to > level (2), the outer message. This is information, implicitly carried by > symbol-patterns and structures in the message, which tells how to decode the > inner message.

> To understand the outer message is to build, or know how to build, the > correct decoding mechanism for the inner message.

> This outer level is perforce an implicit message, in the sense that the > sender cannot ensure that it will be understood. It would be a vain effort > to send instructions which tell how to decode the outer message, for they > would have to be part of the inner message, which can only be understood > once the decoding mechanism has been found. For this reason, the _outer > message is necessarily a set of triggers_ , rather than a message which can > be revealed by a known decoder.

</comment><comment><USER10> I've always been interested in Freudenthal's work, although I've never had the time to work through the book in detail. A second volume was planned but never finished. That's such a pity, because in that volume he planned to formalize interesting social concepts.

Anyway, it's a must read for anyone interested in communication with aliens. I believe it would work, and his way of distinguishing between false and wrong is ingenious. The book is unfortunately hard to get, but there are digital copies around. Good reading if you don't shy away from some old-style Carnap- inspired logic notation.

</comment><comment><USER11> I've always been interested in constructed languages, but reading through this article just now made me wonder about curriculum learning for NLP models. Could better generalizable language models be achieved through curriculum learning of this sort, where simple mathematics and logic are introduced before anything else? The curriculum learning papers I've seen so far are mostly for specific tasks, like introducing simple questions for QA tasks before more complicated multi-hop reasoning.

</comment><comment><USER12> > In 1999, the astrophysicists encoded a message in Lincos and used the > Yevpatoria RT-70 radio telescope in Ukraine to beam it towards close stars. > This is known as Cosmic Call.

[https://blog.plover.com/aliens/dd/intro.html](https://blog.plover.com/aliens/dd/intro.html) "it's fun to see if you're as smart as an alien"

</comment><comment><USER13> Apparently one of my all-time favorite bands is named after the message sent in this message, The Evpatoria Report. I haven't listened to them in a while, so it was a nice reminder seeing this.

[https://youtu.be/GazWRcrwq-s](https://youtu.be/GazWRcrwq-s)

<comment><USER14> Taijin Kyofusho was the first song of theirs I heard - wow. Such a great band!

</comment></comment><comment><USER15> This is much like the premise of the pre-contest materials for this year's ICFP contest. A series of images (as decoded from audio) that translated into examples of numbers, math/logic operators, and combinators.

</comment><comment><USER16> "It teaches natural numbers by a series of repeated pulses", but receiver would not be able to determine if it was some finite sequence.

<comment><USER17> Re natural numbers, people in our society (a technicist one) seem to forget that "natural numbers" are actually a social construct, there's nothing "natural" about them, they're not "innate"/"pre-existing" in a Platon-like universe of ideas, they only helped us from some-point on to do some technicist stuff (from collecting taxes in Roman times to sending rockets to the Moon in the 1960s) but I'm not sure that the Universe as a whole "cares" so much about them.

We as a species did have the opportunity at some point in our past of not "choosing" the natural numbers way (and of not choosing the principle of non- contradiction more generally speaking), I'm talking about Heraclitus and presumably some other of his disciples, but we chose not to.

As such, we could "meet" an alien society which has chosen the Heraclitus way, or any other way that doesn't involve "separating" stuff into "units" (like natural numbers are), or of thinking about the Universe as "stuff", or any other idea/concept that is not currently in use by our society. In which case all this trouble would have been for nothing, only helps with our existential solipsism as a species.

<comment><USER18> They can probably count the stars and the can probably count the Hydrogen atoms. It is a very good guess that they understand the "natural" numbers.

<comment><USER17> > They can probably count the stars

Those aliens could have then asked, similar to Parmenides: where does a star "end" for you to be able to "count" it as a separate entity? From the wiki page [1]:

> and thus despite appearances everything exists as one, giant, unchanging > thing

The pre-socratics were a very interesting bunch, again, it's a social- constructed presumption to think that those possible aliens have all chosen the way of Aristotle and Platon like we did.

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

<comment><USER18> Relevant [https://xkcd.com/1189/](https://xkcd.com/1189/)

It's not clear where the Solar system ends, and it's not clear where a star ends. There are several criteria and they give different numbers. But they have all the same order of magnitude that is much smaller than the distance between the stars. For most orbital calculations you can take the star as a single point, and assume that the space is empty. Aliens probably had done a similar approximation and can count star easily.

</comment></comment></comment></comment></comment><comment><USER19> When trying to convey the length of time for a second how does one account for Doppler shift?

<comment><USER20> As long as they actually understand the message, you can include a way to correct any shift by relating the second back to a fundamental constant; like the voyager golden record does with the hydrogen transition time.</comment></comment>


No Google Voice desktop app? No worries, it'll be coming to your browser soon - <AUTHOR> http://www.downloadsquad.com/2010/06/11/google-voice-desktop-app-webapp/

<comment><USER2> Google has never taken a hard line against Flash. In fact they've used it in a few Google products (Google Finance's charts are Flash for example). So I don't see why they wouldn't use Flash's superior media support for this.

</comment><comment><USER3> I'm still waiting for Google Voice to be available to Canada.

<comment><USER4> I hate how long it takes to come to Europe!

<comment><USER5> It's probably taking Google Maps' suggested directions to swim across the Atlantic.

</comment></comment></comment><comment><USER6> This is the first I've heard of a GV desktop app, and I really think it'd be great if they could make a good one and release it for free. But, is there any reason that they can't just integrate it with Google Talk and the existing software? You could just add a phone as a contact or something…

</comment><comment><USER7> They don't necessarily need their own desktop app. Just enable SIP and allow us to use GV with existing VOIP software and handsets.

<comment><AUTHOR> Yea, that would be useful, but I doubt they Google with partner up with people like Skype or anyone.

</comment></comment><comment><USER8> At the least, they should make an API available so that 3rd party desktop apps can be made.</comment>


Opensource canary-testing system Vamp moves to Beta with v0.9.0 release - <AUTHOR> https://github.com/magneticio/vamp/releases/tag/0.9.0 <comment><AUTHOR> Founder here. Would love to hear your thoughts on how we can make Vamp better, and what kind of features we need to be focusing on while we're moving towards the Vamp 1.0 release.</comment>


Ask HN: Who's starting new towns in the US? - <AUTHOR> There are around 1500 towns in the US with population between 10,000 and 25,000 [1]
So it's not like this hasn't been done before. And sort of the ultimate chance to engineer the world you want to live in -- I'd think people would be really into it.
I know that YC has/had a "New Cities" initiative but I haven't seen updates in years.
[1] https://www.statista.com/statistics/241695/number-of-us-cities-towns-villages-by-population-size/ <comment><USER2> The founder of Dominos pizza built the city of Ave Maria, FL -- It gets high marks in the child safety/friendly category from the local press but feels suburban to me. The most famous example is probably Seaside, FL built buy Duany Plater-Zyberk, it was the set of "The Truman Show". The story is interesting they had to fight all these dumb zoning laws (eg. The Fire Department buys the biggest truck they can find and then think that every road in the state must accommodate it) -- DPZ has other stuff worth checking out: [https://www.dpz.com/Projects/All](https://www.dpz.com/Projects/All)

My favorite is in Jakriborg, Sweden [https://en.wikipedia.org/wiki/Jakriborg](https://en.wikipedia.org/wiki/Jakriborg)

You learn about this sort of stuff if you are plugged into the urbanist blogs / podcast scene

<comment><USER3> > The founder of Dominos pizza built the city of Ave Maria, FL -- It gets high > marks in the child safety/friendly category from the local press but feels > suburban to me.

That's kind of the _point_ of suburbs - to be more child safe/friendly than the city. It's not a bug, it's a feature. (It may not be a feature that you personally want, though...)

<comment><USER2> Yes that's a major reason people move to the suburbs (but not actually why they were created in the first place), but on the other hand you can build a safe town where the buildings are close together.

</comment></comment></comment><comment><USER4> Irvine, California is a subdivision of The Irvine Company, owned by one man, Donald Bren.

To ensure alimony couldn't touch his $15 billion wealth, he had a family out of wedlock.

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

<comment><USER5> Cool! Why didn't i hear about this before?

Why there are no other such examples? At least, this approach guarantees that there will be no slums: if slums start to form, the guy who owns the town will start losing billions, quickly, so he will do everything to evict those people.

<comment><USER6> That's not how you guarantee there'll be no slums though. You just guarantee you move the slums somewhere else, which is not really a solution for anyone.

<comment><USER5> Sorry for late answer, but why not? Slums are not a problem as such. They are only a problem when they are close to normal residential areas, because they decrease property values there. If slums are somewhere where normal people won't see them, i am fine with them.

</comment></comment></comment></comment><comment><USER7> I have often wondered if it's possible to build a successful, large-scale community/commune that is secular and run by sane people who engage in minimal financial thievery of their supporters. Think Wild Wild Country but without insane murderous narcissistic assholes at the helm. From a political perspective what they did was actually pretty amazing. The fact that the feds ultimately just asked them to leave the country rather than imprisoning them makes me suspect that the biggest impediment to building such a community may in fact be trying to do it underneath a bigger government.

<comment><USER8> Garden of Eden is a commune of people that grow their own food, use minimal electric, use water from a well, etc and then sell their produce and products online. They've faced some lovely treatment as well [1]. They were faced with a machine gun raid and day long detainment under the auspices of a drug warrant. No drugs were found. Following that they were raided by the city's Code Compliance Department who cut down and carted off various plants and 'accidentally' broke their irrigation lines with their trucks.

[1] - [https://www.chron.com/news/houston- texas/texas/article/North...](https://www.chron.com/news/houston- texas/texas/article/North-Texas-hippie-commune-sues-over-failed- SWAT-6431853.php)

</comment></comment><comment><USER9> It's definitely been done. Once upon a time there was a thing called Planned Communities. Reston, Virginia is one such. So is "The Villages" in central Florida. But, especially since the sub-prime mortgage crash of the 00s, I haven't heard of anybody attempting it.

<comment><USER10> Check out Ave Maria, also in Florida. It is a mixed-zoning town build around a College and a Catholic cathedral, but unlike the Villages, it is actually quite age diverse. So, for those who are not bothered by the the religious aspect, it is seems very livable and I think will be successful.

</comment></comment><comment><USER11> Not sure about the state of the project, but I remember reading this article last year about Bill Gates starting a new city: [http://www.businessinsider.com/bill-gates-buys-arizona- land-...](http://www.businessinsider.com/bill-gates-buys-arizona-land-to- build-smart-city-2017-11)

</comment><comment><USER12> Another related phenomenon is the relocation of an entire town which often results in building an entire infrastructure from scratch. These are either caused by natural disasters like Pattonsburg. [https://en.m.wikipedia.org/wiki/Pattonsburg,_Missouri](https://en.m.wikipedia.org/wiki/Pattonsburg,_Missouri)

Or it can be caused by planned hollowing of the ground from mining like Kiruna. [https://en.m.wikipedia.org/wiki/Kiruna](https://en.m.wikipedia.org/wiki/Kiruna)

Either scenarios are fascinating to think about the engineering effort that goes into starting a town from scratch. Like literally sim city.

</comment><comment><USER13> Check out Rajneeshpuram [0], built by the Rajneeshees in Oregon. There's a Netflix documentary about it now, called "Wild, Wild Country". Definitely worth checking out.

Besides all the controversy surrounding it, it was actually a pretty interesting example of "buying land and building a city from scratch".

[0] [https://en.wikipedia.org/wiki/Rajneeshpuram](https://en.wikipedia.org/wiki/Rajneeshpuram) [1] [https://en.wikipedia.org/wiki/Wild_Wild_Country](https://en.wikipedia.org/wiki/Wild_Wild_Country)

</comment><comment><USER14> Celebration, Florida was created in the late 90s by Walt Disney Corporation.

</comment><comment><USER15> This guy bought up lots of land with the purpose of building some kind of city in with his vision.

[https://www.bostonglobe.com/metro/2017/12/23/mormon-mogul- ey...](https://www.bostonglobe.com/metro/2017/12/23/mormon-mogul-eyes-small- town-vermont-for-vast-futuristic- development/VevYULqFPKGSnd8zHj2twL/story.html)

<comment><AUTHOR> This is very interesting and exactly what I was looking to find. Thanks!

</comment></comment><comment><USER16> This is only tangentially relevant to the question as asked, but you may be interested in reading about China's "new cities" initiative.

There are lots of articles on DuckDuckGo but here is one: [https://outline.com/ZAZvTt](https://outline.com/ZAZvTt) (Forbes, yuck!)

</comment><comment><AUTHOR> Has anybody heard from YC's New Cities project, by the way? Should we assume it's disbanded? [https://cities.ycr.org/](https://cities.ycr.org/)

</comment><comment><USER17> [https://www.cbsnews.com/news/bill-gates-arizona-smart- city-t...](https://www.cbsnews.com/news/bill-gates-arizona-smart-city- tonopah/)

<comment><AUTHOR> Didn't realize this! Interesting take here about how this actually just a run- of-the-mill sprawling Phoenix development that Gates invested in just for profit: [https://slate.com/business/2017/11/bill-gates-smart-city- in-...](https://slate.com/business/2017/11/bill-gates-smart-city-in-arizona- is-not-smart-not-a-city-and-has-almost-nothing-to-do-with-bill-gates.html)

</comment></comment><comment><USER18> There was a great TED talk about new VC funded enclave cities with modern laws. Idea soon got corrupted and dismissed as tax evasion schemes.

<comment><AUTHOR> This one? [https://www.ted.com/talks/paul_romer](https://www.ted.com/talks/paul_romer)

<comment><USER18> ja, danke</comment></comment></comment>


Could All of the World's Cars Be Electric? - <AUTHOR> https://blogs.scientificamerican.com/plugged-in/could-all-of-the-worlds-cars-be-electric/ <comment><USER2> 27 minutes of meandering story leads to: Not today, but yes it is possible after investment in infrastructure and battery tech.</comment>


Ask HN: Unethical Software Developer Behavior? - <AUTHOR> Would it be considered unethical/unprofessional behavior for a developer/engineer to continue to work on a project where:<p>1.) The developer knows, with certainty, the ROI for the project is negative... by a large amount. 2.) The developer knows, with a high degree of certainty, the project will never have a positive ROI. 3.) The project is not under any type of R&D heading or mandate. 4.) The organization is a financial institution. 5.) The organization is of the mutually owned variety. <comment><USER2> This is a really good question.

</comment><comment><USER3> If you are hired as an engineer and it is not your job to provide investment or business advice then I would say that you have no professional or ethical duty related to your personal private evaluation of the business merits of the project you are working on.

If that is not your area of expertise then your evaluation may be wrong or you may be missing information on the bigger picture to understand the strategic reasoning behind a project.

If you are highly confident that a project will result in financial losses then the only really important questions are personal: do you want to work on this project given that you think if will fail financially? will financial failure negatively impact your career later?

</comment><comment><USER4> If you are a contractor / employee I would simply voice your concerns, and if they don't listen that is on them, as long as the project is paying your bills and you are learning I would continue.</comment>


Never been to DEF Con, but went to my 1st Adultcon (mildly nsfw) - <AUTHOR> http://extralunchmoney.com/blog/adultcon-review-what-actually-happens-at-a-porn-convention/ We have a startup in the adult space, but have no background in the adult industry. The lean startup gurus preach the importance of understanding your customers and customer development. The adult industry is one of those places where it's difficult to understand customers because most people don't talk about the porn they buy or services they use. So we went to the Los Angeles Adultcon to see what we could learn. You'd think it'd be more crazy, but in fact it was kinda tame. <comment><AUTHOR> FYI:

We have a startup in the adult space, but have no background in the adult industry. The lean startup gurus preach the importance of understanding your customers and customer development. The adult industry is one of those places where it's difficult to understand customers because most people don't talk about the porn they buy or services they use. So we went to the Los Angeles Adultcon to see what we could learn. You'd think it'd be more crazy, but in fact it was kinda tame.</comment>


Ask YC: Software Engineering in Startups - <AUTHOR>

I have been taking a Software Engeneering course at college. I gotta say, it looks like a bunch of bureaucracy that complete rips off the programmer freedom. Althought I'm kind of a newbie in the subject.<p>So, my question is, are software engeneering techinques often used on startup projects? If so, what kind of techniques? Is it worthed? Or is it stuff for big companies to do in order to manage all the people they have working? <comment><USER2> While the user who asked you which specific techniques you mean has a point, I'll go out on a limb and say that the more bureaucratic of this stuff is total hooey. It mostly exists to provide the _illusion_ of control over software development (because how software development really works is either not understood or is incompatible with existing structures). A lot of it comes from ideas drawn from manufacturing or industrial processes that are profoundly inapplicable to what software teams do.

Look at it this way. When smart people do creative and productive work, they have fun. So if software development isn't fun, something's wrong.

</comment><comment><USER3> Many software engineering methodologies are built so that you can take a large team of mediocre engineers and set them on their merry way. This is a fact of life for the majority of the software industry.

When you start a startup, you probably (and should) have a small team of excellent hackers, so you can get by with just doing smart and logical things instead of following so many rules.

Growing your startup and engineering team does change how small your team is, and how excellent your hackers are. Add process as needed, shake and bake.

</comment><comment><USER4> I would say much of the processes are useful, but don't take any of them too far. Unit testing, continious integration, version control, regression testing, and building your software in iterations are all things that are important for building good software.

If it's just two people in a garage than some things aren't as necessary as others, but as you build a team you'll need all of these.

For a startup other things like UML diagrams, pair programming and etc aren't necessary.

</comment><comment><USER5> This question is kind of vague. What "software engineering techniques" specifically are you talking about?

<comment><AUTHOR> Maybe the whole software engineering subject is rather vague in my head. What my teacher told me was that there's basically two paths: traditional software engineering and agile methods. The course I'm taking on the university is about the traditional software engineering. So I'm talking about that.

What they have presented to us thus far is a lot of documents, each with a different name. You're supposed to fill each document in each stage of development, called the iterations. The teacher even showed us a table about the software development process, and according to that table coding is only a small part of it. Frankly, I always thought coding was almost all there is.

So all that got me wondering if all that bureocracy gets used in real life. After I read "you weren't meant to have a boss" I thought all that software engineering stuff related very closely to what he describes as a consequence of big companies and lots of people working together.

</comment></comment><comment><USER6> Your instinct - that it looks like a bunch of bureaucracy - is exactly right. These courses are designed to churn out IBM or EDS "consultants", so they can do CYA -they followed all the rules, so they are safe.

</comment><comment><USER7> There's a lot of agile floating around, so that seems to be useful for a lot of people.</comment>


10 things I hate about Web 2.0 - <AUTHOR> http://www.gapingvoid.com/Moveable_Type/archives/004578.html

<comment><USER2> Huh. The only thing other than the name that I really hate about "Web 2.0" is that it's on top of HTTP. Kludge after kludge trying to be stateful with a stateless protocol.

At least that's how I feel when programming web apps.

<comment><USER3> Implementing stateless protocols over stateful protocols over stateless protocols is powerful and minimises the leakiness of your abstraction. Interface (stateful) over HTTP (stateless) over TCP/IP (stateful) over packets (stateless) is desirable.

> that's how I feel when programming web apps.

HTTP is extremely verbose with 0.4KB headers in each direction and JavaScript was originally a domain specific language to implement features within Netscape3.0. Neither are optimised for current usage.

<comment><USER2> Do you have any recommended reading for the whys of implementing protocols like that?

<comment><USER3> Layering stateful and stateless protocols minimises abstraction leakiness ( [http://www.joelonsoftware.com/articles/LeakyAbstractions.htm...](http://www.joelonsoftware.com/articles/LeakyAbstractions.html) ) while maximising future re-use.

Unfortunately, I cannot recommend any books on the subject. People who write successful protocols spend their time maintaining successful implementations. People who write books about protocols have typically implemented protocols which are used within small niches, if at all.

If you want to learn by example then the best suggestion I can give is to read RFC821 (email delivery) ( <http://www.faqs.org/rfcs/rfc821.html> ), RFC822 (email headers) ( <http://www.faqs.org/rfcs/rfc822.html> ), RFC1094 (NFSv1) ( <http://www.faqs.org/rfcs/rfc1094.html> ), RFC1813 (NFSv3) ( <http://www.faqs.org/rfcs/rfc1813.html> ), RFC3010 (NFSv4) ( <http://www.faqs.org/rfcs/rfc3010.html> ), RFC1436 (Gopher protocol) ( <http://www.faqs.org/rfcs/rfc1436.html> ), RFC1459 (IRC protocol) ( <http://www.faqs.org/rfcs/rfc1459.html> ), RFC1945 (HTTP/1.0) ( <http://www.faqs.org/rfcs/rfc1945.html> ), RFC2616 (HTTP/1.1) ( <http://www.faqs.org/rfcs/rfc2616.html> ) and supporting documents for a mix of text and binary protocol specifications, reasonings and evolutions.

If you're not accustomed to reading RFCs then they may seem quite terse. Persevere and it will get easier after the first five or so. At the very least, read RFC822 because it is the basis of web and email headers.

<comment><USER2> Thanks. I'm not exactly accustomed to reading RFCs (I am accustomed to reading terse specs), but those look like exactly what I'm looking for.</comment></comment></comment></comment></comment>


Ask HN: What do you consider when choosing a 3rd party package? - <AUTHOR> <comment><USER2> License.

Maturity (is this stable?).

Test coverage.

Recency of updates (is it actively maintained and up to date?).

Size and composition (bug/feature) of issue tracker backlog (how fragile is it? do bugs actually get fixed?).

Popularity (if this gets abandoned, will someone else fork and maintain it?).

Documentation.

<comment><USER3> Adding to that, I also take a look at its dependencies: is it using half the NPM registry (or other central package registry) ?</comment></comment>


Ask HN: Why do you want to start a business? - <AUTHOR>

What is is that compels you to start a business of your own? Dreams of freedom? Money? Success? Autonomy? What is the key driver? I mean, you know there are a lot of hurdles and endless hours of work, and no guarantee of succeeding, so why do you feel you still feel you <i>have</i> to do it? <comment><USER2> It's in my bones.

I'll attempt to clarify. I started a business because I had experiences through school that made me think hard about why I was doing what I was doing at all times. Things like endless piles of homework were forced upon me by authority figures I didn't respect, even though I had already mastered the material.

I have this unending urge to learn more; All the time. I started programming with self-taught ActionScript. Then JavaScript/html/css. I spend a lot of time attempting to master my mind (Thinking in different ways/languages) and this has led me to Clojure, CL, Haskell and Erlang.

Show me a company that is receptive to using those languages in production and has a distributed nature. A company that allows it's employees to choose projects and throw their weight behind them. With as few managers as humanly possible. Where collaboration is collaboration and not forced.

The closest I've seen to this mindset is probably Basho. Maybe Valve, but I've never talked to anyone at Valve.

I apologize if I'm not clear or not fully explained. The answer to why my life is forcefully thrust in this direction would require a blog post of massive length that I am not ready to write. An interesting note is that consulting is likely a side effect of not being able to find anywhere I wanted to work.

<comment><AUTHOR> That's quite an interesting take. So do you make your living doing consulting, or do you create products?

<comment><USER2> I make my living consulting. I took a couple months off to try and build a product with a friend, but it didn't work out for non-product reasons, so I moved to SF and started looking for new contracts a couple weeks ago.

</comment></comment></comment><comment><USER3> I want the chance to do things right. So I guess "autonomy", but it's more than that. Dare I call it "revenge"?

My career started with six years in a legacy development ghetto. I started looking for work in the tail end of the dot-com crash, and the only thing I found after months of searching was a position doing Pick database development. It was a mistake to take that job, but I really wanted to get out of my parents' house. Pick developers are an interesting breed, like a cross between mainframe die-hards and ravenous DBAs. And here I was, using things like "functions" and "templates" in my code like some young thing who just wants to jump on the latest trends.

One shop had an middleware app that put a web-based GUI on top of the Pick database. I got called into my boss's office and told to stop putting   in my pages because it confused the other developers. At another job, the sysadmin refused to install risky open source things like CURL or wget on the server, and Pick had sockets by then but no HTTP library, so had to write my own HTTP client in PickBASIC so we could talk to a partner's API. It was like being stuck in the 60s, only without the drugs. I was writing green-screen apps...in 2005!

Anyway, the point of all this is that my resume was tainted at that point. I could quote Stroustrup with my eyes closed, but nobody would bring me in for an interview for anything other than Pick because that's all my "professional experience" entailed. That changed when I put $1000 of my own money on the line and got Java certified.

My first Java job quickly morphed into a PHP job, and now I've been in that world for seven years. There's lots of cowboy coders slinging PHP, you know. Don't know if anyone's ever pointed that out on HN at all. Version control, classes, prepared queries, frameworks...I've been fighting uphill battles over those for years. Yes, prepared queries were controversial because they're "slow"!

Now that my wife is out of school, I finally have the chance to go & do things my way. I'm giving freelancing a try. I set up my own Git server the other day. I do commits every time I'm done implementing a feature, and it's so damn satisfying -- almost orgasmic after nagging my co-workers for years. I develop on my laptop, not on the production server. I write clean, well-documented code. I use templates to keep HTML out of my code. I'm branching out into Ruby on Rails for a side project and probably some of my client work.

It's stressful as hell, but at least I'm making things I can be proud of, and the product of my work reflects well on me as a developer. I'm actually enjoying programming again.

</comment><comment><AUTHOR> Somebody outside of this forum told me the question was pointless: go do something that makes you money instead, he said.

So my answer was something like this:

On the contrary. The answer to this question will make me money. Thus far, I have made $100,000 online, and I am one of those people who "have to" do it, and I know what my motivation is.

Now I am wondering what yours is.

Why do I wonder?

Because I am making a product that targets you, obviously. So this is basic research

...

So there you have it, I guess that was a "full disclosure" that should have been included in the first question.

</comment><comment><USER4> I'm driven the desire to be the best at what I do. I get this drive from my dad, who owned a plumbing company. He always told me that he obviously didn't originate the concept of plumbing, so he can't take pride in inventing it, but he took a lot of pride in being the best.

The service that I'm offering is only a tiny bit unique but I take pride in my execution. I don't think that I could feel this level of satisfaction while working for a boss.

</comment><comment><USER5> I love it. I do it over going out with friends, going to the movies, or just about anything else you can name. And I have. But its not so much the business part as it is inventing and doing something. Business is just the vehicle to get things done and part of it.

</comment><comment><USER6> 1\. Fun (business development)

2\. Fun (technology)

3\. Self determination

4\. Not having to deal with unmotivated employees and their low quality results

<comment><AUTHOR> Fun. I like that a lot :)

In addition to that, I love being a "creator" -- when I do programming and writing (no matter if I'm creating the product or the sales material) -- there's a substantial difference between "creating what I've thought up" and "creating what somebody else thought up". Having creative powers, I would rather make my own "dreams" come true, than somebody elses.

I guess what also drives me is "time freedom" -- that I can choose to work less, and spend more time with my kids, if I want to.

So for me, autonomy, freedom, creativity are at least some keywords.

</comment></comment><comment><USER7> I don't want to work for a boss. I want to control my own destiny.

<comment><USER8> I read something in rich dad poor dad that made sense to me. If you owna company you can work on the things you want or are good at and outsource the parts that you don't</comment></comment>


Working simultaneously vs. waiting simultaneously - <AUTHOR> http://www.yosefk.com/blog/working-simultaneously-vs-waiting-simultaneously.html

<comment><USER2> _If you want performance, it 's kinda funny to use pure Python and then mourn the fact that you can't run, on 8 cores, Python code that's 30-50x slower than C to begin with._

I really dislike this attitude. If Python is much easier, more pleasant and _safer_ to write than C, then being able to get a ~8x (or even 4x) speedup by running on an 8 core machine is a perfectly reasonable thing to want to do.

<comment><USER3> Well, let's say you can't use numpy or similar - "C written by someone else" \- and further, let's imagine a world where CPython has no GIL. Then there are 2 options:

1\. You rewrite things in single-threaded C, getting a speed-up of 30-50x.

2\. You rewrite things in multi-threaded Python, getting a speed-up of say 4-8x.

I argue that 1 is often actually _safer_ than 2, because parallelism-related bugs are harder to hunt down than C's memory-overwriting bugs (this can be mitigated with good APIs and a good race detector working against these APIs - as in Cilk or [https://github.com/yosefk/checkedthreads](https://github.com/yosefk/checkedthreads) \- but it still requires good testing coverage).

Now if 2 were more pleasant and safe than 1, I might agree with you even though 1 gives the better speed-up. But I believe 1 is faster _and_ safer.

<comment><USER2> It really depends on the problem though. There are plenty of problems which are reasonably easy to get a parallelism speedup (even if not close to the _ideal_ speedup) by only rewriting or restructuring small parts of the program, but where rewriting in C would be a hell of a lot of complex work.

A lot of people write terrible C code with a plethora of hard to find memory bugs. A lot of other people don't even know C at all. The GIL means that people can't even try[1] to get some speedup from Python without having to reach for C.

[1] I know, I know, Python lets you use multiple processes for parallelism. I also dislike the attitude that this is a an adequate enough solution that thread-based parallelism sn't needed, but that's a story for another day.

<comment><USER4> > _" A lot of people write terrible C code with a plethora of hard to find > memory bugs"_

Wee it wouldn't need to be C. Also Ada, D, Fortran, Go, Java (Scala?), Lisp, OCaml, (Rust), or some such, would give speed close to that of C.

<comment><USER2> Not all of those have easy interop with Python though (since we're talking about Python here) and it requires people to _know_ one of those languages.

</comment></comment></comment></comment></comment><comment><USER5> Rob Pike's "Concurrency is not parallelism"[1] slides enlightened me to the distinction being made here. I think it's valuable and over-due for the industry[2] to define the boundaries of these concepts (which are often regarded as amorphous or synonymous).

[1] [http://blog.golang.org/concurrency-is-not- parallelism](http://blog.golang.org/concurrency-is-not-parallelism)

[2] or am I conflating "industry" with "me"?

<comment><USER6> I would guess most programmers understand the distinction between the two. However understanding the difference in theory doesn't always mean one applies successfully it in practice. E.g. if you were unaware of the CPython GIL you might think threading implies parallelism.

</comment></comment><comment><USER7> I think this is rather confusing and it introduces un-necessary abstractions -- "working" and "waiting".

It is easier to think of it as:

* concurrency -- a property of the algorithm or the business process where multiple things can be can happen at the same time. Think about mergesort for example, you can sort the left and the right parts of the list at the same time. There is no guarantee that when the program executes concurrent things will actually execute at the same time. Or think of fetching web pages from multiple websites with no need to wait between them.

* parallelism -- a property of the execution environment. Based on the specific hardware, and OS facilities, some of the concurrent things can actually happen at the same time. Can fetch the web pages from 100 sites at the same time. Will actually sort both sides of the array on two separate CPU cores. And so on.

It is as simple as that. There is some fuzziness around the two. Like saying can one have parallelism without concurrency. Maybe your compiler noticed how it could transform your for loop into a SIMD operation. Ok, is that concurrency and parallelism or is it just parallelism. I don't really bother being that pedantic at that point. Is it concurrency only if user specifically uses provided language concurrency primitives or does "implicit" (let compiler figure it out) concurrency also count kind of stuff.

But, wait, that's not all. There is another axis of comparison that is useful in practice, and that is CPU vs I/O.

* CPU : Mergesort example above would be an example of mostly CPU concurrency and parallelism. You can spawn two threads to make it explicit and if you have more than one core, you might get some CPU parallelism.

* I/O : You an fetch 2 pages at once using a thread per page and your socket layer works properly you might get good parallelism.

I/O is where the discussion of the GIL comes in. Python has great I/O parallelism. GIL doesn't really matter much for it. I have written a spyder like I described and it was very performant, very nice, just using plain on GIL-ified threads.

Anyway it is important to keep these concepts clear to be aware of them. These are important today and I feel they are not taught well enough in academia (not in this explicit, comparative fashion).

<comment><USER8> An interesting property of CPU vs. I/O concurrency, to me, is that while I/O-heavy concurrency works fine with cooperative or reduction-counting scheduling, CPU-heavy concurrency basically _requires_ a preemptive scheduling approach (i.e. multiple native threads.)

A lot of people would assume that on a single-core machine, you could get away with running, for example, Erlang with only a single native scheduler-thread for its tasks. This would be true until the first time you called a C-FFI function that took a full CPU-second to return. Then all the other tasks in your system would wake up wondering what year it is and how their beards grew so long. Erlang added "dirty schedulers" (basically, extra scheduler-threads that will get spawned above-and-beyond the default one-per-core-with-CPU- affinity set) precisely so the preemption of CPU-heavy tasks could be pushed off into the OS's capable hands.

<comment><USER7> > This would be true until the first time you called a C-FFI function that > took a full CPU-second to return.

As you said, up until last release that would be true in general. Even if you had 16 CPUs running C NIFs inside of it that block for longer than 1ms at a time would probably be a bad idea.

Word of warning, think really well about compiling in and sticking native code (NIF) drivers in the middle of the Erlang VM. You lose reliability, fault tolerance, predictable low latency response. Good examples of NIFs could be computing a hash function, or something similar that would be constant time and easily tested. Not something like getting a piece of data from a database.

<comment><USER8> I think the best case for dirty schedulers in Erlang isn't for running CPU- intensive tasks within the same VM that's doing your IO, though; it's for running a separate Erlang node, on a separate machine, and sending it CPU- heavy work to do over the distribution protocol. Effectively, an isolated Erlang node + dirty schedulers + NIFs is a souped-up, easier-to-code-for C node.

</comment></comment></comment></comment><comment><USER9> > Indeed you can hardly do many things at once - not in a single pure Python > process. One thread doing something takes the GIL and the other thread > waits.

> You can however wait for many things at once just fine - for example, using > the multiprocessing module (pool.map), or you could spawn your own thread > pool to do the same.

This paragraph is a bit deceiving. The multiprocessing module does spawn subprocesses by default, so it can indeed be used to workaround a GIL issue and _do_ many things at once. It's not the same as a thread pool (although the multiprocessing module does offer a compatible interface which uses threads).

<comment><USER5> > spawn subprocesses by default, so it can indeed be used to workaround a GIL > issue and do many things at once

But that defeats the purpose of the distinction, because when you wait on a web request, I/O, etc, a machine or peripheral is also doing something on the other end.

</comment></comment><comment><USER10> This is a really good way to put this distinction. Most applications use threads because they are waiting on I/O, not because they are concurrently processing.

</comment><comment><USER11> ZeroMQ implements this pattern really well.

It's just single threaded code... all the threading happens in the background...

There's also apache storm which abstracts you from all the gory details of spinning up workers, pools, tracking message failure, etc.</comment>


Specifying AI safety problems in simple environments - <AUTHOR> https://deepmind.com/blog/specifying-ai-safety-problems/ <comment><USER2> I am pretty blown away to see people take a subject which is so hypothetical and reduce it to experiment. Bravo!</comment>


140Fire (YC W10) Lets You Create Real-time Overlay Ads For Your Video Content - <AUTHOR> http://techcrunch.com/2011/02/24/mark-cuban-backed-140fire-lets-you-create-real-time-overlay-ads-for-your-video-content/

<comment><USER2> I wish I could be more supportive, but frankly, the first thought I had was "how I am going to block this?"

<comment><USER3> (disclaimer: I'm an investor in 140fire)

While I'm not crazy about most ads, adding game elements to live events (e.g. "do you think he'll make the next shot?"), tied in with points you can redeem for prizes, actually can add value to the event. Sure, it may be associated with a brand advertiser, but there's a lot of people (myself included) for whom this actually has entertainment value.

And while I personally not might fill out a facebook-style quiz to find out what cocktail is right for me, I know plenty of people (especially women) who love those sorts of things.

Ads are a fact of life. I think there's a lot of value both to the consumer and advertiser in making them suck less. :)

<comment><USER4> I suspect it's going to be a matter of those who hate adverts hate these too and those that are indifferent to adverts think they're a neat idea. I have time to kill, if I got these adverts during a TV show (like the article uses as an example) I'd fill it out. I think it has the problem of getting too old fast though, but I guess we'll have to wait and see.

</comment></comment></comment><comment><USER5> YC. That explains how they have access to Instant Personalization. Such a huge advantage for an ad network. Totally reminds me why I disabled Instant Personalization in Facebook.

</comment><comment><USER6> Is that will help online shopping too?

I mean I'll see a video somewhere and click on an item I like and I'll forwarded to a shop where I can purchase that item?

If yes IWOOT!

</comment><comment><USER7> Congrats to Jason, Paras and team.

More here: [http://venturebeat.com/2011/02/24/140fire-video- advertising-...](http://venturebeat.com/2011/02/24/140fire-video-advertising- live-launch/)

140fire, you guys need to post your LAUNCH presentation - in person the simplicity and power of the agency & analytics tools are really what brings the idea to life - nice execution and good luck -</comment>


Things I learnt tracking a billion events in 24 hours - <AUTHOR> http://playtomic.com/blog/post/33-things-i-leant-doing-a-billi

<comment><USER2> So, these billions of events were the result of a flash game developer using Playtomic analytics for their game. The game, PiTSi [1], has over 40 million installs using Conduits toolbar app. Conduit is ranked #32 on Alexa and offers thousands of browser games. The author of this article and I are both surprised that we've never heard of Conduit. Is it unheard of to most of you?

[1][http://apps.conduit.com/Conduit-and-baconOppenheim-PiTSi- app...](http://apps.conduit.com/Conduit-and-baconOppenheim-PiTSi- app?appid=08e2fb49-51a7-48e0-9c20-5fc16b151a11)

<comment><AUTHOR> Beyond not knowing of Conduit before... who even imagined putting a game in a toolbar? The entire game is contained within the colorful little rectangle here:

<http://playtomic.com/Blog/Uploads/killer-game.png>

That was at _least_ as surprising as being the last person to discover one of the most popular sites on the internet.

<comment><USER3> Having thought about nothing other than iPhone or web/SaSS apps in the recent months, seeing this makes me fascinated at just how much of the web (and creative outlets) I don't know.

<comment><USER4> Yeah I had no idea about this either - it is so encouraging to find new stuff online. New markets, new experiences, new ideas. I think for a lot of us, being out on the forefront of technology and innovation (especially regarding the internet), we forget what it is like to discover a new thing, and how much fun it can be just to feed our curiosity in a new way. I think if you can deliver that same feeling to your users you've got a winning app.

</comment></comment></comment></comment><comment><USER5> so, without knowing your actual infrastructure, here are some questions/comments.

1\. do you have a cache layer? the ability to batch-update multiple of the same event without actually hitting a db (or, shudder, disk I/O) can help you in general and provides an edge during huge spikes.

2\. reliable monitoring is hard. you usually need an extra host to check the other hosts, typically with a very low resource service/protocol like snmp, ganglia, collectd. send alerts based on threshold or ramping. also try to benchmark your service and get numbers on the amount of memory, cpu, hps etc. that will make it tip over and set hard limits in your applications/servers.

3\. i don't know your hoster or how they scale, but i'm a big fan of ultra low cost VPS's that dynamically scale. i wouldn't rely on any single hoster for my entire site, but for excess capacity there are dozens of good cheap providers you can scale out with. i don't usually look at amazon because of (iirc) the huge cost for short return. but definiely look to see if you can expand your hosters for DR.

<comment><AUTHOR> 1) The tracking stuff is static, nothing actually happens except "OK" being returned. Hit logs using a standardized format are generated from the requests which are then bundled up and sent off for processing. The processing stuff does 2 rounds of merges to reduce the volume of db work. The real problem (aside from the volume of data to be processed) was as simple as a _ton_ of people connecting at once which is pretty much just a hardware problem/solution.

2) Yeah, I'm not sure long term what the best option on that is going to be, it's definitely something I'll be researching soon. Benchmarking pretty much just got done for me, I can comfortably do 80k concurrents on a vps, more on the dedicateds although the exact point is unknown.

3) Absolutely agree on the vps boxes. I also don't look at Amazon because of request based billing - that stuff adds up crazy-expensive compared to 'normal' hosting.</comment></comment>


Ask HN: Who have internship opportunities? - <AUTHOR>

I am an undergrad student in computer science, graduating this year , I live in Algeria  and i am looking for an internship abroad , where can i  find such opportunities ? <comment><USER2> Every company. Figure out what companies you are interested in, find people who work there, and write them a nice email telling them that you are interested in interning at their company and whom they think you should reach out to to talk about it.

One other interesting way to approach this issue is use LinkedIn to figure out where people who went to your undergrad school are now working. Find people who now work at the companies you want to intern in. Do the above (write them a nice email asking about their internship opportunities).

The key here is not to write 1-5 emails or to write 1000 to 5000 emails. The key here is to write about 10-20 emails that are hyper-specific to each company and each situation. What you are looking for is responses at this point, not internships.

Once you get a response, you can get started talking to the right people.

<comment><USER3> About the LinkedIn search, you can broaden to companies that have already hired interns/employees from Algeria, or even better: that are founded by Algerians, they are more likely to help you as they have probably already figured out all the visa stuff. Most companies don't want/don't have time to deal with this for interns.

</comment></comment><comment> a-saleh Not able to help directly, but you might try to apply for a PHD programme.

I graduated in from a research university in Czech republic, and met several PHD students from non-eu countries who were quite happy here :) If you cast the net wide enough you might find a place that suits you. Just be wary, that PHD programmes vary widely in quality, aviable stippends/grants, expectations of work input, or applicability for your next career.

I had friends part-timing PHD study while interning at a company via some partnership programme, with reasonable monthly income, e.t.c, and I have seen some other friends slaving away for 200Eur/month for 10+h/day at a lab.

</comment><comment><USER4> Try the monthly who's hiring thread. If you want to go to America this is useful advice: [http://blog.sendtoinc.com/2013/12/11/silicon-valley- internsh...](http://blog.sendtoinc.com/2013/12/11/silicon-valley- internship-j1-visa/)

</comment><comment> k-mcgrady Might be useful to point out what you would like to intern doing. Are you a developer, designer etc.? What field are you graduating from?

<comment><AUTHOR> It' computer science actually , i forgot to mention it</comment></comment>


Inbox.py: SMTP for Humans - <AUTHOR> https://github.com/kennethreitz/inbox.py <comment><USER2> I'm guessing this is not complete? I'll review it like it is complete though, since it doesn't say anywhere if it is or not.

I hope no one uses this in production. Handling SMTP well is all about the edge cases, and this doesn't seem to handle any of them.

This is just a thin wrapper on python stdlib smtpd.SMTPServer, which is itself not production ready. It also doesn't really make it easier. The original API is better. Why are magic decorators better than inheritance again?

Also, monkey patching? Hidden side effects make sad pandas cry. Let me throw up a little in my mouth.

There are zero unit tests for this, and no functional tests.

The original API has better documentation. What are the to, sender, and body arguments?

Below seems a simpler API, and gives you the subject too. I thought humans would be interested in the subject... but I guess not.

      import inbox
      for m in inbox:
          toprint = m.to, m.from, m.subject, m.body
          print ("to:{} from:{} subject:{} body:{}".format(toprint))

<comment><USER3> Seconded. Also, why re-invent the wheel? You're not DJB, an even if you were, qmail kinda sucks these days. With exim and postfix already out there...I'm struggling to see a point to this.

Want your app to send some mail? Please please please don't try delivering directly. The only people great at this are spammers. Use a real MTA and the mail() function that is built into basically every language.

<comment><USER4> This is for receiving mail.

</comment></comment></comment><comment><USER5> OK. When it comes to email I'm a complete noob. The Github page indicates this is an SMTP server. SMTP is for sending email, right? The examples then goes into an example of creating an inbox, which indicates receiving email. Maybe someone who knows more about this might want to explain?

<comment><USER6> SMTP is the protocol that mail servers use to send messages between each other, both sending and receiving. POP3/IMAP are protocols that your email client will use between itself and the mail server which allow you to view messages.

edit: I should note that you're correct in that SMTP is used by the client to relay email messages to the server also.

<comment><USER5> Thanks for that. So what exactly would you be able to use this for?

<comment><USER7> Looks like it could be used in an application that needs to send email without relying on a platform-specific SMTP server or external service.

edit: I'm wrong, listen to this guy ->

<comment><USER4> It's actually for an application that needs to receive an email.

</comment></comment></comment></comment></comment><comment><USER8> I've always wanted to make something with <http://lamsonproject.org/>, another python based SMTP server. This appears to be more bare bones.

<comment><USER4> That's exactly why I made this. Lamson looks fantastic and I've heard _wonderful_ things about it, but my use case is far simpler.

<comment><USER9> How did you evaluate Lamson if you only "heard" of it?

Non-Invenio Hic .. (bad) Latin for "Hack the good hack" ;-)

</comment></comment></comment><comment><USER10> Hey really dumb questions, but I'm wondering what some use cases are for this?

<comment><USER11> Yours is the top voted comment at the moment, so dumb or not, it seems a common question.

Looking just at the two examples on the main page, it's an implementation of the SMTP protocol so you can either send mail directly to recipients' servers, or run a mail server.

Sending mail directly is often useful when you need to deliver a message to a lot of recipients. IIRC, this doesn't always work, because many servers reject messages unless they can reverse resolve the ip to the sender's domain.

A server for receiving messages is basic infrastructure. The reason for using a simple solution with clear source code, instead of established daemons, like postfix, is that you can tune it to implement filters or notifications.

As an example: some time ago I had the idea of putting a bayesian spam filter directly in the server code, eliminating the problem of false positives: the mail is either accepted or rejected, in which case the sender gets to know that the message has not arrived its recipient, instead of silently trashing it as spam.

<comment><USER12> The problem with rejecting mail as spam explicitly rather than silently dropping it into the spam bin is that it makes it really easy to tune spam so that it gets past your filter. Maybe it doesn't matter so much if it's just for a few people, but if something like that was popular there would be people figuring out how to work around it.

<comment><USER13> If this were even a tiny bit of an issue then way more spam would hit people's inboxes. Rejecting explicitly is the right thing to do. It's not always possible, but it's definitely preferred.

Source: I wrote some of the original SpamAssassin and worked in anti-spam for over 10 years.

</comment></comment></comment></comment><comment><USER14> Am I missing something? It seems that most of the functionality is provided by the smtpd lib:

[https://github.com/kennethreitz/inbox.py/blob/master/inbox.p...](https://github.com/kennethreitz/inbox.py/blob/master/inbox.py)

<comment><USER15> Kenneth's work is always about simplifying APIs. Simple APIs lower barriers to entry, which in turn drive adoption.

<comment><USER16> Does every single part of the standard library need to be rewritten "for humans" (read: in a certain style)? It seems that there are really better and worse cases for doing this.

<comment><USER4> Who said anything about being rewritten? These are wrappers.

</comment></comment></comment></comment><comment><USER17> kenneth, you consistently make simple, badass tools.

thank you, and keep it up.

<comment><USER18> Highest authority on user-experience for APIs and libraries.

</comment></comment><comment><USER19> I am puzzled as to why there is a a dispatch() method. Isn't the serve() method enough?

Also, both the Inbox constructor and the serve() method takes the listening port and address. Now I need to read the source code in order to figure out where I should put the port number and what happens if I put in two different port numbers. (insert appropriate sort of unhappy smiley)

I believe my feedback to Kenneth (if he even sees this) is that this SMTP server can be even simpler.

<comment><USER4> Thanks for the feedback :)

The dispatch method is for deferring to cli arguments for external configuration (say, a Procfile).

The constructor is used for defaults.

</comment></comment><comment><USER20> I made something like this a long time ago.

No dependencies on third party libraries.

<http://codepad.org/sklZNXxM>

</comment><comment><USER21> I wrote an extensive C# version of this that runs as a service, includes a MIME parser, filter pipeline and WCF bridge (so you can recieve mail via a net.tcp).

I will clean it up and chuck it on bitbucket.org some time this month.

You just publish an endpoint on your app, fire up the service and emails come in as WCF messages ready parsed.

<comment><USER22> I'm interested. Will be waiting to review your code.

</comment></comment><comment><USER23> An interesting similar project for nodejs is haraka: <https://github.com/baudehlo/Haraka>

It's pretty fast. One benchmark (by the developer) clocked it at 5000 messages/s on his Macbook.

<comment><USER22> Haraka is the node.js port of the famous perl smtpd called Qpsmtpd. Haraka is developed by the authors of qpsmtpd - and it seems pretty fast: <http://baudehlo.wordpress.com/2011/09/13/node-js-is-fast/>

</comment></comment><comment><USER24> Great. I've always wanted to have a simple SMTP server that I could integrate in my projects/unit tests without having to re-invent the wheel. fakemail.py is too old and can't be installed from PyPI.

</comment><comment><USER25> Anyone else tired of software released with meaningless performance claims? What could it possibly mean to "handle over 1000 emails per second"? Trivial 1-recipient emails?

</comment><comment><USER22> I'd written a python smtpd for internal use a while back (with code borrowed from tornado's ioloop, ideas from qpsmtpd, twisted etc.)... it's pretty fast (though incomplete): [https://github.com/masroore/py- cyclone/blob/master/cyclone.p...](https://github.com/masroore/py- cyclone/blob/master/cyclone.py)

<https://github.com/masroore/py-cyclone>

</comment><comment><USER26> Can someone explain why this has gotten so many votes? Is it because the author is well known in the Python world? Are other Python SMTP libraries terrible?

</comment><comment><USER27> Is there a Python-based IMAP server?

<comment><USER28> Twisted has twisted.mail.imap4.IMAP4Server

</comment></comment><comment><USER29> A somewhat off topic request: could the friendly people writing libraries "for humans" alter their titles to "for humans who like to write Python"?

This particular one isn't so bad, since ".py" is part of the headline, but it's fooled me so many times that it's getting boring. I'm a human. I think SMTP a big hassle. The headline made me think someone somehow reimplemented what SMTP does for us in a modern way. Instead, it's a client library for a programming language that I don't use.

<comment><USER30> It's too late, he's already got a following. I saw the headline and thought "I hope this is another awesome Python package by Kenneth Reitz!"

My only regret is that it's for receiving rather than sending. I use ugly wrapper scripts for my most common attachment mailing scenarios right now.</comment></comment>