Archive for May 23, 2019

Thursday, May 23, 2019

Privacy Preserving Ad Click Attribution For the Web

John Wilander:

The combination of third-party web tracking and ad campaign measurement has led many to conflate web privacy with a web free of advertisements. We think that’s a misunderstanding. Online ads and measurement of their effectiveness do not require Site A, where you clicked an ad, to learn that you purchased something on Site B. The only data needed for measurement is that someone who clicked an ad on Site A made a purchase on Site B.

Today we are presenting a new technology to allow attribution of ad clicks on the web while preserving user privacy.


The browser should act on behalf of the user and do its best to preserve privacy while reporting on ad click attribution. We achieve this by:

  • Sending attribution reports in a dedicated Private Browsing Mode even though the user is in regular browsing mode.
  • Disallowing data like cookies for reporting purposes.
  • Delaying reports randomly between 24 and 48 hours.
  • Not supporting Privacy Preserving Ad Click Attribution at all when the user is in Private Browsing Mode.


Privacy Preserving Ad Click Attribution is in the early stage of being proposed as a standard through the W3C Web Platform Incubator Community Group (WICG). Please join the discussion and file issues to discuss how this technology fits with your use cases.

See also: John Gruber.


Update (2019-05-27): See also: Hacker News.


Alternatively, once the ad fraudsters have decided to scam an advertiser using this system, their ad fraud programs make a series of POST requests to the same well-known location pretending to be copies of Safari that have seen conversions from this ad campaign. The only way to detect this fraud would be to match up actual orders with claimed conversions from a particular site, completely bypassing the intended privacy protections. (Which probably wouldn’t be that hard in some circumstances, but fraudsters would of course get to target the scenarios where matching up orders is hardest.)

Like, as far as I can tell, this completely fails to provide attribution data that advertisers can trust at all because it relies totally on the honesty of software installed on end-user devices. It will also fail to provide the stated privacy level in many situations, such as when the user keeps the same unique-ish IP address for several days. The only thing it seems to achieve is good PR for Apple, who will get a bunch of stories from credulous reporters about how they’re trying to improve user privacy and the evil adtech industry is thwarting them because it wants to know everything about you.


Cabel Sasser:

After more than 20 years of making quality apps you love for Mac and iOS, Panic was ready to try something new…

…and that something was hardware.

Playdate (tweet, Hacker News, MacRumors):

It’s yellow. It fits in your pocket. It’s got a beautiful black and white screen. It’s not super cheap, but not super expensive. It includes brand new games from some amazing creators. Plus it has a crank.


Panic built every part of Playdate from scratch, starting with early board designs (using the hotplate in our kitchen to flow solder), our own Playdate OS, a full-featured SDK supporting C and Lua development, a Mac-based simulator and debugger, and more.

We then brought Playdate to one of our favorite companies on the planet — Teenage Engineering, the Stockholm-based creator of synthesizers and so much more — to begin a cross-company collaboration, designing and engineering Playdate’s look.

No, it’s not April 1st. They’re really building this. I don’t play video games, but I’m so happy to see Playdate. I love the ambition to try something new of this difficulty and seeing the care and craft that’s gone into it. So often we think of technology at massive scale. It can be powerful and useful and even dangerous. But this is like a statement that it can also be a little product, not intended for everyone yet not elitist, that exists because some people wanted to have fun trying to brighten your day.

John Gruber (tweet):

In today’s world all the new computing devices and platforms come from huge companies. Apple of course. All the well-known Android handset makers building off an OS provided by Google. Sony. Nintendo.

Panic is almost cheating in a way because they’re tiny. The Playdate platform isn’t competing with the state of the art. It’s not a retro platform, per se, but while it has an obviously nostalgic charm it is competing only on its own terms. Its only goal is to be fun. And aspects of Playdate are utterly modern: Wi-Fi, Bluetooth, apps and software updates delivered over-the-air.

Anil Dash (tweet):

You can read up on all the details elsewhere, but suffice to say, this little game machine looks like one of the most fun and joyful new efforts that any company has done recently, and that a tiny indie software company in Oregon has the ambition to even attempt such a thing makes it only more endearing.


I don’t know if Playdate will succeed in the market. I don’t know what kind of risk it represents for Panic as a company. But I know that people see this cute little device, and are reminded that they used to get excited when they saw cool new technology, instead of wondering how it would warp their reality, or steal their information. Here’s hoping for a return to tech that’s fun, that’s thoughtful, and that’s created with a little bit of soul.

Eli Schiff:

Almost no one realizes that @panic’s @playdate has @Kenichi Yoshida’s fingerprints all over its design. It wasn’t just Teenage Engineering @jugendingenieur.

Icon designers deserve more credit in this world.

Update (2019-05-24): Jesper:

What I love about it is a recently recurring theme that’s, amidst a polarized and increasingly de-humanized society, been easy to disregard: the glimmers of hope. A group of under a dozen people can still create a little thing like this, including its own damn OS, just because they love the feel of technology built by those who care.

There were a thousand reasons to not build it. There were a thousand reasons to run in the opposite direction, to give up, to completely cede the ground to consoles and touch and game streaming, to things that can be screen captured to Twitch.

Pádraig Kennedy:

My connection with Apple is largely thanks to Panic; back in 2003 their lovely polished apps are what made me want to make Mac software.


Playdate in 24 Hours:

• 70,000+ people on the wait list
• Thousands of interested devs
• Some skeptics (we understand)
• 23k Twitter followers (hi!)
• Most importantly… an overwhelming flood of positivity + excitement from people who also want this weird thing we want (!!!)

Update (2019-05-30): Brent Simmons:

On seeing Playdate, I realized the question we should ask ourselves is: are we working on our own Playdates? I don’t mean hardware necessarily — I mean the thing that seems very difficult, maybe even impossible, that may fail, but is the best expression of our talent and love.

Zhuowei Zhang:

Panic’s @PlayDate console prototype uses a STM32F7 CPU, running at 216MHz with up to 512 KB RAM.

Compared to Game Boy Advance, PlayDate has:

- 62x the CPU power (462 vs 7.65 DMIPS)
- 33% more RAM (512KB vs 384KB).

Linda Dong:

So delighted to have contributed a teeny piece to this enormous beautiful endeavor.

Nathalie Lawhead (via Joshua Nozzi):

Last year I was one of the organizers for Playdate. That year we received an email from Panic basically telling us we can’t use the name anymore because it would be a shame if our event got confused with what they are doing. It came off as incredibly self-important. It left me thinking “Wow, what a dick move.”

Cabel Sasser:

Our goal was to find a way for our two things to coexist. We didn’t want to force them to do anything. We do have a trademark, but only for “handheld game devices”, so we COULDNT make them change anything even if we wanted. It was just a worry about us overshadowing their work.

Update (2019-05-31): The Talk Show:

Special guests Cabel Sasser, Steven Frank, and Greg Maletic join the show to talk about Playdate, Panic’s exciting and surprising new handheld gaming system.

GitHub Sponsors

GitHub (tweet, Hacker News):

Funding developers through GitHub Sponsors is one more way to contribute to open source projects you appreciate. Help developers get the resources they need, and recognize contributors working behind the scenes to make open source better for everyone.

With Sponsors, any GitHub user can sponsor any open source developer in the program.

Owen Williams:

Yes, GitHub is swallowing the cost of those transactions entirely to give the creator as much of the money as possible. But, what’s even wilder is that it’s matching every dollar contributed in the first year, an outrageously bold commitment that’s only possible with the backing of a company like Microsoft.


Most importantly, this helps to change the open source narrative: you shouldn’t feel like you need to work for free, especially if companies are actually making money off of your work. Sponsorship right there on the page with the installation instructions helps pave the way for companies to actually fund the work they rely on, and that matters.

David Heinemeier Hansson:

I’m sure GitHub had all the right intentions here. And I’m sure this will work out well for a select few developers who will amass enough donations to ignore individual claims to their time. But I think it’s a grave risk to the culture of open source.

If your initial reaction was just “oh, OF COURSE donations are good. End of story!”, then I have a keynote for you to chew on.


A New Core Playlist for VLC 4

VLC (Hacker News):

One major design goal is to expose what UI frameworks need. Several user interfaces, like Qt, Mac OS and Android, will use this API to display and interact with the main VLC playlist.

The playlist must be performant for common use cases and usable from multiple threads.

Indeed, in VLC, user interfaces are implemented as modules loaded dynamically. In general, there is exactly one user interface, but there may be none or (in theory) several. Thus, the playlist may not be bound to the event loop of some specific user interface. Moreover, the playlist may be modified from a player thread; for example, playing a zip archive will replace the item by its content automatically.