Divisibility by 7 is a Walk on a Graph - how does it work? - <AUTHOR> http://blog.tanyakhovanova.com/?p=262 <comment><USER2> This graph is just deterministic finite automaton[1] with some fancy rules to make it easier to remember and to draw less arrows. What this proves is that that when you look at natural numbers as a words over {0, 1, ..., 9} alphabet, numbers divisible by 7 form a regular language[2]. This method generalizes to divisiblity by any number, not just 7, though it requires some cunning to come up with a nice way of representing the DFA like in OP's post, without tens or hundreds of arrows.

Another cool thing in this is that existence of such graph implies existence of a regular expression testing divisibility by 7. Indeed, it's easy to check divisibility by 2 or 5 using regular expressions, it's /^.[star](0|2|4|6|8)$/ and /^.[star](0|5)$/, where [star] means star operator (HN markup changes it to italics). It's a bit less clear how to construct similar regular expression for 7, but if follow closely the proof of equivalence between regular languages and languages recognizable by finite state automata, you can reconstruct the regular expression checking the divisibility by 7 from OP's graph.

[1] - <http://en.wikipedia.org/wiki/Deterministic_finite_automaton> [2] - <http://en.wikipedia.org/wiki/Regular_language>

<comment><USER3> Great comment. Am I the only person waiting for someone to provide the regular expression intimated at above?

<comment><USER4> If you want regular expressions for divisibility, here's the little toy I made last time this came up on HN: [http://s3.boskent.com/divisibility- regex/divisibility-regex....](http://s3.boskent.com/divisibility- regex/divisibility-regex.html)

You can do any number in any base up to 36 (subject to limitations of patience and available RAM, naturally).

The resulting regular expressions are not terribly friendly. You have to remember that converting a DFA to a regex can lead to exponential blow-up in size.

</comment></comment></comment><comment><USER5> You asked "how does it work?" so let me answer that. How it works:

Okay, so the black arrows represent adding one, and the white arrows represent multiplying by ten. The circle that you see represents the fact that after we hit 7 when adding by one, we "loop around" to 0 again, because 7 has remainder 0 when divided by 7.

So we are constructing (in their example) 325 by saying:

        Instruction     | Number | Remainder
        start with 0.   |    0   |  0
        add 3.          |    3   |  3
        multiply by 10. |   30   |  2
        add 2.          |   32   |  4
        multiply by 10. |  320   |  5
        add 5.          |  325   |  3

Now the only thing you really need to know is that "multiply by 10" is only a function of the current remainder, it can never depend on the rest of the digits we've processed before in any other way.

To see this, just write out the number. The number is 7 k + r for some remainder r. Multiplying by 10 produces 70k + 10 r. Taking the remainder when you divide by 7 is just... (10 r) % 7, because the first term is divisible by 7. So you only need to keep track of the remainder.

In fact, 10 r is really 7r + 3r, and the 7r is also divisible by 7, which means that the white arrows really just multiply by 3. That is why 0 maps to 0, 1 maps to 3, 2 maps to 6, and 3 maps to 9 % 7 == 2.

</comment><comment><USER6> jowair already said this [1], but here's a less concise explanation:

The black arrows implement the operation of adding one mod 7, the white arrows implement the operation of multiplying by ten mod 7. The decimal expansion of a number tells you how to build it out of the operations of adding 1 and multiplying by 10, for example, to get 321, start at 0 and then do the operations +1, +1, +1, x10, +1, +1, x10, +1. Of course, if you do the operations mod 7, by following the arrows in the graph, instead of getting your number you get its residue mod 7.

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

<comment><USER7> A quicker mnemonic for me is that the white arrows are multiplying by 3 mod 7, which is an equivalent operation to multiplying by 10 mod 7.

</comment></comment><comment><USER8> Divisibility by any n is a walk on a graph with n nodes, each one representing one of the modulus equivalence classes 0 .. n-1.

<comment><USER9> And there are graphs going either way, either starting from most or least significant digit. (Take previous modulus, *10 mod N, + next digit mod N), or (Take previous modulus, + 10^(next digit) mod N)

<comment><USER8> In the case of least significant to most significant, that means you need more nodes, because the position of the current digit is another piece of state you also have to keep track of.

<comment><USER9> Yes - you need to work powers of 10 modulo the divisor as well.

</comment></comment></comment></comment><comment><USER10> I've been waiting decades for anyone to be interested in a divisible-by-7 test that works right-to-left. Only 7 states required:

      #include <stdio.h>

      int x[7][10] = {
        /* 0 */ {0, 2, 4, 6, 1, 3, 5, 0, 2, 4},
        /* 1 */ {5, 0, 2, 4, 6, 1, 3, 5, 0, 2},
        /* 2 */ {3, 5, 0, 2, 4, 6, 1, 3, 5, 0},
        /* 3 */ {1, 3, 5, 0, 2, 4, 6, 1, 3, 5},
        /* 4 */ {6, 1, 3, 5, 0, 2, 4, 6, 1, 3},
        /* 5 */ {4, 6, 1, 3, 5, 0, 2, 4, 6, 1},
        /* 6 */ {2, 4, 6, 1, 3, 5, 0, 2, 4, 6}
      };

      int divisible_by_7(char *b)
      {
        char *p = b; while (*p) p++; // skip to NUL
        int state = 0;
        while (--p >= b)
          state = x[state][*p-'0'];
        return !state;
      }

      int main(int argc, char *argv[])
      {
        int i;
        for (i = 1; i<argc; i++)
          printf("%s is%s divisible by 7\n", argv[i], divisible_by_7(argv[i]) ? "" : "n't");
        return 0;
      }

</comment><comment><USER11> Would this help solve the ITA Software "luck sevens" puzzle? (<http://www.itasoftware.com/careers/puzzle_archive.html>) I never understood how to do that one except by brute force.

"Write a program to compute the sum of all the integers between 1 and 10^11 both divisible by seven and, when the decimal digits are reversed, are still divisible by seven."

</comment><comment><USER12> There's a sequence of numbers for jumping over all n-smooth numbers. The problem is that the sequences get very large very fast: [http://alquerubim.blogspot.com.br/2011/12/candidatos- primos....](http://alquerubim.blogspot.com.br/2011/12/candidatos-primos.html)</comment>


Debugging using system calls in Mac OS X - <AUTHOR> http://bryce.is/writing/code/macosx/debugging/udp/sockets/dtruss/dtrace/eaddrinuse/2016/07/30/debugging-using-system-calls.html <comment><USER2> One thing that the article does not mention is that dtruss is also just a DTrace script (well, a DTrace script in a shell script ;)). DTrace comes with some other nice scripts (iosnoop, execsnoop, opensnoop, etc.)[1].

But you need to disable some portion of the system integrity protection:

[http://stackoverflow.com/a/34616033](http://stackoverflow.com/a/34616033)

[1] [http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace- scr...](http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scripts-for- mac-os-x/)

</comment><comment><USER3> I love articles about expert sleuthing, especially when it involves low-level code. I hope the author shares his discovery with the Go engineering and documentation teams, perhaps via bug reports.

<comment><USER4> If you're into that there's a whole conference on dtrace you should check out called dtrace.conf

</comment></comment><comment><USER5> Meanwhile, if you try to run the system lldb on the system ruby interpreter on OSX, you get this:

      % lldb ruby
      (lldb) target create "ruby"
      Current executable set to 'ruby' (x86_64).
      (lldb) run
      error: process exited with status -1
      (cannot attach to process due to System Integrity Protection)

<comment><USER6> Reboot in safe mode (⌘+R immediately after booting), open a terminal, run:

      csrutil disable

Reboot.

      -> % lldb ruby
      (lldb) target create "ruby"
      Current executable set to 'ruby' (x86_64).
      (lldb) run
      Process 436 launched: '/usr/bin/ruby' (x86_64)

I for one am glad that it's now much harder to scam my grandparents.

<comment><USER5> That disables a lot of useful protections, seems overkill just to be able to trace a ruby script :-/

<comment><USER7> You can also disable just the relevant bits - `csrutil enable --without debug` would probably do the trick here.

</comment></comment></comment></comment><comment><USER8> Great tools, I should try to use them.

In this case could it have been done by lsof ?

</comment><comment><USER9> "UDP connections"? UPD is connection less.

<comment><USER10> It is possible to have a "connected UDP socket". It is one that is already set up with a remote endpoint.

 _if you connect() a SOCK_DGRAM UDP socket to a remote host, you can use send() and recv() as well as sendto() and recvfrom(). If you want._

[http://beej.us/guide/bgnet/output/html/multipage/connectman....](http://beej.us/guide/bgnet/output/html/multipage/connectman.html)

</comment></comment><comment><USER11> I often wonder why I don't come across bugs like this but then I think to myself "I'd never write code that closes a socket until all writes and reads are done."

So the question is: how do you do that in Go?</comment>


Affinity Designer for Windows in Free Beta Now - <AUTHOR> http://affinity.serif.com/windows <comment><USER2> Pity none of the developers of these "Photoshop/Illustrator Killer" apps ever considers a Linux version.

I may be an untapped market of one, but I don't think so —of people currently using OSX and Linux, who would switch to Linux full-time in a heartbeat, if only there were some decent graphic design apps available. Everything else I need to do is already covered.</comment>


Privacy-Preserving Ad Click Attribution for the Web - <AUTHOR> https://webkit.org/blog/8943/privacy-preserving-ad-click-attribution-for-the-web/ <comment><USER4> This is such a weird proposal that I think indicates an unawareness of the advertising industry. The reason the internet tracking industry exists is entirely because the first party advertisers don't want to deal with attribution or anything like that. They are only interested with selling their product. They contract out to third party companies specifically to not have to deal with those attribution issues. The reason those third parties have to resort to tracking is because advertising fraud is rampant on the internet and the first party advertisers want some assurance that they aren't just throwing money away. In the traditional advertising world, they can see the ad on TV or printed somewhere and know they aren't getting ripped off. There is absolutely no assurance on the internet that anyone is seeing your ad. So this proposal is saying that the advertiser should be in the business of assuring that their ads are being seen and delivering value, but it still doesn't solve the problem that the advertiser wants to be sure how many of their ads are being seen. Advertisers are paying for the number of times and ad is shown not the number of times it is clicked (this isn't the year 2000), so this proposal gives the advertisers more work to do without actually solving their real problem. I don't foresee any significant adoption of this proposal from advertisers.

Now, if someone could come up with a privacy-preserving solution to advertisers quality assurance problem of buying advertisements on the internet, that would be big business.

<comment><USER5> > Advertisers are paying for the number of times and ad is shown not the > number of times it is clicked (this isn't the year 2000),

aren't facebook and google ads cost per click rather than cost per impression?

<comment><USER6> FB is CPM (Generally) Google is both depending on the ad product.

<comment><USER7> FB is not CPM, they charge for "reach" which is based on users, not impressions. It's kind of unique.

<comment><USER6> I'm sorry but this is false. They do charge based on CPM which is why they can continue charging you for serving higher and higher frequencies to the same audience. If they charged based on reach then once you went over frequency 1 they would stop charging correct?

<comment><USER7> >They do charge based on CPM which is why they can continue charging you for serving higher and higher frequencies to the same audience.

They charge based on reach and will serve your ad to users as many times as they want until they illicit a reaction. There is some proprietary algo at work to determine how your spend gets distributed.

How do we know this? If my paid post gets a good response, it gets free impressions. If my paid post gets poor response, it gets few impressions and I get a warning about the post.

Facebook is incentivizing good content, and it's not charging you per impression. Impressions definitely come into play, but what is more important is users, frequency, and engagement. Unlike other platforms.

<comment><USER6> I'm sorry but again no. Your rationale is due to organic sharing of the ad rather than some sort of weird reach charging. Again if they were charging by reach and I was hitting frequency 7 or something surely they couldn't keep charging because those people have already been reached correct?

I'm well aware of the Facebook's algorithm that prioritizes ads with a higher relevancy score (or rather the 3 categories of quality that they recently replaced relevancy score with). They punish bad ads by artificially raising CPMs and artificially lowering them for quality ads.

So once again, yes they are charging you by impression. They just also make a distinction between paid impressions and earned impressions. Eg someone shares your ad and their friends see it = earned impressions.

Here's a link where Facebook says they're explicitly charging you based on CPM or CPC: [https://www.facebook.com/business/a/ad- bidding](https://www.facebook.com/business/a/ad-bidding)

Relevant quote: "Depending on the type of bid you choose, you only pay for clicks or impressions when you run ads. Your ads will be deployed evenly over time, and you'll never be charged over your budget."

<comment><USER7> I think there is something nuanced here about my point that you aren't addressing. I have served Facebook ads through both a secondary vendor and through their interface. I can tell you with 100% certainty that my ads through the second party vendor overdeliver impressions based on the response rate of the ad. Unless my ad is complete garbage, I always get more impressions than I have paid for.

That's right, I get free impressions if my ad (not boosted post) does better.

How else I know this is that their video completion rate when calculated by impression is absolutely abysmal compared to other platforms. This is why they don't address VCR in their own interface. They want the ability to serve your ad however they see fit until there are results.

Also, I can ask Facebook to charge me only for plays, and you even alluded to the fact that you can pay for engagement as well. This backs up my point that Facebook will serve your ad as many times as it wants until it finds the right user-ad fit.

That being the case, I go back to what I already said. Yes, impressions are very important here, but they are not exactly what you are paying for. You are paying for user reach and engagement.

"Your ads will be deployed evenly over time, and you'll never be charged over your budget"

But your ads are usually served more than you ordered. Unlike other platforms, where I only get exactly as many impressions as I pay for.

In a way it is similar to Adwords Quality Score for CPC.

<comment><USER6> I think we're arguing semantics here. For context I also have bought FB natively and through a DSP for about 8 years. The phenomenon that you're referencing is what I was talking about with earned/organic impressions versus paid impressions. I assume you're buying fixed cpm on your secondary vendor? Again what is happening is people are sharing the ad or tagging people in the comment section. Those would be earned impressions and would increase your reach but that doesn't mean FB doesn't charge based on CPM. If I'm buying a magazine ad and someone showed that magazine ad to their friend that doesn't mean the magazine wouldn't still sell that ad slot on a CPM basis. I understand why it would seem they would charge on a different basis than CPM at first glance but I assure you that isn't the case. As for engagement and video views completion that's all well and good but that's an optimization option rather than a charging basis. By all means my job would be much simpler though if Facebook only charged me on a conversion basis though haha.

I suspect we're at an impasse but you really should reconsider your position and look at the nuance between earned/organic impressions you get from an ad and paid impressions. As an aside one thing we do agree on is the abysmal video completion rate.

<comment><USER7> I appreciate the conversation and will take another look into whether or not my raw impressions for my ads are getting mixed in with organic impression numbers.

<comment><USER6> Appreciate the conversation as well, and if you find that I'm wrong please do tell me! Always open to learning.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Can I get a "hell no"?

Why oh why would you want to normalize _anything_ about online advertising by standardizing it as an HTML property? Why does anyone think it is the browser's responsibility to support this?

If ad companies are having trouble "attributing their campaigns" or whatever - that's tough? It's their responsibility to figure it out, not browser vendors, who should be on the _user 's_ side here (c.f. _user_ agent).

This is a terrible idea, breaks the abstraction between markup and application, and should definitely not be added to HTML standard.

<comment><USER9> The context for this proposal is _NOT_ that, in a vacuum, ad-tracking is a desirable feature of HTML.

The context for this proposal is Apple has already been rolling out privacy protections for Safari and iOS, other players (like Big G) have had complaints, and this proposal undercuts those complaints. It's a negotiating tool, effectively.

Apple's privacy protections have made life harder for Google and other folks in the advertising space. Apple has basically tried to make it hard or impossible for anyone to stitch together user activity across different sites and build a profile of that user.

Advertisers have complained about losing ad attribution, and that complaint is legitimate. But, the existing techniques that are used to measure ad attribution also allow a _excessive_ amount of additional data to be collected. Arguably, the ad attribution angle is just a PR-friendly fig leaf over what they're really worried about, which is user profiling.

So, Apple's counter-proposal: Here is a way to get ad attribution! Also, by the way, it doesn't allow user profiling, but that's ok, right? Of course it is. And now, ideally, we get to watch advertisers squirm as they try to come up with outlandish attribution scenarios that justify the collection of profiling data, while struggling to not admit what types of profiling they actually do and what fraction of their valuation that comprises.

<comment><USER8> I still don't understand why Apple would be compelled to offer the olive branch at all. Sure, advertisers have complained their business model is getting harder - what motivates Apple to help fix that? What possible leverage could advertisers even have? Apple doesn't need a negotiating tool if there's nothing Apple wants from the advertisers, just block the nefarious tracking and move on.

<comment><USER10> Apple wants something from advertisers. Money.

They want 2 billion in revenue from advertising by 2020.

They are testing the waters, and there's no doubt a faction within the company that believes that in the long term, getting a slice of the firehose of ad revenue is worth a small loss in revenue from opinionated anti-ads users[1] leaving their ecosystem.

The best part about the Apple walled garden is that once ads become an important part of their revenue stream, they'll be able to ban ad-blockers on their platform.

[1] What are they going to do, switch to Android? Communicate by carrier pigeon?

<comment><USER11> So Apple is going to do a 180 and suddenly switch to being anti-privacy and pro-advertising. Disable the Safari content blockers they only recently added, end the advertising campaigns they just started using. And all for a tiny 1% of their revenue ?

Privacy is a fundamental part of Apple's selling proposition and personal to Tim Cook given that in many cases gay and other minorities are killed due to privacy leaks.

<comment><USER12> > Privacy is a fundamental part of Apple's selling proposition

From earlier today :

"Note: Though we cannot bring an official Tor Browser to iOS due to restrictions by Apple"

([https://blog.torproject.org/new-release-tor- browser-85](https://blog.torproject.org/new-release-tor-browser-85))

Money is the only part of Apple's selling proposition. It's nice they cater to the privacy conscious for the time being, for the time being.

<comment><USER13> Here's the whole quote

> _Note: Though we cannot bring an official Tor Browser to iOS due to > restrictions by Apple, the only app we recommend is Onion Browser, developed > by Mike Tigas with help from the Guardian Project._

Your truncated quote makes it sound like Apple doesn't allow private Tor browsing. There are other Tor browsers on the App store. What Apple doesn't allow is third-party HTML renderers and JavaScript engines (Tor Browser is based on Firefox)

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> > The browser should act on behalf of the user and do its best to preserve > privacy while reporting on ad click attribution.

I certainly have never _wanted_ my browser to report ad click attribution.

<comment><USER15> This spec literally defines a way of doing so without attribution - <USER3> various confirmation mechanisms are all done using stateless and cookieless network requests - all the site operator gets is confirmation that _someone_ did something.

The alternative is a browser breaking all the tracking mechanisms and then getting blocked because it's "blocking ads".

This provides an API that allows ads to work, while also allowing a browser to block all the tracking techniques currently being used.

That way web sites can have a revenue stream without gratuitously violating their reader's privacy.

<comment><USER14> The spec is about doing attribution, literally. It makes the attribution anonymous just to work around privacy advancements that have been adopted recently.

Until browsers get blocked for being anonymous, this is never in the interest of the user.

And if a site doesn't work unless I turn off adblock / switch browser, then it's most likely bad on multiple levels.

<comment><USER16> Agree. To add, if we accepted this as the attribution source of truth, there would be large conflicts of interest from companies like Google who own an ad network and also Chrome. They would basically claim all Adwords traffic is awesome.

</comment></comment></comment></comment><comment><USER17> > In plain English this report would say: 24 to 48 hours ago, some user who > previously clicked shop.example's ad campaign 55 on search.example, > converted with data 20 on shop.example.

this, i suppose, assumes that the browser is active at the time, but at any rate, it will screw with attribution windows pretty hard. advertisers will definitely be very happy to now see conversion numbers which could have happened at any time and are unverified

<comment><USER16> Yes - this is one of the biggest issues in the proposal. Apple's browser will be in charge of all the attribution logic. This could create very perverse incentives for any browser company. For example, if Google wants to make their ads look effective, they can use Chrome to mess with the attribution and no one would know.

</comment></comment><comment><USER18> This seems totally absurd.

Clicks are not tracked via cookies but via urls. The search engine in this example would send the user to someshop.com/someproduct?clickid=7e82jv927x748342

They say _nothing_ about how they want to prevent this and other tracking mechanisms. Yet, they propose an overly complex system to send even more data to advertisers.

Also they do not say anthing about the _ip_ that their additional ping will send out. I definitely do _not_ want my browser to communicate with an advertiser days later and without my consent.

Also, click tracking is not even a big problem in the first place. Tracking you wherever you _go_ is. Even if you do not click on any ads.

</comment><comment><USER19> We track for targeting, not for attribution. I don't see any benefit for the targeted individual or the advertiser coming out of this proposal. This proposal only brings benefits for the parties on the publisher chain who now have one more angle for committing fraud.

<comment><USER20> Apple is banning targeting (ITP) and creating a privacy-preserving technology to address the only legitimate interest of the ad-tech complex.

<comment><USER19> I am aware of ITP. There is no ad-tech without targeting. There are >50 million ad opportunities out there at any second, you need to target to delivery the message to a proper recipient. Attribution is a bottom of the chain problem, often problematic due to fraud.

<comment><USER21> Sure there is still targeting, just target based on the site/page topic, not based on the supposed user's profile.

<comment><USER19> Of course we do that. But then how do you validate that wasn't a bot generating a request trying to increase the publishers traffic? Do you trust the publisher blindly? You need some sort of insight into the web request other than a single integer counter claiming an impression occurred in order to validate the individual.

Part of targeting is ignoring the fraud.

<comment><USER21> You simply pay based on actual conversions from the ad. Then, click fraud is made pointless.

<comment><USER19> That's not how the business model works. You pay for the impressions delivered and the cost of the data used for targeting. If I get no conversions, who pays Slate.com for the million of impressions that nobody clicked on?

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Everyone keeps claiming that exact tracking is necessary, or that this is ineffectual (as DNT).

It is clear that browsers are doing everything they can to prevent user abuse. So let's imagine they succeed.

Imagine what happens to the current advertising model if browsers completely break cross origin tracking. That means you can't link purchases to the original ads, and so the compensation model no longer works at all.

This provides a mechanism to do the required attribution without also tracking or compromising a user's privacy. Without that, there isn't a way for the current ad model to work.

<comment><USER22> _> It is clear that browsers are doing everything they can to prevent user abuse._

If that was true in general, my browser would block all cookies and all content from third party domains by default. It would systematically misreport Referer and User-Agent. It would disable APIs typically used for fingerprinting. It would disable all redirect-through-advertiser links. All managed by a simple and unintrusive whitelist (per first party, per third party or temporarily for a whole browser session or for a site session) so that you can opt in to these things where there is a legitimate use.

It isn't because it has a much greater interest in browsing being a seamless experience and the web being a powerful application platform, and actual privacy measures are buried in some configuration menu or in third party plugins so that whiny power users can enjoy privacy while the unwashed masses go about their browsing as though the web standards aren't completely messed up from a privacy perspective.

 _> This provides a mechanism to do the required attribution without also tracking or compromising a user's privacy. Without that, there isn't a way for the current ad model to work._

Is that a good or bad thing?

<comment><USER15> Safari already segments cookies, storage, etc such that the ability to use those to track people is limited. I see no reason to believe it's not going to continue making tracking harder.

The user agent string does not provide as much information as people seem to believe.

Whitelists aren't usable, and don't work at scale.

The whole point of breaking tracking in general is so that the "unwashed masses" get privacy. Every study and survey has found that users value their privacy, but have been told (by advertisers and I assume you) that privacy is dead, or that they cannot have the internet without it. It is absolutely not something that just "power users" care about. It's just power users are the only ones who currently get any.

Finally, the attribution isn't attributing to a specific user - the entropy is heavily limited, the reporting is time delayed by a random amount, and is made with a stateless session so there isn't any way to directly tie it to a single specific user, leaving just the IP address, which is now typically shared, and frequently changes.

<comment><USER22> _> Safari already segments cookies_

You said browsers in plural, though.

* >The user agent string does not provide as much information as people seem to believe.*

How much information do people seem to believe that it provides?

 _> Whitelists aren't usable, and don't work at scale._

I don't need it to "work at scale". I need to be able to turn blocking off occasionally. Also, "at scale" and "usable" are vague to the point of meaninglessness. Why aren't they usable? What scale does a whitelist need to work at that makes you say that it can't?

 _> Every study and survey has found that users value their privacy, but have been told (by advertisers and I assume you) that privacy is dead, or that they cannot have the internet without it. It is absolutely not something that just "power users" care about. It's just power users are the only ones who currently get any._

That's my point exactly, because privacy isn't the browser vendors' top priority, nor are they generally doing "everything they can" to improve it. The standards don't even allow it.

 _> Finally, the attribution isn't attributing to a specific user - <USER3> entropy is heavily limited, the reporting is time delayed by a random amount, and is made with a stateless session so there isn't any way to directly tie it to a single specific user leaving just the IP address, which is now typically shared, and frequently changes._

"It's not so bad, really, for most users" is not the same thing as "browsers are doing _everything they can_ to prevent user abuse."

Add, I don't know, User-Agent and Referer to the mix to more reliably track different sessions on the same address. My address doesn't change frequently. I'm on a temporary lease but when it expires I get the same IP again or at least have since I started my account. This is not uncommon for a broadband connection in my whole country.

If you consider tracking individual users' behavior for ads user abuse, let me remind you that one of the largest perpetrators of that are working on their own browser and regularly get a say in how the web works.

</comment></comment></comment></comment><comment><USER23> This is a really interesting proposal but I wonder if there can be more than 64 buckets. I understand that the goal is to prevent user tracking but that number seems unnecessarily low.

<comment><USER24> Marketers don't want parameters to be tuned on them, I expected this reaction. And as a user I dislike that this scheme relies on delaying reports, obfuscation is not privacy if you can be deanonymized.

</comment></comment><comment><USER25> I guess the answer must be yes, but, do people actually do this? Click on an ad and make a purchase right away?

<comment><USER4> No, that does not typically happen and advertisers know that. That is called direct response marketing (think coupons in your free weekly newspaper) and is basically the lowest form of advertising. Advertising is a broad field including much more common forms of advertising such as brand awareness where the goal is to make the consumer aware of the product so they will have it in mind when they make their next purchase. Also remarketing, which everyone hates on the internet, where the product follows you around trying to see if you'll buy it again. For traditional advertising this is all the catalogs you get in the mail for things that you have bought in the past. It's always odd that most internet ad discussions try to turn all marketing into direct response marketing.

<comment><USER26> It's hardly the lowest form of advertising. Direct response is massive. Think of any time you've searched for something you intended to purchase. Killer conversion rates. This is a way more tangible form of advertising than brand awareness, because the impact of those campaigns is immeasurable.

It's also a way more practical way to buy ads, because you know exactly what you're paying for and can measure your P&L in near realtime.

</comment></comment></comment><comment><USER27> This is an interesting proposal...

While I am not super enthused about the idea of my browser being the one that reports this data (Actively), due to the current state of ads on the web this feels better than the alternatives.

We have already seen the effects of websites trying to get away with no ads and switching to a paid model. How often do we see complaints from users of sites like the Washington Post or the NYT that they can't read their news article. For the most part, attempts to get money from uses (who are at this point used to a "Free" web) has not seen great success. I would also argue that every site turning into asking for money is very problematic for anyone but the biggest players. Just saying that using ad blockers really is not a solution, if everyone used ad blockers we probably start to see issues with the available content on the internet.

I don't really know how I feel about this yet. It will be interesting to see if Microsoft and Mozilla (I doubt Google will jump on this one, at least not quickly) will get involved in this. If so, it might actually see some good adoption.

<comment> IX-103 Advertisers (and most publishers!) are unlikely to agree to this proposal as written. In particular the restriction that only the first party site can set up campaign identifiers makes it difficult for anyone other than a major publisher which already handles their own advertising (Facebook, Google, etc). The fact is that most sites don't have a direct relationship with the advertiser, so it just won't work for 90% of publishers.

<comment><USER28> If this is the only way they can get attribution on iOS devices, they won't have much of a choice.

<comment> IX-103 I'm saying they can't get attribution from this unless they are a major publisher. There's no choice there. This essentially means that bigger companies (that do direct advertising) can make more than double the revenue from ads as small companies.

Of course the small publishers could let the ads networks host their content (in an iframe?) to recapture that revenue, but then we end up in a worse privacy position -- as there only end up being a few hundred first party hosts on the web that host all of the content and can track you with first party cookies!

</comment></comment></comment></comment><comment><USER29> But they still have IP correlatable with server logs with timestamps and everything, plus you get a new client side DB what will be perked into by every adware in existence.

The stated goal of untrackability by timestamp matching is simply not achieved with just 12 to 24 temporal dithering for anything, but biggest websites on the planet.

They say it is privacy preserving, then, 5m minute into the text it comes out that it is nothing like that at all.

It is the next "do not track" header.

But to me it feels to be Apple's first "carrot and stick" step to chip away at Google walled garden.

See: few month ago they launched both a ad cookie killer, and a 3rd party cookie firewall by default. Clearly, there was a huge net loss of ad money nearly momentarily, they clearly wanted it to be a surprise, to push ad businesses into panic. Now they come with a stick: play our walled garden, and you get your ad cookie back.

In other news, people were noticing that Apple was hiring senior Ad tech people for quite some time now.

<comment><USER30> I don't see how this proposal has anything to do with an Apple walled garden? Nothing here special cases or favors Apple.

We welcome issues on possible limits of the privacy protections though.

<comment><USER29> 1\. If nobody will support this scheme other than Apple, then it is destined to become another DNT.

2\. Apple become a gatekeeper for an AD revenue from Apple devices, being able to "switch lights off" on anybody with a single browser autoupdate.

To any business person, it looks like a very clear ultimatum

<comment><USER15> What is the "switching the lights off" threat?

The comparison to DNT is not reasonable: DNT was a proposal the originated in the ad industry in response to a government inquiry into their gross abuse of consumers. It was positioned to head off actual regulation, despite all browser vendors knowing it would not actually work.

The Ad industry killed DNT when they announced that they would no longer recognize it (and were in fact using it for tracking) despite them positioning it as the "solution" to their own abuses.

Once that occurred it became clear that the only solution is for browsers to break all tracking directly. This is merely something that would allow the ad ecosystem to still function in the absence of tracking.

This is the answer to (1) - it's not a matter of advertisers adopting it, if a browser vendor blocks tracking then advertising based on tracking is broken. So all that happens is those users are not tracked, and also don't produce revenue.

</comment></comment></comment></comment><comment><USER31> I never understood the anger for Ad companies tracking you.

Web content costs money to create and host. The alternatives are:

-Most content being paid -Ads we really don't want to see. Without some sort of user tracking, ads would just be random -Wealthy people will be subsidizing lots of content for political gain (a method of getting funding) -Many smaller companies get pushed out in favor of large corps and much more difficult for a startup to survive.

Pretty much all of these have happened to some degree in the last 5 years and with the opposition to ads/many people installing ad blocking software, it's only going to get worse.

<comment><USER15> The ads aren't usefully targeted?

In the early days of AdWords the ads weren't based on tracking but on page content (much more useful IMO). Nowadays there is this bizarre belief that somehow knowing everyone's intimate details means your random context-free ad will result in someone buying something.

The problem with the gratuitous tracking is that people cannot opt out of it. I don't have a FB account, I don't go to Facebook.com, yet I know Facebook has a profile built up because of those abusive like buttons.

Similarly if I go to an online store, and buy something, there is an additional invisible tax I am being charged: the ads on the store pages feed multiple ad networks my personal info. Despite me _literally_ paying them money.

<comment><USER32> Some things to note, attribution and identity also allow for things like ad suppression or blanketing. If you have already bought the product or made indications you are not interested and will not be converted it is very common practice to suppress you from seeing those specific ads. Its also common to blanket you with relevant ads given shown interest in a product or service.

Maybe it is fine to consider it a tax, another way to look at it is you are being paid on content and access on various sites (including sites where you make a purchase at a price that is fair for the product AND this information) for your information.

Either way, if you want to jump ship from that arrangement -- it should be just as protected that accessing that content is now a violation of TOS or a liability to you that can be resolved with (at the site owners prerogative) hard costs to you for that content or service.

<comment><USER15> My response is that (And this is a common refrain) adtech companies seem to assume everyone is a collector in waiting.

One time I needed to buy a new washer+dryer. I did so, but I continued to get aggressively targeted washer/dryer ads for months, maybe a year.

Similar for furniture.

I am not a closet deck chair collector, but adtech decided I was.

<comment><USER32> And for that "pain" you retained access to the content/functionality on those sites that presented those ads. It is super common to suppress users that have seen a certain amount of blanket without interaction) as well so if you were receiving those ads for months it is most likely a poorly performing media team.

Arn't those ads that you will never click on but happen to be related to your browsing context better than the ads you drive by every morning on the street?

Take all those sites you visit over a month, remove the ones you pay for directly from the list. Those remaining ones are the sites that will not be there without either ad support or direct charge.

<comment><USER15> For the first paragraph: I'm not saying no to ads, I'm saying know to wanton abuse of my privacy to provide mistargeted ads when the whole point of that abuse is to provide correctly targeted ads.

2nd paragraph: those ads leverage their context, better than modern "targeted" ads. An ad for a tech product showing up on a tech site is more applicable than a dishwasher. Likewise an ad for a dishwasher on a homeware review site is better than an ad for a computer. The targeting is not providing anything useful.

Final paragraph: you are making the argument that the abuse of privacy is critical to the ad ecosystem, to the extent that in the absence of tracking then the entire ecosystem collapses. This is demonstrably false: when AdWords started it wasn't built on tracking and other such abuses of the end user, it was based on the context of the page the ad is embedded in.

The problem we've got to now, is that the ad networks started pushing "targeted" ads over non targeted to the extent that they have managed to convince everyone that the tracking abuse is necessary.

<comment><USER32> I guess I will leave it with this. You are looking at the issue from a certain perspective. The counter perspective is that targeting and attribution were severely lacking in AdWords and many other systems in the early days. The only reason that was acceptable for brands spending 1MM -> 1B dollars on advertising was that it was actively being extended and fixed (and there was a naiveté/blind faith of early adopters). We are years and years into a system that has grown over time to its current level by listening to market needs and adapting.

The days of cast a blind net that can't be attributed or optimized are well over -- those sites I asked you to consider will be very much hurt or gone if marketers can't target specific segments anymore (the blind saturation spend os not coming back).

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> Is there any reason bigger new sites don't just run ads like their paper counterparts? Sell sections of the site directly B2B. The business provides a static image, and the website shows that image for some amount of time for some predetermined amount of money. The image would be hosted with the parent site. They can target certain zip codes for more local ads, exactly like newspapers. I'm assuming it is significantly less profitable?

<comment><USER34> This would have a similar effectiveness to advertising on linear TV today -- your ad reaches everyone who is tuned in (or visits the site), whether they are in your target demographic or not.

This also wouldn't work on things like Google Adwords.

</comment></comment><comment><USER35> I'm glad that this blog post starts off with the principles behind the design of this technology because even if the specific design or implementation turns out to be flawed there is something to go back to and refine. The principles here seem similar to what a billboard ad or a paper ad effectively requires i.e. engagement and conversion is the responsibility of the ad buyer.

</comment><comment><USER36> Here's a better solution: native ad blocking turned on by default. Far less complex, far more effective.

</comment><comment><USER37> This is excellent timing. Google & Facebook's lobbyists are trying to get a weak US national law to overrule California's strong new privacy law. Apple's proposal will help the few pro-privacy people in Congress to push for a stronger national law.

</comment><comment> vincent-toups I care about privacy but I also just fucking hate ads and never want to look at them. I don't even want them to exist and I don't want ad supported business models to exist on the internet.

</comment><comment><USER16> This very much looks like browsers will be handling all the attribution for ads. In this case it creates perverse incentives for companies who main own ads businesses and also own browsers...

</comment><comment><USER38> On the flip side, this makes identifying and blocking ads super easy.

<comment><USER39> Which I reckon is, more than anything else on this page, why this is never going to take off.

</comment></comment><comment><USER40> This will never work. Just a few things off the top of my head:

\- tracked link must not be in an iframe, which is how basically all ads are served

\- only 64 campaign_ids. what about tracking individual ads? i need to optimize which ads perform the best, what targeting is converting, and more

\- delayed conversion POST, 7 day window. What if a user makes purchase and then doesn't open safari again during the 7 day window? since POST is delayed wont arrive. also what about 30d windows?

\- what about view conversions? and other non-last click attribution?

\- when combined with ITP, how do they propose updating audience/targeting? I often see complains of people seeing retarget ads for products they already purchased.

<comment><USER41> Remember that ITP's goal is to break all tracking to begin with, so assuming Apple successfully implements ITP to the degree they clearly intend to, this proposal is built on the ground principles of:

\- no tracked link, iframe or not

\- no campaign ids

\- no conversion POST at all

\- no view converstions, no non-last-click attributions

In that scenario, is this proposal an improvement? It sounds like an improvement. It's certainly more than the nothing that anyone will get from Apple's users without it. They didn't have to throw anyone a bone here, and they're going to take massive flak from a few users for doing so at all.

I imagine Apple would be thrilled if advertisers chose the destruction of the tracking-based advertising industry over using this offering. Perhaps advertisers will learn from the music industry's experiences trying to bury their head in the sand re: iTunes and pay attention and participate in designing this system. Perhaps they will not.

<comment><USER40> There are still ways to do conversion tracking with ITP, mostly moving to first party cookies and I wouldn't be surprised if we see a return of server side tracking like old Urchin so google & FB can store http only secure cookies that are indistinguishable from login/session cookies

If the goal is to stop all tracking why create this (bad) plan in the first place?

<comment><USER41> The server-side tracking you describe would instantly be corrupted by massive site fraud, as removing the intermediary of the browser from the measurement of "views" would compel people to fake up Apache logs to prove the views they want to be paid for.

The goal is to stop the tracking of individuals by advertisers, _without_ stopping the tracking of ad views by advertisers.

<comment><USER40> the goal you just mentioned will not be accomplished with what this proposes.

I'm also not as sure as you are that server side ads identity management would be any different than the existing arms race with measurement of measurement meta-ness.

client facing JS is messed with all the time already as well. monkey patching etc. trying to detect monkey patching, toString prototype toStringMetaMeasurement bs etc it will always be a fraud arms race.

to me buying ads is about finding more trust and verifying when possible, obviously any system will be gamed but I'd trust the NYTimes would not mess with FBs server side npm package. and it would make it a lot harder for safari to block when the login session cookie IS the identity cookie FB uses

</comment></comment></comment></comment></comment><comment><USER42> Interesting. I'm not terribly enthralled by or trusting of the idea, but it does seem to be a little less terrible than what we have right now.

<comment><USER43> What we have right now is ad blockers, and they work far better.

<comment><USER44> Who does it work for far better? Because quite a lot of the Internet couldn't exist in its current state without ads.

<comment><USER45> There's a fallacy in your argument, but I don't know what it's called.

Just because we got here via ads, doesn't mean we couldn't have gotten here without them. And that's even assuming that where we currently are is an optimum state we should shoot for.

<comment><USER46> Furthermore, it misses that we might be somewhere _better_ than here had we not had ads. (I'm not saying it's a foregone conclusion, just one of many possibilities not mentioned.)

<comment><USER47> It's fun to think about how it could have all been different. No more sites designed to game search result rankings, designed to waste your time to maximize eyeballs on ads, designed to keep you on the site in a garden instead of surfing the web.

ISPs should have bundled hosting with internet access. Give everyone the possibility to generate their own site. It would be like a large insurance pool where your monthly bill might subsidize the costs of hosting another user who's site gets millions of views, just like how your monthly insurance premium ultimately covers the salary of someone else's surgeon, nurses, anesthesiologists, and keeping the lights on in the operating room. You can still ask for donations or even paid subscriptions if you wanted a well off full time staff.

Instead, we leaned on advertisers to fund our websites, middle men working tirelessly to come up with new ways to extract comfortable profit out of the system. Leeching resources that could have otherwise gone straight to the publisher had we designed the internet to be a little more federalized, a little more universal, with the costs shared among the users of the internet who are already paying for access anyway.

</comment></comment></comment></comment></comment></comment><comment><USER48> Just append ?campain=55 to the href

</comment><comment><USER49> I think this scheme is too fraud-friendly to be true

</comment><comment><USER50> Bahahahaha. Advertisers make more money the less privacy you have. Talk about a technical solution to a social problem.

</comment><comment><USER51> This page wouldn't display for me, even after disabling the CSS.

I don't care for this attempt at redefining what privacy is. I could go step- by-step with this article, but I don't care to. These cretins want to track people more and more and we're all asked to voluntarily make concessions for their benefit; I disagree.

I'll continue blocking JavaScript and performing almost all of my WWW browsing through Tor; I won't weep for these advertisers; they're owed nothing.</comment>


Edit a Google doc with vim - <AUTHOR> http://www.commandlinefu.com/commands/view/5888/edit-a-google-doc-with-vim <comment><USER2> When I try to open an existing spreadsheet this way, it crashes:

      ~ $ google docs edit --title "skijanje"
      Traceback (most recent call last):
        File "/usr/bin/google", line 849, in <module>
          main()
        File "/usr/bin/google", line 835, in main
          run_once(options, args)
        File "/usr/bin/google", line 627, in run_once
          task.run(client, options, args)
        File "/usr/lib/pymodules/python2.7/googlecl/docs/__init__.py", line 206, in _run_edit
          folder_entry_or_path=folder_entry or options.folder)
        File "/usr/lib/pymodules/python2.7/googlecl/docs/base.py", line 129, in edit_doc
          subprocess.call(command_args)
        File "/usr/lib/python2.7/subprocess.py", line 522, in call
          return Popen(*popenargs, **kwargs).wait()
        File "/usr/lib/python2.7/subprocess.py", line 709, in __init__
          errread, errwrite)
        File "/usr/lib/python2.7/subprocess.py", line 1326, in _execute_child
          raise child_exception
      OSError: [Errno 2] No such file or directory

I guess I was expecting some magic, i.e. a spreadsheet automatically converted to/from CSV or YAML. :)

<comment><USER3> For me, it displays the XLS file, but it doesn't convert it to anything human readable (Using OS X 10.8 and vi).

</comment></comment><comment><USER4> (2010) and looks like it hasn't got any updates in a couple years unfortunately.

<comment><USER5> Indeed, googlecl hasn't seen much love lately. :(

I recently wrote a tool in the spirit of googlecl, that lets you call Google APIs from the command-line, although admittedly without support for editing Google Docs in Vim. Something like that may be possible to add though.

Check it out: [https://github.com/ImJasonH/gapi](https://github.com/ImJasonH/gapi)

</comment></comment><comment><USER6> Last release for googlecl is from 3/31/11 :(

</comment><comment><USER7> Can someone post a screenshot of how it looks like?

<comment><USER8> Not being a grammar Nazi, but just pointing out a minor error to help with your English: if the sentence ends in "like", then you should use "what":

Can someone post a screenshot of what it looks like?

<comment><USER9> I'm not GP but thanks for the tip!

As a non-native speaker, I'd love if I were corrected all the time! These little mistakes are prone to getting stuck in your head and hard to get rid of if uncorrected (especially since the Internet is filled with non-native speakers making the same mistakes over and over again).

Curiously enough, I hesitate doing so myself when I notice a mistake, in case I bother or embarrass the guy. I think I'll start changing that :P

</comment></comment></comment><comment><USER10> I'm also pleased to see an upload feature from terminal. Avoiding the interface YouTube has in place is great, I always seem to get bugs regarding upload times and it freezing.

</comment><comment><USER11> The title should be suffixed (2011), reflecting the latest changelog date by the 'googlecl' author.

</comment><comment><USER12> This is a killer feature for google interviews.

<comment><USER13> I just tried it out, and it seems it doesn't update after a save, you have to quit the document, so it's not real-time enough for an interview.

</comment></comment><comment><USER14> Vimperator and ^I as well, no?

</comment><comment><USER15> Lol.

Now if you can teach me how to edit Ms Word documents with vim, you win the prize :)

<comment><USER16> If you're on a Mac you can use KeyRemap4MacBook's vi mode in Word.

[https://pqrs.org/macosx/keyremap4macbook/](https://pqrs.org/macosx/keyremap4macbook/)

<comment><USER17> When you are on a Mac you can use XCode! Hell Yes!!!</comment></comment></comment>


Show HN: SimpleWeb - <AUTHOR> You can view the site here:
https://simplewebs.netlify.com/
I have been working on SimpleWeb, and I am proud to announce that SimpleWeb will be released very soon.
Description: Are you sick of having frameworks? SimpleWeb provides you with a huge list of elements, that are created with just simple and plain HTML, CSS, and JavaScript. <comment><USER2> Link doesnt work. Not found

<comment><AUTHOR> Sorry about that. It should be working now</comment></comment>


Steve Jobs on Apple's Core Value - <AUTHOR> http://brooksreview.net/2010/08/apple-value/ <comment><USER2> OK. I'll probably get down voted the hell out of me for writing this but it is useless "core value" statements like this that make my stomach turn.

I'm sure Hitler had a lot of passion too in what he did and that he thought he was making the world a better place.

What passion is can be interpreted in many ways and passion can be down right evil. You might also want to ask supporters of Shia religion what a "better world" actually is. I'm sure it will be different from your vision.

<comment><AUTHOR> Core values are absolutely pointless for sure, but they are telling how the people at the top think about the world. And because of that alone they are very useful to investors and consumers. IMO</comment></comment>


Millennials Are More Racist Than They Think - <AUTHOR> http://www.politico.com/magazine/story/2015/03/millenials-race-115909.html

<comment><AUTHOR> I live in the Bay Area, where majority of people are pretty liberal. And what I noticed is that when people are talking about general stuff, they are all for equality, etc etc. But when it comes to their own issues, for example where their kids go to school, they are very bigoted and unashamed of it. I've had many conversations around cocktails when people would say pretty racist things about the composition of kids at a local public school.

</comment><comment><USER2> >And when it comes to opinions on more structural issues, such as the role of government in solving social and economic inequality and the need for continued progress, millennials start to split along racial lines.

Does this really mean they are "racist" though? I feel like whenever the word "Government" is thrown in there, the conversation can go sideways and it might be more about feelings towards what "government" is capable of. Maybe I'm naive though.

</comment><comment><USER3> I've noticed there's a distinct backlash from the younger generations in post- colonial nations against the idea that 'they' owe anything to the original inhabitants of their countries, who often exist at the bottoms of our modern societies due to historical structural racism.

Canadians have a reputation for being nice, but if you want to see unbridled racism (which is totally justified because <anecdote about a guy>), enter any Reddit thread on Canada's first peoples. Same for Australia, as a country they're incredibly warm and accepting - unless you're an Aborigine.

My country is the same, but happily there seems to be more people in our online communities who are trying to correct the falsehoods and myths that people use to justify historical inequity - or use to challenge contemporary amends for historical wrongs. We're far from perfect, but yeah, anyone who thinks that the young people of today are less racist should probably talk to more middle class white kids.</comment>


Making GitLab Faster - <AUTHOR> https://about.gitlab.com/2016/02/25/making-gitlab-faster/ <comment><USER2> Interesting read. As a GitLab.com user the speed improvements in the last 3 months have been very noticeable and appreciated :)

<comment><USER3> That's great to hear.

GitLab.com improvements are two-fold: in one way, we're making GitLab itself much faster [0], while also working on the (stability and speed of) infrastructure of GitLab.com [1].

[0]: [https://about.gitlab.com/2016/02/22/gitlab-8-5-released/](https://about.gitlab.com/2016/02/22/gitlab-8-5-released/)

[1]: [https://gitlab.com/gitlab- com/operations/issues/42](https://gitlab.com/gitlab-com/operations/issues/42)

</comment></comment><comment><USER4> Awesome - really happy to see improvements here.

It looks like the front-end can use some attention too: PageSpeed Score is C(79%):

      https://gtmetrix.com/reports/gitlab.com/57l7nHlc

IMO, this is the most valuable measurement. Server response time is just a proxy for end user experience.</comment>


Oracle ordered to pay HP $3B in Itanium case - <AUTHOR> http://www.reuters.com/article/us-hewlett-packard-oracle-verdict-idUSKCN0ZG3C1 <comment><USER2> Intel has had some bad luck trying to move past x86. ia432, i860, i960 (which found niche markets), and ia64.

The revisions to the sales forecasts from market research companies were ugly [https://en.wikipedia.org/wiki/File:Itanium_Sales_Forecasts_e...](https://en.wikipedia.org/wiki/File:Itanium_Sales_Forecasts_edit.png)

And it killed MIPS and ALPHA architectures on the server, but I guess ended up pushing everyone towards x86 while ia64 was delayed until AMD jumped in an released x86-64.

<comment><USER3> I believe if AMD hadn't released x86-64, our desktops would be running on Itaniums.

It would take some time to sort of the issues, but given the Wintel stronghold on the desktop, everyone would be moving screaming into Itanium and feel happy about it later on.

But AMD gave people an alternative, so Itanium died.

<comment><USER4> The Wintel platform (stack) has relied on backward compatibility for long to hold on to the userbase. So moving to Itanium just wasn't in its blood or character and wouldn't have happened easily even if AMD hadn't jumped in with x64.

The Itanium architecture and processor development was happening for a very, very long time (code name "Merced", IIRC) and didn't have much to show for due to incompatibility with x86.

<comment><USER3> Sure it would have been a slow process, but Windows was already available and Microsoft could have done just like Apple did.

Intel would announce x86 EOL and legacy apps would be emulated or JiTted on Itanium.

Their problem was that Intel wasn't the only company producing x86 chips.

<comment><USER5> Also happened for VMS and AS/400\. Further, recall that Transmeta invented HW JIT for x86 to run it on power-efficient, non-x86 corr. Finally, Loongson is doing x86 emulation on top of MIPS multicore.

So, there's plenty precedent that your scenario could've played out. Don't forget alternative, though, where Centaur/VIA could just receive a gigantic shift in business their way. Or AMD just keeps accelerating x86. Actually, AMD64 seems inevitable in this scenario.

</comment></comment></comment></comment></comment><comment><USER6> Several years ago Oracle posted some very amusing HP internal documents about their Itanium efforts:

[http://www.oracle.com/us/corporate/features/itanium-346707.h...](http://www.oracle.com/us/corporate/features/itanium-346707.html)

<comment><USER7> Thanks for the link. I tried to search for the trial exhibits but didn't find anything comprehensive. Any idea how we could see all the trial exhibits, as in both sides? thanks.

</comment></comment><comment><USER8> They complained to be screwed by Google with Java, that is false, but at the same time are not afraid to screw HP. They had a contract to a long term support of Itanium and dropped it after one year to annoy HP (there were several trials between the two companies at this moment).

<comment><USER9> Actually makes me feel good to read that they are on the hook for this given how their customers were left in a lurch over this.

</comment></comment><comment><USER10> OUCH.

It's weird that companies that companies who compete so fiercely in the same markets really ever manage to work together. Once Oracle became a systems manufacturer HP had to know that they would boff them.

From a technical perspective, the stuff that HP has in Nonstop, OpenVMS, and Super Dome are really impressive. I read that they sold OpenVMS to a third party that is busy porting to x64. Looking forward to running it in VM's for fun...because I have a weird sense of fun. Stop judging me.

<comment><USER5> You heard right:

[https://vmssoftware.com/about_faq.html](https://vmssoftware.com/about_faq.html)

</comment></comment><comment><USER11> Mentioned in the article but always amazing - Bryan Cantrill on Oracle killing Open Source: [https://www.youtube.com/watch?v=-zRN7XLCRhc](https://www.youtube.com/watch?v=-zRN7XLCRhc)

"Don't make the mistake of anthropomorphizing Larry Ellison"

</comment><comment><USER12> From the article: In a statement, Oracle general counsel Dorian Daley said the company had been providing all its latest software for Itanium servers since Kleinberg's decision.

So does this mean they actually continued to work on it, but just told HP there was no market and had stopped work?

<comment><USER13> It didn't matter at that point. Customers fled from Itanium in DROVES when Oracle made the announcement. By the time they quietly decided to keep releasing updates, the damage was done.

It was an extremely effective tactic by Oracle to get customers to move away from HP... extremely dirty, but effective.

</comment></comment><comment><USER14> scha·den·freu·de

/ˈSHädənˌfroidə/

noun

pleasure derived by someone from another person's misfortune.

<comment><USER15> Why is there a word for it in German? Also doppelganger. Must happen alot there!

<comment><USER16> Schadenfreude is an English word. Virtually all English words are originated or derived from other languages...

<comment><USER17> That's like replying to his words without really thinking about what he meant.

Schadenfreude is an obvious borrowing from German. His question is why did they have a word for it in the first place.

<comment><USER16> Well, my point still stands. Given that the vast majority of English words are borrowed from other languages, why don't we ask the same question about all sorts of words? Maybe this word is uniquely German and doesn't have an equivalent in other languages -- I don't know enough about other languages to know that without further investigation -- but the mere fact that a word was borrowed from German to English doesn't seem like reason enough to ask _why_ it's a German word.

</comment></comment></comment></comment></comment><comment><USER18> I heard at a conference from some HP exec, that they sold loads of HP Integrity servers to Asian customers mainly so that they could host MS SQL Server on those big boxes, which I found surprising

<comment><USER19> On the one hand, IIRC, Windows Server on Itanium was almost useless for anything _but_ running SQL Server.

On the other hand, I think I remember reading a couple of years ago that per CPU core, Xeons were already beating Itaniums in performance for database workloads. The main advantage apparently is that you can stuff lots of CPUs into an Integrity server, but mostly a cluster of smaller x86_64 machines has a good chance of being faster and cheaper.

<comment><USER20> I wonder if any Opteron node controllers caught on. The fun thing is that by the time Windows Server 2003 and SQL Server 2000 was released for Itanium, AMD had already released the Opteron, but the B1 stepping had plenty of problems which was probably why they didn't release Athlon 64 until the C0 stepping.

</comment></comment></comment><comment><USER21> Karma is a -----</comment>


General Catalyst Dedicates $10M for Startups Built on Stripe Payment Tech - <AUTHOR> http://blogs.wsj.com/venturecapital/2014/09/30/general-catalyst-dedicates-10m-for-startups-built-on-stripe-payment-tech/ <comment><USER2> Does this mean companies using Stripe for payments or only companies built on Stripe data.

Seems like a way for GC to get revenue data on startups that are doing well.

</comment><comment><AUTHOR> So, where are the missing $9.5M?</comment>


The End Of The Road For Web Services - <AUTHOR> http://blogs.computerworlduk.com/simon-says/2010/11/the-end-of-the-road-for-web-services/index.htm

<comment><USER2> Misleading title. This is actually about the end of a consortium which produced an inefficient set of standards for Web services, and called their standards "Web Services".

<comment><USER3> Sounds like you only read the under-headline summary.

The article goes on to predict that the end of the consortium indicates the WS-I standards are unlikely to be enhanced going forward, basically stating that REST has won.

kb

<comment><USER2> And REST is a way of building Web services.

</comment></comment></comment><comment><USER4> Good headline - made me read and made a good point

</comment><comment><USER5> I think its particularly sad that the focus of various news sites is on the demise of WS-I, and not the fact that the long awaited BP 1.2 and 2.0 are finally final.</comment>


Ask HN: Any web directory left to submit an educational website? - <AUTHOR> A few year ago, web directories were everywhere. They had lots of categories. Now I cannot find anymore a decent web directory to submit by educational coding website: codeguppy.com<p>Any suggestion? <comment><USER2> Unfortunately, directory sites aren't very popular anymore. But if you want to show off this site, you should make a Show HN post for it here. There are a lot of developers and educators around that this would appeal to</comment>


Functional languages will rule (but not this year) - <AUTHOR> http://goodstuff.im/functional-languages-will-rule-but-not-this-y

<comment><USER2> It's somewhat funny that this article seems to miss the very practical rise of functional programming style in JavaScript, especially with the rise of libraries like underscore.js

Of course JavaScript has some pretty severe limitations as far as functional programming goes, the biggest being really cumbersome lambdas, and a lack of implicit return. If you try to program in a functional style in JavaScript you'll be fighting the language more than you'd like. However both of these issues are remedied in CoffeeScript.

As someone who was a lisper before getting into web development I'm really surprised to see lambdas, closures, pattern matching/de-structuring bind, let statement equivalents and more be part of a language that is not even talked about too much as being lisp-like or functional. Also important is that CoffeeScript's main selling point is that it's practical and more sane then JavaScript, not that it's functional or lisp-like. At the same time CoffeeScript is probably the closest thing I've seen to a (potentially) successful lisp-without-parens

Functional languages will gain serious traction, but I think it will be when their users find their features convenient and helpful (coffeeScript) rather than interesting/mind-blowing/etc (scala, haskell, erlang..)

<comment><USER3> I think I'm currently in the "I just don't get it camp" when a significant deficit of a language is the lack of implicit returns. Is typing return that bad? I quite like the readability. Is it that you can only return once per function? I already do that, but recognize that some developers don't. If that's part of it then a lot about these languages is to keep the riff-raff out? If that's true then I think we can probably all agree they will never be mainstream since in most cases mainstream == rif-raff.

<comment><USER4> It's not about readability or "keeping the riff-raff out". Needing to type "return" itself is a minor detail, but explicit returns are a strong sign of having statement-oriented semantics, rather than expression-oriented semantics.

In languages based around statements, things are done for their side-effects. Returning a value is itself a kind of side-effect, hence an explicit return statement.

In languages based around expressions (Lisp, ML & Haskell, APL, etc.), the _language itself_ gently encourages side-effect-free programming. In Scheme, for example, you usually use a _begin_ block when you need to do things for their side-effects. While it doesn't prevent side-effects entirely, it does make them stand out, and adds a subtle pressure against their overuse.

<comment><USER3> I don't think I'm quite there yet. Are you saying having to type return vs. it being implicit encourages side-effects in programming? How does this relate to the begin block?

<comment><USER4> Mostly, yes. "return" isn't the cause, though. Just a sign that the language's _primary concern_ is the side-effect of running statements, not their values (in which case, _having_ a result value would be expected, not a special case). A sign of different priorities in the language design: functional-by- default or imperative-by-default.

The begin block is how one indicates "do this, ignore its value (just do it for its side-effect), then do that and return _its_ value" in Scheme. Some forms have implicit begins, however.

I may just be repeating myself, but I hope phrasing it slightly differently helped. What made it clear to me was learning Scheme and (especially) OCaml, then going back to Python and programming in a functional/expression-oriented style, seeing the subtle ways in which the design of the language resists it. Lua is more friendly to functional programming than Python (it has tail-call optimization, for starters), but those explicit returns still show it isn't a perfect fit.

</comment></comment></comment></comment></comment><comment><USER5> His arguments about the existing functional languages can be roughly split into two categories: 1.) Languages refuse to make compromises and therefore are obscure (Haskell, Erlang) 2.) Languages are crippled by making too many compromises (F#, Scala).

He presents good arguments about why both types of languages can't currently break into the mainstream, but it unfortunately seems like these options form a partition of the possibilities (i.e. a functional language must fall into one of the two). If this assumption is correct, then by his analysis _no_ functional language can break into the mainstream.

I'd love to see a discussion over whether or not that assumption is valid, but for now let's assume it's true. I don't think the languages are the problem. Instead, I think it's the general momentum and consensus of the community. Without books like Learn You a Haskell (<http://learnyouahaskell.com/>), Haskell would be an order of magnitude more difficult to begin learning. I'm still trying to figure it out, and there are a lot of examples of topics where a similarly good tutorial would ease my learning. Eventually, as the language gains popularity, more and more such work will exist. Furthermore, if popular companies demonstrates that it's a great choice, more people will want to pick it up. If all this stuff happens, our intuitions will grow and adapt to make such a language a natural choice. In summary, the future of functional languages depends _more_ on our understanding and promoting them as a community, as opposed to the languages themselves.

<comment><USER6> You make an excellent point about the primacy of the community. I can't remember where I first came across the idea that languages are communities, possibly Richard Gabriel's Patterns of Software.

As someone about to embark on the Standard ML learning curve (motivated primarily by Ur/Web - Ur is a ML-like language), it is striking that the SML community is fragmented to the point of non-existence (not even a Planet SML, the sml-list is dead, & the SML subreddit is pretty lifeless).

Looking at Alice ML which has significant advancements over both Objective and Standard ML, it has great features, but no momentum which isn't helped by the fact that there hasn't been a release since 2007.

<comment><USER5> I learned a lot of SML in college, and it is really a great language. In my opinion it has the best syntax and REPL of any language I've used.

But Haskell has a much better chance of becoming main stream. The type classes allow things like drop-in, easy-to-use hash maps and a simple, type-safe print statement (SML's requires explicit string conversions). Furthermore, GHC consistently pushes modern features; my current favorites are the _extremely_ performant userspace threads (managed by epoll). From what I can tell, the SML folks are more focused on PL research projects than trying to implement a standard library, which is completely fine.

If everything goes well and we as a community build intuitions for strong, static typing, one of these good languages (IMO probably Haskell) could end up as the next Python.

BTW, if you're looking for resources on learning SML, I'd look at Bob Harper's books (<http://www.cs.cmu.edu/~rwh/>)

<comment><USER6> Thanks, I had already downloaded the latest version of Harper's Programming in Standard ML.

I think you're right about the SML folks' focus on PL research.

</comment></comment></comment></comment><comment><USER7> This is a refreshingly honest analysis from someone that has a lot of skin in the game. I completely agree on both points. First, the functional paradigm _is_ important and a step forward for most problem domains. Second, none of the current crop of functional languages is going to truly break into the mainstream.

I think it's more likely that we'll see more and more functional techniques trickle down into mainstream languages than it is that we'll see a pure functional language adopted as-is. C++ just picked up lambdas, after all. I do regret somewhat my dalliance with FP over the last decade though. If I'd invested that time in mastering DSP or graphics programming instead I'd be better off overall.

<comment><USER6> There is a definite functional trickledown effect going on with mainstream languages.

I have the suspicion that the breakthrough functional language will be like CoffeeScript in that it compiles down to Javascript taking advantage of the high performance Javascript runtimes and the functional core of Javascript.

</comment></comment><comment><USER8> One language he left out was Nemerle... I like it more than Scala...

<http://nemerle.org/About/>

F# 3.0 will have type providers which provide functionality similar to Gosu's open type system.

The Future of F#: Data and Services at your Finger Tips

<http://channel9.msdn.com/Events/PDC/PDC10/FT12>

<http://i51.tinypic.com/300chly.jpg>

Not new, but Websharper for writing Javascript in F# is pretty cool...

<http://websharper.com/samples/WebGL> <http://websharper.com/samples/Canvas>

<comment><USER6> Nemerle's been around for years and I don't see it getting any traction, especially in the shadows of both C# which has been cherry picking functional features & F# which has the backing of Microsoft.

</comment></comment><comment><USER9> Is the Haskell Singularity approaching?

[http://www.reddit.com/r/haskell/comments/hezgk/haskell_singu...](http://www.reddit.com/r/haskell/comments/hezgk/haskell_singularity_approaching/)

</comment><comment><USER10> Mention about Clojure (which is more functional than Scala) is curiously absent from the blog post.

</comment><comment><USER11> The article contradicts its own title.

The author claims, in the title, that functional languages will rule, some day.

Then he does a tour describing each would-be-ruler functional language (erlang, haskell, ocaml, F#, scala) and explicitly says that all of them will remain niche languages i.e. will not rule.

<comment><AUTHOR> His thesis is that none of the current crop of functional languages will rule, but that some new functional language not yet invented (or widely known) will.

<comment><USER12> A language can't come out of nowhere, because it won't have the critical mass of people, libraries, etc to be usable for "real work". IF a functional language is going to be mainstream in only 5 years, then there are a significant number of people using it today, and it will be generally known in the FP community.

Even F# was a) in beta for years b) solved the library problem by piggybacking on C# and c) had a critical mass of OCaml users who could jump straight into it.

</comment></comment></comment><comment><USER13> A power and persuasive essay on the essential merits of functional languages.

Erlang is ugly

Haskell is beautiful, like Karate

OCaml is impenetrably unexciting

F# is polished. And mainstream

Scala is a tour de force of concepts. Tiobe Top 20

<comment><USER6> I wonder if the author would feel the same way about OCaml if he had come across it before Scala.

I suspect not somehow.

<comment><USER14> I came to scala because it is in fact an acceptable ocaml that runs on the JVM.

<comment><USER6> Kind of my point. I think he's meh on Ocaml because Scala has the same features & runs on the JVM, seeing it after using Scala wouldn't be very exciting. However Ocaml was around years before Scala.

</comment></comment></comment></comment><comment><USER15> All the machinery of functional programming languages that's creeping into non-FP languages is great. I actually think that FP one-liners are usually _more_ transparent than the corresponding non-FP loop.

However if I'm not mistaken an important point of FPLs was to eliminate side- effects and that the ultimate goal was program verification (not validation). I.e. you could prove a program correct in the mathematical sense. That seems still a long way off.

<comment><USER6> The trend I'm seeing isn't towards verification by proof but leveraging the type system to ensure that the compiled program is correct and secure. Both Opa and Ur/Web take this line.

</comment></comment><comment><USER16> So how does the tooling problem get solved? This would seem to be the limiting factor presented in the article not necessarily how opinionated the language is.

<comment><USER6> TypeSafe have money in the bank and a serious commitment to fixing the Scala tooling for Eclipse.

<comment><USER17> Maybe 3rd time will be the charm.</comment></comment></comment>


Introducing the Linode Backup Service - <AUTHOR> http://blog.linode.com/2010/05/04/introducing-the-linode-backup-service/ <comment><USER2> This is terrific. That's one more thing off my plate in getting my auditors to sign off on my SAS 70.

Regarding that: has anyone out there done a SAS 70 with Linode-based services? I haven't moved my entire operation yet, but I doubt I'm the first to consider doing it. I know the Dallas colo is audited.

</comment><comment><USER3> The biggest problem I can see with this solution is simply that it's not an off-site backup. I haven't had any serious issues with Linode so far, but I don't want to risk losing source repositories (for example) to an event that took down their entire site.

As such, I configured duplicity to sync against S3 (<http://duplicity.nongnu.org/>) and I only back up my "important" bits. I pay roughly 75¢ month over month; definitely worth it.

As a sidenote, though, access to on-demand snapshotting might push me to front the $5 anyway.

</comment><comment><USER4> Being a long time SliceHost user, when I finally decided to signup Linode two days ago despite its lacking of (official) backup capability, I wasn't expecting such a nice gift, which almost feels exclusive.

BTW, a quick hard disk benchmark test shows that my Linode is almost twice as fast as my SliceHost.

<comment><USER5> I've moved from Slicehost to prgmr to Linode and I'm happiest with Linode out of the three.

the I/O on Linode is faster, but it's still very slow compared to a "real" machine, but that's the case with any VPS at this pricepoint as far as I know.

</comment></comment><comment><USER6> That is good that they offer the service, but I prefer cron jobs that make daily backups to S3 that roll over (e.g., today's daily backup clobbers last Tuesday's backup). Doing a monthly backup that never gets rolled over is also a good idea.

</comment><comment><USER7> I am in the process of moving my rails app to Rackspace Cloud Servers. It offers three backup images for free, but it only exists as long as the associated server is around.

A 256 meg slice only costs $10. So it is actually a pretty good deal.

<comment><USER8> I was looking into Cloud servers recently. I think I will be going going with 1and1 Dynamic Cloud Server. 1and1 seem to have a better price than Rackspace, and you can change the Ram, CPU, and storage all independently. At Rackspace you had to scale both the Ram and your Disk space. How is your experience with Rackspace? Has any one else tried 1and1's Dynamic Cloud server?

<comment><USER7> I just got started with Rackspace, but they seem to be built on solid technology acquired from Slicehost.

I like the fact I can add new servers quickly and it has infrastructure support for failover and load balancing through shared IP.

</comment></comment></comment><comment><USER9> I'm not suggesting linode goes commie and gives it away for free, but it would be extremely nice to have a more flexible pricing policy. For that price, I'd prefer backing up crucial data every night to a separate partition and downloading it with a script weekly (actually, that's what I do). In general, what I'm saying is: for the projects that use VPS backups may not be as important to pay the offered price. I wonder what linode had in mind for that - maybe I'm wrong.

</comment><comment><USER10> I'm not sure I can justify a 25% (an additional $5/mo on top of the standard $19.99) premium on my linode 360 when I can do manual weekly backups. Granted, this node is all personal projects.. should something detrimental happen to the node, it wouldn't be a problem if my backup was a few days old.

Also, the pricing is here on the right <http://www.linode.com/backups/>

<comment><USER11> I can totally justify it. I run a bunch of side projects on a $20 Linode server and have always felt bad for not having _any_ backups at all, but not bad enough to spend any of my incredibly limited free time doing something about it. Now I get to just throw $5/month at the problem.

</comment></comment><comment><USER12> I could have used this last week when I hosed my box running the Lucid Lynx upgrade from 8.04 (I lost networking). I can easily justify $5/month to not have to waste my time rebuilding a server like I just had to…

<comment><AUTHOR> What do you mean 'lost networking'? Was Lish not helpful?

</comment></comment><comment><USER13> Finally! Just signed up all my linodes.

</comment><comment><USER14> The pricing on: <http://www.linode.com/backups/>

Linode 360: $5.00/mo Linode 540: $7.50/mo Linode 720: $10.00/mo Linode 1080: $15.00/mo Linode 1440: $20.00/mo Linode 2880: $40.00/mo

Doesn't match the pricing on: <https://www.linode.com/signup/>

Linode 360 $19.95 16GB 200GB Linode 540 $29.95 24GB 300GB Linode 720 $39.95 32GB 400GB Linode 1080 $59.95 48GB 600GB Linode 1440 $79.95 64GB 800GB

<comment><USER15> The pricing on the backups page is pricing for the backup service.</comment></comment>