Show HN: CML – CI/CD for Machine Learning with GitHub Actions and Gitlab CI - <AUTHOR> https://github.com/iterative/cml <comment><USER2> This is very technic and universal solution for history ML experiment , for me !</comment>


Raft - The Understandable Distributed Protocol - <AUTHOR> http://www.infoq.com/presentations/raft <comment><USER2> Being an undergrad with no prior distributed systems education, I was able to comfortably read the white paper on Raft. The same cannot be said of any of the highly recommended white papers on Paxos. It's pretty awesome how many implementations have popped up since the white paper, too. I think the cool thing about Raft is that it is making consensus widely available and easy for people to plug into their applications, rather than requiring an expert to integrate Paxos into their application.

</comment><comment><USER3> There was a presentation about Raft at this years Rubyconf (No ruby involved in the presentation) which may be of use [http://confreaks.com/videos/2881-rubyconf2013-raft- consensus...](http://confreaks.com/videos/2881-rubyconf2013-raft-consensus- for-rubyists)

</comment><comment><USER4> Note that etcd (part of CoreOS) uses Raft for its distributed log. [1]

[1]: [https://github.com/coreos/etcd](https://github.com/coreos/etcd)

<comment><USER5> The underlying Raft library for etcd can be found over here: [https://github.com/goraft/raft](https://github.com/goraft/raft)

Some additional resources on Raft, including a link to the raft-dev mailing list, can be found over here: [http://raftconsensus.github.io/](http://raftconsensus.github.io/)

Raft has worked really well on etcd so far and it is nice to have a simple easy to reason about algorithm to work on top of. Etcd is moving quickly adding a simple to use fair mutex API, improved scriptability via etcdctl and several improvements to the core API in recent weeks. Come join in.

</comment></comment><comment><USER6> Phew! I always thought I was the only one who thought Paxos was incomprehensible. I also recently learned that Google's version on Paxos is much simplified and similar to Raft (mentioned as an aside in talk about Spanner as same conference[1].

[1] [http://www.infoq.com/presentations/spanner-distributed- googl...](http://www.infoq.com/presentations/spanner-distributed-google)

</comment><comment><USER7> I read their paper about 5 months ago - seems like a good idea . Specifically, the redundancy portion of the consensus algorithm seemed like a good idea at the time.

Does anyone know if it's implemented anywhere? Or real-life performance statistics and it's overhead cost?

<comment><USER7> Just saw CoreOS uses it.

</comment></comment><comment><USER8> No registration required link to the slides: [https://speakerd.s3.amazonaws.com/presentations/7556a1b003d8...](https://speakerd.s3.amazonaws.com/presentations/7556a1b003d80131e2b062034c419aee/Raft.pdf)

<comment><USER5> The slides were originally here AFAIK: [https://speakerdeck.com/benbjohnson/raft-the- understandable-...](https://speakerdeck.com/benbjohnson/raft-the- understandable-distributed-consensus-protocol)

</comment></comment><comment><USER9> Couldn't help but notice the mixture of genders in the log messages after the whole libuv hubbub over the weekend. Pretty straightforward slides.</comment>


Brave: Brendan Eich's clean-ads browser startup - <AUTHOR> https://www.brave.com/ <comment><USER2> I will repeat this one more time, because Eich seems to be missing the point.[1]

I don't adblock for privacy, security, or speed. Those are just nice-side effects. I adblock because _I do not want to be manipulated into buying things I do not need._

I wonder what would happen if, as a society, we said, "enough, no more ads". Would it really be the capitalist apocalypse that the ad industry is trying to make us believe it would be?

\--

[1] [https://news.ycombinator.com/item?id=10244964](https://news.ycombinator.com/item?id=10244964)

<comment><USER3> I get your point, and it is a good one. We have a micro payments channel to publishers, frictionless and anonymous, under construction, for folks who want no ads and who will pay.

Other users than you will be able to mix and match, too: better and more private ads on sites they don't support, with a revenue share to these users that they can spend on sites they do.

We aren't saying "only ads". We do see ads as a necessary funding model for much of the web today. I would love to see micropayments replace ads. Let's see what can be done.

<comment><USER4> I fall into the camp of blocking all ads because frankly I don't like them. They are visual pollution. I also doubt I would pay for written content (maybe on a very rare occasion I might) if given a micro-payments solution because it doesn't seem worth paying for. I write blog posts from time to time and I do it for pleasure because I enjoy writing about things that interest me and sharing it with others. Honestly I don't feel any compulsion to fund any of the media whose links bombard my social media daily. Even some of the good stuff on this site I wouldn't feel compelled to pay for because truly it isn't transformative and I would probably be better off not reading it and doing something productive instead.

Stuff I do pay for: educational content (books, courses etc), Spotify, Netflix.

You're obviously much more deeply invested in this and have done the maths. I am curious, what percentage of web users do you calculate will use the micro- payments, if it was a seamless perfectly executed experience? How much revenue do you think it will generate and will it be enough to disrupt web-ads?

<comment><USER5> > I write blog posts from time to time and I do it for pleasure because I > enjoy writing about things that interest me and sharing it with others.

I do the same thing, but I realized a while back there is a flaw in this model. It means the available creative works—which in turn effectively means the engine of culture—is determined almost entirely by people who are well-off enough to have the free time to do that.

I don't have "free" time. I _paid_ for that time by buying a more expensive house close to where I work, spending less time shopping by not chasing the best deal, paying others to do home and car repairs, etc. etc. etc.

People who aren't as financially lucky as me don't have that opportunity. I'm not crazy about the idea of living in a world where those people don't get to participate in determining culture.

<comment><USER6> Which significant cultural works have been ad-funded?

<comment><USER7> Imagine if instead of libraries we made literature accessible to everyone by inserting ads, including "native ads" and product placements in the stories! Egads!

<comment><USER8> Excellent point. Libraries are public services. They're funded by private groups and governments. But it's not just about charity. There's an expectation of social benefit, which indirectly benefits even private funders.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> It sounds like their plan is to block all ads, then sell the new ad inventory created by all the blank space on pages.

Why on earth would users want this browser?

<comment><USER10> Well, the logical extension of that is that you actually get paid to browse, that might be a gamechanger.

Keep in mind that the supply side right now ends at the owner of the web property that starts the ball rolling when in fact it actually starts with the person sitting behind the computer looking at the page.

So this is a giant cut-out-the-middle-men opportunity and Eich is fairly uniquely positioned to take advantage of that.

Wonder if that rev-share idea is part of the long term plan.

<comment><USER11> We tried the "paid to browse" thing 15-20 years ago. Didn't go so well.

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

<comment><USER10> Times have changed since then and it definitely would not be the first time that something that fell flat out of the gate the first time became a success the second time around. Lots of current successes are actually just warmed over past failures.

That's not proof in any way that this might succeed now but there is something to be said or giving that a shot with the number of eyeballs available today (and the harder to advertise to markets that have been unlocked by the web but where ad agencies are not yet capable of selling inventory).

If you could centralize that through the browser it would be a fairly powerful strategy if adoption would be large enough (that's the crux), which is why I wondered if it was on their roadmap.

<comment><USER12> huh. See, I thought the reason it failed last time,besides fraud[1], was a broader reason - it's the same reason paid surveys aren't worth very much. the idea is that the people you want to advertise to are precisely the people who are willing to trade money for their time; the opposite of the people you get when you pay folks to watch advertising.

[1], in 1998, I seem to remember that one of my co-workers had installed a thing on his work computer that would move the mouse and "browse" the internet when he wasn't there, getting paid for seeing ads.

<comment><USER10> Of the old ad networks only doubleclick survives and they only do so because of google massive anti-fraud measures.

Anybody that gets into ads these days will have to take abuse as their #1 priority to be able to compete so if this is to work at all you can bet that anti-fraud measures would make up a very large component of the package.

Tying the end-user and one of the primary beneficiaries to the same chair is a risky thing but not all forms of advertising are equally susceptible to this kind of risk. For instance, performance based advertising and to a lesser extent branding are not all that much at risk.

On another note fraud is present in all forms of online advertising at the moment (with the same qualifications listed above) and it is simply priced into the ad rates.

</comment></comment></comment></comment></comment></comment><comment><USER13> Is anyone else concerned about the possibility that if ad blocking on the web becomes widespread enough, we will end up with more ads baked into the content itself? Native advertising, ads burned into images, ads burned in the middle of videos?

Thinking selfishly, I would much prefer the status quo, where I can block most ads, but the majority of consumers don't do it. Current ad blocking tech is fine, I'm afraid this could become an arms race.

<comment><USER3> Native ads can be, and are today, blocked. Consider those ugly Taboola and Outbrain octoboxes with parasite pictures at the bottom of too many news stories these days. Those are just img in div HTML. But adblockers remove them with HTML rules (Brave will too).

In general, you can Greasemonkey anything. Tracker-less first party native ads may be harder to match, but most sites would need tracking to aggregate audiences, to get better ads and revenue, so third party native is on the rise. And it is easy to block.

<comment><USER14> Huge fan of Brendan, but this did not really address parent's point--which I think is valid, and unanswered. Most people don't use Greasemonkey-propelled solutions. I wonder if the answer is that highly targeted ads tend to work. When I'm on the guitar subreddit it'd be fine for me to see ads from Fender. And part of what I seek when I read a guitar magazine is ads, because they alert me to things that I sometimes don't find out about any other way.

I also like the idea of paying to block ads that aren't relevant to me. I believe in a free market and totally understand that things have to be paid for. Sometimes ads are the answer, but I find many of the interstitials to be irrelevant and sometimes they slow the site down unacceptably. Would be willing to pay for this experience not to happen.

<comment><USER15> We can't really have both ad relevance (outside the local context) _and_ privacy. One requires the advertiser know things about me I personally have no desire for them to know.

> Would be willing to pay for this experience not to happen.

I don't know if I'm in the minority, but I'm honestly not willing to pay for that. Fact is, I use adblock right now, but if I couldn't use adblock on some sites I'd simply stop visiting them.

I despise the ad-filled experience. I'm with the current top post and despise the idea of being constantly manipulated into buying things I do not need. If there were _less_ ad overall on the internet, I wouldn't care about blocking them, but that's tragedy of the commons for you.

</comment></comment></comment></comment><comment><USER16> I'm the founder of a competitor in this space called Paymail.net. We're looking forward to battling it out in the marketplace with Brave and the traditional ad networks. I posted an intro on Hackernews 2 days ago, but we didn't make it to the front page.

Our difference to Brave is that we give free ads to everyone, the advertiser only pays if the end user makes a purchase. Similiarly the display site gets nothing if there was no economic exchange. Capitalism is supposed to be a machine for you getting what you want. We want to help that process along. I have an uncompromising attitude that web/world ads should be for things that you really want to see, and then they become content.

That might be a utopian vision today, but I have strong belief in the power of people's self interest to drive positive change.

Edit: chrispm reposted the link here, [https://news.ycombinator.com/item?id=10940684](https://news.ycombinator.com/item?id=10940684)

</comment><comment><USER17> From a quick glance:

1) Desktop browser is an electron app with ad tracking injected into your app via [http://cdn.brave.com/](http://cdn.brave.com/) (via [https://sonobi.com/welcome/index.php](https://sonobi.com/welcome/index.php) which promises "EFFECTIVELY PLAN AND SOURCE MARKETING OPPORTUNITIES WITH QUALITY AND VIEWABILITY FROM PREMIUM PUBLISHERS"

2) iOS browser is a fork of Firefox iOS - [https://github.com/mozilla/firefox- ios](https://github.com/mozilla/firefox-ios)

3) Android browser is a fork of [https://play.google.com/store/apps/details?id=com.linkbubble...](https://play.google.com/store/apps/details?id=com.linkbubble.playstore&hl=en)

<comment><USER18> Is Linkbubble free software, or they just made some agreement with author to use/rebrand it?

(I always assumed it's proprietary, but seeing that others are FLOSS forks, would love to be wrong about this one.)

<comment><USER19> It was purchased by an unnamed startup recently. I guess maybe it was Brave? [http://www.androidpolice.com/2015/08/04/link-bubble-is- under...](http://www.androidpolice.com/2015/08/04/link-bubble-is-under-new- management-and-getting-a-big-v1-5-update-with-drop-down-support-colored- toolbars-and-more/)

<comment><USER20> It must have been: Brave co-founder Brian Bondy blogged about that purchase several months ago. [http://www.brianbondy.com/blog/171/the-link-bubble- android-w...](http://www.brianbondy.com/blog/171/the-link-bubble-android-web- browser-has-gone-fully-free)

</comment></comment></comment></comment><comment><USER21> It's great to see more people working to solve the problem of intrusive ads! I wonder what exactly they mean by intrusive ads, though? I hope it's more than just ads that don't respect your privacy. To me an ad is intrusive if it has any kind of movement or animation. Anything that moves automatically attracts my attention, so this is very annoying if I'm trying to read something.

I don't mind ads in print magazines so much (other than the fact that print magazines are unlikely to write negative stuff about companies that advertise with them). Ads in print magazines are ok with me, because there's no movement on them. So I can easily read one page, even though the next page has a full page ad.

They mention standard sized spaces and faster browsing. I actually wouldn't mind large ads - like something taking up my whole screen - that I can scroll through. Back in the 90s, it probably made sense to have small 468x60 pixel banner ads, but as fast Internet connections are becoming more and more common, I don't really see the point of restricting the size anymore. Large full page ads aren't really a problem in print magazines, and I don't think it would be on the web either, if we just got rid of the animations.

<comment><USER22> If other companies in the space are an indication (e.g. AdBlock Plus), "intrusive ads" are defined as ads that don't pay them, but somebody else.

</comment></comment><comment><USER23> That's funny. I also use NoScript, just to be extra cautious, and when I go to Brave.com, I don't see ANYTHING. I would hope that somebody claiming to want to fix the web would be able to serve up a page that doesn't need permission to execute a script.

</comment><comment><USER24> I was just reading some web performance audits by Paul Irish:

[https://docs.google.com/document/d/1K-mKOqiUiSjgZTEscBLjtjd6...](https://docs.google.com/document/d/1K-mKOqiUiSjgZTEscBLjtjd6E67oiK8H2ztOiq5tigk/pub)

One of things he mentions on one of the sites, is Adsense looking at every scroll event, and doing tracking work which takes 25ms on a smartphone (his smartphone, likely to be high end). That means your scrolling performance is going to be inherently bad, probably below 30 fps one you take into account other work associated with the browser or the site. Having a browser which takes out this kind of code, but doesn't break the business model of the website owner does seem like an interesting idea. It seems like a major part of the mobile web is half-broken for these kind of reasons.

</comment><comment><USER25> > _With Brave, you can choose whether to see ads that respect your privacy or > pay sites directly. Either way, you can feel good about helping fund content > creators._

How do they plan on doing that? Not like it hasn't been tried before. The problem is you can't collect money on someone's behalf without them opting in, and if it is opt-in only you get the chicken and the egg problem for adoption.

<comment><USER26> >or pay sites directly.

Call me crazy, but if I wanted to "pay the site" I'm using I'd just allow their ads. This company is really sleezy. Its playing the "replace their ads with ours" game and trying to make it sound like some wonderful moral position against advertising. People aren't this stupid. This thing isn't going to catch on.

<comment><USER27> If you allow the site's ads, you are also allowing the ad network they use to track you.

The point of this browser is to factor out random third-party ad networks. If you elect to see ads on the site, they are presumably served by Brave. The site still gets paid (so it's _not_ like the ISP's replacing ads on the fly), but you don't have to worry about unknown trackers following you around the internet and putting a strain on your CPU.

Whether it will catch on is another question...

</comment></comment></comment><comment><USER28> I'm doubtful of this taking off. People stick with the default apps and settings. The average person just really doesn't care that much about this kind of thing.

Maybe enterprise or businesses will like it - so they can avoid their employees visit whitelisted sites that mistakenly have malicious code in the ads. Eg. Flash

<comment><USER29> I'm not so sure that the average person won't care. They are increasingly aware of how much they pay for data on their phone plans, and how crossing limits decreases their speeds. After a big bill or two, people start looking for options.

<comment><USER28> "Why 3.5 times more Apple users choose Apple Maps over Google Maps"

The power of default settings is huge. Perhaps you're thinking of yourself or your peers.90% of the rest of the population just doesn't care about these issues.

Source: [http://fortune.com/2015/06/16/apple-google-maps- ios/](http://fortune.com/2015/06/16/apple-google-maps-ios/)

<comment><USER29> I tried to cover my tracks here and say "increasingly" aware. For instance I saw an ad the other day that offered unlimited internet on your phone for $40 a month, but in slightly smaller text (not fine print, think H1 vs H2 relation) it said that after 1.5Gb speeds reduced to 128k. Disclosures like that I think will make people more aware of their data usage over time.

However my supposition is predicated on the continued restriction of data and speed by carriers. If any new business model comes along that upends that, then I suppose Americans won't become data usage aware.

</comment></comment></comment></comment><comment><USER30> A few thoughts:

(1) If they block tracking, does it block Google Analytics? Because that would annoy me as a website owner.

(2) The reason I don't pay subscriptions to sites like Wall Street Journal and NY Times is that I get my content from aggregators like Hacker News so I only go to one of those paid sites if I follow an occasional link. Micropayments would fix that if I could pay one company a $5/mo subscription to then have payments automatically dolled out to a select list of good sites until my $5 was used up (then maybe ask me each time after that, or something).

(3) They talk about avoiding the ad-blocking war, but they are just contributing to it. I guess what they think is that by making a way for the website owner to get paid they avoid some of the war, but many companies like to be in direct control of their money so they might not like a middleman sitting on the high way charging everyone a tax to pass. And if Brave doesn't charge something for its services then it has no business model, so I'm assuming they are not passing 100% of revenue on to the site owner.

<comment><USER31> _If they block tracking, does it block Google Analytics?_

That's one of the biggest trackers out there, so it would be a pretty poor blocker if it didn't.

</comment></comment><comment><USER32> The first question that pops into my head is "How is Brave going to monetize?".

They've received substantial investor money, so apparently they have something lucrative in mind. And it's probably not good for privacy-conscious end users.

<comment><USER33> They are monetizing by....advertising!

They substitute bad ads for their ads.

</comment></comment><comment><USER34> So why do I have to "sign up" for this supposedly privacy-enhanced browser? They don't have a need to know who I am.

"Then we put clean ads back". This is open source, right? It's on Github. Can someone fork this and remove _all_ the ads? Thank you.

<comment><USER35> Well, given that's it's a fork of Firefox itself, you could just _un-_ fork it :)

<comment><USER34> Their site doesn't even mention that it's a fork of Firefox. I thought it was based on WebKit.

<comment><USER36> It's an electron shell app from looking at the desktop repo.

</comment></comment></comment></comment><comment><USER37> [https://github.com/brave/browser-ios](https://github.com/brave/browser-ios)

"Firefox for iOS"

They forgot to remove the branding from their "new" browser.

<comment><USER38> It's not a mistake. Firefox is referenced throughout the documentation. Looks like Brave is built on top of it.

<comment><USER37> Venturebeat claims it's based on Chromium, but they also seem to be pretty confused because they're calling it "a brand new browser, because (builing on top of existing browsers) would imply limited functionality by virtue of their application programming interfaces (APIs) and less impressive performance gains"

[http://venturebeat.com/2016/01/20/brave- browser/](http://venturebeat.com/2016/01/20/brave-browser/)

So it's Chrome on Desktop, Firefox for iOS on iOS?

<comment> ainar-g Firefox on iOS is built with WebKit, not Gecko [1]. IIRC, it's because Apple doesn't like engines that are not WebKit. Chromium uses Blink, which is a fork of WebKit, so Firefox for iOS and Chromium are relatives in a sense.

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

</comment></comment></comment></comment><comment><USER39> It's funny when AdBlock tells you that brave.com has 2 blocked Ads. Oh the irony.

<comment><USER4> uBlock Origin is blocking 6 assets/sources

</comment></comment><comment><USER40> How will Brave prevent anti-ad-blocking mechanisms from interfering with the page?

For example, cbs/abc/nbc seem to detect muBlock and then stop serving content.

<comment><USER41> This is the most annoying thing about ad blocking going mainstream. It was a rare site that bothered to detect us before Apple got into the game.

<comment><USER42> Personally I think it's very healthy and marks the beginning of the next stage of the web - how does it work in a post-advertising world?

<comment><USER10> If the various stages of the arms race have been any indication so far it tends to get worse rather than better with every stage so far, which does not lead me to believe there will be a 'post advertising world', only a 'more annoying and harder to get rid of / ignore advertising world'.

<comment><USER42> Well it's true, it has been an arms race, but until recently it's been between relatively small numbers of blockers and the advertisers.

Now that Apple have taken it more mainstream it's going to be interesting to watch what happens.

But you might be right, sadly. More of the same and worse...

</comment></comment></comment></comment></comment><comment><USER43> Man that logo is similar to Workfront's: [https://www.workfront.com](https://www.workfront.com)

<comment><USER37> Workfront's trademark doesn't seem to be an issue for Brave due to different use fields. Looks like Eich can't make a calendaring app though :-)

</comment></comment><comment><USER44> Am I getting the message from their #about section correctly?

They want to block ads that the person running a web site put on their web site with their own (Brave Ads Infused TM Ltd. Inc. - let's make some money while pretending we are freeing the world).

</comment><comment><USER45> The biggest challenge of micropayments is how to minimize the cognitive load of making many tiny payments.

How should the user agent decide when to alert the user?

</comment><comment><USER46> What's with the requests to static.doubleclick.net on that page?

</comment><comment><USER47> So his business model is to hijack advertising and funnel it through his own little scheme, forcing publishers to pay him in order to get their customer's ads seen. Hope he loves getting his browser's user agent treated like Ebola.

</comment><comment><USER48> Why a new browser, instead of plugins for existing browsers?

I dislike ads, but there are already solutions for blocking them. Although I do like the premise of this, I'm not eager to switch browsers just to start supporting advertisers.

</comment><comment><USER49> Maybe this is a stupid question, but ... if ad blocking is such an issue for publishers, why don't they do the ad-serving logic on the server and display locally saved creative assets (from the same host)?

<comment><USER35> Also, an independent third party can't track such ads.

<comment><USER49> That's good, right?

<comment><USER50> It's good for user privacy, but not good for the ad networks wanting to keep an accurate account of how many times their ads are being loaded.

</comment></comment></comment></comment><comment><USER35> I don't see any reason I would prefer this over the native iOS ad blocking (with an appropriate blacklist).

</comment><comment><USER51> Urgh, what happens for a site when there are no adverts on the site?

Are "clean adverts" then placed on the site?

If the answer to this is yes, I'll be blocking the user-agent from my sites. I serve cache:no-transform and HTTPS to specifically prevent people mucking around with the page. I already deliver a fast and clean website.

This reminds me of when Virgin Media in the UK (an ISP) wanted to put adverts on pages without my permission. It really isn't a help.

</comment><comment><USER52> Confused about this. Does it display adverts on pages belonging to organizations not using its network? That would be pretty ethically dubious in my book.

</comment><comment><USER53> I wonder how much they paid for the domain name.

</comment><comment><USER54> Anyone OK with this business model should also be ok with ISPs stripping out ads and replacing them with their own content (remember that?)

On the other hand, if this gets traction (unlikely, admittedly) this may finally force the issue to the courts and get content fiddling declared copyright/TOS violation. Which I'm not sure you all want.

<comment><USER55> This is opt-in. I think more people would be OK with an ISP doing it if it were also opt-in.

</comment></comment><comment><USER56> Glad to see you back Brendan!

</comment><comment><USER57> Due to Brave's ad-block technology, I guess Brendan Eich will be blocked[1] by IAB from their annual conferences. (every pun intended.)

[1]: [https://news.ycombinator.com/item?id=10937704](https://news.ycombinator.com/item?id=10937704)

</comment><comment><USER58> Does anyone else remember when adsense first launched and it was text-only ads?

People would actually stop to read the ads because they were interesting and relevant.

Then google caved to images and animation and 100+ objects on a page, each with their own tracking scripts to slow browsers to a crawl.

</comment><comment><USER59> This is a worthy endeavour. I want to download and help test and develop this today. Helping deflate this ad-bubble before it turns into the "The Zero Theorem" is worth the effort.

This however does not tackle the mindset shift that needs to occur for the masses to start protecting the private information they voluntarily give up on services they are signed in on the social net.

We are currently working on a project that will use this information to the marketer's advantage in a way that will make people sick once they realize the extent of the profiling going on, with the ultimate goal of reversing the trend before it's too late. Make people raise their guards, sell some tech on the way.

</comment><comment><USER60> Brave seems to acknowledge a smaller part of Ted Nelson's "Project Xanadu" [1], where you're paying to access content.

From the Project Xanadu Wikipedia article: "9\. Every document can contain a royalty mechanism at any desired degree of granularity to ensure payment on any portion accessed, including virtual copies ("transclusions") of all or part of the document."

Ted's approach is (in my view) also a deduplication effort, as you're citing the original content, tracing it back to its origin by reference.

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

</comment><comment><USER61> I think this is great thing, it is right thing, that is coming from trustworthy person/company.

Now, time will tell how things will play out, but I believe I can count on Brendan to make the right choices when it comes to features, compromises.

</comment><comment><USER62> Please fix the links to the Terms of Use and Privacy Policy. These should always be the first documents working on your startup's website.

And can anyone find this 'roadmap' that Eich talks about in the post?

</comment><comment><USER63> "Imitation is the sincerest form of flattery."

To be fair, Firefox for iOS is open source. Take it, remix it, improve it. It is all good. Mozilla Public License.

</comment><comment><USER64> Haven't looked at the source but worth noting there's a Bitcoin logo on the homepage near "Browse Better."

</comment><comment><USER65> _" Brave is open source!"_

Wow, new browser technology that is open source, this is good news. I'm hoping the development focus is flexible, remember flock? [0]

[0] [https://www.flickr.com/photos/tags/flock+browser](https://www.flickr.com/photos/tags/flock+browser)

</comment><comment><USER66> Someone should make a browser that blocks "Everybody can earn xxx$+ daily... You can earn from ..." spam comments. I think I've seen those mostly through the FB comments plugin. Obviously FB can't / doesn't want to fix that.

</comment><comment><USER67> The surfer in the main slider has had his fins completely adblocked.

[https://www.brave.com/assets/img/sliders/revolution/surfers_...](https://www.brave.com/assets/img/sliders/revolution/surfers_bluewash_tan.jpg)

</comment><comment><USER68> I do not use ad blockers because I want to see how the owners of a website I'm interacting with really treat their users. I do not want to help some crappy web site to look better and more trustable to me than it really is. Don't like ads on a website — just go elsewhere.

</comment><comment><USER69> I really like just replacing my hosts file to block ads.

[http://someonewhocares.org/hosts/hosts](http://someonewhocares.org/hosts/hosts)

But I can't do that on my phone without jailbreaking it. Stupid phone.

</comment><comment><USER70> Surely we are soon going to see server side ad-injection and the end of ad blocking

<comment><USER71> That doesn't work well with AD networks though. Site owners will either have to use links of the form: siteOfAdNetwork.com?id=smthhere and it still will be possible to block them. Or AD network will be unable to check the number of clicks.

<comment><USER70> ad links could be via redirects from the hosting site, intercepted by the web server plugin.

personalisation would be a problem, because you won't have a cookie, but there is always device fingerprint etc

I agree it isn't quite as good but it is possible to make ads indistinguishable from legitimate site content.

<comment><USER71> Will the site redirect to AD network? If so, it is still easily blockable. AdBlocker can preload suspicious links and if they redirect to siteOfAdNetwork.com block them.

The only option I see here is to have some kind of click counter both on the web-master's (who monetizes) and client's (who advertises) web-sites. And the counters' numbers will be sent (using server-side) to the AD Network. But that doesn't work if the client wants to advertise not his/her web-side (where AD network's script can be installed) but Facebook profile or something like that.

Alternatively, AD network can charge not for number of clicks but for alternative parameters (e.g., number of days AD is published). Though, still not easy (no guarantees) to check whether web-master who's monetizing his/her web-site doesn't cheat.

</comment></comment></comment></comment><comment><USER72> There is no mention about licences.. For desktop/iOS, it uses chrome(electron)/mozilla(firefox-ios).. But no mention about the android one (linkbubble)

It would be great if they clarify the terms & licences in the FAQ

</comment><comment><USER73> You all are forgetting one thing. Without ads google would not exist, without ads facebook couldn't exist and expand, make research. If everybody will block ads then you will see decline in free sites.

<comment><USER74> I have never forgotten this. It's my primary motivating factor in mercilessly blocking ads and ad servers, both within my browser and at my routers, both at home and at work.

If someone wants to make money off of me, they're free to send me a bill. If their content isn't valuable enough to sell directly, why should I waste my bandwidth and RAM monetizing their garbage?

A world without Facebook and Google sounds wonderful. Sign me up; I'm willing to pay.

<comment><USER75> It was called 1997. You can go back there by connecting over a 56k modem and using Netscape 2.

</comment></comment></comment><comment><USER76> > We make sure you aren't being tracked while you shop online and browse your > favorite sites.

That's not a realistic claim. Nothing is stopping publishers and advertisers from sharing back end data.

</comment><comment><USER77> AdSense was considered the pinnacle of unobtrusive ads in the past.

</comment><comment><USER78> I do not trust them. If they really cared about privacy they woul d not have pulled scripts and fonts from bunch of 3rd party sites.

Sorry Brendan you failed the first test. I wont adapt to Brave.

</comment><comment><USER79> Looks great! I have been running a open source blocker since WWDC and it is the right way to do things. Especially considering the state this space is in right now.

</comment><comment><USER80> This will be banned by app stores and such and quickly.

</comment><comment><USER81> Where is the incentive for the user to use this thing?

<comment><USER33> their pages load quicker on desktop and on mobile saving time and battery

</comment></comment><comment><USER82> Playing the devils advocat:

How Do you want to finance development in the lang run?

It is a nice solution and I'd hate to see it go because of financial problems.

<comment><USER83> try reading the "about" section

</comment></comment><comment><USER84> If it can add top class security / anti tracking / anti fingerprinting, it would become far more compelling.

</comment><comment><USER85> So, creating Javascript, hating on gay people, and now an ad company... this guy really wants people to hate him!

</comment><comment><USER86> Brave wants to save me from intrusive 3rd-party trackers... but uses Chartbeat and Doubleclick on Brave.com?

</comment><comment><USER87> patreon but it allocates a percentage of however much you want to pay per month to the sites you visit relative to how much time you spent on them

</comment><comment><USER88> Sounds like a brave plan indeed. Good luck to them!

</comment><comment><USER89> My ublock add-on blocks exactly 5 requests from their home page... so why would I want to install their browser?

</comment><comment><USER90> The more I read through the Brave website the more it feels like this is actually vastly worse than the status quo.

All quotes are directly from the FAQ:

"We do not even have access to identifiable user data". Except for the "in- browser targeting engine" which has "substantially more information about the user's activity available to it than traditional tracking methods", which are stored in the browser and then exposed to advertisers "to maximize user, publisher and advertiser value."

"Each ad request is anonymous, and exposes only a small subset of the user's preferences and intent signals to prevent 'fingerprinting' the user by a possibly unique set of tags". Except that the only reason advertisers _need_ to fingerprint the user is in order to collect enough information to decide which ads to serve to them, which is precisely what they'd be getting from Brave (and then some.) Great, that information is stored in the browser instead of the cloud, and only subsets of it are exposed to the advertisers for each request -- but that doesn't benefit the end user at all. It benefits Brave, by maintaining their middleman position as the de facto controller of which advertisers gets access to that data.

"We block trackers, that's a big win compared to the status quo." It is! For Brave. Because the whole browser is now an ad tracker. Ok, the data is keyed to a UUID instead of a name or other "personally identifiable information". How does that benefit the end user? In no way at all.

Throughout the site is repeated handwaving about how nothing is sent in the clear, they don't even have the encryption keys, nothing is personally identifiable, but _none of that matters_ , because the end result is the same. It's still an ad tracker designed to enable targeted advertising. But with much, much more data to work with than in existing browsers. Offloading the tracking work into the client instead of doing it server-side is just misdirection.

And how about those content creators? "Our goal is to make better revenue for all publishers," they say, but I see no explanation of how stripping out websites' individual ad sales and replacing them with Brave's benefits the publishers. Congratulations! Brave's "revenue sharing" program means your ad space is worth 55% of what it used to be! [1] Oh, don't worry, they'll get around to building a micropayments scheme someday, which they'll also take a share of.

This is just. I mean. Gah. Flames. On the side of my face.

[1] (I can't find that figure on their site, but it's quoted here: [http://www.mediapost.com/publications/article/267089/new- bro...](http://www.mediapost.com/publications/article/267089/new-browser- offers-brave-solution-to-ad-blocking.html) "...revenue derived by selling ads through Brave will be split four ways: 15% each will be distributed to the user, to Sonobi and to Brave, with 55% allocated to publishers.")

</comment><comment><USER91> Though the team working on Brave seems to have a few ex-Mozilla engineers, they have chosen to fork browsers other Firefox. (Also, nice to see so many Canadians!)

'Brave browser promises faster Web by banishing intrusive ads' | Jan 20, 2016 [http://www.cnet.com/news/ex-mozilla-ceo-try-braves-new- brows...](http://www.cnet.com/news/ex-mozilla-ceo-try-braves-new-browser-for- a-faster-private-web/)

> _Eich and his team built Brave out of Chromium, which is the foundation for > Google 's Chrome browser, which leaves most of the actual development and > security support to Google. Why not use Firefox, into which Eich poured so > much effort? Because Chrome is more widely used and therefore better tested > by developers who want to make sure their websites work properly, he said. > "Chromium is the safe bet for us," he said._

* The desktop browser is a cross-platform desktop application created with a fork of Github's Electron framework that is itself based on Node.js and Chromium. [https://github.com/brave/electron](https://github.com/brave/electron) [https://github.com/brave/browser-laptop](https://github.com/brave/browser-laptop)

* The iOS browser is a fork of Firefox for iOS, which is a Swift app developed from scratch by Mozilla. [https://github.com/brave/browser-ios](https://github.com/brave/browser-ios)

* The Android browser is Link Bubble, which is a wrapper around the default Android browser [https://github.com/brave/browser-android](https://github.com/brave/browser-android) Previous HN discussion here: [https://news.ycombinator.com/item?id=7453897](https://news.ycombinator.com/item?id=7453897) Australian developer Chris Lacy announced its sale in Aug 2015: [http://theblerg.net/post/2015/08/05/ive-sold-link-bubble-tap...](http://theblerg.net/post/2015/08/05/ive-sold-link-bubble-tappath-and-all-related-assets)

* The ad blocking technology is courtesy a Node.js module of Adblock Plus filter that uses a bloom filter and Rabin-Karp algorithm for speed. [https://github.com/bbondy/abp-filter-parser-cpp](https://github.com/bbondy/abp-filter-parser-cpp)

* The database is MongoDB. [https://github.com/brave/vault](https://github.com/brave/vault)

Past news coverage:

Mystery startup from ex-Mozilla CEO aims to go where tech titans won't | Nov 17, 2015 [http://www.cnet.com/news/mystery-startup-from-ex-mozilla- ceo...](http://www.cnet.com/news/mystery-startup-from-ex-mozilla-ceo-aims-to- go-where-tech-titans-wont/)

Use Link Bubble to open links in the background on Android | Aug 26, 2015 [http://www.cnet.com/how-to/use-link-bubble-to-open-links- in-...](http://www.cnet.com/how-to/use-link-bubble-to-open-links-in-the- background-on-android/)

</comment><comment><USER92> Is it using Servo?

<comment><USER37> No, it's using Chrome, Firefox for iOS and LinkBubble.

<comment><USER92> That's not fun. But I guess Servo isn't ready yet. But why aren't they using Gecko for example with IPC embedlite?

</comment></comment></comment><comment><USER93> If we took the name "Brendan Eich" and replaced it with "Comcast" more of us would find this entirely loathsome.

Indeed it is a very loathsome business model.

People have taken exception to it when ATT and Comcast inject ads into your browsing experience and when Adblock Plus removes and then reinjects them.

Why is this not hijacking the web, extorting publishers with buy into yet another ad network and then trying to leverage this into a future payment network?

</comment><comment><USER94> Can they block scroll-jacking too?

</comment><comment><USER95> The scrolling on this website is janky as hell. Looks like they are using some "Smooth scrolling" plugin that makes scrolling not smooth at all. Not sure why native browser scrolling was insufficient for them, I'm scrolling here in HN all the time and it's perfectly smooth.

<comment><USER96> Smooth scrolling plugins are vastly more offensive to me than most advertising.

<comment><USER97> I really wonder who thought adding lag to a primary browser interaction would make your pages better.

</comment></comment></comment><comment><USER98> It is very brave of Brendan to pursue such an obviously dead-end idea.

</comment><comment><USER99> But I want to block _all_ advertising, not just harmful advertising.

<comment><USER100> 100 % agree. I have been using webview or Chromewebview to whitelist all the sites that I browse. See [https://github.com/tobykurien/WebApps](https://github.com/tobykurien/WebApps) I can browse with 56Kbps on the way to my work even in suburbs with poor 2G.

</comment></comment><comment><USER101> It says 'startup' but I don't see a business model or customers willing to pay for what they can already get free.

</comment><comment><USER102> This seems awful from a content provider perspective. I no longer get to have control over my own content, Brave gets to decide for me how much my content is worth and what ads appear on my site.

This isn't that far removed from coming into a bakery and saying "The Cupcakes are no longer $2, they're $1.50 'coz that's what we think people want to pay."

I realize the idea is that this is "better" for the content providers than Ad Block, but both are, IMHO stupid. If a site you visit has ads you don't like, complain to the people who run the site and stop going to it. All Ad Block software has never been a fix, merely a tool in an ever escalating war of ads where users and content creators both lose.

</comment><comment><USER103> hahahahahahaha and this is why I use the meanest adblocking oss software i can find on my devices

</comment><comment><USER104> u

</comment><comment><USER105> Have you seen git of desktop version? It seems it's completely written in JavaScript: [https://github.com/brave/browser- laptop](https://github.com/brave/browser-laptop)

Could such thing be secure?

<comment><USER37> JavaScript engines have to run untrusted code from the web 24/7\. They're some of the most secured software in existance.

</comment></comment><comment><USER106> I would much prefer a new browser that makes true native web apps possible with a one-click install to indicate trust.

A browser built with Electron that exposes Node.js and otherwise keeps away from the HTML5 kitchen sink, in order to push innovation away from the spec committees and back out to the community. Vital technology like TCP, UDP, DNS, and the filesystem is being locked up behind a fascade of poorly implemented APIs.

A browser with a small, efficient core, optimized for rendering, and with a brilliant app install system, and brilliant native cross-platform integration. The time is ripe.

<comment><USER107> Are you aware of any existing, serious effort to build such a thing?

I love the idea - and it strongly appeals to me as a developer - but what would make the average user switch to it?

<comment><USER106> Developers would drive adoption. I think adoption of new browsers has usually been driven by developers.

</comment></comment></comment><comment><USER108> This para from their home page could be akin to legalizing marijuana!

 _" The new Brave browser blocks all the greed and ugliness on the Web that slows you down and invades your privacy. Then we put clean ads back."_

<comment><USER41> Sounds more like substituting "clean" methadone in place of heroin.</comment></comment>


Ask HN: Best way to sell domain names? - <AUTHOR> Hi all,
I've accumulated some domain names over the last two years for projects that I started, but never got off the ground.
Instead of just letting the domains expire, what is the best way to sell them (and at least recover some of the cost of having them)?
Doing a search for domain valuations and auction sites comes up with plenty of hits, but if I'm only going to do this once, it would be nice to do it right.
What are my fellow HNers preferred ways of dealing with unused domain names?
Thank you, as always, for your advice :) <comment><USER2> As others have said, don't expect too much. I did have success selling domains on NamePros, but that was almost a decade ago and truthfully I'm not sure if they're as active anymore. I'm sure you can find other domain communities as well.

Quick tip: Don't just post the domain name. Explain _why_ you bought that domain in the first place -- it tends to get more inquiries in my experience. For example, let's say I wanted to sell the domain "bagfullofshit.com" \-- Disregarding the novelty aspect, you could explain that you were planning on starting a service that sends pranks to your friends and that you wouldn't be actually sending bags of shit. It gets them to think.

</comment><comment><USER3> You can also append a list of your domains here. You never know, someone here might be interested.

<comment><USER2> Agreed. If you've give up on the idea, why not share the names and what you had planned to do with them?

</comment></comment><comment><USER4> Realistically, most of your domains are likely to be worthless (to others). They may be great names, but are they names that have a resale market?

NewYorkBagels.com for example would be something a real business would want to buy. Something "brandable" like bagelo.io is much less likely to find a buyer (apart from anything else, who would be looking for it?).

If I've made the wrong assumption, and your names are in fact good one to three word generic .coms for products that people buy, then there's flippa.com (has good free escrow included, and both paid auctions and free listings). If your name is really good, there's also sedo.com, who charge higher fees. Over the past year I've sold way more on Flippa than Sedo.

Don't be surprised if very few of your names get any offers, that's just the way the market is, very illiquid. It can take a decade or so to find the right buyer.

</comment><comment><USER5> Steps to sell your domain names at major marketplaces: Organize your domain names for sale Set pricing for your domain names, Hang a for sale sign Select the right marketplaces GoDaddy.com Flippa.com Sedo.com DomainNameSales.com Afternic.com

<comment><AUTHOR> Is it allowable to list your domain at more than one marketplace?

</comment></comment><comment><USER6> Make sure your whois contact info is up to date, not whois guarded and works. The majority of domains I've sold privately, when the buyer directly seeks me out. Haven't had much luck in marketplaces.

</comment><comment><USER7> [http://domainnamesales.com/](http://domainnamesales.com/) is one of the best resources online and is what many professional domainers use.

</comment><comment><USER8> _two middle fingers way in the air_

</comment><comment><USER9> Sedo

<comment><USER10> metricsbot</comment></comment>


Tell HN: AdNauseam got my IP address blocked from HN for being a bot - <AUTHOR> A few days ago I started getting 403 errors when accessing some comment pages on Hacker News. Yesterday I sent an email to firstname.lastname@example.com asking why those errors are happening. I was told that it was because someone was trying to submit the same article over and over again from my IP address. It was definitely not me.
I started looking for signs of malware on my machine - suspicious running processes or network activity, past logins, modified system files, and I even ran an antivirus scan. Then at some point Firefox connected to news.ycombinator.com without the website being open. I saw the connection appear in `about:networking`, but I didn't know what made it (and didn't have time to learn how to find out). The HackerNews moderator I talked to earlier told me that there was another attempt to submit an article around that time and gave me its address.
My first thought was that it must be a compromised extension. I found the domain name and a significant portion of the URL of the article in a file belonging to AdNauseam (https://adnauseam.io/), an ad blocker based on uBlock Origin that also clicks on ads. There was no mention of it being compromised on the Internet.
The article was one I had read at some point, and had a "Share this on Hacker News" link pointing to the address generated by the bookmarklet (https://news.ycombinator.com/bookmarklet.html). One of the filter lists I had enabled tries to detect "Share this" links, so AdNauseam hid the link and clicked on it quite a few times. I still have to figure out why there were so many requests because I think I only visited that website once.
Luckily no submission was actually made because AdNauseam didn't click on the button on the submission page itself. <comment><USER2> I think using AdNauseam is not such a great idea in general as you're surrendering your IP address and other information to every tracker on every webpage.</comment>


Safely Composable Type-Specific Languages [pdf] - <AUTHOR> http://www.cs.cmu.edu/~aldrich/papers/ecoop14-tsls.pdf <comment><USER2> It's very interesting and neat and I hope they keep making progress, but one big question that I'm left with is why this is better than using an embedded DSL.

This is supposed to be addressed on page 2, but the example is kind of a strawman:

> 1 let webpage : HTML = HTMLElement(Dict.empty(), [BodyElement(Dict.empty(),

> 2 [H1Element(Dict.empty(), [TextNode("Results for " \+ keyword)]),

> 3 ULElement((Dict.add Dict.empty() ("id","results")), > to_list_items(query(db,

> 4 SelectStmt(["title", "snippet"], "products",

> 5 [WhereClause(InPredicate(StringLit(keyword), "title"))]))))])])

Although they claim that it's "too cognitively demanding for comfort", there are many ways that it could be improved without resorting syntax extensions, for example:

> 1 let webpage : HTML = HTML({}, [Body({},

> 2 [H1({}, ["Results for " \+ keyword]),

> 3 UL({"id": "results"}, to_list_items(query(db,

> 4 ... etc. ...

Another reason to prefer an EDSL over syntax extensions for writing HTML is that an EDSL won't require that you write the close tags!

This isn't to say that they're wrong, it's that I think they need to do a better job of comparing their approach with EDSLs.

\----

EDIT: does anybody know how to do code formatting in HN posts? It looks so ugly the way I did it.

<comment><USER2> Formatting thanks to @tempodox:

\</comment></comment><comment></comment><comment>----

It's very interesting and neat and I hope they keep making progress, but one big question that I'm left with is why this is better than using an embedded DSL.

This is supposed to be addressed on page 2, but the example is kind of a strawman:

      let webpage : HTML = HTMLElement(Dict.empty(), [BodyElement(Dict.empty(),
        [H1Element(Dict.empty(), [TextNode("Results for " + keyword)]),
         ULElement((Dict.add Dict.empty() ("id","results")), to_list_items(query(db,
          SelectStmt(["title", "snippet"], "products",
           [WhereClause(InPredicate(StringLit(keyword), "title"))]))))])])

Although they claim that it's "too cognitively demanding for comfort", there are many ways that it could be improved without resorting syntax extensions, for example:

      let webpage : HTML = HTML({}, [Body({},
        [H1({}, ["Results for " + keyword]),
         UL({"id": "results"}, to_list_items(query(db,
         ... etc. ...

Another reason to prefer an EDSL over syntax extensions for writing HTML is that an EDSL won't require that you write the close tags!

This isn't to say that they're wrong, it's that I think they need to do a better job of comparing their approach with EDSLs.

</comment><comment><USER3> At a first glance, I wondered if the authors knew OCaml with its Camlp4, which seems to solve exactly that problem. So I immediately got the feeling that they are just reinventing the wheel.

However, in page 22 they finally provide a short comparison of their approach with Camlp4 and similar mechanisms for other languages. Now, their approach makes a lot more sense to me. I think they should have done this at a more prominent place, e.g. in the abstract or the introduction.

<comment><USER4> That's sort of how academic papers work. Related work goes into the unsurprisingly named "related work" section, which will almost always be the second to last.

So people scanning papers will often use something like the following path:

(a) abstract (b) end of 1st section, "contribution of this paper" (c) related work ("do I already know some of this")

-> if still looks interesting, read entire paper.

<comment><USER5> Conventions vary by subfield. In my field (AI) it's more common for the related-work section to go up front, as the 2nd section right after the Introduction. You first set up/motivate/preview what you're going to do, then you survey what's already been done in this area, and then you present your own advance, once you've laid the groundwork for how you're either building on, or diverging from, the current state-of-the-art. Sometimes it does read better to put it 2nd-to-last, but IME that's less common in AI. (To make sure I'm not completely misremembering, I spot-checked 5 random papers from this year's AAAI proceedings [1], and 5/5 had the Related Work section up front.)

[1] [http://www.aaai.org/Library/AAAI/aaai14contents.php](http://www.aaai.org/Library/AAAI/aaai14contents.php)

</comment></comment></comment><comment><USER6> This reminds me of quasi-literals, proposed (accepted?) for the next version of JS:

[http://wiki.ecmascript.org/doku.php?id=harmony:quasis](http://wiki.ecmascript.org/doku.php?id=harmony:quasis)

[http://www.nczonline.net/blog/2012/08/01/a-critical- review-o...](http://www.nczonline.net/blog/2012/08/01/a-critical-review-of- ecmascript-6-quasi-literals/)

The point is to eliminate content injection bugs (XSS). I suppose it's not really the same because JS isn't statically typed, but the motivation seems similar, and it looks similar.

Originally from the E programming language: [http://www.erights.org/elang/grammar/quasi- overview.html](http://www.erights.org/elang/grammar/quasi-overview.html)

</comment><comment><USER7> Rapidly goes over my head, but seems really neat. I'd love to see this for a mainstream language (esp. one I use). Right now the solution seems to be to write an API that sort of imitates the literal you want (in C# using fluent extension methods [i.e.: static methods called with the dot operator against the first argument] to imitate SQL, for instance).

</comment><comment><USER8> Looks interesting, but Wyvern is just too obscure an example. That thing isn't documented anywhere.

And what potions do you have to quaff to be able to read those Hindley Milner Type Formulae? I still find them incomprehensible.

<comment><USER9> Glynn Winskel, "The Formal Semantics of Programming Languages", 1993 -- a bit dated but still quite good. Covers basic semantics/type theory.

Benjamin Pierce, "Types and Programming Languages", 2002 -- y'know, just your basic type theory.

Benjamin Pierce, "Advanced Topics in Types and Programming Languages", 2005 -- Chapter 10 is a juicy 128 pages on Hindley-Milner type inference. Good for both theory and implementation tricks. It looks at HM typing as a constraint system where the rules are Just Right so that if you get a solution you get a solution that is "maximally nice". It describes variants that are perhaps not quite as beautiful but which in some ways are "better" (= can statically check more of your code or where the programmer can express him or herself freer).

If you want to know more about unification, which is how HM type inference and checking is usually/originally stated:

Franz Baader and Wayne Snyder, "Handbook of Automated Reasoning", 2001 -- chapter 8 is called 'Unification theory'.

Peter Norvig, "Correcting A[sic] Widespread Error in Unification Algorithms", 1991 -- many published algorithms were subtly wrong.

Unification is really an example of a term rewriting system:

Franz Baader and Tobias Nipkow, "Term Rewriting and All That", 1998.

It is amazing how much there is to say about a 10-line algorithm (Algorithm W) / such a short set of typing rules / such a small constraint system as the HM type system.

<comment><USER8> Cool, thanks for that list! I also found [https://github.com/tomprimozic/type- systems](https://github.com/tomprimozic/type-systems) which has OCaml implementations (including algorithm W).</comment></comment></comment>


Programming Sockets in Python - <AUTHOR> http://levlaz.org/programming-web-sockets-in-python/

<comment><USER2> Looks like the title was already changed on the actual article.

</comment><comment><USER3> Title should be changed to "Programming sockets in Python". This blog post has nothing to do with websockets.

<comment><USER4> Yes I know :( That was my initial mistake, the blog post itself has been updated..

<comment><AUTHOR> Nevertheless, great article, levlaz! Thanks for writing it. At least, I found it very useful.</comment></comment></comment>