Wednesday, November 16, 2016

Introducing splittable

Introducing splittable

Splittable is a next-generation module bundler for JavaScript with support for

- super simple *code splitting*.
- *ES6* modules.
- *CommonJS* modules (with some caveats).
- *extremely efficient* packing of modules.
- *dead code elimination* (also sometimes called *tree shaking*).
- *smaller code* for real world projects than all other known module bundlers.

https://medium.com/@cramforce/introducing-splittable-1c882babca7e#.udq0ce1in

Friday, August 19, 2016

Tuesday, August 2, 2016

⚡⚡A developer preview for AMP results being shown in more places on Google mobile search is launching today.

⚡⚡A developer preview for AMP results being shown in more places on Google mobile search is launching today.

The implementation is basically:

:)

https://webmasters.googleblog.com/2016/08/amp-your-content-preview-of-amped.html

Tuesday, July 19, 2016

But what about the ads???

But what about the ads???

AMP so far focused on content and only marginally improved the performance of ads. Until today.

AMP based Ads will
- be safe & behave well
- use much less bandwidth
- maximize battery life
- run at 60 frames per second

https://medium.com/@cramforce/but-what-about-the-ads-bfe5025b6606#.k6ef4bmho
https://medium.com/@cramforce/but-what-about-the-ads-bfe5025b6606#.k6ef4bmho

Friday, June 3, 2016

Getting directed radio based Internet installed at my house from a friendly startup that employs humans.


Getting directed radio based Internet installed at my house from a friendly startup that employs humans.
Looking forward to the day where my interaction with Comcast will be reduced to watching NBC shows on Netflix.

Sunday, May 29, 2016

Important insight.


Important insight.

Tuesday, May 24, 2016

I feel like someone was designing the product like: what are all the features Malte would want.

I feel like someone was designing the product like: what are all the features Malte would want.
http://www.theverge.com/circuitbreaker/2016/5/24/11759964/polaroid-google-cast-tv-release

The video of my Google IO about "How AMP achieves its speed" was just posted on YouTube.

The video of my Google IO about "How AMP achieves its speed" was just posted on YouTube. The talk contains some numbers as to what actual performance we see in the wild (spoiler: better than 1 second median load time without pre-rendering). My main goal was to show that AMP is just web-tech and most optimization techniques can be applied to non-AMP sites.

AMP is about more than just raw load performance, though. With features such as pre-rendering and swiping between search results we are pushing what is possible in terms of UX on the web and with native-web integrations. These new features require cooperation between web pages and the embedding apps (which AMP implements) and while we are just getting started, I'm super excited about the new possibilities this opens up.

CC Dave Besbris Richard Gingras
https://www.youtube.com/watch?v=cfekj564rs0
https://www.youtube.com/watch?v=cfekj564rs0

Tuesday, May 17, 2016

I'm speaking at Google IO this week about "How AMP achieves its speed" (Friday at 2pm).


I'm speaking at Google IO this week about "How AMP achieves its speed" (Friday at 2pm). Hope to meet you there in person and if you can't make it the talk will also be live streamed. Also, don't miss Alex Russell's talk right afterwards that talks about how AMPs relate to Progressive Web Apps (PWAs).

Also, Richard Gingras is speaking Thursday about "Search and the mobile content ecosystem" which will probably cover many aspects of AMP as well.

All the details here:
https://amphtml.wordpress.com/2016/05/16/amp-at-google-io/amp/

CC Dave Besbris Google Developers

PS: I made this GIF for a slide, but decided not to use it, so here it is exclusive on G+ :)

Thursday, March 31, 2016

Monday, March 14, 2016

Saturday, March 12, 2016

Lovely article diving into how the spelling rule "leave out the spaces in compound nouns to make it harder for...

Lovely article diving into how the spelling rule "leave out the spaces in compound nouns to make it harder for Google Translate engineers" can sometimes give words meaning beyond the sum of their parts.
https://theconversation.com/why-the-german-language-has-so-many-great-words-55554

Monday, February 29, 2016

On the Google bus.


On the Google bus.

Thursday, January 28, 2016

I'll give a quick overview about how AMP achieves its performance and then will be available for Q&A in this Hangout...

I'll give a quick overview about how AMP achieves its performance and then will be available for Q&A in this Hangout on Air tomorrow morning! Looking forward to all of your questions!

And there will be a video on YouTube after, of course.

Tune in at:
https://plus.google.com/events/ch231bul4ql7c2cer88fucq5n3k
https://plus.google.com/events/ch231bul4ql7c2cer88fucq5n3k

Thursday, January 21, 2016

I participated in a little Twitter discussion today (https://twitter.com/nolanlawson/status/690173930594766848) and...

I participated in a little Twitter discussion today (https://twitter.com/nolanlawson/status/690173930594766848) and was asked to write up my recommendations, so here we go:

One of the challenges of adding concurrency to web apps is that some APIs require sync execution – and a fully concurrent app, where the app runs on a different Worker thread from the UI thread, cannot directly make such sync calls.

Fortunately the number of APIs that are relevant here is pretty small:
- event.preventDefault(): E.g. if you want a tag to not actually directly go to that link. Also often needed with touch events.
- window.open(…): Because popups are blocked if they don't get opened synchronously from a click handler.
- Probably 1 or 2 more I forgot about.

At Google we've been facing this issue for years actually: We typically late load all parts of the apps, and that includes implementations for click handlers: So we might not be able to synchronously handle a click all the time – which brings us to exactly the same problem as having the app running in a different thread.

There are various solution flavors, but they all are derived from the same idea:
- window.open is rare, just do something hacky special thing for it
- preventDefault is the more important use case:

The base strategy is to install global event handlers on the UI thread that either always call preventDefault on all events they see or do so based on a DOM annotation. If you always call preventDefault, you need to have user land implementations of all default actions (like window navigation). We typically use a DOM annotation instead:

E.g. if you have an
tag, add and then the global UI thread click handler (which might need to look at ancestors of the target), calls preventDefault on events when it sees this.

One important considerations is that while window.open is rare, you need to use it to "implement" target=_blank for clicks on a tags that might have had preventDefault called on them. We typically handle this by putting a limited version of the app's router into the synchronous call path. That typically allows handling almost all cases of advanced preventDefault magic on the UI thread while keeping the rest of the app away from it.


https://twitter.com/nolanlawson/status/690173930594766848

Tuesday, January 5, 2016

What is the best way in 2016 to file a web platform feature request?

What is the best way in 2016 to file a web platform feature request? I'll just go ahead and write it down here and then can paste it elsewhere.

Visual completeness event

An event emitted on a browser some time after the browser determined using some heuristic that the page was visually complete. In practice this should expose https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index to the web platform.

It is important that visual completeness counts all cross origins resources in including iframes. There should also be visual completeness events per iframe and available to the parent frame.

It is not important the event arrives timely. E.g. a browser could delay processing until a good time if it retains necessary data and it would even be OK if the event was only produced at a certain sample rate.

Problem this is solving
There is currently not a single mechanism on the web platform for measuring how fast something loads that could be used as a trustworthy metric to assess how slow or fast something is. One can use the load event, but it is not a proxy for user perception and it is very easy to cheat (let it fire early and do all the work after).
To my knowledge the only thing one can do right now to measure the impact of an iframe is to measure time between animation frames while a resource is loading, which is a super rough proxy for the amount of CPU it is using.

I'm sure there are many problems with this, including timing attacks, information leaks and lack of a robust heuristic, but I think it is time anyway to get our act together and create a web exposed metric for website load time.

Patrick Meenan
https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index

Sunday, January 3, 2016

The Most Mysterious Star in Our Galaxy - The Atlantic


http://www.theatlantic.com/science/archive/2015/10/the-most-interesting-star-in-our-galaxy/410023/?dom=pscau&src=syn

Lossless image compression: 43% smaller than average PNG.

Lossless image compression: 43% smaller than average PNG. 14% smaller than WebP. Any number of read bytes can be used to render a lower resolution version. Very interesting.
http://flif.info/

Friday, January 1, 2016

My projection for 2016: exponential growth continues: will have doubled number of kids in less than 3 years....

My projection for 2016: exponential growth continues: will have doubled number of kids in less than 3 years. #GrowthHacking