Introduction to Augur, an open-source, decentralized betting marketplace - <AUTHOR> https://litepaper.com/resources/intro-to-augur <comment><USER2> Augur will probably be used for betting but really it's a prediction market.

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

Prediction markets are an interesting tool for determining the most likely answer or result for almost any question. Some economists hope that we could use prediction markets to make difficult political decisions. Many companies already use them internally.

Sadly there's only one prediction market that's accessible from the US, and it's an academic project with a 10% fee on profits and a 5% fee on all withdrawals. It's also limited in what you can predict or bet about. Augur or some other decentralized solution is probably our best bet for developing prediction markets further.

I really think these markets are the key to overcoming our failure to make good political decisions. It is a wild idea, but I don't know of any other solutions that directly incentivize truth-seeking.

Vitalik Buterin actually wrote about these concepts in more length

[https://blog.ethereum.org/2014/08/21/introduction- futarchy/](https://blog.ethereum.org/2014/08/21/introduction-futarchy/)

<comment><USER3> There is a much larger global prediction market that comes with its own set of nuances and quirks, and that of course is the stock market. You can even get involved with no fee at all through Robinhood, but you will have to fill out some annoying and potentially costly IRS forms.

If I could paraphrase Charlie Munger, in the stock market, the only people who are successful long term are those who bet massive sums, very rarely, when they are sure that the price of a security is severely and unproperly valued.

If Tesla is currently trading at $355, and you have evidence for yourself that it should be worth something like $0 or $3,000, then this would be an example of the current market prediction being extremely wrong.

A stock's price is really just a prediction of the company's future cash flow in the event of profits, losses, sale of assets, so on.

<comment><USER4> Actually, there are also people [0, 1, 2, 3, 4, 5] who are very successful betting small sums (relative to their total investable capital), _very_ frequently, on securities they believe are slightly over or under valued.

[0] - [https://www.rentec.com/](https://www.rentec.com/)

[1] - [https://www.twosigma.com/](https://www.twosigma.com/)

[2] - [https://www.citadel.com/](https://www.citadel.com/)

[3] - [https://www.mlp.com/](https://www.mlp.com/)

[4] - [https://www.deshaw.com/](https://www.deshaw.com/)

[5] - [https://www.worldquant.com/](https://www.worldquant.com/)

<comment><USER5> Depends deeply on the time period and this list is most likely due to survivor bias. See Warren Buffet's hedge fund bet as a good semi recent example.

<comment><USER6> He was daring a human-managed fund to outperform S&P500. I don't think Warren is an authority on market's microstructure and quant trading, which these companies exploit.

Basically on very quick trades machines outperform humans. For long term investment a prediction market (stock market index) outperforms humans and machines.

</comment></comment></comment></comment></comment><comment><USER7> The main problem on Augur right now is volume. Only a few markets have orders to trade against, and it seems like the cryptocurrency markets are the most actively used. I tried to use the platform to make a small bet against Tesla, but obviously you need someone to take the other side of the bet.

Still a very cool platform. A lot of people use predictions.global to get a birds eye view of the markets.

[https://predictions.global/](https://predictions.global/)

And the Discord channel is always busy. The mods there are very responsive.

[https://discordapp.com/invite/faud6Fx](https://discordapp.com/invite/faud6Fx)

<comment><USER8> I think the "volume" problem breaks further into two critical sub-questions:

1\. A big selling point of these markets is that there are theoretical commercial value to predictions- i.e. a company could get information of the likely success of their new product line ahead of time, to help them make strategic adjustments. However, Robin Hansen (one of the top economists working on betting markets) says, counterintuitively, that industries have been very luke warm about actually doing this in reality, for various psychological and economic reasons (he got into this in his econtalk interview I think)

2\. Suppose bets on Augur start ramping up- How do we know these are real bets from real customers? The Augur company has immense funds on hand and its easy on blockchains to simulate fake volume through anonymous accounts. I have no reason to doubt the ethics of the Augur team, but it's unfortunate that if their marketplace starts taking off that it'll be so hard to tell how organic the growth is.

<comment><USER9> Why is 2 a problem? I'd love to use Augur, but the liquidity is low. If the Augur team wants to seed it with liquidity and good bets, I'm game to take the other side. This is also how many startups start out -- for example, the Reddit cofounders faked a lot of usage and self-submitted posts in order to get early traction.

<comment><USER8> Sure, it's fine for them to be market makers, if they're transparent about it.

</comment></comment></comment></comment><comment><USER10> Misplaced hype.

"Today, Augur had 30 active users and 123 transactions in the last 24 hours. The market cap is roughly $269.2 million. That means that each active user is now worth roughly $9 million."

[https://mobile.twitter.com/lawmaster/status/1027188396291235...](https://mobile.twitter.com/lawmaster/status/1027188396291235840)

<comment><USER11> Yeah, and the only real crazy stuff that happened was people put up "death" or "assassination" contracts. Famous person X will die in 2018.... The problem with decentralized betting like this is who is the authority that determines who the winner is. External and honest oracles are hard.

<comment><USER12> Solving that problem is pretty much Augur's claim to fame. It's a combination of outcome reports by randomly-selected REP holders, possible disputes by bettors who post a bond and trigger a larger group of REP holders, and (after several escalating rounds of that) a potential fork of the whole thing on the theory that the version of REP that reports the truth will have more market value. (I think in that case REP holders have to choose which fork they'll migrate to.)

Whether this actually works over the long haul, we'll have to see, but it's a pretty interesting experiment.

<comment><USER13> It looks like Augur has no way to validate the "REP holders" though?

This means a sybil attack can be launched by anyone behind the Augur project (assuming they set aside large reserves of REP for themselves, how would anyone know?), or anyone who acquired thousands of ETH in the presale for $0.50USD, or anyone with excessive capital can attack any Augur "prediction" and manipulate the outcome in their favor.

Augur essentially gives total power to manipulate "truth" though tokens / capital.

(edit, downvoting to suppress information? please explain why this post is wrong)

<comment><USER12> They make no attempt to validate individuals. The more REP you have, the more influence you have. It's not exactly a sybil attack since you can't add influence without cost.

I was about to say they do depend on a REP-weighted majority attempting to maximize the amount and value of the REP they hold. But that's not actually true since the forking mechanism lets a significant minority fork off in their own direction. This is the final backstop that (theoretically) prevents outcome manipulation by a majority REP holder; the general public can just switch to the fork that told the truth. On that fork, the liars will no longer hold REP.

This would be a big deal but it shouldn't happen often, since the credible threat helps dissuade liars in the first place; they'll lose money and fail anyway.

But I don't know what happens to the ETH at stake in this scenario.

(Btw it wasn't me downvoting, these are good questions. I'm not with Augur and don't even hold REP. Have an upvote.)

</comment></comment></comment></comment></comment><comment><USER14> > Settlement - once the reporting has been complete, and it's verified by the > community, the bettors who bought shares on the correct outcome are paid - > as is the market creator.

Can anyone comment on how settlement actually works? A persistent problem with new tokens is handwavy explanations of absolutely core features. With a human legal system, humans can argue over intent. When "code is law", pure intentions alone will not do.

I would love to use a functioning prediction market, and I believe it may be one of the legitimately useful non-money applications of blockchain. But I really wish they would focus on explaining how it solves the key problems rather than marketing the concept.

<comment><USER15> Likewise, I was trying to figure this out. And haven't yet. In most prediction markets the reason for centralization is as the market maker or arbiter. For example predictit.com will definitively say if some testified or not during the market term [0]. So arguments over what testifying means get handled fairly.

In augur the community seems to determine this based on how much they spend to reconcile the transaction. So lots of people could tip the scale. On big tickets this would likely attract attention, but on smaller items it could be a problem unless members of the community have reputation and identities.

It seems like, from reading the faq [1], that it really just boils down to a proof of stake consensus method with multiple rounds of dispute before and after a market is finalized. With a documented fork procedure. So if consensus gets manipulated, it is very clear and the market itself loses reputation through that they tried to design in their fork process. But would also get likely checked by a "hard fork" away from whomever is running that particular blockchain and manipulating accounts.

The "ethics arbitrage" opportunity would be to look for markets where the outcome is realistically fuzzy "did someone lie" or has an invalid outcome and tip the scales without detection.

[0] [https://www.predictit.org/Contract/9262/Will-Trump- testify-t...](https://www.predictit.org/Contract/9262/Will-Trump-testify-to- special-counsel-in-2018#data)

[1] [https://docs.augur.net/#tentative- outcome](https://docs.augur.net/#tentative-outcome)

<comment><USER16> Yeah, so I read the white paper -- fairly closely at first, but as I got bogged down in the details of 'first public reporter' and the formula for the size of the 'dispute bond' and disputes etc., it became very clear that despite all of the thought and hard work that went into this, that the link between the real world and the reported outcome is reliant on trust and community norms.

And the more one thinks about it the more obvious it becomes. Two ways to think about it:

1) The initial market is betting on an outcome -- how is that different from the dispute resolution phase, which can also be reduced to betting on an outcome.

2) Imagine a purely imaginary event -- and read the whitepaper with that in mind. All of the the processes set up still function perfectly -- as designed. In fact there is no need of a real event. So if there is no need for a real event, why is there an impetus to report a real outcome even if there is a real event.

That isn't to say it can't work, but if it does it will be through trust and community norms, not Ethereum.

</comment></comment></comment><comment><USER17> For an interesting/insane/revolutionary application of this technology, check out Robin Hanson's futarchy[1], a theoretical governance structure which would use prediction markets to make decisions.

[1] [http://mason.gmu.edu/~rhanson/futarchy.html](http://mason.gmu.edu/~rhanson/futarchy.html)

</comment><comment><USER18> Augur is down to < 50 users.

[https://thenextweb.com/hardfork/2018/08/20/dapps-userbase- dr...](https://thenextweb.com/hardfork/2018/08/20/dapps-userbase-drop- blockchain/)

<comment><USER19> Please note that an "active user" is an active address( i.e one that has made a bet on the platform) in the past day.

This doesn't take into account users that made a bet in the past( most bets have long term horizons, >4 to 5 months) or users that have a current position but aren't betting anymore or users simply observing the markets( looking at a front end like predictions.global)

Also note that active users is probably not a great metric for this application, as it's not a consumer app/ time sink thing.

Money at stake is much a better metric

<comment><USER20> What's the money currently at stake?

<comment><USER21> According to predictions.global: $1,358,603.63

</comment></comment></comment></comment><comment><USER22> "Reporting - once an event has happened, Reporters are members of the network who verify the outcome. They place a bet on how much they believe their reporting is true. If they're right they get a share of the pot. If they are wrong - or are at odds with how other reporters have documented the outcome - they are penalized and lose REP."

Isn't the reporting part qui susceptible to a sybil attack?

<comment><USER23> Reporting weight is based on amount of REP held, not just anyone can report and not all contributions are equal.

[https://www.augur.net/whitepaper.pdf](https://www.augur.net/whitepaper.pdf) covers the security assumptions pretty well.

</comment></comment><comment><USER24> The maker of Augur, Joey Krug, recently posted an analysis[1] providing the arguments why Augur is at the moment still too expensive. For me this is very insightful into why Ethereum applications are not yet super successful.

[1] [https://medium.com/@joeykrug/fees-fees-and- fees-8939c2b5ecae](https://medium.com/@joeykrug/fees-fees-and- fees-8939c2b5ecae)

</comment><comment><USER25> Arbitrage opp:

Write a program to take the opposite side of any bet that you can hedge in the public market.

For example: if someone bets against Tesla, and you can take the opposite side, but (more) cheaply offset your risk in the option market.

<comment><USER26> The only problem is you don't know what the value of ETH will be 2-3 days in the future.

<comment><USER27> You could hedge the value of ETH in fiat markets, or you could wait until Augur supports betting with Dai.

<comment><USER28> How would you hedge the value of ETH? I'm not aware of a way to short it.

<comment><USER19> Multiple ways to short ETH, as mentioned by another user. Including on augur itself!

See: [https://augur-cfd.com](https://augur-cfd.com)

<comment><USER28> Sure... in theory. I'm skeptical that there is going to be anywhere near as much demand for 5x levered exposure to ETH as there is for shorting ETH.

</comment></comment></comment></comment></comment></comment><comment><USER29> "In the summer of 2018, assassination markets became popular among bettors. If those markets are seen to incentivise people to take illegal action, Augur could be shut down completely."

<comment><USER12> I'm having a hard time seeing a way assassination markets are actually a good business model for assassins.

If the prediction is tightly bounded (e.g. "Mr. X will be killed on Sept. 3, 2018") then you warn the victim.

If the prediction is loosely bounded ("Mr. X will be killed within the next year") then the odds won't be nearly as good, since many non-assassins may bet in favor. The assassin will have to put up a larger bet for a given payoff. Having done that, the assassin wins even if a different assassin does the work, so there's a public goods problem among assassins, and they all have some incentive to stay home playing Call of Duty instead.

<comment><USER30> make a market, buy up all the yes shares when the price is low, kill the person, collect your reward.

<comment><USER7> Why would anyone take the other side of that bet?

<comment><USER31> Because they don't think you're gonna go out and kill someone.

<comment><USER7> Still they would get low odds and the risk/reward ratio makes that a terrible bet since it would only take one accident to lose all your money. For like a 1% return.

<comment><USER30> if you think the odds of something happening are lower than the share price, you sell / short / buy "no". if you think they are more likely, you buy. the odds are 100% if you plan on killing someone, and surely some people will think its less than 100%. they will buy "no" shares because they think that its less than a certainty that someone is going to be assassinated.

</comment></comment></comment></comment></comment></comment></comment><comment><USER32> A real challenge for prediction markets (with real-money stakes) will be to get sufficient liquidity on relatively small-ticket items outside of sports and politics.

For such items platforms like metaculus.com and Good Judgement seem more likely to provide more useful predictions, but without the ability to hedge against events that prediction markets have.

I discuss this in depth in this podcast: [http://rationallyspeakingpodcast.org/show/rs-214-anthony- agu...](http://rationallyspeakingpodcast.org/show/rs-214-anthony-aguirre-on- predicting-the-future-of-science-a.html)

</comment><comment><USER33> Hard pass. Blockchain and Gambling still don't really go together yet. Moreover, I wouldn't touch anything intersecting this space that doesn't have Rick Dudley directly involved. Not only does he have a 15 year headstart working on some of these problems, but he also owns patents on provably fair online gaming systems.

The site acts like the main challenges are legal when really they're technical.

<comment><USER34> Have you actually looked at Augur? It is up and running and working well.

<comment><USER35> So was MtGox, for the longest time!

<comment><USER7> That's not a fair comparison. Mt. Gox grew too quickly and couldn't keep up with the massive security requirements for a cryptocurrency exchange. Not to mention they may have had employees embezzling money. Augur has taken years to refine their strategy and do the launch correctly, and the code is working just as expected. There could still be issues like with any innovation but to compare this to Mt. Gox is not at all fair.

</comment></comment></comment></comment><comment><USER36> The article says Augur's main advantages are 1) it's decentralised so anyone can create markets and 2) you don't have to trust a third party to distribute funds after a bet is over.

The only problem I could really see being solved by Augur is that maybe it can work around regulations that prohibit many forms of "bets". But the article also says that Augur is facing legal challenges already, and it will be determined in September whether they can continue.

Its decentralised, "illegal" nature reminds me of BitTorrent. Sure, there is money to be made. But the real change will come when companies akin to Netflix figure out how to do it centrally and legally.

<comment><USER37> I don't think gambling is an area where you can figure out how to do it legally the way Netflix was able to offer digital streaming. The whole business is illegal in many places, or a state monopoly.

</comment></comment><comment><USER38> Augur may not have many users at the moment... but i can imagine a near future where workers displaced by automation could make money on this platform. Who else is going to have time to place a bet and contantly monitor these markets? Or, more realistically the markets will be taken over entirely by bots and AI who also operate using smart contracts. The bots would be able to analyze billions of datapoints scraped from the web and pay for api access via crypto. How could a human ever compete? Welcome to the future.

</comment><comment><USER39> > September 2015 - Augur's token sale raises $5.2 million

Conspicuously missing from this article: Augur's business model. They presumably get a house take?

<comment><USER40> No they do not. REP token holders get a "house take" in some contexts. Augur isn't a company, so a business model doesn't really make sense. Augur is a protocol, and the Forecast Foundation is a non-profit that supports some development.

<comment><USER39> > Augur is a protocol, and the Forecast Foundation is a non-profit that > supports some development.

Who got the $5 million?

<comment><USER26> > Who got the $5 million?

The foundation to fund development (which they kept in Ether so is much more valuable than $5million when the sale happened).

He's right, it's a protocol. There is no method for them to take a cut. The protocol gives the fees to the REP holders who report the outcome by staking their REP tokens.

</comment></comment></comment></comment><comment><USER41> Not sure when this paper was written, but AFAICT Augur was launched with a lot of noise, caused a brief storm in a teacup as assassination markets were mooted/predicted, and then entered a steep decline as it became apparent (as with most blockchain-relates projects it seems) that nobody was actually going to use it, and the daily active users number was only in the double figures.

</comment><comment><USER42> Is the primary value proposition of Augur (at least from a USA perspective) regulation evasion, and the ability to participate in betting markets at scale? Supposing the USA legalized betting markets, would Augur still have a value proposition over legal (but centralized) betting markets?

<comment><USER43> Given online betting is legal in lots of places, you can answer that question by seeing if people from outside of the USA will use Augur.

</comment></comment><comment><USER44> What happens when your stake is big enough in an outcome, that you start pulling strings, legal or not ,for that outcome to happen.

<comment><USER45> The same (shady) things that happen today on non-crypto prediction markets (sports betting, options chains, etc.)

</comment></comment><comment><USER46> Prediction markets are a really cool idea.

I don't know that there is much value to running it on the blockchain though.

</comment><comment><USER47> Doesn't this present huge challenges wrt whitewashing?

</comment><comment><USER48> What if the subject of a prediction market is a matter that is subjective and/or politically charged? Suppose, for instance, the question asked is "Is the Trump presidency a net positive?", or something even more seemingly factual like "Did Hillary Clinton commit a criminal offense?" or "Is there a correlation between race/gender and $desirabletrait?". Not only will reporters' votes likely correlate with their political affiliation, but even the incentive structure is not aligned with producing the truth if we only grant that people assign nonzero monetary value to their tribe's status rising (as would happen if a prediction market agreed with it).

</comment><comment><USER49> Wasn't this done already? I thought it was called bitcoin.

</comment><comment><USER50> I couldn't view the article because I'm not giving my email or joining any stupid cult just to read some new bullshit. What a stupid fail.</comment>


Perfect Rigor:the story of Grigori Perelman and Ponicare Conjucture - <AUTHOR> http://www.math.columbia.edu/~woit/wordpress/?p=2435

<comment><USER2> That should be spelled Poincare (Poincaré would be even better :) )</comment>


Google to End Mandatory Arbitration for Employees - <AUTHOR> https://www.axios.com/google-ends-forced-arbitration-1550776687-85b148b6-1469-4c1c-b76e-de774b248e40.html <comment><USER2> Collective action _can_ bring about positive change.

</comment><comment><USER3> More wealthy clients and plaintiffs for the lawyers to exploit, somehow it always ends with the parasites on top.</comment>


This is the truth about the Berlin Christmas market terror attack - <AUTHOR> http://www.mirror.co.uk/news/world-news/truth-berlin-christmas-market-terror-9500721 <comment><AUTHOR> "A civilised nation does not charge or jail anyone for a thing they MIGHT do. If we do it to terrorists, then we will do it to anyone. The simple and hard truth is that if a few thousand people want to kill you, one of them will probably manage it. They only have to get it right once.

Germany did not 'let Amri in', and nor did Italy. He was denied the right to remain in two nations which picked him up on their radar in exactly the way they should have done.

It was Tunisia who allowed a wanted criminal to roam free, and to leave its borders. It was Tunisia who refused to accept him back. It was Tunisia that took four months to issue a passport. And it's Tunisia that has a massive problem with terrorism, and an estimated 7,000 of its citizens who are members of Islamic State."</comment>


Undercover in North Korea: "All Paths Lead to Catastrophe" - <AUTHOR> https://theintercept.com/2017/09/04/undercover-in-north-korea-all-paths-lead-to-catastrophe/ <comment><USER2> Thanks for this lesson in history (follow the links to more details) and a story about the current system in Korea.

It is hard to imagine growing up in a totally isolated country and not knowing anything about the outside world.</comment>


On being a female on a male-dominated engineering team - <AUTHOR> http://bryanaknight.com/on-being-a-female-on-a-male-dominated-engineering-team/ <comment><USER2> As someone who was directly involved with hiring & managing Bryana let me set one aspect of this conversation to rest: Bryana's performance _across the board_ was top-notch, without qualification.

She commanded, and continues to command, respect from her peers for both her technical contributions on a very challenging tech stack, and product savvy in an extremely complex business domain. I was on her interview and there was no question of moving bars. It didn't even come up, because she was so very well- prepared. We just evaluated the performance and hired the best dev for the position, end of conversation.

On the job she spoke with authority and confidence in standups and earned every single bit of responsibility she ever got. Mention her to anyone who's worked with Bryana and you'll get the "eye roll of respect." She's so talented there was a minor running joke with a couple of us that we should keep a countdown clock of "minutes till I work for Bryana."

I only wish that early in my career I could have been half as well-rounded and with a fraction of the aptitude, product savvy and technical depth Bryana has.

<comment><USER3> Have you made any decisions about Bryana's responsibilities that were motivated by her gender, rather than her personal strengths?

Putting your only female dev in the position of representing your company at conferences suggests that she's taken on the role of "token female". If this is coincidental, and she just happens to be the best spoken developer with the least stagefright, then clearly there is no problem. However, if you deliberately chose her because she is female, then you are doing her no long- term favors, and are engaged in sexist business practices yourself.

new_corp_dev put it better than I could: "If the industry sees a glut of women speakers who are there only because they are women, then the industry will have no choice but to acknowledge their token status."

<comment><USER4> So what? What harm is there in showcasing female workers? There's nothing about being a 'token' that precludes competence.

<comment><USER3> There's nothing wrong with showcase female workers, as long as you aren't doing so BECAUSE they are female.

Since you are constantly accusing everyone here of the Straw Man fallacy, let me provide you an example of an actual Straw Man argument:

>So what? What harm is there in showcasing female workers? There's nothing about being a 'token' that precludes competence.

<comment><USER4> Um, we must have different ideas of what that phrase means. "A weak or imaginary opposition, set up to be easily refuted". I'd have had to set up something, for that to be the case. Instead of, just exploring the previous comment's setup.

</comment></comment></comment></comment></comment><comment><USER5> Woah there, team. Lots of comments in here to the tune of "the support for her is sexism!"

This blog post is about a specific person and her experience. She tells you up front that she was nervous about this. Her management encouraged her to go to conferences, _and that was exactly the right response to her personal nervousness_.

There's a lot of cases where the broader social context becomes part of a person's emotional landscape. A good manager will recognize this (just like any other barrier to working effectively) and balance out doubts with encouragement. The trick is look for possible problems, and management that knows how to look for these problems and help with them is doing their job well.

</comment><comment><USER6> Bryana refers several times to a fear she has been chosen or favoured due to her gender, and because of the positive discrimination we have allowed to happen in our industry.

Positive discrimination is not positive, because discrimination is never positive, no matter which group it favours. And here we see the consequences - a cohort of women who will suffer the paranoia of not knowing whether they were selected on merit. And a cohort of men who will have their misogynistic prejudices reinforced because the bar was visibly lowered for women.

<comment><USER7> Exactly. When an entity (i.e. a company, tech conference, etc.) chooses someone for any reason outside of merit, it's discrimination, and marginalizes the hard work of others.

<comment><USER8> This logic falls appart almost immediately. A couple immediate counter examples: Two candidates for job, one objectively brilliant but an arrogant SoB the other more modestly skilled but jells with our culture. I hire the second, and the first can take is "hard work" and beat it.

Two more candidates, one again is more technically qualified but the second grew up in a market Im targeting for expansion. Again, I take the second because the circumstances of his birth are worth more to me than difference in developed ability.

Every choice made is a combination of hundreds of culminating value judgements and to pretend that we can create some objective score based on merit is intellectually dishonest; to pretend that we want to ignore the other factors is unhealthy.

<comment><USER9> Thank you for that reply. I always favoured meritocracy, but im currently running into this "outside" world, the challenges the outside world poses are fascinating. People are so complicated, it should be a science.

</comment></comment></comment></comment><comment><USER10> While this is an interesting article, I have a minor quibble with the title - does the author really mean that her team is "predominantly male", which has a very different meaning than "male dominated"?

One just expresses a ratio of genders, whereas the other implies a distinct control and power dynamic.

<comment><USER11> Given that it was 100% male, calling it male dominated is also true by default.

Male dominated also means "predominantly male", though, in common usage.

</comment></comment><comment><USER12> Turns out, it's just like being an engineer for everyone else.

</comment><comment><USER13> She says she was encouraged to apply and speak at conferences, and that management would campaign for the whole team to attend any conferences where she is accepted to speak.

> This may seem like special treatment or in some ways unfair. "Reverse > sexism" some might call it. I don't see it that way. This industry treats > women differently, so my managers treat me differently in the exact opposite > way the industry does.

I would not call it "reverse sexism", because it is is just plain sexism. Of course the author doesn't "see it that way", despite acknowledging it, because the author directly benefits from said sexism.

If the author is being encouraged to apply for and accepted to speak at conferences primarily based on their gender, then the industry's reaction will be to expect that women speakers are token speakers, and this will _set back_ women in the industry.

Embrace differences, embrace diversity, but in the long run special treatment does not benefit anybody.

<comment><USER14> In critical race theory ([https://en.wikipedia.org/wiki/Critical_race_theory](https://en.wikipedia.org/wiki/Critical_race_theory)), the main tenet is that racism is the combination of discrimination and power. Everyone can do negative discrimination versus anyone based on race, but it becomes racism when the party that does the discrimination has power over the party being discriminated again. If you apply this schema to patriarchy, one cannot call positive discrimination "reverse sexism" or "sexism".

I agree with you that "special treatment" does not benefit anybody, but there is so much misogyny (aka "special treatment") that counter-treatment is not just desirable, but necessary.

<comment><USER15> >one cannot call positive discrimination "reverse sexism" or "sexism".

Positive discrimination for one person is negative discrimination against another, of whom the discriminator has power over the discriminated. So it still fits as being a *ism.

That is assuming you even accept the whole 'power + mistreatment' bit.

<comment><USER16> No - the actor in this scenario, the one with power - is not the male or female engineer, but rather the employer or conference coordinator. They may very well be male, but they are giving the female engineer, who as a class have less power then the class of male engineers a leg up in getting an opportunity to speak.

The male engineers experiencing what you call reverse discrimination are still in a position of power as a class.

<comment><USER13> Giving someone an opportunity based on a protected class, which denies that same opportunity to someone else of that protected class, is discrimination. It is treating someone negatively based on their protected class. It's the textbook definition of discrimination.

Critical race theory is as effective at hiding that fact as a Klu Klux Klan white hood.

</comment></comment></comment></comment></comment><comment><USER17> About the "assertiveness" part - no, I think most women have it totally wrong on this.

When you say that men are assertive and women are not, you are in fact talking about a subset of men - the extroverts - who are assertive. In reality, and in particular in the software world, you'll find a lot of introverted men who are much like you - they don't feel comfortable speaking up. It is just that they're not very visible because they aren't heard.

In my opinion, assertiveness is more of a personality issue. And it is ridiculous that we expect everyone to be assertive - it does not improve your ability to code in any way.</comment>


GHC 8.2 Released - <AUTHOR> https://ghc.haskell.org/trac/ghc/blog/ghc-8.2.11-released?utm_content=buffer256fb&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer <comment><USER2> > Compact regions, allowing better control over garbage collection in the > presence of large heaps containing many long-lived objects.

Can someone explain how this feature works and/or how much impact it has on Haskell's feasibility as a performant, i.e., game engine or real-time application language?

<comment><USER3> In a nutshell, you can create a region and add data to this region and the GC will never look inside it. That is, as long as there is one external reference to _any_ object in this region, the whole region will be kept alive. This is most useful when you know beforehand that you will never deallocate this region of data anyway: it reduces GC latency. Another benefit is that this region can then be serialized to disk efficiently. Deserialization is pretty efficient as it involves as loading the whole thing into memory and fixing up pointers. Reminds me of the Emacs dump[1] though.

[1]: [https://lwn.net/Articles/673724/](https://lwn.net/Articles/673724/)

</comment></comment><comment><USER4> > A new, more type-safe type reflection mechanism

Does this mean GHC does not erase types at runtime? Or perhaps what do they mean by "reflection" here; I only know it in the context of Java, where it more or less felt like an anti-pattern.

<comment><USER5> If I understand the paper correctly, reflection in 8.2 involves some crafty use of GADTs and compiler primitives to create a type descriptor of sorts that allows you to decompose values at runtime in a typesafe manner, while still allowing for erasure.

Paper: [https://www.microsoft.com/en-us/research/wp- content/uploads/...](https://www.microsoft.com/en-us/research/wp- content/uploads/2016/08/dynamic.pdf)

Package: [https://downloads.haskell.org/~ghc/latest/docs/html/librarie...](https://downloads.haskell.org/~ghc/latest/docs/html/libraries/base-18.104.22.168/Type- Reflection.html)

<comment><USER4> Oh wow this is going to be a joy to read, thanks! Only a couple pages in and it already looks well-written and thorough.

Also there's this: "This paper is literate Haskell and our examples compile under GHC 8.0." A 26 page, typeset paper is certainly the longest example of a literate Haskell program I've come across! Wow.

</comment></comment></comment><comment><USER6> Cue a full month of regular busloads of archlinux package updates...

</comment><comment><USER7> This is an impressive list of new features! Well done to all involved!

</comment><comment><USER8> Where can one find more information on the module system? The release notes don't seem to mention it.

<comment><USER9> Here is the proposal that landed in the ghc-proposals GitHub repo, written and hand-illustrated by Ed Yang. [https://github.com/ezyang/ghc- proposals/blob/backpack/propos...](https://github.com/ezyang/ghc- proposals/blob/backpack/proposals/0000-backpack.rst)

A/V fans will enjoy this talk by Ed, whose energy and enthusiasm for the extremely dry world of language module design knows no bounds. Also hand- illustrated! [https://www.youtube.com/watch?v=Rda6SNhznRs](https://www.youtube.com/watch?v=Rda6SNhznRs)

</comment></comment><comment><USER10> Guess soon we'll have a new release of the Haskell Platform...

</comment><comment><USER11> haskell's pretty cool, i guess. sometimes looks like an inscrutable APL descendant with all those wacky operators.</comment>


The Faking and Making of Precious Stones - <AUTHOR> http://recipes.hypotheses.org/4659 <comment><USER2> It's a diamond if it's carbon atoms in a tetrahedral arrangement, no matter whether it came from a hole in the ground or a factory. Fair enough to call a mix of linseed oil and pigment a fake, but the opening paragraph of the article tries to call the real thing, out of a factory, a fake.

The only real distinction between a factory-made and a mined diamond is that the factory-made diamond has a lower cost to the environment and is less likely to be associated with human suffering.

Edit: add reference:

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

<comment><USER3> > _The only real distinction between a factory-made and a mined diamond is > that the factory-made diamond has a lower cost to the environment and is > less likely to be associated with human suffering._

That's not true. There are other differences, including impurities, amounts of isotopes, optical properties (due to the impurities).

You're right about the human suffering part.

<comment><USER4> He's wrong about the human suffering part - diamonds come from every continent, not just Africa. The mines in Canada and Australia aren't experiencing any human rights violations. Even the African mines are largely controlled by the major miners in the industry. The diamond industry has changed a lot in the past 10-15 years. Blood diamonds is an old and outdated stereotype.

</comment></comment></comment><comment><USER5> Most precious stones can be made synthetically. For sapphire and ruby you can buy bar stock and sheets. Most diamond powder is synthetic, and cheap enough that it's on saws for concrete. Apple, of course, was planning to put sapphire coatings on their phones. Many checkout scanners already have sapphire window coatings. Home Depot, where people drag metal tools across scanners for all day, uses them.

The diamond industry, through its promotional efforts, backed itself into a corner. The goal was "flawless" diamonds, that is, perfect crystals. This put them into competition with the semiconductor materials industry, which makes perfect crystals. There are now 140mm diamond wafers. A TV expose:

[http://www.youtube.com/watch?v=JhnvZDLizlg](http://www.youtube.com/watch?v=JhnvZDLizlg)

Then there's the Cubic Zirconia Channel on daytime TV.

<comment><USER6> Surprised they say that synthetic diamonds are only 30-40% cheaper than natural diamonds. I was looking forward to being able to buy a diamond the size of my fist for £100. Wonder whether the lack of movement on cost is just the early players producing low supply and matching the existing natural diamond market, or whether that is a serious cost-based price.

<comment><USER4> It's not cheap (cheap meaning $100 for a fist sized rock) to make a synthetic diamond. Factor in the lack of demand for large fake diamonds as well. Almost all fake diamonds are used in manufacturing - drills, saws, etc.

<comment><USER7> Synthetic != fake. They're just as real as any other diamond. Fake diamonds are definitely not used in saws & drills, but synthetic ones are.

</comment></comment></comment></comment><comment><USER8> I think this story buries the lede. Which is that the author made a 'fake' emerald with things found around the 'house.' As opposed to the modern manufacture of crystals that are chemically identical to gemstones, varying usually only in their improbable purity. There is at least a modest wage in making 'fake' emeralds and rubies at that Renaissance Faire :-)</comment>


Gleam: A statically typed language for the Erlang VM - <AUTHOR> https://gleam.run/ <comment><USER2> As someone familiar with Rust who has been interested in Erlang/Elixir, but hasn't taken the plunge, this could offer an really nice compromise for helping to learn without necessarily needing to start from scratch. It definitely seems worth keeping an eye on!

Also, as an aside, I have to say that I'm a big fan of the proliferation of educational documentation written using the mdbook format. Since the compiler is written in Rust, I'd imagine that's where the author drew some inspiration from (much of Rust's documentation is written using that same format). It's easy to navigate, the code blocks render nicely, and I generally just find it pleasant to read.

<comment><USER3> Thank you for the kind words! I hope in future we will fit that niche nicely :)

</comment></comment><comment><USER4> See also: [https://github.com/purerl/purerl](https://github.com/purerl/purerl), an Erlang backend for PureScript, which is a lot more mature but unfortunately doesn't get the attention it deserves.

<comment><USER5> Nice. Didn't know. Which tools are better to work with this?

<comment><USER3> What do you mean by tools? :)

</comment></comment></comment><comment><USER6> Wow! So far this looks like the language I wanted to make! I wanted something like Elixir but with type declarations being part of the language as opposed to being annotations. I'll be looking at this all weekend! It's got the right ergonomics.

<comment><USER7> You might want to check Inko[0] out. It is still in alpha stage of development so you can probably contribute to it as well.

Inko is a gradually typed, OOP language which uses erlang like isolated processes that don't share memory for concurrency.

</comment></comment><comment><USER8> Looks interesting and quite approachable for someone familiar with C-style syntax. I was looking through the language tour and it's nice and succinct. A few things that came to mind:

1\. Can multiline strings be indented, with the indentation stripped out?

2\. Why do floats have their own operators?

3\. What's the rationale for lists and tuples being different, and not just allowing lists to include different types?

4\. How are module paths resolved?

5\. Pattern matching looks great!

6\. Function argument labeling looks great, I wish all languages did this!

7\. Type system looks simple but capable, but in the User example it looks like the LoggedIn constructor isn't namespaced to User, so what happens if another type has the same constructor name? Conflict? On the same note, can you extend custom types after declaration, by adding constructors? (A little like Clojure protocols)

8\. Can functions be overloaded, so you can provide multiple implementations for different argument signatures?

9\. Can you implement custom operators, so you can for example `+` custom types together?

Looks like a really nice language and I'm looking forward to trying it, but like others have mentioned I too miss the concurrency aspects given it's built on Erlang. Big kudos for including interop details in the docs right off the bat though, this is a big plus in the feature basket!

Great work, definitely going to follow this!

<comment><USER9> >What's the rationale for lists and tuples being different, and not just allowing lists to include different types?

Heterogeneous lists are a pretty advanced feature in the world of static typing. Since hetlists normally have to be fixed size anyways to do type-safe indexing, tuples are good enough for something like 99% of use cases.

<comment><USER10> In Erlang, lists are _linked lists_. The fact that tuples are stored in memory sequentially is a major difference from lists.

<comment><USER3> What data structure would you think of when you hear just "list"?

<comment><USER11> List is an access pattern, like a queue or deque. Linked lists are a data representation using a couple of pointers.

It's like the difference between a graph and an adjacency list or matrix. A list being a linked list is an implementation detail.

At least to me. Mostly because linked lists are in general, awful ways to store data.

<comment><USER3> It depends on what you want to do with them. They have constant time prepending and support structural sharing, both highly desirable features in many use cases.

</comment></comment></comment></comment></comment></comment><comment><USER12> Not an Erlang user, but I must say the syntax is beautiful.

I know, semantics before syntax, but if you can have both, why not?

Looks promising, love the ML-style pattern matching in particular, so clean and terse (wish Scala 3 would ditch the `case` keyword in match statements, but alas not happening)

<comment><USER3> Thank you! I'm glad you like the syntax!

</comment></comment><comment><USER13> Looks interesting. I only wish it used Haskell's type annotation. I've been learning Haskell recently and I'm really liking how easy it is to read and digest codes.

I feel like Haskell in general is yielding much cleaner code and once you start learning it, so much easier to follow the logic of a code and not get lost in all the noodles of commas, parentheses and unneeded brackets.

<comment><USER3> Hi! I'm the author of Gleam!

Originally Gleam had a more Haskell-like (or rather a more OCaml-like) syntax. Over time people generally expressed a preference for a more familiar C-like syntax, citing the unfamiliar syntax making it seem unapproachable.

Originally I thought these thoughts on syntax were unimportant (after all, syntax doesn't really matter) but after looking at the success of ReasonML (an alternative syntax for OCaml) and how it brought FP to a much wider audience, I decided that it would make sense to use this more C style syntax.

Gleam aims to be very accessible and welcoming to as many people as possible, so in this area we've gone for something I personally prefer less as it it may help others more.

<comment><USER14> Martin Odersky followed the same logic with Scala and he has since expressed some regret, especially as more and more people become familiar with Python, which is more succinct:

[https://github.com/lampepfl/dotty/issues/2491](https://github.com/lampepfl/dotty/issues/2491)

<comment><USER3> I remember that post, interesting stuff! :) I'm hoping to be more concise than Scala and Java, and to have a much simpler grammar. It is a tricky middleground to reach

</comment></comment></comment></comment><comment><USER15> The guy [1] who runs this project is super nice, about a year ago I was working on my own Rust based VM and he dropped in with a couple of helpful tips and ideas.

[1]: [https://github.com/lpil](https://github.com/lpil)

<comment><USER16> I can absolutely confirm this. A wonderful combination of patient, kind, and super-knowledgeable. He was a very good sounding board in the early days of one of my projects.

<comment><USER3> Thank you Adam! <3

</comment></comment></comment><comment><USER17> A little while ago I saw a conference talk about gleam. [1]

It was my favourite talk of the conference outside the keynotes.

The first ten minutes is a good high level introduction to erlang itself.

I've been meaning to check gleam out since, this HN post has served as a good reminder to do so.

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

<comment><USER3> Thank you so much! I was pretty nervous seeing as Code Mesh is my favourite coherence. I'm really glad you enjoyed it :)

</comment></comment><comment><USER18> Amazing. Adding the ability to do type driven design on top of the fault tolerance features of Erlang will make it easier to create correct AND fault tolerant applications.

Let it fail, but not when you already know at compile time that it's wrong.

</comment><comment><USER19> A related article from last year: [https://notamonadtutorial.com/an-interview- with-the-creator-...](https://notamonadtutorial.com/an-interview-with-the- creator-of-gleam-an-ml-like-language-for-the-erlang-vm-with-a- compiler-e94775f60dc7)

via [https://news.ycombinator.com/item?id=19547418](https://news.ycombinator.com/item?id=19547418) (but no comments there)

</comment><comment><USER20> A little disappoint that it doesn't have message passing, one of the most powerful weapons of the Erlang family. But the language looks clean and neat. I can understand it within couple of minutes

<comment><USER21> People have been trying for, IIRC, 15+ years to add a full-fledged type system to Erlang, and the distributed nature keeps defeating them. This problem may never be solved.

<comment><USER12> See Akka Typed (based on the Actor model) for an example of typed message passing in a distributed system.

Not sure what compromises were made, but it was a sore point for users of the library for years to throw around untyped messages when the host language (Scala) provided such a powerful type system.

<comment><USER3> Akka Typed is not capable of expressing everything Erlang's OTP commonly does I'm afraid, so it's not a complete solution here.

We do however have typed message passing libraries in Gleam that are in part inspired by Akka Typed.

</comment></comment></comment></comment><comment><USER22> I'm really happy the Erlang and BEAM are finally getting the attention / traction they deserve!

the language was kind of underappreciated or considered very niche for a long time

<comment><USER21> I came to Erlang (and HN) after this time period, but apparently there was a period during which the language appeared on the HN front page a ridiculous amount, sometime around 2010 perhaps?

With the rise of Elixir it's been getting a fairly steady stream of mentions here.

<comment><USER22> I'm starting to see the recent interest as well, which I just wanted to complement.

I've made myself familiar with Erlang around 2011/2012? encouraged by the writing this amazing book [1]. which is still around and super amazing fast introduction IMHO. unfortunately I have never implemented anything of significance with it. maybe its time :)

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

<comment><USER3> This is the book I learnt Erlang with! If it didn't exist Gleam probably wouldn't either.

</comment></comment></comment></comment><comment><USER23> I'm interested in Erlang, since I first heard about it when I wanted to write plugins or work on the Wings3D program back in 2003 or 2004. I chose playing with LFE over Elixir, because I prefer Lisp syntax to Ruby-like syntax, but limitations of the BEAM, and core have some gotchas for running a Lisp. I'd like to try Gleam. It looks clean, and I like the fact that it is typed. The Erlang/OTP and other BEAM languages work well for what they are intended for, but if you do any number crunching they are slow. The Elixir/Phoenix stack seems to be a great combo for web developers. I'll give it a try by compiling it on my Windows box with Rust, since my iMac Pro 27 is mid-2011, and my Linux notebook is busy right now for other jobs.

<comment><USER24> > The Elixir/Phoenix stack seems to be a great combo for web developers.

It's a great combo for more than that. I'm building a vm orchestrator on top of it and couldn't be happier (does everything from DHCP serving to virtualization library binding and resource matching). I do happen to have Phoenix in there, but it's for an entirely optional operator dashboard.

<comment><USER23> Is Phoenix only for the optional operator dashboard? I ask because I have not tried Phoenix. I've played with Elixir since it came out, but only Elixir.

<comment><USER24> yep, although I am working on rewriting the user frontend in Phoenix, that is a political hurdle to get out into the wild. Most people learn Phoenix, then elixir, but I also learned Elixir, then Phoenix, and I think it gives me a stronger handle on how the VM works under the hood.

</comment></comment></comment></comment><comment><USER25> Forgive me, I'm ignorant -- what's erlang for. "Concurrent applications" is the raison d'etre I see espoused. What's that mean?

Does it make concurrent applications easier to write? Does it make it easier to use the SIMD instruction set, how hard is it to get a function written in erlang to run on a gpu?

Is it like nodejs but more performant? I appreciate anyone who has answers here, I try to position all the relatively interesting things I don't have much time to dive in to in a mental model with opportunities for future promotion.

<comment><USER26> > What's that mean?

"Concurrent applications" as in the C10M problem ([http://c10m.robertgraham.com/p/manifesto.html](http://c10m.robertgraham.com/p/manifesto.html)): servers serving a lot of clients at once; usually with the added assumption of a diverse request workload (i.e. some requests are IO-bound, some are CPU- bound, some are long, some are short, etc.)

• WhatsApp used Erlang (on FreeBSD) to scale 50 engineers and ~1000 boxes to handling billions of chat-message transactions per second. ([https://www.infoq.com/presentations/whatsapp- scalability/](https://www.infoq.com/presentations/whatsapp-scalability/))

• A lot of modern financial infrastructure (banks, exchanges, etc.) is built on Erlang. If there's a financial system that can get away with not being _hard_ -real-time, chances are someone's considered writing it in Erlang.

• Many massively-multiplayer games have Erlang in their backends or their networking middleware.

• And, of course, the original point of Erlang was to route (millions of concurrent) calls in Ericsson backbone telecom routers. It can be deduced from Ericsson's continued work on Erlang's "megaco" H.248 application, that they're using Erlang in their LTE IPMS gateway appliances, to route cell-subscribers' VoLTE audio- and video-call frames.

> Is it like nodejs but more performant?

Node.js is decidedly bad at this type of concurrency (although its libuv _is_ used successfully in software like Nginx—it is rather Javascript's thread- isolation semantics that bottlenecks Node.js code, not V8 as a runtime.) A better comparison is with Golang. If you put Node and Golang on a spectrum of "ability to handle highly-concurrent heterogenous workloads", then Erlang is a point much further along that spectrum than either of them.

(Golang gets pretty far if the workload is _homogenous_ , though. And you can get even further still on that spectrum with custom C or JVM code; but in the process, you'll likely sacrifice either 99th-percentile latency, or lock yourself into coding in terms of state machines. Erlang sits an an optimum where you can just write blocking code in actors and it does the right thing, predictably, even when you have millions of actors.)

<comment><USER27> Can you say more about Go and homogeneous workloads? You might be referring to mixed IO- & CPU-bound tasks, and Go's former inability to preemptively schedule tightly written loops? (Solved along the way: [https://github.com/golang/go/issues/10958](https://github.com/golang/go/issues/10958))

Or something else?

<comment><USER26> Nah, just talking about the fact that Go doesn't scale well to using _millions of channels_ to talk to _millions of goroutines_ , each one executing as part of a small goroutine-cluster running independent functionality with its own requirements for data-architecture.

Imagine you took all the AWS Lambda functions of all the different Lambda users, compiled them together into one binary, and then ran that single binary on one huge vertically-scaled server, allowing all the Lambda tenants to hit that server to run requests against their own workloads in the address-space of that single binary. That's a clear "heterogenous workload": one where you've spawned a bunch of green-threads within your process, and those green- threads are all trying to do _different things._ It's a million little job- shops under one roof (with, importantly, only one "door" in and out, that everyone has to coordinate to share); rather than one big factory where a million workers each have a defined job and there's a big loading bay that is declared from the top to be exclusively owned-and-operated by one department.

Erlang handles the "million job-shops under one roof" use-case pretty well. Golang kinda-sorta handles it, but kinda falls over, too, because the Golang runtime (and the whole concept of reifying typed channels as objects) isn't tuned for the case where each task has spawned an ephemeral digraph of communication paths between ephemeral actors. Channels have a Golang-runtime- system overhead just for existing, a bit like processes or sockets do for the OS. So, like processes or sockets, you're not supposed to just create a channel for each little thing until you've got a million laying about; you're supposed to reuse or share them (and the goroutines they address) between multiple workloads.

Idiomatic Golang code is written in a more dataflow-y pipeline-y SIMD-y way (the "factory with a million workers" above), where you've got static "actors" sending massive amounts of work between them, perhaps tagged with the request they're "about." When this is the 'data architecture' of your code, the Golang runtime can actually beat BEAM (using an equivalent architecyural abstraction, e.g. [https://hexdocs.pm/flow/Flow.html](https://hexdocs.pm/flow/Flow.html)) in _both_ throughput and latency, since it's exactly what the Golang runtime has been tuned for.

The downside of the dataflow approach is that, compared to actors-as-little- Turing-machines, dataflow is a very hard data-architecture to reason about! (And also tends to mean that a logic error in any of your static dataflow worker-actors, causes a lot of "collateral damage" when it comes down, to the point that it often may as well bring down the whole system with it. A stall in an assembly line stops the whole factory; but a stall in a job-shop doesn't stop the whole economy!)

</comment></comment></comment></comment><comment><USER28> Nice! I'd imagine this is a much nicer experience than dialyzer.

If the author is reading is it possible to type message passing / processes? I couldn't see this in the docs but i may have missed it

<comment><USER3> It's not supported in the core language but we have some type safe bindings to messages and message passing as libraries. We may upgrade these to being part of the language itself but I don't want to rush this and get stuck with a sub- optimal design.

<comment><USER29> This is a very interesting project, thanks. I'd love to see how you solve the problem of typed message passing in the language itself.

<comment><USER3> These two libraries are probably the best to look at:

[https://github.com/gleam-experiments/otp_agent](https://github.com/gleam- experiments/otp_agent) [https://github.com/gleam- experiments/otp_process](https://github.com/gleam-experiments/otp_process)

They could be improved but they are good enough for us to get started with.

</comment></comment></comment></comment><comment><USER30> Not sure about IDE integration but the language looks nice. Having a typed language makes me reconsider using the beam in my next project !

<comment><USER3> LSP support is on the backlog. Having world class IDR features in all editors is an important part of the puzzle in my opinion.

</comment></comment><comment><USER31> For those interested in the underlying theory of Actors see the following:

        Information Security Requires Strongly-Typed Actors and Theories
           https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3418003
        Physical Indeterminacy in Digital Computation
            https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3459566

</comment><comment><USER32> Dumb question from a non Erlang person - can this be used along with Elixir? I'm looking at Phoenix LiveView but would love to use Gleam for core functionality. Is this anything like Scala/Clojure and compiles down to Erlang, I'm guessing that is possible?

<comment><USER3> Yes, it can be used with Elixir. We don't yet have any integration with mix (the Elixir build tool) so if I were to use both in the same project I would probably create an umbrella style application with one Elixir application and one Gleam application within it.

<comment><USER3> Also, I don't think that's a dumb question! Gleam does compile to Erlang, yes.

</comment></comment></comment><comment><USER33> lpil is super smart and generally an awesome guy. I worked with him at a startup and learned a lot from him.

<comment><USER3> Thank you Raj, you're pretty great yourself!

</comment></comment><comment><USER34> This is really neat! Have you considered an ML-like module system, with functors and such? I'd be curious if they could be connected with Erlang's processes somehow :)

<comment><USER3> At present we do not have a module + functor system as it does not mesh well with the compilation model of Erlang.

I am interested in having a feature like this but there is much work and research to be done first.

</comment></comment><comment><USER35> Any plans for self-hosting?

<comment><USER3> Not at present, though it would be nice to be able to do that one day.

It would be largely a vanity project so I don't intend to spend time on it when we could be building more useful things.

</comment></comment><comment><USER36> Is it just me or does the introduction not mention equivalents to Erlang's messaging operators, or how to use OTP at all? Or _anything_ about proceses _at all_!?

I feel like this is Rust syntax on top of beam... but seems to be missing the point of Erlang.

<comment><USER3> The website current is an introduction to just the language itself. Later we have detailed documentation on the subject of OTP, but there is a lot of work to do first. Gleam is a very young language.

As a keen Erlang programmer I assure you that Gleam will do its best to make full use of the runtime's fantastic properties :)

</comment></comment><comment><USER37> This looks _very_ interesting.

Saved.</comment>


Solve puzzles to find a cure for coronavirus - <AUTHOR> https://fold.it/ <comment><USER2> There was some doubt yesterday that generated results will be used [https://news.ycombinator.com/item?id=22472836](https://news.ycombinator.com/item?id=22472836)</comment>


ISIS Has a Smartphone App - <AUTHOR> http://fortune.com/2015/12/10/isis-smartphone-app/ <comment><USER2> _Alrawi can't be downloaded from Google Play. Instead it must be installed from shady back alleys of the Internet._

Well, there's your obvious solution. Get a copy of the APK, wrap it with some spyware, then propagate the bugged version. If ISIS won't host the source or can't provide an "official" outlet to grab it, you've got no way of knowing whether your version is legit or not.

Who'd have thought the paradigms of shady Russian download sites could one day save the world?

<comment><USER3> But that's government surveillance, and HN comments are supposed to say that it's always bad and much worse than ISIS, right?

<comment><USER4> Nobody is against using technology against known foreign terrorists. We're against mass surveillance against our own people.

<comment><USER5> Well sometimes you cannot tell...

<comment><USER6> Since when it's better to assume that everybody is guilty?

</comment></comment></comment></comment></comment><comment><USER7> And there go the arguments for putting back doors into commercial encrypted messaging platforms. When encryption is outlawed, only outlaws will have privacy.

</comment><comment><USER8> Where does the article say this is an encrypted chat app? The description of the app says that it features news and videos, and the only discussion of chat that I can find is about using third-party encrypted services like Telegram (which gets three separate mentions) to communicate.

</comment><comment><USER9> Which I am sure the intelligence agencies are having a field day with.

Nothing like rolling your own encryption.

What are the chances it was created by one of the intelligence agencies?

<comment><USER10> > What are the chances it was created by one of the intelligence agencies?

I came to the comment section to say that exact same thing. If I were one of those intelligence agencies it would be tempting to use the information right away but for it to be truly effective, you'd need to let it propagate pretty far. What a field day for intelligence agencies even if wasn't planned by them -- just one thing to bust and they have everything.

Is this story even serious?

Using modern smart phones for "business" at all doesn't seem like a good idea if you are in the cross hairs of a modern military force.

<comment><USER11> > Is this story even serious?

It will encourage potential criminals to communicate through a system that's just a honey trap, instead of using other more secure options.

</comment></comment></comment><comment><USER12> > Apple and Google could easily kick apps used to organize violence out of > their official app stores. But would they be willing to build further > barriers to usage directly into their mobile operating systems?

This is a silly question for the Android side (and possibly the iOS side as well). That would be a monumental effort that would seem easily thwarted by simply installing your own version of the OS.

<comment><USER13> > and possibly the iOS side as well

This is exactly what jailbreaking fixes. By default, iOS does not allow you to install apps that are not published in the App Store.

<comment><USER14> Well, unfortunately jailbreaking "fixes" the problem by ruining code signing integrity on the device. Ideally, the jailbreaks would leave code signing enforcement in effect but just augment the default trusted CAs/CDHashes. I'm disappointed that AOSP never gained the code signing framework that iOS has, allowing people to have better Freedom and Security simultaneously.

<comment><USER15> Well, you can't update an app with the same app signed with another certificate.

</comment></comment></comment></comment><comment><USER16> The title is wrong. It is not a _chat_ app.

At least the article does not mention "chat" at all. More like a news app for propaganda videos.

</comment><comment><USER17> One would assume that all mobile cell towers would be a priority target. Given that they are not I think it's safe to assume that it's a goldmine for the intelligence services.

Just imagine all the side channels they have access to if they get access to the cell network. Doesn't really matter if messages are encrypted on the wire if all phones in a certain area is backdoored through a trusted network.

It's not hard to locate a cell tower from a safe distance.

</comment><comment><USER18> This article... 10/10 would click again...

Here's the real story, the app is a mediocre app that you can download from an archive.org link from a news website supporting ISIS, I don't have time to try the app but I assume that it get RSS from the said website (one of those enter RSS link here and we give you an app probably). Well by a website I mean something.wordpress.com, yeah that's real hard to shut down I know...

</comment><comment><USER19> Surely it can't be _that_ hard to create a chat app with end to end encryption these days with all the open source libraries freely available for all kinds of applications...this is why I've always said banning encryption on major platforms like iOS/Android/Windows will get you nowhere when terrorists can just make their own encrypted chat apps if they really want to.

<comment><USER20> Sure, it's not hard, then you get into side channel, first-use-trust/update, MITM, etc territory.

</comment></comment><comment><USER21> Would love a sample of this..

</comment><comment><USER22> This is really stupid, surely? Even if it's not distributed via Google Play, Android will look at the package names of all installed apps. Therefore it's not difficult to find all the users with a subpoena to Google for these records.

<comment><USER23> That assumes a phone-home feature that cannot be turned off.

<comment><USER24> Strictly speaking I guess a phone-home feature that _isn 't_ turned off would do just fine.

Would be interesting to know how good the fighting parties are with that...

</comment></comment></comment><comment><USER25> The policy makers are always wrong if they assume terrorists will be like normal people, agreeing to follow the laws, they will always find a way to circumvent the rules, that only the good people freedom that will suffer.

</comment><comment><USER13> > It can even be automatically updated whenever the app's developers send out > new versions of the program.

This is another potential vulnerability. If the app does not check a good signature, then it may be vulnerable to malicious update delivery.

</comment><comment><USER26> Did I miss something? The article says the app can be downloaded via existing encrypted apps ... the app itself sounds like an RSS reader ... with the ground breaking feature of being able to adjust font size. Seriously???

</comment><comment><USER27> I don't think anything good can come from the HN community publicly analyzing this.

<comment><USER28> That's never stopped us before.

</comment></comment><comment><USER29> It's time to ban encryption, so ISIS can't communicate safely.

</comment><comment><USER30> Elaborate honeypot operation?

</comment><comment><USER31> Url changed from [http://techcrunch.com/2016/01/16/isis- app/](http://techcrunch.com/2016/01/16/isis-app/), which points to this.

<comment><USER14> Can you please change the title to match Fortune's as well? Currently it is patently false.

<comment><USER31> Sure.

</comment></comment></comment><comment><USER32> I thought they can chat in Arabic and western intelligence agencies will have no clue what is going on.

There is very very little knowledge of Arabic language (with slang and such) in western intelligence agencies. As far as I now, there is less than 2,500 Americans are studying Arabic at colleges across the country right now. And 80% of them will be kicked out from country by "Trumps" as terrorists :-)

<comment><USER33> You can't possibly be serious.

<comment><USER34> He's got a point:

[http://news.investors.com/ibd- editorials/091213-670830-cia-j...](http://news.investors.com/ibd- editorials/091213-670830-cia-job-applicants-tied-hamas-hezbollah-al-qaida.htm)</comment></comment></comment>


Synference - an API for A/B testing with reinforcement learning - <AUTHOR> http://gigaom.com/2013/12/20/synference-thinks-ab-testing-can-get-a-lot-smarter-with-machine-learning/

<comment><USER2> Congrats for launching. It's an interesting application of machine learning. Might give it a try with my tiny website.

</comment><comment><USER3> I'm one of the founders - happy to answer any questions.

I believe this sort of bandit-meets-machine-learning approach is going to have a big impact on web optimisation.

<comment><USER4> How do you plan to deal with the "cold start" problem, not having enough information about the objects in the prediction? The majority of visitors will be viewing pages on a given site for the first time. In these cases there is a limited amount of information available: referring url, browser, perhaps first or third party cookies, visit time, etc. The whole point of A/B testing is to find a configuration of page elements that will appeal to the largest number of people, because there is so little information available about each individual.

I know of some cold start solutions, my personal favorite being variants of regression based latent factor models [1]. I'm not expecting you to reveal your secret sauce, but I am curious about how you plan to address the problem of having so little information about each person.

[1] [http://dl.acm.org/citation.cfm?id=1557029](http://dl.acm.org/citation.cfm?id=1557029)

<comment><USER3> There are really two different problems you are mentioning there.

Problem 1 is the typical recommendation-system/ML problem of 'cold start', where there isn't sufficient training data examples to produce good predictions. (Recommender systems based on clustering of items and users are particularly vulnerable to this.)

Problem 2 is a different problem, which is where you only have a small amount of data for each user (low dimensional feature data), where, even if you had a lot of examples, you wouldn't have enough information about each example (i.e. enough features) to make predictions.

Problem 2 isn't really as big an issue here as you might think. You mention a limited amount of available information: "referring url, browser, perhaps first or third party cookies, visit time, etc." This is actually a fair amount of feature data, if you treat it in the right way - even just browser+IP are.

If our system just has IP address, we'll build features to do with geo- location, and derive features like predicted income level from a combination of geo and device/browser.

Now, those features are only useful if they are predictive - if its the case that the set of options you want to choose between will vary in some way that correlates with those features.

However, this is often the case. If you have a global website, users from some geographies will have different preferences. Time-of-day is also an important feature. Further, if you want to adjust the discount you give people, how modern their hardware (from the user agent) is is a good signal. Those are just examples - there's a lot in there, if you treat it right.

Even these very common, lowest-common-denominator features can thus give you better results than just blindly pretending your population is a homogeneous whole, which is what existing bandit approaches do. Further, our API supports custom features, too.

Problem 1 is a more technical question.

The honest answer is that the particular type of framework we use doesn't really suffer from that problem.

Our solution is adaptive. If there are very few training data points, then our system will treat the problem as if the user population is relatively homogeneous, and will attempt to predict the best option for the population as a whole - like a traditional bandit algorithm would, or like the result you'd get from a simple AB testing framework.

However, as the amount of data gets large, our system functions more like a predictive model (i.e. like a ML system) and less like a simple bandit algorithm.

This means that there's really no cold-start problem with the learning algorithm - instead, there's a transition to finer and finer predictions as the data density increases. So it ends up using the data _roughly_ as efficiently (not quite as efficiently, but close) as a custom solution which is calibrated to the level of available data would.

And that's an awful lot more efficient than running an AB test for a fixed length of time, and waiting to see the results.

If you want more detail, maybe have a read of our FAQ: [http://www.synference.com/faq.html](http://www.synference.com/faq.html) or send me an e-mail.</comment></comment></comment>