Tumblelog by Soup.io
Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

November 08 2017

17:02

Expanding user protections on the web

One of the advantages of the web is that it allows developers to create any type of experience they can imagine, which has led to the rich diversity of content available on the web today. While most content producers are interested in providing excellent experiences for their users, we've found that a small number use the flexibility and power of the web to take advantage of users and redirect them to unintended destinations. 1 out of every 5 feedback reports from Chrome users on desktop mention encountering some type of unwanted content, and we take this feedback seriously when considering how to improve Chrome. Following on from features like Chrome's pop-up blocker and autoplay protections, over the next few releases we'll be rolling out three new protections designed to give users all the web has to offer, but without many of these types of unwanted behaviors.

One piece of feedback we regularly hear from users is that a page will unexpectedly navigate to a new page, for seemingly no reason. We've found that this redirect often comes from third-party content embedded in the page, and the page author didn't intend the redirect to happen at all. To address this, in Chrome 64 all redirects originating from third-party iframes will show an infobar instead of redirecting, unless the user had been interacting with that frame. This will keep the user on the page they were reading, and prevent those surprising redirects.
An example of a redirect being blocked on a test site. The iframes embedded in the site are attempting to navigate the page to an unintended destination, but Chrome prevents the redirect and shows an infobar.

When the user interacts with content, things can also go wrong. One example that causes user frustration is when clicking a link opens the desired destination in a new tab, while the main window navigates to a different, unwanted page. This is effectively a circumvention of Chrome's pop-up blocker, one of users' favorite features. Starting in Chrome 65 we'll also detect this behavior, trigger an infobar, and prevent the main tab from being redirected. This allows the user to continue directly to their intended destination, while also preserving the context of the page they came from.

Finally, there are several other types of abusive experiences that send users to unintended destinations but are hard to automatically detect. These include links to third-party websites disguised as play buttons or other site controls, or transparent overlays on websites that capture all clicks and open new tabs or windows. 
Two types of abusive experiences where a deceptive site control appears to do one thing, but has a different behavior when clicked. One looks like a play button on a video but sends the user to an unwanted download when clicked (left), and the other looks like a close button but instead opens unwanted pop-up windows (right).

Similar to how Google Safe Browsing protects users from malicious content, starting in early January Chrome's pop-up blocker will prevent sites with these types of abusive experiences from opening new windows or tabs. To help site owners prepare for this change, today we're also launching the Abusive Experiences Report alongside other similar reports in the Google Search Console. Site owners can use the report to see if any of these abusive experiences have been found on their site and improve their user experience. Otherwise, abusive experiences left unaddressed for 30 days will trigger the prevention of new windows and tabs.

Together, these protections will dramatically improve users' web browsing experiences while still allowing them access to all that the web has to offer. 

Posted by Ryan Schoen, Product Manager

October 27 2017

15:18

Chrome 63 Beta: Dynamic module imports, async iterators and generators, Device Memory API, and permissions UI changes

Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows.

Dynamic module imports

Currently, importing JavaScript modules is completely static, and developers cannot import modules based on runtime conditions, like whether a user is logged in. Starting in this release, the import(specifier) syntax now allows developers to dynamically load code into modules and scripts at runtime. This  can be used for lazy loading a script only when it’s needed, which improves performance of the application.

button.addEventListener('click', event => {
   import('./dialogBox.js')
   .then(dialogBox => {
       dialogBox.open();
   })
   .catch(error => {
       /* Error handling */
   });
});
The code example above shows how to use the import(specifier) function to import JavaScript after an event .

Async iterators and generators

Writing code that does any sort of iteration with async functions can be inelegant. The new async generator functions using the async iteration protocol are now available to help developers streamline the consumption or implementation of streaming data sources. Async iterators can be used in for loops and also to create custom async iterators through async iterator factories.
async function* getChunkSizes(url) {
 const response = await fetch(url);

  for await (const chunk of streamAsyncIterator(response.body)) {
   yield chunk.length;
 }
}
The code example above shows how to use async iterators to writer cleaner code for streaming fetches, using the streamAsyncIterator function .

Device Memory API

It’s challenging for developers to create one user experience that can work across all devices, due to varying device capabilities. The new Device Memory JavaScript API helps developers with this challenge by using the total RAM on a user’s machine to provide insights into device constraints. This insight enables developers to tailor content at runtime in accordance with hardware limitations. For example, developers can serve a “lite” app to users on low-end devices, resulting in better experiences and fewer frustrations. The Device Memory API can also be used to add context to metrics, such as the amount of time a task takes to complete in JavaScript, through the lens of device memory.



Permissions UI changes

When websites need special permissions from a user, they trigger a permission request. Currently these permission requests appear in Chrome for Android as ignorable banners at the bottom of the screen, and developers often show them without considering whether the user has the appropriate context to grant the permission. This results in a distracting user experience, and users ignore or temporarily dismiss these permission prompts more than 90% of the time.

In Chrome 59, we started to address this problem by temporarily blocking a permission if the user dismisses the request three times. As a next step, in this release Chrome for Android now presents permission requests as modal dialogs. This change reduces the overall number of permission prompts by 50%. It also makes users 5 times more likely to accept or deny requests, rather than temporarily dismissing or repeatedly ignoring them. To ensure users understand the permission request, developers should present users with permission requests at an appropriate time , as we’ve found that users were 2.5 times more likely to grant permission to a site that ask for permissions with context.

Other features in this release

Blink > Bindings

Blink > CSS


  • Developers can now make pixel-level adjustments using the new Q length unit , which is especially useful on small viewports.
  • Developers can now prevent apps from using Chrome’s pull-to-refresh feature or create custom effects using   overscroll-behavior , which allows changing the browser’s behavior once the scroller has reached its full extent.

Blink > Fonts

Blink > HTML

  • To improve interoperability, Chrome will fire   beforeprint and afterprint events as part of the printing standard , allowing developers to to annotate the printed copy and edit the annotation after the printing command is done executing.

Blink > JavaScript

Blink > MediaStream

Blink > Network

Blink > Sensor

  • Thanks to contributors from engineers at Intel, an Origin Trial is now available that exposes the following sensors via the new Generic Sensors API syntax: A ccelerometer, LinearAccelerationSensor, Gyroscope, AbsoluteOrientationSensor , and RelativeOrientationSensor .

Blink > Storage

  • The localStorage and sessionStorage API's now use getItem() rather than an anonymous getter, so attempting to access a key using getItem() will now return null rather than undefined . Thanks to Intel for the contribution!
  • To improve developer experience, the methods on sessionStorage and localStorage such as getItem() , removeItem() , and clear() are now enumerable. Thanks to Intel for making this happen!

UI > Browser > Mobile (Android)


Deprecations and interoperability improvements

Blink > Bindings

  • To improve interoperability, instance properties with a Promise type now return a rejected promise instead of throwing an exception.

Blink > CSS


Blink > DOM


  • To improve interoperability, HTMLAllCollection , HTMLCollection , HTMLFormControlsCollection and HTMLOptionsCollection are no longer enumerable, so they are now left out of calls to Object.keys() or for - in loops.
    • Sathya Gunasekaran, Lazily-Loaded Engineer

      October 23 2017

      17:45

      Introducing the Chrome User Experience Report

      Chrome was founded to push the web forward, and a key part of that is enabling developers to improve their user experience. Although current tools allow developers to understand how real-world users experience their own sites, they have never provided insight into comparisons with other sites or macro user experience trends across the web. Following similar efforts like the HTTPS Transparency Report, today we’re making the Chrome User Experience Report available to encourage performance and user experience improvements across the web.

      The report is a public dataset of key user experience metrics for top origins on the web. All performance data included in the report is from real-world conditions, aggregated from Chrome users who have opted-in to syncing their browsing history and have usage statistic reporting enabled. The initial release includes data from a sample of ten thousand origins and focuses on loading metrics, though we hope to expand coverage in future iterations. For full details on the dataset format, how to access it, and best practices for analysis, please see our developer documentation.

      By querying the dataset, developers can understand how real Chrome users experience the web from the diverse set of hardware, software, and networks they use in the wild. Analyzing many origins on the web will help site developers and the web community understand where they are doing well, identify areas for improvement, and observe advancements in user experience over time.

      We welcome feedback on the dataset’s format, metrics, dimensions, or any other ways to improve the report. We hope that this dataset will help the web community identify opportunities, record trends, and improve user experience on the web.

      Posted by Bryan McQuade and Ilya Grigorik, User Experience Reporters

      October 18 2017

      16:42

      Building unified documentation for the web

      Browsers are always exploring new directions. This independent experimentation has enabled the web to evolve to meet new use cases, but it also means that keeping up with how the web is changing can be difficult. Browsers maintain documentation for their features and APIs, but cross-browser documentation is often fragmented across several sources. One of Chrome’s top priorities is making it easier to build sites that work in all browsers, and simplifying web documentation is a key part of that effort.

      Today, web documentation is taking a big step towards a unified source. Mozilla Developer Network (MDN) Web Docs is announcing a new product advisory board, which includes founding members from Mozilla, Google, Microsoft, Samsung, and several others from the web standards and development communities. The product advisory board will review and provide feedback on the direction of MDN’s web documentation going forward.

      For the last several years, Chrome has been transitioning its web documentation efforts to MDN, allowing us to combine our documentation efforts with many open source contributors like Mozilla. The product advisory board is another step towards making MDN the best source of up-to-date, comprehensive documentation on the web and aligns closely with our goal to make it easier to build for the web as a whole. As part of this effort, we’re also investing in interoperability tests for the web, which allows browsers to share tests and compare the compatibility of their features. We’re also building new infrastructure to help browser developers find bugs and missing APIs between implementations.

      Check out MDN Web Docs as the centralized source of web API documentation. And look out for more information on how we’re working to make the web an even easier platform to build on.

      Posted by Dru Knox, Product Manager

      September 20 2017

      11:43

      Chrome 62 Beta: Network Quality Estimator API, OpenType variable fonts, and media capture from DOM elements

      Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows.

      Network Quality Estimator API

      The Network Infomation API has been available in previous versions of Chrome, but has only provided theoretical network speeds given the type of a user's connection. In this release, the API has been expanded to provide developers with network performance metrics as experienced by the client. Using the API, a developer can inspect the current expected round trip time and throughput and be notified of performance changes. To simplify application logic, the API also summarizes measured network performance as the cellular connection type (e.g. 2G ) most similar to it, even if the actual connection is WiFi or Ethernet.


      Using these network quality signals, developers can tailor content to network constraints. For example, on very slow connections, developers can serve a simplified version of the page to improve page load times .  These signals will also soon be available as HTTP request headers and enabled via Client Hints .

      OpenType Variable Fonts

      OpenType Font Variations bring new typographic capabilities to the web. Previously, one font file contained just a single instance of a font family, including only one weight (Regular, Bold, Black…) or one stretch (Normal, Condensed, Expanded…).
      Figure: Animated Amstelvar and Decovar variable font examples


      With variable fonts, responsive design on the web now extends to typography. OpenType Variations provide a continuous spectrum of stylistic variations while saving space and bandwidth, since they all load from a single compact font file. Stretch, style, and weight can be adjusted using the respective updated CSS properties which now allow numeric values. Fine tuning of variation axis parameters, such as weight or width, is possible using the font-variation-settings CSS property.

      Media Capture from DOM Elements

      The W3C Media Capture from DOM Elements API now allows sites to live-capture content in the form of a MediaStream directly from HTMLMediaElements (i.e. <video> and <audio> ). By invoking the captureStream() method on HTMLMediaElements , streamed content can be recorded and sent remotely using WebRTC, processed with WebAudio, or manipulated in various other ways .


      Sorry! Your browser does not support the video element. View animationhere.
      Figure: A 3D rendering being live-captured and streamed to a peer connection using WebRTC.

      Other features in this release

      Deprecations and interoperability improvements

      • Following an update to native button appearance on macOS, the appearance of <input> buttons and the <button> element have been similarly changed , affecting the default values for the background-color ,   border ,   border-radius , and padding CSS properties .
      • The ability to request permission to show notifications has been removed over HTTP connections and within cross-origin iframes , in line with our policy on restricting powerful features to only HTTPS.
      • To increase accuracy and ensure that users receive content in the language they expect, base language is now added immediately after language+region when generating accept-language headers from language settings.
      • To improve UX and browser consistency, transitional mouse events will now be dispatched , and hover states will now be updated more quickly after the intended layout has been modified.
      • OfflineAudioContext now accepts a dictionary argument, in addition to the existing constructor that takes three separate arguments.
      • In line with other browsers, the getStreamById method on RTCPeerConnection has now been removed .
      • SharedWorker.workerStart has been removed, following its deprecation and removal from other major browsers.
      • To better conform to spec, the default value of <ol>.start has been set to 1 .

      Posted by Ben Greenstein and Tarun Bansal, The Network’s Watch

      September 14 2017

      23:10

      Unified autoplay

      Users watch and listen to a lot of media, and autoplay can make it faster and easier to consume on the web. However, one of the most frequent user concerns is unexpected media playback, which can use data, consume power, and make unwanted noise while browsing. To address this, Chrome will be making autoplay more consistent with user expectations and will give users more control over audio.

      Starting in Chrome 64, autoplay will be allowed when either the media won’t play sound, or the user has indicated an interest in the media. This will allow autoplay to occur when users want media to play, and respect users' wishes when they don't. These changes will also unify desktop and mobile web behavior, making web media development more predictable across platforms and browsers.

      Not all users have the same preferences for autoplay media, so Chrome 63 will add a new user option to completely disable audio for individual sites. This site muting option will persist between browsing sessions, allowing users to customize when and where audio will play.

      These changes will give users greater control over media playing in their browser, while making it easier for publishers to implement autoplay where it benefits the user. For more details, please see the autoplay roadmap.

      Posted by Mounir Lamouri, Software Engineer

      August 21 2017

      19:17

      Run multiple versions of Chrome side-by-side

      By default, when users install Chrome, they receive the most stable and supported build available. However, Chrome fans and web developers have long been able to opt into new Chrome features by installing pre-release packages such as Chrome Beta and Dev. Historically it's been impossible to install these pre-releases on the same computer as stable Chrome, forcing developers to choose between testing their site in the next version of Chrome and experiencing their site as users see it now.

      Starting today, Chrome Beta and Chrome Dev can be installed on the same Windows computer as stable Chrome and run simultaneously, allowing developers to more easily test their site across multiple versions of Chrome. This means side-by-side Chrome installation is available on Windows, Android, and Linux, and will be made available on other platforms in future releases.


      Chrome, Chrome Beta, and Chrome Dev can now be installed side by side on the same Windows computer. 

      To install Chrome Beta or Chrome Dev, visit the Chromium release channels page. If you already have Chrome Dev or Beta and wish to run it side-by-side with stable Chrome, you'll need to uninstall it and then reinstall from this page. To easily transfer your bookmarks, settings, and other data, sign in to Chrome before you uninstall. And if you see something not quite right in Chrome Dev or Beta, please send us feedback.

      Posted by Greg Thompson, Bitmason

      August 15 2017

      18:34

      Chrome 61 Beta: JavaScript modules, Payment Request API on desktop, Web Share API, and WebUSB

      Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows.
      JavaScript modules
      Modules allow developers to declare a script's dependencies and are already popular in third-party build tools, which use them to bundle only the required scripts. This release adds native support for JavaScript modules via the new <script type=module> element.


      Native support means the browser can fetch granular dependencies in parallel, taking advantage of caching, avoiding duplications across the page, and ensuring the script executes in the correct order, all without a build step.


      Payment Request API on desktop

      The Payment Request API is now available for Windows, Mac, Linux, and ChromeOS, following the announcement of Android support last year. Developers can now offer secure, seamless checkout experiences across platforms. To get started, “check out” our integration guide .
      The PaymentRequest process throughout a transaction.

      Web Share API

      To allow users to easily share content on social networks, developers have had to manually integrate sharing buttons into their site for each social service. This often leads to users not being able to share with the services they actually use, in addition to bloated page sizes and security risks from including third-party code.


      Sites can now use the new navigator.share API on Chrome for Android to trigger the native Android share dialog, allowing the user to easily share text or links with any of their installed native apps. In a future release, this API will also be able to share to installed web apps.


      The navigator.share API allows the user to share content with a variety of native apps via the native Android share dialog.

      WebUSB

      Most hardware peripherals such as keyboards, mice, printers, and gamepads are supported by high-level web platform APIs. To use specialized educational, scientific, or industrial USB peripherals, users must find and install potentially unsafe drivers and software with system-level privileges.


      Chrome now supports the WebUSB API , allowing web apps to communicate with peripherals given a user's consent. This enables all the functionality provided by these devices, while still preserving the security guarantees of the web.

      Other features in this release



      Deprecations and interoperability improvements

      • To increase security, resources with URLs containing both \n and < characters will now be blocked .
      • To increase security, support for the Presentation API’s start function has been deprecated and removed for insecure contexts.
      • To increase consistency across on<event> attributes, onwheel attributes have been moved from Element to Window , Document , HTMLElement , and SVGElement .
      • To better follow spec and provide more granular control over the flow of referred content, Chrome now supports three new Referrer Policy values, same-origin , strict-origin , and strict-origin-when-cross-origin .
      • Following the change in spec, the maximum value for colSpan has been decreased from 8190 to 1000.

      Posted by Domenic Denicola, Maverick Modulator

      July 25 2017

      16:08

      So long, and thanks for all the Flash

      This morning, Adobe announced their plans to end support for Flash in late 2020. For Flash developers this will mean transitioning to HTML, as Chrome will increasingly require explicit permission from users to run Flash content until support is removed completely at the end of 2020.

      HTML is faster, safer, and more power efficient than Flash and works across desktop and mobile. Three years ago, over 80% of Chrome daily desktop users visited sites with Flash. Today only 17% of users visit sites with Flash and we’re continuing to see a downward trend as sites move to HTML.

      Over a three-year period, Flash usage has declined 80%.


      We strongly encourage sites that still rely on Flash to make the move to HTML as there will be an increasing number of restrictions on Flash leading up to the end of support:

      • For sites that use Flash for gaming, a list of relevant APIs and demos can be found at OpenWebGames.com. We recommend exploring technologies like WebAssembly, which allows for high-performance computing.
      • For sites that use Flash for media, Mozilla’s media migration guide gives an overview of the APIs used to prepare, distribute and play media on the web.
      • Finally, for sites that use Flash for advertising, we recommend switching to HTML ads. Please work with your ad provider directly for this.
      Flash helped make the web a rich, dynamic experience, and shaped the modern set of web standards. We recognize that any transition can have challenges, but we will continue to work closely with Adobe and the web community to ensure that users have a great experience and to help developers make the web transition to HTML.

      Posted by Anthony Laforge, on behalf of the Chrome team

      June 15 2017

      10:48

      Counting Gray Seals with Google Earth Imagery

      We recently came across this article about a scientific study of the populations grey seals in the North Atlantic that used Google Earth imagery to do a census.

      One of the locations mentioned in the article is Muskeget Island, Massachusetts. We did manage to find the seals, but were also impressed by how much the sand bars change over time:

      .sliderInput{border:0; color:#006FBA; font-weight:bold;background-color: white;padding:0px;box-shadow:none;.slider{width:95%;}]]>

      Speed in milliseconds per image:
      Moving sandbars at Muskeget Island, Massachusetts.

       

      June 14 2017

      19:00
      Direct your own movies in Toontastic 3D with our new Cars 3 and Fruit Ninja themes!
      19:00
      Direct your own movies in Toontastic 3D with our new Cars 3 and Fruit Ninja themes!
      13:50

      Excel to KML Two Way Converter

      In January we created a simple KML converter that takes a KML file and produces a csv file that is easily opened with Microsoft Excel. Recently GEB reader David Kettle asked whether it would be possible to go both ways.

      So, we have used an open source tool called SheetJS for reading and writing Excel files in JavaScript and have made a two way process.

      To use it, simply upload a KML or KMZ file below and it will extract all the placemarks, paths or polygons into an Excel file. You can then edit the data in the Excel file then upload that and it will convert it back to a KML file.

      input[type="file"]{padding:4px;color:black}


       

      Notes:
      All styles, folders etc are lost in the conversion.
      It only extracts the outer edge of a polygon. If there are ‘cutouts’ then they will be ignored.
      It doesn’t currently extract folder names. We will consider adding that as a feature in the future.
      It extracts the longitude/latitude/altitude data in the format used in KML rather than separating them into columns. This was to make it easier to handle both points and polygons.
      When we tried it on very large polygons, Excel gave an error – most likely caused by a limit on the amount of text allowed in a single cell.

      The intent was not to create a universal converter but to provide a very simply utility, and to give those with some programming knowledge a starting point if they wish to create something more complex. Feel free to use any of the code used in the page. The original KML API can be found here The version used in the page was run through Babel to make it compatible with older browsers.

      The post Excel to KML Two Way Converter appeared first on Google Earth Blog.

      June 13 2017

      18:17

      Chrome 60 Beta: Paint Timing API, CSS font-display, and Credential Management API improvements

      Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows.

      Paint Timing API

      While no generalized metric perfectly captures when a page is loaded in all cases, First Paint and First Contentful Paint are invaluable numbers to measure critical user moments during loading. To give developers better insight into their site’s loading performance, the new Paint Timing API exposes metrics that capture First Paint and First Contentful Paint.
      Screen Shot 2017-06-08 at 8.57.03 AM.png
      Stills of a First Paint and First Contentful Paint for Google.com, from “Web Performance: Leveraging the Metrics that Most Affect User Experience” at Google I/O 2017

      CSS font-display

      Downloadable web fonts are often used to create more visually rich web experiences. Historically, Chrome has delayed rendering text until the specified font is available, to ensure visual correctness. However, downloading a font can take as long as several seconds on a poor connection, significantly delaying the time until a user sees content. Chrome now supports the CSS @font-face descriptor and corresponding font-display property , allowing developers to specify how and when Chrome displays text content while downloading fonts.

      Credential Management API improvements

      In response to developer feedback and to make the Credential Management API easier to use for all sites, the need for a custom fetch() to access the stored password is now deprecated. Starting in Chrome 60, the user’s password will now be returned directly as part of the PasswordCredential .

      In addition, we've made a series of changes to better align with the work being done in the Web Authentication Working Group . This includes the deprecation of requireUserMediation , which has been renamed to preventSilentAccess .

      Other features in this release

      • The Payment Request API is now supported on desktop versions of Chrome.
      • Sites can now collect payments through native Android payment apps using the Payment Request API .
      • Object rest & spread properties are now supported, making it simpler to merge and shallow-clone objects and implement various immutable object patterns.
      • The new Web Budget API enables sites with the Push Notification permission to send a limited number of push messages that trigger background work such as syncing data or dismissing notifications the user has handled on another device, without the need to show a user-visible notification.
      • The new Web Push Encryption format is now supported and PushManager.supportedContentEncodings can be used to detect where it can be used.
      • PushSubscription.expirationTime is now available, notifying sites when and if a subscription will expire.
      • To improve performance and predictability,   pointermove and mousemove events are now delivered once per AnimationFrame , matching the current functionality of scroll and TouchEvents .
      • The :focus-within CSS pseudo-class is now available, affecting any element the :focus pseudo-class affects, as well as any element with a descendant affected by :focus .
      • The CSS frames timing function is now available, making it useful for animation loops where the animation should display all frames for exactly the same length, including its first and last frames.
      • To provide an enriched way to capture editing actions, InputEvent now allows user input to be managed by script, enhancing the details provided to editable elements.  
      • To increase security, a BeforeUnload dialog triggered when the user leaves a site will now only be shown if the frame attempting to display it has ever received a user gesture or user interaction, though the BeforeUnloadEvent will still be dispatched regardless.
      • VP9, an open and royalty-free video coding format, can now be used with the MP4 (ISO BMFF) container and requires the new VP9 string format mentioned below.
      • A new VP9 string format is now available and accepted by various media-related APIs , enabling developers to describe the encoding properties that are common in video codecs, but are not yet exposed.

      Deprecations and interoperability improvements

      • getElementsByTagName() now accepts qualified names in response to an update to the DOM specification .
      • /deep/ now behaves like the descendant combinator , which is effectively a no-op.
      • To improve user experience , calls to Navigator.vibrate() now immediately return false if the user hasn't explicitly tapped on the frame or any embedded frame, matching existing behavior for cross-origin iframes .
      • WEBKIT_KEYFRAME_RULE and WEBKIT_KEYFRAMES_RULE have been removed in favor of the unprefixed standardized APIs, KEYFRAME_RULE and KEYFRAMES_RULE .
      • Support for non-standard WebKitAnimationEvent and WebKitTransitionEvent has been removed from document.createEvent() .
      • To better align with spec , NodeIterator.filter and TreeWalker.filter no longer wrap JavaScript objects, and .prototype has been removed from window.NodeFilter .
      • RTCPeerConnection.getStreamById() is being removed, and a polyfill is recommended as a replacement.
      • SVGPathElement.getPathSegAtLength() has been deprecated as it has been removed from the SVGPathElement spec.
      • Headers.prototype.getAll() has been removed from the Fetch API in line with its removal from the spec.


      Posted by Shubhie Panicker, Paint Timing Promoter
      17:00
      Is Project Fi right for you?
      17:00
      Is Project Fi right for you?
      15:00
      More Levels, and more way to contribute for Local Guides
      15:00
      More Levels, and more way to contribute for Local Guides
      12:30

      Bidi Bidi Refugee Settlement in Google Earth

      When looking through the latest imagery update in Google Earth, we came across some images in northern Uganda. They were captured by DigitalGlobe as part of their ‘FirstLook’ program and relate to the movement of refugees from South Sudan into Uganda. There is ongoing violence in South Sudan which has in turn created a famine in the region. The combination is causing many people to flee the country. According to Wikipedia, the refugee camp is named Bidi Bidi, and with over 270,000 residents is the largest refugee settlement in the world.

      .sliders img{max-width:none; }]]>
      before
      after

      Before and after of one of the Bidi Bidi camps showing that it was not there in 2013.

      Unfortunately the DigitalGlobe image does not capture the full extent of the Bidi Bidi camps and only shows the southern edge of one new section that has appeared since

      before
      after

      Before and after of another of the Bidi Bidi camps showing that it appeared between August 30th, 2016 and December 11th, 2016.

      So, we downloaded a recent Sentinel-2 image of the region and were able to identify a number of camps that have appeared at various times starting in 2014. We also had a look at this list of the worlds largest refugee camps and were able to locate most of them.

      Refugee camps are quite distinctive in satellite imagery. They typically have a large grid pattern of road networks which are not typical of that part of Africa. Small towns in the region typically grow slowly and more organically resulting in a less ordered layout than refugee settlements which are planned and built in short bursts.

      Some of the largest refugee camps are a collection of five camps in Kenya near the border with Somalia. The southernmost camp was clearly over-planned with a vast network of streets laid out but only a small portion ever occupied:


      One of the refugee camps near Dadaab, Kenya. The whole grid is 5 km x 4 km

      To see all the camps we found in Google Earth, download this KML file

      You may also find this YouTube video on various conflicts and famines in the region interesting.

      10:00
      Using data to change the conversation about race in America
      Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
      Could not load more posts
      Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
      Just a second, loading more posts...
      You've reached the end.

      Don't be the product, buy the product!

      Schweinderl