YouTube Piracy: Sponsored by Target, Netflix, Samsung, & Southwest Airlines... - <AUTHOR> http://www.digitalmusicnews.com/permalink/2012/120620video

<comment><USER2> Youtube-mp3 is embedding Criteo adds in an iframe, and this somehow means Netflix, Target, Samsung, etc., are sponsoring piracy?

Asinine article, that shows inexcusable ignorance of how online advertising works.</comment>


Handbook of Applied Cryptography (2001) - <AUTHOR> http://cacr.uwaterloo.ca/hac/ <comment><USER2> I'm an aspiring cryptographer and this book is hands-down one of the best references for applied cryptography out there today. Don't let the date fool you; cryptography is an area where maturity is well appreciated.

It's also fantastic that the whole thing is available online, but believe me when I say that the text is well worth the price if you ever find yourself needing a good cryptography reference. Some other good references are _Introduction to Modern Cryptography_ by Katz and Lindell, _Foundations of Cryptography_ by Goldreich (both volumes), and _The Codebreakers_ by Kahn (for history of cryptography).

There are other good references, of course, but I find myself referring to the ones above the most. However, I am naturally biased towards texts that take a theory-based approach.

<comment><USER3> I guess you could argue that the advent of quantum computing is making everything old, like McEliece, new again. But I disagree with your premise. This book was written at a time when elliptic curves were more useful as a factoring method than as a cryptographic design tool.

Modern concepts, algorithms, and constructions that a designer might not have at their disposal if they rely on Menezes:

* Elliptic curve cryptography, which is supplanting RSA (and Rabin) and conventional DH, both of which are looking increasingly sketchy in 2013.

* Secure RSA padding for encryption (OAEP) and signatures (PSS), or, really, any discussions of the problems that motivate those formats --- Menezes does point out that you don't want to use low-public-exponent RSA with repeated messages, but a modern take on RSA would say that you don't ever want to send repeated messages at all.

* Counter mode, which is presented briefly as a small tweak to OFB mode with no description of its pitfalls; CTR is the second-most popular mode used today and increasingly the first choice of new systems.

* Modern bulk encryption --- XEX, XTS, &c.

* Encrypt-then-MAC (Menezes presents the opposite); in fact, modern crypto is at pains to ensure that encryption and integrity are co-specified and interoperate safely; a designer could be forgiven for reading Menezes and not including explicit integrity checks at all.

* The authenticated encryption modes CCM, GCM, EAX, and OCB.

* Modern CSPRNGs, including entropy collection and management and handling the cold-start problem.

* Any discussion of side channel attacks (in fact, Menezes predates Vaudenay and Bleichenbachers block cipher and RSA [respectively] error side channels so doesn't even discuss padding oracles).

It's _not_ true that robust cryptography appreciates maturity. The ~twenty years since Menezes wrote HOAC haven't just been spent inventing whizz-bang new toys, but also in finding new ways to break the old toys. You're not always OK if you eschew the new stuff for the "mature" stuff; some of the mature tools are perilous to work with now.

That's an annoying thing about working with crypto (and a fun thing about breaking it) --- designers have to know what parts of the literature they need to adopt, like safe RSA padding schemes, and what parts they need to hold off on, like homomorphic encryption.

For what it's worth: I like Menezes a lot as a resource for practicing attacks. Menezes also does a much better job on theory than even _Practical Cryptography_ (which is a great book, and probably the only crypto book most people should own). It's a good book. Just be careful working from it.

(I'm not trying to call you out; I just think this is a fun thing to talk about.)

<comment><USER4> > RSA (and Rabin) and conventional DH, both of which are looking increasingly > sketchy in 2013.

May I ask why you say this? (Not agreeing nor disagreeing, just curious.)

<comment><USER5> Elliptic curve cryptography isn't vulnerable to quantum computing. _EDIT: This is mistaken. I was thinking of lattice-based cryptography, which isn 't currently vulnerable to quantum computing._

In the video game Final Fantasy, there's a spell called "Doom" which places a countdown over your head. When it reaches 0, you die.

RSA is Doomed in exactly that sense: it's just a matter of time before RSA offers zero security, whereas elliptic curve cryptography remains (for now) unbroken.

<comment><USER4> It is [1]. Quantum computers, using Shor's algorithm, polynomially break any specialization of the abelian hidden subgroup problem; see [2] for a fairly complete list.

Whatever reason to prefer elliptic curves over integer factorization or discrete log-based schemes must be classical.

[1] [http://arxiv.org/abs/quantph/0301141](http://arxiv.org/abs/quantph/0301141)

[2] [http://pqcrypto.org/quantum.html](http://pqcrypto.org/quantum.html)

<comment><USER5> Oh.

Then which (if any) algorithm is currently believed to be safe from quantum computing?

I think I was thinking of lattice-based cryptography.

<comment><USER3> There's a bunch of them. There's no known quantum algorithm for quickly decoding binary linear codes, so McEliece is one. The Clostest Vector Problem in linear algebra is another trapdoor that may be QC-resistent.

You didn't ask, but it's worth saying: block ciphers, stream ciphers and hash functions aren't thought to be fundamentally threatened by QC the way IFP and DLP number theoretic cryptosystems are.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> mkdir HoAC_tmp

cd HoAC_tmp

wget -r -np -l 1 -A pdf [http://cacr.uwaterloo.ca/hac/](http://cacr.uwaterloo.ca/hac/) -nd

pdftk toc3.pdf chap1.pdf chap2.pdf chap3.pdf chap4.pdf chap5.pdf chap6.pdf chap7.pdf chap8.pdf chap9.pdf chap10.pdf chap11.pdf chap12.pdf chap13.pdf chap14.pdf chap15.pdf appendix.pdf references.pdf index.pdf cat output "../Handbook of Applied Crytopgraphy.pdf"

cd ..

<comment><USER7> Install pdftk from here first:

[http://www.pdflabs.com/tools/pdftk-the-pdf- toolkit/](http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)

<comment><USER8> It's in most linux repos too.

</comment></comment></comment><comment><USER9> All-in-one pdf: [http://aws.thiagoc.net/HoAC.pdf](http://aws.thiagoc.net/HoAC.pdf)</comment>


Ask HN: Need recommendation for powerful content publishing API/CMS - <AUTHOR>

Hi there --
We're a sports data analytics company (www.getscorecast.com) that seeks to integrate written content into our website.
Can anyone recommend a CMS that is powerful for developers but also has a simple-to-use interface for writers? We don't need the many website-building features that Wordpress offers -- we've got that covered.
We need software that is focused on publishing content -- primarily text, but flexibility for video and audio would be nice.
I've looked at a lot of the content API companies like Prismic, Craft, Contentful, and Osmek. Does anyone have personal experience with one? Can you recommend one over the other?
Thanks! <comment><USER2> Hubspot</comment>


FreezeGun: easy mocking of Python datetimes - <AUTHOR> http://stevepulec.com/freezegun/

<comment><USER2> Rubyists desiring similar functionality should check out either of the following libs. As far as I can tell they differ only in their pun selection.

<https://github.com/travisjeffery/timecop>

<https://github.com/bebanjo/delorean>

In the ruby community, disliking someone's choice of science fiction reference is grounds for a rewrite.

<comment><USER3> >In the ruby community, disliking someone's choice of science fiction reference is grounds for a rewrite.

Hmm, perhaps I should check Ruby out after all...

<comment><USER4> It's great. We got unicorns and Series As for everyone!

</comment></comment></comment><comment><USER5> nice project. I usually avoid this by making my APIs accept a datetime objects and make the client code create the datetime object.

Pure functions make tests simple.

<comment><USER6> That's what I've been doing, but not because I believe it to be a better way, but because I'm to lazy to implement my own FreezeGun. I don't think the production code should contain unnecessary complexity that is _only_ used for testing.

</comment></comment><comment><USER7> Quick question: why did you need to write FreezeGun?

I've always used Mock <http://www.voidspace.org.uk/python/mock/> to patch datetimes and I've never had any problems.

You can patch pretty much anything with Mock.

</comment><comment><USER8> Cool, but unfortunately it breaks if the code your testing does from datetime import datetime :(

<https://gist.github.com/4261936>

<comment><AUTHOR> Hey Timothy, thanks for the response. You are correct. I'll add a warning to the library and work on a solution. Unfortunately, I think it will need to involve ctypes.

<comment><USER9> Have you tried patching the now() method onto datetime.datetime instead of replacing the whole class? If that doesn't work, you could replace datetime first:

        import freezegun; freezegun.monkey_patch()
        from datetime import datetime

After that, freeze_time would just set a flag on your datetime class.

<comment><USER10> Sadly, it's not possible. datetime is a C class, so it is immutable.

<comment><AUTHOR> Correct. I've gone with his latter solution for now and added a warning about import order. I'm not very happy with this solution through and will be spending some time with ctypes in the next few days to come up with something better.

</comment></comment></comment></comment></comment><comment><USER11> What about those of us who prefer the simpler time module (which works mostly in epoch time)? It would be a simple change to extend FreezeGun to cover that module in a similar way, surely?

</comment><comment><USER12> I don't really have much experience in datetimes I guess. What is this really good for? Can someone provide some use cases where this library might be helpful?

Thanks

<comment><USER13> Mainly for testing

</comment></comment><comment><USER14> How well does this handle aware (non-naive) datetimes?</comment>


Show HN: I Made JavaScript Color Conversion Library for LCH/Lab/XYZ/RGB/Hex/HSL - <AUTHOR> https://github.com/vinaypillai/ac-colors <comment><USER2> This is actually pretty interesting to me, as I maintain a popular JS library [1] that depends on Chroma.js (similar lib to yours), and that dependency outweighs my first party code more than 3:1.

Do you have any plans to add interpolation functionality to ac-colors?

[1] [https://github.com/qrohlf/trianglify](https://github.com/qrohlf/trianglify)

<comment><USER3> Yeah, I was looking at chroma.js a day or two back and thinking "you call it 't̶i̶n̶y̶ small-ish' [0]!? This thing is 40KB, 14KB gzipped [1], that's by no means small!"

I'd expect such a library to be _way_ smaller (I dunno, but less than 10KB/4KB), and preferably support tree-shaking so that I can just pick out the hcl() function, for example, if that's all I want.

[0]: [https://github.com/gka/chroma.js](https://github.com/gka/chroma.js)

[1]: [https://bundlephobia.com/result?p=chroma- js](https://bundlephobia.com/result?p=chroma-js)

<comment><USER4> I don't know why it should be tiny, given what it's trying to do. Multiple kilobytes are dedicated to CSS color names and ColorBrewer scales, which don't compress well.

At the end of the source there's a section where you can comment out lines which should remove sections of the code when compressing it.

</comment></comment></comment><comment><USER5> Maybe I'm blind, but I don't see any handling of out-of-gamut colors? At the very minimum I'd expect some naive min/max clipping to avoid negative RGB components.

Also no mention of what kind of RGB it is. From the xyzToRgb function it seems to be[1] sRGB but that should be mentioned, and also consistent throughout the library (in case it isn't).

[1]: [http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix....](http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html)

<comment><USER6> Negative numbers are not really an issue, quite the opposite because they are necessary for invertibility of most of the computations. We almost never ever clip values in Colour ([https://github.com/colour- science/colour](https://github.com/colour-science/colour)) and leave that responsibility to the user. One exception is conversion to Hexadecimal where if you don't do ensure the values are in the range [0, 1], you will induce the user in error: [https://github.com/colour- science/colour/issues/584#issuecom...](https://github.com/colour- science/colour/issues/584#issuecomment-623042539)

<comment><USER5> > leave that responsibility to the user

I think it would be better to have a function in the library that does this. Then it can be extended to allow for more clever things than a simple min/max clamp.

<comment><USER6> Gamut mapping is not an easy thing though!

<comment><USER5> That is true :)

Color is a great example of how "low-order" approximations are very useful, and how quickly it can get very hard once you want to go a bit beyond that.

</comment></comment></comment></comment></comment><comment><USER7> Has anyone here used the Python "Colour" library?

They've got pretty extensive and awesome documentation. I discovered it a couple of months ago.

[https://github.com/colour-science/colour](https://github.com/colour- science/colour)

<comment><USER6> Thanks for mentioning Colour! We are still on very long alpha since over half a decade but we are getting there. We have 3 students helping us for GSoC this year!

[https://twitter.com/colour_science/status/125826870601631744...](https://twitter.com/colour_science/status/1258268706016317441?s=20)

</comment></comment><comment><USER8> Hi. I'm the maintainer of [https://npmjs.org/package/color](https://npmjs.org/package/color) and [https://npmjs.org/package/color-convert](https://npmjs.org/package/color- convert).

Curious what your library does differently aside from API design. `color- convert` has been around for years and has supported all of these algorithms plus more - and it does a BFS search to convert between models that do not have an explicitly written conversion algorithm.

I'm not one to say "don't do this", but I'm generally pretty against re- inventing the wheel if there's something to be improved upon.

</comment><comment><USER9> Nice! Constructive feedback:

Comments!

My advice would be to add comments to the code. Comments shouldn't repeat the code, but e.g. describe what it's doing, or provide links to where the formulas come from and what they mean. It's also helpful to document overall code structure (where do I go to find something?).

Formatting!

And to run it through code quality tools. A lot of minor styling issues. It could use more new lines (esp. between functions).

These sorts of things might seem minor, but they matter if you're applying for a job. A lot of people will give a cursory glance at your code repos to see if everything looks reasonable or if there's anything insane. These sorts of surface features make a disproportionate difference.

Plus, they really do help. A lot of your users might not know what LAB colors are, or how exactly HSV is computed.

<comment><AUTHOR> Thanks for the feedback! Improving the documentation is definitely one of my priorities, but I hadn't thought of documenting the overall structure. Do you have any suggestions for how best to do that?

<comment><USER9> Usually, in the README, I describe what the major files are. For something this simple, it's usually just one paragraph.

"The source code is in `index.js`. In order to build the minified version, run `[command]`. [description of what `index.js.min` is, and how it compares to `dist/ac-colors-min.js`] [Maybe short description of other travis commands used during development]"

Basically, imagine you're running into this repo having never looked at it before. What do you want to know?

From there, you can go one level deeper, and document `index.js`. It's not rocket science, but it is helpful. For example, I have no idea what `256colors.js` is, or how it's used for testing. That should be either a comment at the top of the file, or in the README (depending on how important the file is).

When you go into `index.js`, it's nice to have an overview of what's what in the file, and how it's structured. I like when docs are build from files, actually (so instead of all of this in `README.md`, you have that in comments in code, and build to something like `README.md`). I also like having clearly documented inputs and outputs.

I also really recommend blank lines between functions. This is especially true if you have blank lines within functions. lchabString, lchab, and the first part of rgbtoHsl fuse into one big code paragraph right now.

I wouldn't necessarily take what I say as how you ought to do it -- that's a question of style, and how I solve these problems. Take it more as a problem statement and example solution.

</comment></comment></comment><comment><USER10> Is there any way to do ICC profile transformations in js?

</comment><comment><USER11> Is the RGB sRGB with all the EOTS stuff built-in?

That stuff is tricky.

<comment><USER12> I think you mean EOTF (electro-optical transfer function)? Or am I just unfamiliar with EOTS?

<comment><USER11> yeah, eotf. my bad.</comment></comment></comment>


Tether now prints $100M daily since January 16 - <AUTHOR> http://stockemperor.com/currencies/tether-now-prints-100-mln-usd-daily/ <comment><USER2> Contrarian opinion: I think printing Tethers out of nothing is exactly the right policy right now.

The current price of USDT is $1.01 on coinmarketcap. In the past few days it went as high as $1.03. This is happening because people are using USDT as a safe haven from broadly falling crypto prices increasing demand. However, USDT is __supposed __to be pegged at a fixed $1 per tether. So if people are willing to sell their bitcoins to Bitfinex at >$1 then Bitfinex should take the deal. If the demand for tether goes away and the price drops <$1/tether, Bitfinex can use all the bitcoin they just acquired from their earlier sale of tether to start buying back tether.

In the process of doing this, Bitfinex 1) stabilizes the price of tether at $1 and 2) makes a small arbitrage profit.

This arbitrage profit isn't without risk, of course. Ultimately this system works as long as the downside variance on tether isn't much larger than the upside variance. i.e., if tether goes as high as $1.03, it shouldn't go below $0.97. However, if the market loses confidence in tether broadly then everyone might try to dump their tethers at once and Bitfinex will run out of reserve bitcoin/usd to buy back tether.

Side note: This is exactly what happened to the British treasury when Soros did his famous run. Soros kept selling Pounds on the market and eventually the British treasury ran out of USD to buy the pounds and the price plummeted. The reason he was able to sell so many Pounds is because he was shorting them (borrowing from others and selling back on the market). So Bitfinex is in fact taking on some risk to run this strategy, but as long as Tethers aren't easily shortable, and the market doesn't completely lose confidence, there shouldn't be too big an issue.

All of this is irrelevant if Tether is committing fraud. They could easily be selling Tethers and not holding the Bitcoin they gain in reserve, rather spending it on yachts. If that's happening the price of Tether is bound to fall <$1 and with no one buying them back, the whole thing will crash.

But I don't think the blog presents evidence that this is happening.

<comment><USER3> Why on earth would they ever buy back Tether when they can just print another $100M?

<comment><USER2> Fair point.

Long term, being seen as a reserve currency is probably worth trillions vs. a few billions in short term fraud.

But I guess all the numbers get fuzzy at that level of wealth.

</comment></comment></comment><comment><USER4> The most interesting thing in my opinion isn't that $100M of Tether is being printed daily, it's that it's still fairly consistently trading at above the face value of $1. Printing funny money is easy; keeping the price of your funny money from plummeting is much harder.

</comment><comment><AUTHOR> I see a moderator has deleted/marked this submission as a duplicate. Can somebody point me at the previous submission it duplicates?

Edit: Maybe this one? [https://news.ycombinator.com/item?id=16182423](https://news.ycombinator.com/item?id=16182423) from 18 hours ago?

</comment><comment><USER5> Just trying to be open-minded: has anyone thought to have given the Tether folks the benefit of the doubt? Isn't it possible they _are_ well aware of the possible risks but have the numbers to justify their printing? Again, just trying to look at it from another perspective since we've already heard the criticisms.

<comment><USER6> 100M a day open mind? That's a bit too open minded.

> Isn't it possible they are well aware of the possible risks but have the > numbers to justify their printing?

They could easily be transparent. They choose not to.

</comment></comment><comment><USER7> I've not read past the first paragraph, but:

> Tether is a magical internet money issued by world's biggest cryptocurrency > exchange Bitfinex

As I understand it, Tether is a completely separate company to Bitfinex. The only thing they have in common is an investor.

> It was designed as a mean to launder money

It was designed as a way to transfer USD without having to wait for bank transactions, and without having to worry about banks closing down accounts.

> I'm pretty sure this resemblance in name is deliberate to confuse owners

It's not meant to "confuse", it's meant to mean "USD Tether".

I think this post is intending to mislead far more than Tether is.

Isn't the fact that Tether explicitly state in their terms and conditions that Tethers are non-redeemable for USD enough to know not to trust Tethers? Why do we have to make up lies about them?

<comment><USER3> They have the same CEOs and there is credible evidence that the Bitfinex folks 'hacked' themselves. This is merely their second, larger scam.

<comment><USER7> Care to share your "credible evidence"?

There's been an awful lot of FUD being spread about Bitfinex for the past year or longer, so you'll excuse me for not taking these claims seriously.

<comment><USER3> If I remembered the details, yes. As it is, I probably won't spend the time trying to find it. I have a hard time taking a conversation seriously after 'FUD' is used. It might even be justified here - I did make a bold claim with no evidence, but everything - literally everything - I read about Bitfinex and Tether is sketchtastic. How they handled their 'audit', how banks are distancing themselves and explicitly denying partnership, how they attempted to conceal their shared leadership, etc.

If I recall correctly, the details were that the account the stolen Bitfinex funds were extracted to was then used in some way tied to some Bitfinex or Tether action. Like I said, I don't remember the details, I just read the article and verified the TXes on a blockchain explorer and moved on with a more confirmed worldview.

</comment></comment></comment></comment><comment><USER8> This is going to cause epic carnage when the house of cards here collapses

</comment><comment><USER9> This seems worrisome. Are they (and the other exchanges) solvent?

I should start thinking about carrying a low balance on exchanges and putting my holdings into an offline wallet.

</comment><comment><USER10> Have any of the other exchanges (besides Bitfinex, of course) that trade Tether (Bittrex, Poloniex, Binance, Kraken) commented on the situation?

</comment><comment><USER11> Where does the printed tether go?

<comment><USER12> Margin market on bitfinex mostly.

<comment><USER11> But who controls it? Does it go straight to Bitfinex wallet?

</comment></comment></comment><comment><USER13> How much money in deposits has coinbase taken since then?

<comment><USER14> Given most exchanges are adding 100k+ users per day, probably a lot more.</comment></comment>


Why Self-Driving Cars Should Never Be Fully Autonomous - <AUTHOR> http://www.roboticstrends.com/article/why_self_driving_cars_should_never_be_fully_autonomous/ <comment><USER2> How in the world are we going to have self-driving cars before we have shopping carts that return themselves to the stores from which they came?</comment>


Mistakes, we've drawn a few - <AUTHOR> https://medium.economist.com/mistakes-weve-drawn-a-few-8cdd8a42d368 <comment><USER2> I applaud the fact that they admit to the mistakes and owning up to them. Converting abstract relationships into semiological representation is not exactly well cut science. There is a bit of experience and discovery in being able to take complex data and present it in a clear manner.

Now, only if we can get publications like Bloomberg to admit their mistake about "The Big Hack" but off-topic and I digress. I've always enjoyed Economist and its British humor, and this article just adds more credibility.

<comment><USER3> Or the classic least norwegian squares method of regression in the WSJ

[http://kieranhealy.org/files/misc/laffer.png](http://kieranhealy.org/files/misc/laffer.png)

<comment><USER4> We (Norway) cheat a bit, though - we're a small (5M and change citizens) economy with a massive oil extraction industry which we tax to high heaven, hence the large fraction of GDP raised by taxes.

Regular corporate tax is 22%, whereas anything involving pumping hydrocarbons out of the ground is taxed with an additional 56%, leading to a tax rate of 78%.

In 2018, this led to more than $13B in taxes being paid from oil companies. Joe Q. Public, for comparison, paid $35B or so in income tax.

<comment><USER5> I think that's his/her point. Norway is obviously an outlier, so fitting the curve _through_ Norway makes absolutely no sense!

<comment><USER4> D'oh, of course.

In my defense, I hardly slept last night courtesy of a three-year-old with the chicken pox, and I hadn't had my morning gallon of coffee when I replied.

</comment></comment></comment></comment></comment><comment><USER6> The most surprising conclusion was about the final plot discussed, regarding scientific publications. The author says that it contains too much information and is confusing for that reason, and postulates it might be better to summarize the different fields and plot as a single variable.

The truth is, it is not a confusing visualization. There is no rule that says to remove variables for the sake of reducing a variable count. It is useful to see that health sciences stands apart from other fields, and other points can be seen as a cluster or examined more deeply by the reader. It is actually one of the best plots shown in the entire article.

In effect it is a grouped bar chart, a visualization that many publications shy away from in favor of stacked bars. While that is good for showing a total, it is often a less effective way of visualizing data—it's difficult to compare magnitude of anything but the base bar. That fault can be seen in the stacked bars of the budget surplus example, which still exists for the improved version.

At any rate, I'm glad the Economist is looking to improve their visualizations and isn't afraid to share mistakes.

<comment><USER7> The precise statement was that _at that size_ it was confusing and hard to read, which I think is a fair statement.

</comment></comment><comment><USER8> On the dog weight and trade deficit charts, I'd argue there's merit to the originals. The essence of a linear relationship between two data series X and Y is that X and Y are _identical_ up to position and scale. The "better" charts represent the data more accurately, but the original charts make it easier to see the relationship between the two series.

Also the trade deficit chart is confusing in part because the negative sign isn't obviously a negative sign.

Edit: the last chart is fine. It's maybe not very sexy, and it takes a moment to absorb, but the data is clearly displayed.

<comment><USER9> The dog weight one is a good case of how you can futz with numbers to imply a greater relationship than is present. I think the second chart is much better in that respect. If you're doubling the relative range of one of a double scale to make stuff look like it fits, that's not exactly being forthright.

> but the original charts make it easier to see the relationship between the > two series.

Well, as the article says, if it looks like they're a perfect fit when they definitely aren't, that's probably beyond making something clearer and going into convincing people of something that the chart doesn't really imply.

> the last chart is fine. It's maybe not very sexy, and it takes a moment to > absorb, but the data is clearly displayed.

Totally agree on this. It takes a bit to digest, but that's because there's a lot of information imparted.

<comment><USER10> There's no reason the scale needs to be the same when comparing measurements in totally different dimensions.

The weight is roughly a volume measurement while the neck size is a linear one. Also, if the necks were measured in inches, you'd end up at roughly the original chart, even being mindful of the scaling on each axis.

I think the left chart is actually the better one. It does a good job showing the correlation between neck size and weight.

<comment><USER11> It's a matter of percent change. It shows the same relative percent change on the scale, which feels more accurate.

I prefer the revised graph.

<comment><USER12> > > The weight is roughly a volume measurement while the neck size is a linear > one.

so "percent change" is a different dimension in the two data sets, respectively.

</comment></comment></comment></comment></comment><comment><USER13> My favorite mistake The Economist made was a survey they ran. They compared UK to US, and supposedly one of the questions was:

What better explains the origins of the Earth?

A) Evolution.

B) The Bible.

It's unclear whether they literally asked that question, or they asked about origins of life and just had a copyediting mistake in the summary of the results. They ignored my letter about it, though, so I suspect the former :)

<comment><USER14> That's funny, because technically the answer is B.

<comment><USER15> This thread is assuming biological evolution, but dynamic systems in general evolve. Maybe I'm stretching the word too much, but the question was a trick question to begin with.

<comment><USER14> I mean... The dictionary definition of "evolve" is basically "things happened over time". But especially increasing in complexity, although it's not a necessary qualification.

So basically, as long as there is any temporal component, it "evolved". But I'd argue that _saying it happened_ doesn't explain _how_ it happened. So the "correct" answer is still B.

<comment><USER15> Is your statement 'Saying that it evolved is not saying how it evolved.'?

We have planetary and solar system dynamics fairly well understood in terms of models and matching that with observational data. So I think an astrophysicist could make the how argument from an evolutionary perspective.

<comment><USER14> Your initial point was that we should not assume "Evolution" means biological evolution. Let's remember that and proceed:

In a pedantic sense, saying that "it evolved" _means nothing_ because _everything_ "evolved" for some suitable non-Darwinian interpretation of what "evolved" means. For example, if you're willing to _not_ assume "Evolution" implies "biological evolution" then why not argue that woman _evolved_ from man's rib as per the Bible and that man "evolved" from dirt?

"Evolution" without explicit context, and perhaps additional qualification (e.g. "the evolution of our solar system") means _that_ as much as it means _nothing_.

</comment></comment></comment></comment></comment></comment><comment><USER16> It is a family tradition in my house to pore through the Economist every week looking for the worst visualization. So, props to them for admitting they have a problem.

<comment><USER17> Wouldn't you find more in other newspapers? I generally find Economist visualizations surprisingly well made. Articles like this show that they're actively trying to improve.

<comment><USER12> If it's not a challenge, it's not fun.

</comment></comment></comment><comment><USER18> I've noticed the scales issue happens a lot with claims about markets. A story will say something like 'Asset A plummets among bad event X' with a daily graph of the price. When you look back at the weekly or monthly graph, though, you find that it's well within normal fluctuations and isn't even a low for that period.

</comment><comment><USER19> For more reading on poor viz & better redesigns, I recommend Junk Charts by Kaiser Fung: [https://junkcharts.typepad.com/](https://junkcharts.typepad.com/)

</comment><comment><USER20> I'm an Economist subscriber and so read it most weeks, but honestly their charts and visualisations are often terrible. I think they could read a bit of Tufte and reduce chart junk as a starting point. This article does make some other good improvements though, so there is hope.

</comment><comment><USER21> I really like the third graph redesign -- the one with the average/trend overlaid on top of the fainter data points. Is there a name for that?

<comment><USER22> I'd describe it as a scatter plot with an added trend line / line of best fit.

</comment></comment><comment><USER23> My college statistics textbook had an entire problem set where every question was dedicated to a bad or misleading chart from "USA Today". These are mild in comparison, but it's important to get visualizations correct, given how powerful they are at communicating ideas and concepts.

</comment><comment><USER24> This is a confusing graph from the Economist that I snipped when I saw it in 2013. Very difficult to wrap your head around what is being shown here: [https://pasteboard.co/I7ttkG5.png](https://pasteboard.co/I7ttkG5.png)

<comment><USER25> I assume you wrapped your head around it by now, but I'll explain it anyway.

Bottom right; barely 5% of the world population is equal or richer than the average US citizen. 20% of the world population has at least 25% of the average US citizen, or 80% of the world has less than than 25% of the average US citizen.

Note that a graph of the US alone would look about the same.

I think its a highly informative graph, that you will not get at a glance. Another mistake they noted in the article:

"Another odd thing is the choice of colour. In an attempt to emulate Labour's colour scheme, we used three shades of orange/red to distinguish between Jeremy Corbyn, other MPs and parties/groups. We don't explain this. While the logic behind the colours might be obvious to a lot of readers, it perhaps makes little sense for those less familiar with British politics."

I think it's a bonus if you can make a graph have extra layers of information for the informed reader. In literature this his highly regarded. Why not in data visualization?

<comment><USER26> >Note that a graph of the US alone would look about the same.

Well, 50% of the population would be richer than the average US citizen rather than 5%.

<comment><USER27> Median vs average?

The GDP per capita in the US is around 60k, that's around the 77th percentile:

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

[https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nomi...](https://en.wikipedia.org/wiki/List_of_countries_by_GDP_\(nominal\)_per_capita)

</comment></comment></comment></comment><comment><USER28> Such as calling Ben Shapiro an "alt-right sage"? [0]

0\. [https://www.economist.com/open-future/2019/03/28/inside- the-...](https://www.economist.com/open-future/2019/03/28/inside-the-mind-of- ben-shapiro-a-radical-conservative)

</comment><comment><USER29> I enjoyed the post. I am not familiar with the website, but from the examples in the post, it seems that only the x-axis is labeled. It can be hard to understand the meaning of a plot when only one axis is labeled.

</comment><comment><USER30> I'm currently reading Statistics for Dummies, and these kind of techniques used i.e. wrong scale, incorrect starting point, etc is explained very well. Highly recommended.

</comment><comment><USER31> they did ben so dirty :(</comment>


Rand and Ron Paul denounce net neutrality and the public domain - <AUTHOR> http://boingboing.net/2012/07/06/rand-and-ron-paul-denounce-net.html

<comment><USER2> Did anyone read the actual manifesto? [0] The wording sounds a bit confused, because I can't often tell if they're using precise technical definitions for terms or not, but I'm not seeing what this article's author claims to be seeing. The manifesto appears to denounce government-enforced IP law [1], and the only mention of "public domain" seems to be referring not to creative works without any license or copyright, but rather to the idea that websites run on privately-owned hardware should be considered "public" in some way (and therefore the government's business) [2].

From what I can tell, the main point of this manifesto is that governments are trying to establish control over privately-owned Internet resources, that the language they use is intentionally deceptive, and that governments enjoy a double standard whereby data collection is prohibited for private endeavors but allowed and even encouraged by governments [3].

Perhaps the boingboing author would also consider my views about the Internet and legislation radical and "pretty terrible," but while I consider this manifesto confusing and poorly written, I'm not seeing any evidence of many of his points, and I can't help but agree with many of the manifesto's points. One particular line from this article says "They also ... argue that government monopolies over knowledge should be extended, and that tax-dollars should be used to enforce them." Where is that in the manifesto? Is the author missing something, or am I missing something?

[0] [http://www.campaignforliberty.org/profile/14524/blog/2012/07...](http://www.campaignforliberty.org/profile/14524/blog/2012/07/05/c4l-introduces- technology-revolution)

[1] "Among the most insidious are government attempts to control and regulate competition, infrastructure, privacy, and intellectual property."

[2] "According to them [the Internet collectivists]: ... Private property rights on the Internet should exist in limited fashion or not at all, and what is considered to be in the public domain should be greatly expanded."

[3] "Internet collectivists are clever. They are masters at hijacking the language of freedom and liberty to disingenuously push for more centralized control. 'Openness' means government control of privately owned infrastructure. 'Net neutrality' means government acting as arbiter and enforcer of what it deems to be 'neutral.' 'Internet freedom' means the destruction of property rights. 'Competition' means managed competition, with the government acting as judge and jury on what constitutes competition and what does not. Our 'right to privacy' only applies to the data collection activities of the private sector, rarely to government.

<comment><USER3> I read the manifesto and found it hard to get past the obvious distortions about the role of government in technology. For starters, not even acknowledging that that wondrous thing called the internet was originally funded by the government.

<comment><USER2> I don't think the Pauls would intentionally deny or conceal that government funds were used to create the beginnings of the Internet. Just like NASA, I suspect they would take their usual stance: that even when governments use tax revenue to do worthwhile things, it would be preferable (certainly morally and perhaps economically) for private enterprise to accomplish the same things.

<comment><USER4> We've already seen private enterprise solutions to the long-haul network problem: CompuServe and AOL, each of which was a heavily-censored and ludicrously expensive walled garden, soundly rejected by anyone with access to the Internet. Well-run private enterprises avoid creating public goods because they don't pay off, so they aren't going to happen unless you solve the free rider problem (i.e., taxation) or you have so many selfless donors who don't object to free riders that you can ignore the problem.

</comment></comment></comment></comment><comment><USER5> > Considering the Pauls were both instrumental in the fight against SOPA and > PIPA, you would think that the two of them understood how copyright law is > massively abused and how beneficial the public domain is.

Not many people seem to understand their libertarian views on things. Their philosophy is neither _for free Internet_ or _against free Internet_. Their philosophy is about _less government intervention_. SOPA and PIPA are both bills that impose new government control over certain things (controlling/limiting the rights and freedoms of individuals and ISPs). Net neutrality is also an idea that imposes new government control over certain things (controlling the rights of ISPs). To libertarians, almost all government control is considered bad, be it control over corporations or control over individuals. Thus they are against all of these things simultaneously.

I'm not saying I agree with their exact philosophy. But it's simple, very consistent, and they never seem to stray far from it.

<comment><USER6> _Not many people seem to understand their libertarian views on things. Their philosophy is neither for free Internet or against free Internet. Their philosophy is about less government intervention._

Yet the Pauls seem all too eager to push federal limits on abortion and marriage equality.

<comment><USER5> Again, a misunderstanding of the philosophy. Libertarians tend to believe the States should be free to legislate what they want. Forcing Abortion legal at the federal level is controlling what States were once free to decide. What they want to do is eliminate federal control of abortion law; and let the states decide. I have never heard them suggesting Abortion or Gay Marriage be illegal at the federal level.

I personally don't agree with all aspects of their philosophy, but it's still _consistent_.

<comment><USER6> _Again, a misunderstanding of the philosophy. Libertarians tend to believe the States should be free to legislate what they want. Forcing Abortion legal at the federal level is controlling what States were once free to decide._

You're confusing a states' rights fetish for libertarianism. Libertarians are generally alarmed by forcing things to be _illegal_ , not making them legal.

 _I have never heard them suggesting Abortion or Gay Marriage be illegal at the federal level._

Then you haven't been paying close enough attention.

[http://www.huffingtonpost.com/2012/06/26/rand-paul-fetal- per...](http://www.huffingtonpost.com/2012/06/26/rand-paul-fetal-personhood- flood-insurance_n_1628128.html)

[http://theiowarepublican.com/2011/ron-paul-condemns- obama%E2...](http://theiowarepublican.com/2011/ron-paul-condemns- obama%E2%80%99s-decision-to-abandon-doma/)

</comment></comment></comment></comment><comment><USER7> That first paragraph is choked with hyperbolic language. I think I'd rather read a different source on the matter if one exists.

<comment><USER8> Indeed. Boing Boing may be interesting, it may touch on topics that are relevant...but as far as "reporting" goes, it's worthless.

I resolved to never read it again about a year ago, and I've been happier since then.

</comment></comment><comment><USER9> This makes no sense, Ron usually takes the freedom / libertarian angle on things. I'm sure there's some nefarious reason for their stand (campaign dollars?). _sigh_ wish there was a way to 'hack' politics...

<comment><USER10> What doesn't make sense? The only way to guarantee the free and open nature of the internet is to keep the government out of it. Once the government builds an apparatus to enforce net neutrality it's role will gradually expand to start controlling the internet.

An argument can be made that government funding of teclos should come with certain restrictions - those restrictions must be present when the money is doled out. Government creating problems in order to solve them, is an easy way to further their involvement. Additionally, I believe the Pauls would be against the funding.

<comment><USER11> I think you should probably remove the absolutes from your comment. It may come to pass that net neutrality legislation morphs into something larger, but suggesting that it is a given is just an attempt to dismiss the entire argument on that topic. Saying that keeping governments out is the only way to safeguard the open internet is stupid; many other interests are at play, and many commercial organisations would definitely like to see the current status modified in their favor, which may or may not be good for net neutrality, and related issues.

</comment></comment></comment><comment><USER3> Oh that internet, created by the wonders of the free market. We'll just forget about that whole DARPA thing.

<comment><USER12> DARPA, NSF and to a lesser extent, CERN and the governments of Britain and France.

It is hard to identify significant influences on the Internet by entrepreneurs or private firms (excepting work done on government contracts) before 1992. The most influential one I can think of is the decision by Sun Microsystems in the mid-1980s to include a TCP/IP stack and basic internet client software with every workstation at no extra charge -- which was probably responsible for the biggest increase in the number of people with access to email in the 1980s -- but even there, doing so would not have occurred to Sun if the US _government_ had not contracted with UC Berkeley to add those things to BSD.

Summary: although entrepreneurs and the market had dramatic effects on the internet after 1992, the internet of 1992 was the result mainly of substantial spending by the US government every year for _thirty_ years leading up to 1992.

And the internet of 1992 was already very compelling and useful to those willing to master the "text-mode" (no graphical UIs) software used to access it.

</comment></comment><comment><USER13> On net neutrality, this isn't surprising and is in my view quite respectable. In Washington DC, where the legislators Paul operate, calls for 'net neutrality' typically mean putting some federal agency (like the FCC) in charge of what's truly 'neutral' and allowed.

The FCC manages licenses for the exercise of free speech over broadcast media. It fines disapproved speech. It dictates that telecom equipment be wiretap- friendly. It's a board of 5 political appointees not apportioned by vote or region, but split between the two national political parties. The FCC could never be a friend of true 'neutrality', but rather what the national political establishment finds helpful.

Even if initially adopted in the spirit of the 'nondiscriminatory transit' principle, after a few years you should expect 'network neutrality' to mean 'safe for children', 'copyright-protecting', 'wiretap-friendly', 'with set- asides for underrepresented viewpoints', and 'in compliance with campaign finance laws'. After all, it's not a 'neutral' net if it's filled with piracy, pornography, untappable criminal chat, ethnic/gender-insensitivity, and unregistered political activity. That's downright hostile to law-abiding Americans and their bipartisan protectors at the FCC!

There's one small, vague and convoluted mention in the Paul statement about the 'public domain'. It reads roughly:

 _According to them [government attempts to control and regulate competition, infrastructure, privacy and intellectual property]... Private property rights on the Internet should exist in limited fashion or not at all, and what is considered to be in the public domain should be greatly expanded._

That mention isn't even necessarily referring to the rigorous intellectual property notion of 'public domain' (meaning non-copyrighted). It seems more the colloquial notion of 'public domain' as 'that which the government manages, like parks and roads and government buildings'. In order to ridicule this, Doctorow has to spin Masnick, who is himself heavily spinning the Pauls. So that one vague mention becomes instead...

• for Masnick, "The Public Domain [is really an] Evil Collectivist Plot"

• for Doctorow, "Rand and Ron Paul denounce... the public domain"

This is a signature move of politics and click-grabbing headline-escalation. Create the an unfair, unfavorable, heavily-spun summarization of someone's views. Credit that summarization to the original source as if they'd said exactly that. Publicize to get a reaction. Collect the traffic-boosting glory!

<comment><USER12> Have you considered that for the first 23 years of the Internet/ARPANet's existence, the government was firmly in control of the entire network, including consistently being the largest purchasers of internet equipment such as routers, and being the instigator, planner and funder of the initial design and implementation? (They tried to interest AT&T in running it -- twice, in 1977 and 1987 -- but AT&T was not interested.) Have you considered that it is because of enlightened decisions made by the government that, e.g., Tim BL et al did not need to seek the government's permission to use the internet to deploy the WWW? That in 1999 Shawn Fanning, John Fanning, and Sean Parker did not need to get the permission of the government to use the internet to deploy Napster?

<comment><USER13> I am aware of the history of the internet. I am responding above to rhetorical mischaracterizations of the Pauls' statements.

As to whether DARPA's history suggests that any 'net neutrality' regulations would be applied in an 'enlightened' manner, I find that idea laughable. The FCC is not run by by research scientists who value the end-to-end principle and resistance to damage/censorship above all else. The Congresspeople who'd be passing the enabling legislation are those who keep passing 'Decency Acts' (no matter how many times the Supreme Court strikes them down), enabling new wiretapping powers, and trying to sneak favors to big donor industries into legislation.

The internet is no longer a research project or prototype. Its equipment, infrastructure, and services are now overwhelmingly privately provided. We should look at attempts to federally impose "network" neutrality with as much skepticism as if they were trying to impose "printing press" neutrality or "nonfiction book neutrality" or "newsprint neutrality". Those ideas would rightly be heckled, were they proposed, because our society understands at a deep level that the printed/written word should be a government hands-off zone, from author through editor-publisher-distributor. The same should apply to the internet.

</comment></comment></comment><comment><USER14> >> evil "collectivists" ... are saying that "what is considered to be in the public domain should be greatly expanded."

It is "collectivist" to release software (etc.) in public domain???

Something done only by collectivists? So that if I contribute to FOSS I must be labeled a collectivist?

Maybe the Paul's better offer further explanations.

[edited for clarity]

<comment><USER2> You should read the actual manifesto: [http://www.campaignforliberty.org/profile/14524/blog/2012/07...](http://www.campaignforliberty.org/profile/14524/blog/2012/07/05/c4l-introduces- technology-revolution)

The boingboing author seems to be interpreting the manifesto incorrectly, because the manifesto is not using the term "public domain" to mean what we all use it to mean.</comment></comment>


A Scrabble Luck Calculator - <AUTHOR> http://nautil.us/issue/73/play/presenting-the-scrabble-luck-calculator <comment><USER2> > the computer who goes first won more than 56 percent of games, suggesting > that there is a notable advantage to playing the first hand [...] There's no > way to know for sure what specifically causes this advantage, but perhaps > giving one player initial control of the board has some beneficial effect.

"What specifically causes this advantage" is, to put it briefly, playing first. The first player will have about 0.5 more opportunities to score. In fact, since it's legal to pass, it's a trivial game theory result that any advantage in Scrabble belongs to the first player.

<comment><USER3> Consider what happens if neither player wants to go first. P1 passes. P2 passes. Now p1 has to play or the game is drawn. If the game is played with win3 draw1 lose0 rules, then p1 should play even if at a slight disadvantage. A 49 % chance of payoff 3 is better than a 100% chance of payoff 1.

</comment></comment><comment><USER4> The context is good, but fwiw here's the direct link to the calculator: [http://www.kevinrmcelwee.ml/scrabble_luck/](http://www.kevinrmcelwee.ml/scrabble_luck/)

</comment><comment><USER5> I used to have a scrabble bot playing itself three times a day, posting its games to tumblr: [https://scrabblebot.tumblr.com/](https://scrabblebot.tumblr.com/)

IIRC simulating an AI-AI game only took a short period of time (maybe a few seconds to a minute), so replicating the study with this scrabblebot wouldn't be too difficult.

Source: [https://github.com/dbieber/ScrabbleBot](https://github.com/dbieber/ScrabbleBot)

</comment><comment><USER6> Sorta related, I wrote a scrabble solver a few years back (includes sourcecode in python)

[https://words.gumyum.com/](https://words.gumyum.com/)</comment>


Ask HN: Why are hn discussions of a higher quality? - <AUTHOR> Clearly a very subjective topic so work with me here...(and forgive my clumsy explanation).
Comparing hn to other discussion boards I'd say it has far higher quality discussions yet I can see no obvious signs of moderation. (Or even aggressive algos like reddit).
Responses are generally well reasoned, low on personal attack & other undesirable traits. Criticising people frequently results in introspection on their part rather than blind retribution.
All this is great of course...yet leaves me a little confused as to what the magic behind the curtains is. What's different vs other discussion boards? <comment><USER2> There is moderation behind the scenes. I've had some of my posts edited to improve them. Also there are a number of rules about how HN works that I suspect some people are told and others are not.

HN also forbids the discussion of what CNN considers news. We don't have endless knock-down-drag-outs about the usual subjects.

Also HN has a fairly unique community of people who are interested in both technology and business, no matter where they are located.

</comment><comment><USER3> There is moderation. Have you tried browsing with showdead turned on? HN is pretty good at killing bad comments early on. Also downvoting almost all joke comments prevents meme threads from taking space.</comment>


US building education system to compete with India, China: Obama - <AUTHOR> http://obama.wsj.com/article/055Y7TObV7dHu?q=Obama+AND+(foreign+affairs+OR+foreign+relations+OR+foreign+policy+OR+Israel+OR+Gaza+OR+West+Bank+OR+Iraq+OR+India+OR+Afghanistan+OR+Guantanamo+OR+Pakistan+OR+Nuclear+Weapons+OR+Iran+OR+Energy+security+OR+Diplomacy+OR+Europe+OR+European+OR+Terrorism+OR+Al+Qaeda+OR+Defense+OR+imports+OR+exports+OR+Global+Environment)

<comment><USER2> The bad news: once upon a time, not so long ago, it would have been unimaginable for a United States President to announce that the United States education system considered India and China its competition.

The good news: once upon a time, even more recently, it would have been unimaginable for a man socially identified as "black" to become President, especially after lengthy childhood residence in Indonesia. So there is a President who understands other countries, and who wants to make sure that the United States steps up to meet world standards in education. As an American who has lived overseas myself, I figure it's good that this issue finally is getting attention.

From the linked Times of India article, the primary source:

"'At the start of my administration I set a goal for America: By 2020, this nation will once again have the highest proportion of college graduates in the world. We used to have that. We're going to have it again,' Obama said amidst applause from the audience."

What do all of you think about defining the education goal in these terms? Is having the highest percentage of college graduates really the main issue?

<comment><USER3> I think defining the educational goal in those terms is rhetorical shorthand for 'employing the most teachers/instructors/professors,' not for 'having the most educated workforce.'

<comment><USER2> _I think defining the educational goal in those terms is rhetorical shorthand for 'employing the most teachers/instructors/professors,'_

I'm afraid that may be what is really going on.

</comment></comment></comment><comment><USER4> From the CIA World Factbook, Literacy in the 3 countries:

India 60.1%

China 90.9%

USA 99%

Seems like by that benchmark, India at least, isn't really competition.

<comment><USER2> The literacy figure for China would be quite doubtful, as well, and definitely based on a more relaxed standard of "literacy" than in the United States. By official Chinese government survey,

[http://news.xinhuanet.com/english/2007-03/07/content_5812838...](http://news.xinhuanet.com/english/2007-03/07/content_5812838.htm)

barely more than half of the population in China is even conversant in the national standard language.

<comment><USER5> However, all Chinese languages use the same written representation, so any Chinese person speaking a dialect of Chinese that is literate is as literate as a Mandarin-speaker.

<comment><USER2> This is doubtful as well, because the standard modern written language is based on the vocabulary and grammatical structures of Mandarin. (I am well aware of this, as someone who has lived for years in places where Mandarin is the official language, but the home language of most elementary pupils is a non-Mandarin Sinitic language.) A fairly detailed response to the claim that Chinese characters provide common literacy for people who can't understand one another over the telephone can be found in

[http://www.amazon.com/Chinese-Language-Fantasy-John- DeFranci...](http://www.amazon.com/Chinese-Language-Fantasy-John- DeFrancis/dp/0824810686/)

or

[http://www.amazon.com/Ideogram-Chinese-Characters- Disembodie...](http://www.amazon.com/Ideogram-Chinese-Characters-Disembodied- Meaning/dp/0824826566/)

For your convenience, I can link a deep look into one of those books through a focused search on Google Books:

[http://books.google.com/books?id=fRqKreZFVTYC&pg=PA10...](http://books.google.com/books?id=fRqKreZFVTYC&pg=PA10&lpg=PA10&dq=myth+literacy+China&source=bl&ots=1ZWwm_q4Ri&sig=NJWWWeSeHH97b63mX15X-xjToGU&hl=en&ei=NxBeSpjQE9PEmQeMtL1_&sa=X&oi=book_result&ct=result&resnum=2)</comment></comment></comment></comment>


Elon Musk Critical About the 40-Hour Work Week, Is Wrong About Labor Rights - <AUTHOR> http://digg.com/2018/elon-musk-40-hour-work-week <comment><USER2> Elon Musk is wrong about a lot of things, yet we keep seeing him in the news for some reason.

</comment><comment> java-man I think he is talking about himself though.</comment>


Concentration camps reveal the nature of the modern state - <AUTHOR> https://aeon.co/ideas/concentration-camps-reveal-the-nature-of-the-modern-state <comment><USER2> What concentration camps reveal is that modern people are squeamish about killing.

Consider the Mongol empire. While the Mongol empire had some things in common with a modern state, squeamishness about killing was not one of them. There are cases where they decided a city needed to be destroyed and they took great pains to make sure that destruction was total. Every man, woman, and child they could find was put to the sword (or axe). Depopulating an entire city was a difficult task before carpet bombing became an option. Mongol soldiers were given quotas and expected to produce enough ears to show that they had met that quota. Punishments for not meeting that quota were harsh. Ears were put into sacks and carted off in wagons to be counted. Even dogs, cats and chickens were killed in some cases. There are recorded instances of Mongol armies leaving towns after doing this and then deliberately returning a week or two later, just to make sure they got anyone who had managed to hide in a basement or who was out of town when they were first there.

Consider the Romans. After the third Punic war Carthage's population was sold into slavery en masse and the city burned for 17 days. The earth was salted. There was no fourth Punic war because there were no Carthaginians left alive and free. Let's not even talk about the Assyrians!

Many states throughout history have committed genocide against enemies and many others have persecuted populations within their own borders. Concentration camps are only necessary now because most people won't stand for such atrocities, and states therefore feel compelled to carry them out in relative secrecy. Modern human society is gentler now than at any point in our past, although perhaps navel-gazing and self-accusatory articles like this are part of the reason why, no matter how uninformed they might be.

<comment><USER3> I don't think you're wrong about modern squeamishness, but I think it goes further than that. The purpose of concentration camps is to _not_ kill people.

Methodical killing of any type at scale is very rare in the modern world. It's even rarer for it to to be conducted through camps; to my knowledge, only the Nazis ever did it (and their allies, the Croatian fascist Ustaše regime). Most mass killing simply consists of taking groups of people somewhere remote and shooting them. Concentration camps are what you do when you _don 't want to do that_ and are basically a cheap form of prison. Even in the Soviet Gulag, where the harsh conditions and threat of death were part of the punishment, the majority of prisoners survived.

Even where death is tacitly the expected outcome of a camp (rare), it's mostly done by slow starvation and overwork. I think that's interesting, given how inefficient that is. It provides a kind of mental "plausible deniability".

<comment><USER4> Cambodian genocide (1975 - 79) had insanely high fatality rates at it's camps which where mostly there to torture people before death. ~25 percent of the total Cambodian population died. [https://en.wikipedia.org/wiki/Cambodian_genocide](https://en.wikipedia.org/wiki/Cambodian_genocide)

What separated the Nazi mass killings was mostly the massive population they could pull from. [https://en.wikipedia.org/wiki/German- occupied_Europe](https://en.wikipedia.org/wiki/German-occupied_Europe)

<comment><USER5> > ~25 percent of the total Cambodian population died.

But not from concentration camps.

</comment></comment></comment></comment><comment><USER6> This strikes me as a massive overgeneralization. States are just an organizational structure of institutions, tasked with operating a society. They are not intrinsically inclined towards building concentration camps any more than they are intrinsically inclined towards providing healthcare or delivering a basic income. States operating under an ideology of madness will operate as if mad. States operating under an ideology of reason will operate reasonably.

And for me at least, the main take-away from the image of the concentration camp is clear: elections have consequences, so take your vote seriously. Form a functional coalition with others to elect the least terrible person you can. If you don't, you may end up handing the machinery of the state - capable of harm on a massive scale - over to the unsavory or the insane. That's the lesson of the concentration camps and the lesson of recent history.

So I think the distinction between the nature of the state and the nature of its citizens is important for effective democratic participation. If you are so cynical that you think that 'concentration camps reveal the nature of the modern state,' why would you participate in such a thing? If we are collectively down on the very concept of the state, there's no way to run a good one.

<comment><USER7> States, or Nation States, are not just an organizational structure. They are THE organizational structure of the modern world. It is no coincidence that concentration camps are created by modern states and not for example tribes or criminals.

<comment><USER8> It's not like the predecessors of the modern state were strangers to genocide and mass enslavement.

</comment></comment></comment><comment><USER9> Great little summary. It's a shame the author didn't get to / have space for the discussion of refugee camps, which are structurally little different from the german internal camps of the eRly 1930s or the DP camps at the end of WWII.

The nature of the Nazi/Soviet/cpc/nk camps provides "air cover" for the widespread and more pervasive networks of camps still in use around the world.

</comment><comment><USER10> I approached this subject, most of a year ago, here in HN comments: [https://news.ycombinator.com/item?id=12568718](https://news.ycombinator.com/item?id=12568718)

I'm glad to have such a clear opportunity to see the vast difference in quality of results achieved by a professional historian on the one hand, and an armchair historiographer like me on the other. I'm looking forward to reading his book.

</comment><comment><USER11> tldr 20th century nation states are based on a world of fear and paranoia around mutually exclusive notions of ethnic and national homogeneity and territorial integrity.

Incarceration techniques employed in concentration camps were borrowed in a transnational framework. They aided each state in isolating the unwanted (racial, religious, etc) and controlling the rest of the population through the implied threat of ending up in a camp for not conforming.

</comment><comment><USER12> _[...] a more analytically fruitful approach is to examine the impact of the First World War. Here, for the first time in modern Europe, we see [...] the willingness of the state to incarcerate huge numbers of civilians considered threatening._

This statement was the one I found most intriguing in the entire article, but then the author did not expand on it. Maybe he does so in his book. It was strange to me to consider that this state of the world has not always been the norm.

When I looked into it, I found conflicting sources of information. Anyone with knowledge on the subject feel like expanding on this?

</comment><comment><USER13> Sounds interesting. By contrast Timothy Snyder in _Black_Earth_ argues that concentration camps were created as institutions that were deliberately outside of the state to facilitate slaughter: [http://www.npr.org/2015/09/09/438943243/black-earth- explores...](http://www.npr.org/2015/09/09/438943243/black-earth-explores- dangers-of-misunderstanding-the-holocaust)

</comment><comment><USER14> We obviously haven't seen the last of them when the US has a network of prisons that holds almost 2.5 million people, many of them concentrated for rather obvious racial reasons. Just because they are built of brick and steel does not change their basic tenet. Nor does the use of prisons for such purposes or the fact that there are actual criminals in prisons in addition to the concentrated populations.

</comment><comment><USER15> Stephan Zweig describes this new sense of nationalism as state policy after WWI in the 'World of Yesterday'; actually before the great world one could travel without passports or identification papers at all - that serves him as the detail that serves to explain the big thing.

[https://ia801609.us.archive.org/21/items/in.ernet.dli.2015.1...](https://ia801609.us.archive.org/21/items/in.ernet.dli.2015.176552/2015.176552.The- World-Of-Yesterday_text.pdf)

"Nationalism emerged to agitate the world only after the war, and the first visible phenomenon which this intellectual epidemic of our century brought about was xenophobia : morbid dislike of the foreigner, or at least fear of the foreigner. The world was on the defensive against strangers, everywhere they got short shrift. The humiliations which once had been devised with criminals alone in mind now were imposed upon the traveller, before and during every journey. There had to be photographs from right and left, in profile and full face, one's hair had to be cropped sufficiently to make the ears visible; fingerprints were taken, at first only the thumb but later all ten fingers ; furthermore, certificates of health, of vaccination, police certificates of good standing, had to be shown ; letters of recommendation were required, invitations to visit a country had to be procured ; they asked for the addresses of relatives, for moral and financial guarantees, questionnaires, and forms in triplicate and quadruplicate needed to be filled out, and if only one of this sheaf of papers was missing one was lost.

Petty details, one thinks. And at the first glance it may seem petty in me even to mention them. But our generation has foolishly wasted irretrievable, valuable time on those senseless pettinesses. If I reckon up the many forms I have filled out during these years, declarations on every trip, tax declarations, foreign exchange certificates, border passes, entrance permits, departure permits, registrations on coming and on going ; the many hours I have spent in anterooms of consulates and officials, the many inspectors, friendly and unfriendly, bored and overworked, before whom I have sat, the many examinations and interrogations at frontiers I have been through, then I feel keenly how much human dignity has been lost in this century which, in our youth, we had credulously dreamed of as one of freedom, as of the federation of the world. The loss in creative work, in thought, as a result of those spirit-crushing procedures is incalculable. Have not many of us spent more time studying official rules and regulations than works of the intellect ! The first excursion in a foreign country was no longer to a museum or to a world- renowned view, but to a consulate, to a police office, to get a "permit" When those of us who had once conversed about Baudelaire's poetry and spiritedly discussed intellectual problems met together, we would catch ourselves talking about affidavits and permits and whether one should apply for an immigration visa or a tourist visa ; acquaintance with a stenographer in a consulate who could cut down one's waiting- time was more significant to one's existence than friendship with a Toscanini or a Rolland. Human beings were made to feel that they were objects and not subjects, that nothing was their right but everything merely a favour by official grace. They were codified, registered, numbered, stamped and even today I, as a case-hardened creature of an age of freedom and a citizen of the world-republic of my dreams, count every impression of a rubber-stamp in my passport a stigma, every one of those hearings and searches a humiliation. They are petty trifles, always merely trifles, I am well aware, trifles in a day when human values sink more rapidly than those of currencies. But only if one notes such insignificant symptoms will a later age be able to make a proper clinical record of the mental state and mental disturbances with which our world was seized between the two World Wars.</comment>


IPhly, radio control with your iPhone - <AUTHOR> http://www.kickstarter.com/projects/ari-krupnik/iphly-radio-control-with-iphone

<comment><USER2> I used to be into R/C everything. Nitro cars, planes, helicopters. I can't imagine what would happen to my expensive toy if the app crashed while I was flying something and it took me a few seconds to get it back up... I would definitely use the buddy-box input.

</comment><comment><USER3> Flying manually is probably more fun and challenging but this opens the door to another world. Consider if the RC device was better controlled by the software with auto correction like many commercial and military jets. This could allow for a much broader range of RC devices to be created that are much more difficult, if not impossible, to control.

</comment><comment><USER4> It's still kind of sad all of these homebrew projects need to use the serial- port-from-headphoneJack hack to make it work.

Is there anyone out there that actually got a license from Apple to use the dock API that can talk about it? There are development boards you can get from companies like Cypress, but only if you're already in the program.

</comment><comment><USER5> Considering how short the battery lifespan (or gas tank) of these RC devices are when in use, I don't think the battery consumption of the iPhone is going to cause any problems. The only issue I'm seeing is control. I'm pretty sure it's harder to be accurate with an iPhone than with a radio control, especially for such things as helicopters.

</comment><comment><USER6> Using the tilt sensor for flight control? One sneeze and an expensive model is destroyed. If I have experience with traditional RC flight transmitters, I have muscle memory in my thumbs for flying, and I can't use that here. No snark intended, best of luck to the OP.

</comment><comment><USER7> What happens if you receive a call mid flight? That seems like asking for trouble. Looks like an awesome device otherwise though!

<comment><USER8> This is what "airplane mode" is for.

<comment><USER7> Obvious in retrospect. Thanks!</comment></comment></comment>


Jython project lead joins Sauce Labs - <AUTHOR> http://fwierzbicki.blogspot.com/2010/02/my-new-job-at-sauce-labs.html

<comment><AUTHOR> I'm really excited Frank joined Sauce. [disclosure: I co-founded Sauce with fellow HN reader, Steven Hazel (sah)]

Over the past few years, Ruby/Rails-based startups have been getting all the attention. It's time for Python-based startups to represent. :-)

<comment><USER2> congrats guys!

</comment></comment><comment><USER3> I'm super excited for Frank. I will be forever thankful that he took Jython out of the wilderness and made it better than ever.. I hope he'll still have time for Jython hacking at his new gig.</comment>


Recovering from segfaults in Ruby - <AUTHOR> http://charlie.bz/blog/recovering-from-segfaults-in-ruby

<comment><USER2> isn't that a horrible idea? segfault means something is wrong and you better fail now before process messes up more things, right?</comment>


The BEAM Has Spoiled Me - <AUTHOR> https://gvaughn.github.io/2020/08/08/beam_spoiled_me.html <comment><USER2> Article piqued my interest, but also left me scratching my head a bit - everything mentioned is kinda vague / abstract.

Elixir/BEAM are "better" but better than what? Curious the author's prior language experience.

What's he developing with it exactly? Native apps? Web stuff? Or just learning / experimenting?

Didn't really understand how the Elixir / BEAM approach is different from typical threads, OS processes, or async programming models - maybe asking too much from a short post :). But still would be interesting to have some specific examples of how Elixir/BEAM is better.

<comment><USER3> Hello, OP here. Yes, I was intentionally abstract because I thought I was writing to a smaller audience of people who had spent some time with Elixir/BEAM. I never expected the attention this has received!

In my 25 year career, I've been paid to work in Lotus Notes, Java, C#, Javascript, Ruby, Clojure, and now Elixir. My employer's system is basically an integration platform. We perform background tasks on behalf of our customers that access 3rd party APIs, our database, and then decide to push some data to other systems. We do have a web interface that is mostly the status of this background processing, plus a UI for when the users need a manual action.

There's other great replies touching on your technical questions, but here's my brief angle on it. BEAM processes are as isolated as OS processes, but they are very quick to spawn and need very little memory. A typical developer- caliber laptop computer can probably support on the order of a quarter million processes. Their isolated nature is supported at all levels of the design of the BEAM.

<comment><USER2> Thanks - appreciate the reply (and the other helpful replies here too). I've done a fair bit of threaded / async stuff in Python / C / JS - sounds like BEAM processes are more baked into the language & runtime and encouraged as an architectural style, rather than an added complexity you bargain with when you hit a single-threaded performance wall. Interested to do a deeper dive on it sometime.

</comment></comment></comment><comment><USER4> I use to make the same mistake of the author. It is not the BEAM, it is the architecture that the BEAM force upon you to spoils it (the author).

There are deeper points in what the author says. Even if you let a process crash in the BEAM, but you don't leave the system in a consistent, recoverable state, the BEAM is not going to help you.

Once you realize this, and have a way to apply back pressure, you can get a lot of the benefits of the BEAM in any language. (Not all, being a VM carefully tuned and design for this pattern still means something, but still.)

When you realise that it is so much simpler to leave the system in a consistent state and program very very aggressively, following only the happy path without worrying about errors, you can apply the same pattern every where. Of course within reason that perform can be impacted.

My takeaway is that the BEAM (and the community around it) force upon you a very particular style of programming, and most of the benefits comes from this style, not from the BEAM itself. You can apply the same style in any programming language.

<comment><USER5> The problem there is that your coworkers working in those languages who don't have Erlang/Elixir experience have not internalized those lessons yet and they're not going to understand why you're doing what you're doing when they review your code.

Edit: I remember an interview that I had once with a team that was trying to bring on a senior to improve their PHP code and they were really unused to the code style I used to solve their problem. Their main issue was the way wrote their code duplicated most of the (very large) request data unnecessarily many times and forced PHP to add more chunks of RAM several times as it handled the request. My code cut all of that fat, but because they didn't understand that's what their problem was they wrote it off as "this guy doesn't know how to code". They didn't even ask and I was glad to not move forward, ultimately.

<comment><USER6> This is a problem with 'theoretical' (books/uni 'experience') and 'IBM thinking' (people are more expensive than adding more machines, so always optimize for using less people time; just add machines... says the hardware (and per core software license) vendor. Amazon AWS agrees!) people is that they lack the real life experience where things do not fit in 'best practices' (as in design patterns) or green field architectures from books/tutorials if you don't want to scale up to 1000 nodes for 100.000 users. Optimizing this (so you can run those 100.000 on 1 node, but let's say 2 for failover) might not result in code which people might find 'understandable' from their point of view. A lot of people with even years of experience, work in a kind of 'process' way; stacking up code the way they have learned and handle every case as the same case with 'somewhat different logic'. They might not understand your code or they might understand it but think it's not adhering to proper best practices and standards. Their loss.

<comment><USER5> I also think that while these engineers all went to schools where they got both high level and low level programming under their belts, not enough of them really made the connection to understand what their code actually makes the computer do, aside from in the theoretical sense (Big O).

We're not really training enough truly full-stack engineers.

<comment><USER7> I walked out of college having made a game of one-upmanship with a friend (easy CS homework days, we'd compete against each other over runtime or algorithms), onto a project whose UI was so slow you could watch the screen paint itself. It was so bad I was ashamed to be associated with the project, but I moved a long way so I stuck it out for a bit, until it was respectable. I think I learned as much about performance tuning in the next six months as most people do in their entire careers. A couple jobs later and I could write a few chapters of an advanced book on performance analysis (in particular perf logs tend to hide critical info in plain sight).

We mostly just don't care, and too many of us have honed or at least mislearned excuses for our behavior that business folks have no way to talk us out of. Most vexing for me is when customers threaten to leave over performance and the senior staff pull up some graphs that say we have done all we can. It's fairly straightforward to climb the ranks on such a project by proving them wrong. These sorts often leave 2-3x (that I know how to find, who knows what he real number is) on the table, which is often enough to satisfy the customer. It's often hard work but there's nothing magic about it.

</comment></comment></comment></comment></comment><comment><USER8> Been programming in Elixir for years now, I'd say 19 out of 20 engineers I've spoken to don't really leverage BEAM.

There's a significant gap between "I write Elixir" and "I leverage BEAM". I'm in the former camp _still_. I just can't find the time/opportunity to dive in and use it to my advantage.

Testament to how performant and easy it is to get things up and running in Phoenix I guess. I believe once this secret sauce is spread far and wide, we'll see uptake in Elixir the likes of which the world has never seen the likes of which.

<comment><USER9> > I'd say 19 out of 20 engineers I've spoken to don't really leverage BEAM.

That's because most tasks we as engineers write rarely have the need for distribution or parallelism. It's mostly "get data A, get data from B, mix, save resulting data C". nd when you need to do that in parallel, you through it in Kubernetes, or Apache Beam.

It's even more pronounced in web/microservices situations because the web server takes care of all of that for you.

<comment><USER6> Apache Beam I see, but what has Kubernetes to do with getting and mixing data in parallel?

<comment><USER9> You an automatically scale instances up until there are enough to process incoming requests.

</comment></comment></comment></comment><comment><USER10> The BEAM is great, but the Elixir language itself is really what spoiled me. After having written ruby for years, I really enjoy what the Elixir language has to offer. Pattern matching[0] and the pipe operator[1] eliminate a ton of intermediate variables. Functional programming took a while to get used to, but I'm really starting to like thinking immutably. Now that I'm more advanced in the language, I'm starting to get into the Lisp style hygienic (and unhygienic macros)[2]. The Elixir standard library is really well done, everything is consistent and well documented. Elixir language level built in libraries like ExUnit[3] and Embedded Elixir (EEx)[4] are very high quality. For me the BEAM is just the cherry on top, I really like the Elixir language itself!

[0] [https://elixir-lang.org/getting-started/pattern- matching.htm...](https://elixir-lang.org/getting-started/pattern- matching.html)

[1] [https://elixirschool.com/en/lessons/basics/pipe- operator/](https://elixirschool.com/en/lessons/basics/pipe-operator/)

[2] [https://elixir-lang.org/getting-started/meta/macros.html](https://elixir- lang.org/getting-started/meta/macros.html)

[3] [https://hexdocs.pm/ex_unit/master/ExUnit.html](https://hexdocs.pm/ex_unit/master/ExUnit.html)

[4] [https://hexdocs.pm/eex/EEx.html](https://hexdocs.pm/eex/EEx.html)

<comment><USER11> Can you recommend any learning materials that were particularly useful to you?

<comment><USER12> For me personally, _Programming Elixir_ and _Programming Phoenix_ , from the Pragmatic Bookshelf, were both very useful.

Quite a few of my students have said great things about _Phoenix in Action_ , from Manning, and it looks to me like a fantastic resource for beginners. _Elixir in Action_ is also top-notch and will show you what's special about the BEAM.

<comment><USER13> To those out there learning from "Programming Phoenix", although is the best resource for lay of the land of Phoenix, the content is getting out dated with the rise of auth generator and the context model has also changed a lil bit. It takes diligence in following along and referencing the documentation to not get stuck.

Great book though.

<comment><USER12> Anything written after 1.3 is almost completely applicable today.

The auth generator is just a new feature. Learning how the pieces work from the book is still worthwhile.

My advice if you want to avoid confusion as you're learning is to just use the same version of Phoenix the book does! (1.4 in this case)

After you go through it, you can follow the official upgrade guides in just a few minutes.

<comment><USER14> I'll add that learning how to roll your own auth with the book and /then/ using the auth generator is a great learning experience.

</comment></comment></comment></comment></comment></comment><comment><USER15> For those like me who may have been wondering, 'BEAM' is just the name of the Erlang VM: "Bogdan/Björn's Erlang Abstract Machine"

</comment><comment> dynamite-ready I've written a decent amount of Elixir for a personal project, and have come to a few conclusions.

For a start, it's very different. That will become self evident if you try to learn either Erlang or Elixir, when coming from a language like Python/C++/etc (and though Elixir looks a lot like Ruby, it's still more like Erlang, tbh). So that can be classed as a negative.

Secondly, fault tolerance in Erlang/Elixir/OTP is not quite as simple as commonly billed. Isolated processes and supervision trees can give you a lot of mileage, but the model is not a silver bullet. I found I still needed to create an error boundary to make an application 'Do the right thing' in very specific error conditions (for example, not killing a running process, when making a single, accidental RPC with the wrong arguments).

Apart from that though, I can't think of much else negative to say about Elixir.

The tools for introspection are amazing. I recently debugged a production issue by opening a console connected to a running system, and calling the functions I suspected to be failing to see what they were returning directly. Not sure if any other language has that facility.

Then there's all the stuff built into Elixir, like the test suite, the build tool, and even an official linter / code formatter.

Erlang interoperability is also a brilliant design decision. Anytime I need to use a library for a task, I look through the Elixir community first. But if I can't find something suitable, there's often Erlang code out there with years of Dev time behind it.

This is just a mere fraction of all I want to say about the language. And most it is very positive.

<comment><USER16> >I recently debugged a production issue by opening a console connected to a running system, and calling the functions I suspected to be failing to see what they were returning directly. Not sure if any other language has that facility.

Clojure has it.

<comment> dynamite-ready It does get a little more involved in Erlang/Elixir though. It has a built in GUI program called 'Observer' that can even print out a real-time visualisation of your object and process tree. Amongst many other things.

</comment></comment></comment><comment><USER17> I still write Elixir only, and don't really leverage BEAM (not yet) but the sheer performance of the system amazes me. Phoenix is very largely scalable, and makes some really clever decisions in terms of architecture unlike Rails/Django.

The learning curve has been a little steep and there is a paradigm shift but I've encountered situations where it really ended up helping me navigate through code with precision and clarity. I think Phoenix is the best candidate for a Web Framework as of today, if one desires rapid development. The standard library is rich, documentation is solid, and features like async tests etc are an added bonus.

I'm using Phoenix for our side project and it is swift as a rocket.

<comment><USER18> > I still write Elixir only, and don't really leverage BEAM (not yet)

Since you're using Phoenix you are already reaping the benefits of the BEAM because Phoenix helps you use good patterns with regard to process isolation. In many web apps you won't really need to deal directly with OTP for quite a while (unless you're doing something rather specialized).

<comment><USER17> Well, yeah, I'm aware of the fact that I'm leveraging BEAM. What I rather meant was I haven't gotten creative with using the OTP ecosystem for my project just yet.

Sorry I should have framed it better.

</comment></comment></comment><comment><USER19> How does BEAM handle system calls? If I have a million BEAM processes and each one calls stat(), what happens?

<comment><USER20> What do you expect to happen in other languages, when your program makes a million calls to `stat()`? Is that something that happens often? What kind of application needs that? Is there a language that solves this neatly?

(I'm genuinely curious, independent of my newbie elixir evangelism)

<comment><USER19> This problem doesn't arise in a 1-1 language like C, because the thread spawning will either fail or have obviously terrible performance. These languages push you into using work queues, etc. immediately.

But in languages with green threads (like Go), you CAN spawn a million threads and performance will be fine, until you make a syscall.

An example of how this can happen: I once wrote a Go tool that walks the filesystem. I spawned a new thread for every directory, thinking that Go only has ~N kernel threads so performance will be fine. I was shocked to see that, in this scenario, it spawns a kernel thread for every green thread!

</comment></comment></comment><comment><USER21> 100% in agreement.

One nit: OTP instead of BEAM. The supervised processes and modules as application is due to the OTP framework. What that means is that, it's possible to have it in other programming languages as well. Or not, and managed the application with some OS process manager.

</comment><comment><USER22> > Some teams are happy to use Elixir to write web applications, to fit it into > their pre-existing microservice deployment model. I urge developers to reach > for those bigger thoughts that fault tolerant lighweight processes enable. > You can consider each process a logical microservice, but you don't need the > friction of deploying it separately, and serializing to/from json, and > containers, and orchestration, and distributed logging, et.al. You can > deploy an entire system of millions of interacting logical microservices in > a single BEAM release.

This resonates with me instinctually, but I'd love to learn more. What _disadvantages_ would there be in jettisoning real microservices in favor of Erlang's "logical microservices"?

<comment><USER23> Release independence? If one team has a regression and needs to roll back their week's release, everyone gets rolled back too.

<comment><USER24> From my experience with microservices, this is kind of a utopia that never happens. What actually would happen is that everyone else's service is dependent on the new feature that the problematic service delivered, so they're all going to be rolled back anyway.

Maybe in very large, mature companies this happy land of backwards compatible, fully independent microservices, deployed totally independently, is possible. But in startups tearing forward at full speed with limited crew it's a pipe dream. The better solution is for proper source control management, so problematic changes that are actually independent can be reverted effectively, leaving everything else alone.

<comment><USER23> It's certainly true that microservices can be set up in such a way that they're really a distributed monolith. But you don't have to be a large, mature company to apply microservice best practices. A foundational best practice of microservice development is that each service has a staging environment that uses the prod endpoint for every service it depends on, and this is where you run acceptance tests prior to release. This way the staging behavior before release aligns with the prod behavior after release.

The week N release for microservice A won't have a dependency on a new feature in the week N release for microservice B, because the staging environment for microservice A (at release N) calls into the prod environment of microservice B (at release N-1), so the release-blocking tests wouldn't have passed.

It is a common and critical antipattern to have a single staging environment across multiple services, where each service calls the staging environment of each other service. This is a disaster waiting to happen for just the reason you describe.

</comment></comment></comment></comment><comment><USER25> I'm reading all this and wondering what BEAM is.

<comment><USER26> The BEAM is the virtual machine that runs Erlang, Elixir, and a handful of other languages. It's basically a system for managing a massive number of small, independent processes that communicate through message passing.

</comment></comment><comment><USER27> Is this a jekyll blog? Looks very sharp.

<comment><USER28> It's the Architect Github Pages/Jekyll theme: [https://pages- themes.github.io/architect/](https://pages-themes.github.io/architect/)

</comment></comment><comment><USER29> Great coincidence since I wanted to attract attention of HN crowd earlier today to another BEAM language: Lisp Flavored Erlang (LFE)

"[LFE] is the oldest sibling of the many BEAM languages that have been released since its inception (e.g., Elixir, Joxa, Luerl, Erlog, Haskerl, Clojerl, Hamler, etc.)"

I find this little example really cool:

[https://lfe.io/books/tutorial/concurrent/dist.html](https://lfe.io/books/tutorial/concurrent/dist.html)

I've drank the Lisp kool-aid when I had to learn Clojure, but LFE is so much more powerful for building highly concurrent and distributed systems due to it being based on BEAM and having zero interop overhead with Erlang, while being a feature-complete Lisp.</comment>