<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Solomon</title>
    <description>The latest articles on DEV Community by Solomon (@solomon).</description>
    <link>https://dev.to/solomon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F94029%2F0e1191e6-bc65-4e6f-a9b9-6259656d4777.jpg</url>
      <title>DEV Community: Solomon</title>
      <link>https://dev.to/solomon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/solomon"/>
    <language>en</language>
    <item>
      <title>The WWDC 2019 Platforms State of the Union Highlights</title>
      <dc:creator>Solomon</dc:creator>
      <pubDate>Mon, 03 Jun 2019 23:37:26 +0000</pubDate>
      <link>https://dev.to/solomon/the-wwdc-2019-platforms-state-of-the-union-in-1-minute-1kel</link>
      <guid>https://dev.to/solomon/the-wwdc-2019-platforms-state-of-the-union-in-1-minute-1kel</guid>
      <description>&lt;p&gt;Here are some things that were mentioned during the Platforms State of the Union at WWDC 2019.&lt;/p&gt;

&lt;h1&gt;
  
  
  macOS Catalina
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;DriverKit - kernel extensions but in userspace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explicit User Authorizations for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keystroke recording&lt;/li&gt;
&lt;li&gt;Screen capture&lt;/li&gt;
&lt;li&gt;Screen recording&lt;/li&gt;
&lt;li&gt;User Data

&lt;ul&gt;
&lt;li&gt;Document&lt;/li&gt;
&lt;li&gt;Desktop&lt;/li&gt;
&lt;li&gt;Downloads&lt;/li&gt;
&lt;li&gt;iCloud Drive&lt;/li&gt;
&lt;li&gt;Removeable media&lt;/li&gt;
&lt;li&gt;Network volumes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  watchOS 6
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Independence from the iPhone&lt;/li&gt;
&lt;li&gt;Audio Streaming&lt;/li&gt;
&lt;li&gt;Extended Runtime&lt;/li&gt;
&lt;li&gt;SwiftUI support&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Privacy
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Sign In with Apple
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Real User Indicator based on account history (determine if another verification step should be performed)&lt;/li&gt;
&lt;li&gt;Works on the Web and across all Apple platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ML
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;image saliency (user interest heat maps for auto-cropping)&lt;/li&gt;
&lt;li&gt;text recognition (printed text transcription)&lt;/li&gt;
&lt;li&gt;word embeddings (get synonyms of words for search purposes)&lt;/li&gt;
&lt;li&gt;speech api on-device (recognize speech)&lt;/li&gt;
&lt;li&gt;speech saliency (get the cadence and pitch of spoken words)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CoreML
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Personalized, background-updated machine learning models personalized on each user's device.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CreateML
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;macOS app for building models without code with templates, and testing them with various inputs from built-in sensors on iOS and Mac.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Siri Shortcuts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Shortcut phrase suggestions (Add to Siri)&lt;/li&gt;
&lt;li&gt;Conversational (parametrized) shortcuts &lt;/li&gt;
&lt;li&gt;Shipped with iOS and iPadOS&lt;/li&gt;
&lt;li&gt;Automation (smart shortcut triggers)&lt;/li&gt;
&lt;li&gt;Multi-step, multi-app shortcuts&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ARKit
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Apple Pay integration (instant buy)&lt;/li&gt;
&lt;li&gt;Simultaneous front and back camera usage&lt;/li&gt;
&lt;li&gt;Motion capture&lt;/li&gt;
&lt;li&gt;People occlusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  RealityComposer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;WYSIWYG interface for laying out 3D AR experiences for Apple devices&lt;/li&gt;
&lt;li&gt;An iOS and Mac application&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  RealityKit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An engine for 3D AR experiences&lt;/li&gt;
&lt;li&gt;Multi-threaded renderer&lt;/li&gt;
&lt;li&gt;Synchronizes with camera data for realistic results&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Metal
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Supported fully by the iOS Simulator on Mac&lt;/li&gt;
&lt;li&gt;Metal Memory Debugger to understand resource allocation&lt;/li&gt;
&lt;li&gt;Metal Indirect Compute Encoding (offloading more tasks from the CPU to the GPU)&lt;/li&gt;
&lt;li&gt;Better raytracing support&lt;/li&gt;
&lt;li&gt;Peer Group API (GPUs can share data with each other without clogging the slower PCI system bus)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>wwdc</category>
      <category>mac</category>
      <category>news</category>
      <category>apple</category>
    </item>
    <item>
      <title>The WWDC 2019 Keynote Highlights in 5 minutes</title>
      <dc:creator>Solomon</dc:creator>
      <pubDate>Mon, 03 Jun 2019 20:30:10 +0000</pubDate>
      <link>https://dev.to/solomon/wwdc-2019-keynote-highlights-1470</link>
      <guid>https://dev.to/solomon/wwdc-2019-keynote-highlights-1470</guid>
      <description>&lt;p&gt;Here are some things that were announced this morning that I think will change the way developers work on Apple platforms.&lt;/p&gt;

&lt;p&gt;If I missed something or you caught a typo please leave a comment below.&lt;/p&gt;

&lt;p&gt;Let's get into this!&lt;/p&gt;

&lt;p&gt;First, the welcome video, now featuring lots of Touch Bar MacBook Pros (spoiler alert: they didn't update the notebook line-up here, having already cleared the decks with the &lt;a href="https://www.apple.com/newsroom/2019/05/apple-introduces-first-8-core-macbook-pro-the-fastest-mac-notebook-ever/" rel="noopener noreferrer"&gt;spec bump&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/fa5p19APgd8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  watchOS
&lt;/h1&gt;

&lt;p&gt;New taptic clock chimes (audible if sound is on).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The robins are okay. - Kevin Lynch&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  New Apps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Audiobooks&lt;/li&gt;
&lt;li&gt;Voice Memos&lt;/li&gt;
&lt;li&gt;Calculator (with tip/split calculator)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzlatniojsywq5kf688f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzlatniojsywq5kf688f.png" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New Developer Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Independent Apps (without iPhone companion)&lt;/li&gt;
&lt;li&gt;Extended Sessions&lt;/li&gt;
&lt;li&gt;Streams Audio API&lt;/li&gt;
&lt;li&gt;Appstore for Apple Watch
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t01o9fgdtaf1oqtqhd6.png" width="800" height="517"&gt;

&lt;ul&gt;
&lt;li&gt;Dictation search&lt;/li&gt;
&lt;li&gt;Siri-based search&lt;/li&gt;
&lt;li&gt;Integrated purchases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  iOS
&lt;/h1&gt;

&lt;p&gt;iOS 12 statistics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;97% iOS 12 customer &lt;/li&gt;
&lt;li&gt;85% install base (10% adoption of Android 9)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;[unlike] &lt;em&gt;those other guys&lt;/em&gt; - Tim Cook&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  iOS 13
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;yes, it's iOS 13 - Craig Federighi&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;30% faster Face ID unlock&lt;/li&gt;
&lt;li&gt;app packaging changes - 50% smaller downloads and 60% smaller updates&lt;/li&gt;
&lt;li&gt;2x app launch speed&lt;/li&gt;
&lt;li&gt;Dark Mode
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/E5Jg4Wm9b7o"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;li&gt;swipe type (like GBoard)&lt;/li&gt;
&lt;li&gt;smart photo sharing suggestions&lt;/li&gt;
&lt;li&gt;time synced lyrics in Music&lt;/li&gt;
&lt;li&gt;Safari text-sizing options&lt;/li&gt;
&lt;li&gt;Mail formatting controls and rich fonts&lt;/li&gt;
&lt;li&gt;Notes gallery view, shared folders&lt;/li&gt;
&lt;li&gt;Reminders redesign

&lt;ul&gt;
&lt;li&gt;smart lists&lt;/li&gt;
&lt;li&gt;iMessage tagging (reminder to talk)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Maps

&lt;ul&gt;
&lt;li&gt;rebuilt map&lt;/li&gt;
&lt;li&gt;it'll rollout to the entire US by the end of 2019&lt;/li&gt;
&lt;li&gt;ETA sharing&lt;/li&gt;
&lt;li&gt;favorite places menu for easy access&lt;/li&gt;
&lt;li&gt;collections for lists of favorite places for sharing&lt;/li&gt;
&lt;li&gt;lookaround view for 3D exploring
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jglknqd99fschfqmyli.png" width="558" height="916"&gt;
&lt;/li&gt;
&lt;li&gt;smooth virtual street navigation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Privacy
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Location
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;One-time location sharing&lt;/li&gt;
&lt;li&gt;Background location usage reports&lt;/li&gt;
&lt;li&gt;Wi-Fi and Bluetooth signal access controls&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Social Logins
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1p79cgjynjnwvo8vj4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1p79cgjynjnwvo8vj4h.png" width="700" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign in with Apple

&lt;ul&gt;
&lt;li&gt;simple API&lt;/li&gt;
&lt;li&gt;instant Face ID authentication&lt;/li&gt;
&lt;li&gt;optional private email generation
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97fvkqn7dgdnhadalnni.png" width="800" height="150"&gt;
&amp;gt; a unique, random address that forwards to your real address ... you can disable any one of them at any time - Craig Federighi&lt;/li&gt;
&lt;li&gt;available on the web and all Apple platforms&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Homekit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Homekit Secure Video&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloudless HomePod, Apple TV, or iPad camera analysis&lt;/li&gt;
&lt;li&gt;10-day clip storage for free&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Homekit for Routers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firewalls for individual accessories&lt;/li&gt;
&lt;li&gt;Will be available from Linksys, Eero, ISPs like Spectrum&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Messages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Avatar picture sharing controls&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Memojis
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;New Memoji options
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/3x7_w9Oz8lQ"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;li&gt;Auto-generated Personal Memoji Sticker Packs
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50kf3u4o713pktrfafry.png" width="800" height="527"&gt;
&lt;/li&gt;
&lt;li&gt;Memoji on all devices with A8 or later&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Camera
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;High-key mono effect&lt;/li&gt;
&lt;li&gt;Adjustable portrait lightning effect&lt;/li&gt;
&lt;li&gt;Redesigned editing interface for still photos and videos
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdsxl3bfscux01jxyc93y.png" width="800" height="400"&gt;

&lt;ul&gt;
&lt;li&gt;Video rotation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Photos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Hides duplicates with Machine Learning&lt;/li&gt;
&lt;li&gt;Intelligent photo organization and nicer photo browsing
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ngqs27havi1yih65ohg.png" width="800" height="590"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AirPods
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Siri can announce and read incoming messages from Messages or any SiriKit-enabled messages app&lt;/li&gt;
&lt;li&gt;Audio Sharing
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0bmhv9rhea6i7k91c84c.png" width="800" height="660"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  HomePod
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Handoff your music, podcast, or a phone call to HomePod&lt;/li&gt;
&lt;li&gt;Live radio from 100,000 stations through Siri&lt;/li&gt;
&lt;li&gt;Voice recongization/response personalization

&lt;ul&gt;
&lt;li&gt;Includes Apple Music, Messages, Reminders, and Notes actions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  CarPlay
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;redesign

&lt;ul&gt;
&lt;li&gt;CarPlay dashboard with Siri, music, maps, and calendar&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Siri third-party integration (starting with Pandora and Waze)&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Shortcuts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Siri shortcut integration with the shortcuts app on all platforms&lt;/li&gt;
&lt;li&gt;Suggested automations create templates based on your behavior in different apps&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Siri
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Now a text-to-speech voice entirely generated by a neural network

&lt;ul&gt;
&lt;li&gt;more natural responses
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbbesyzklifovarpcgk2.png" width="800" height="318"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;send unknown callers to voicemail&lt;/li&gt;
&lt;li&gt;enterprise single-sign-on&lt;/li&gt;
&lt;li&gt;separate iCloud accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  iPadOS
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;a new name!&lt;/li&gt;
&lt;li&gt;tighter Springboard app icon layout&lt;/li&gt;
&lt;li&gt;home screen widget pinning&lt;/li&gt;
&lt;li&gt;Slideover (mini app launcher on the side of the main app)&lt;/li&gt;
&lt;li&gt;multi-window capabilities with individual component drag-and-drop and third-party app support
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1s0r4j5eho612vy1a61n.png" width="800" height="465"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;[shows two Word documents in a split view]&lt;/em&gt; I mean that's enterprisey right there - Craig Federighi&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Files
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;column-view (like Finder on macOS)&lt;/li&gt;
&lt;li&gt;iCloud Drive folder sharing&lt;/li&gt;
&lt;li&gt;SMB server file sharing&lt;/li&gt;
&lt;li&gt;USB drive support&lt;/li&gt;
&lt;li&gt;USB photo loading support for third-party apps (like camera -&amp;gt; Lightroom)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Safari
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Desktop-class browsing (with automatic resizing and touch optimization)&lt;/li&gt;
&lt;li&gt;Download manager&lt;/li&gt;
&lt;li&gt;30+ new keyboard shortcuts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Writing and Apple Pencil
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Custom fonts on the App Store&lt;/li&gt;
&lt;li&gt;Multi-touch navigation

&lt;ul&gt;
&lt;li&gt;for document scrolling&lt;/li&gt;
&lt;li&gt;cursor position dragging&lt;/li&gt;
&lt;li&gt;editing gestures:&lt;/li&gt;
&lt;li&gt;three-finger-pinch copy&lt;/li&gt;
&lt;li&gt;three-finger-pinch paste&lt;/li&gt;
&lt;li&gt;three-finger-swipe undo&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;screenshot/photo markup gestures (with full document capture mode in Safari)&lt;/li&gt;

&lt;li&gt;resizable keyboard gesture swipe (thumb typing)&lt;/li&gt;

&lt;li&gt;20 millisecond to 9 millisecond latency&lt;/li&gt;

&lt;li&gt;redesigned editing palette&lt;/li&gt;

&lt;li&gt;PencilKit editing palette API for app developers&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  Mac
&lt;/h1&gt;

&lt;h2&gt;
  
  
  New Mac Pro
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/wl4Hg23RQHQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;modular design&lt;/li&gt;
&lt;li&gt;top case handles&lt;/li&gt;
&lt;li&gt;up to 28 core 300+ watt Xeon processor with great cooling&lt;/li&gt;
&lt;li&gt;6 channels of ECC RAM, up to 1.5 terabytes&lt;/li&gt;
&lt;li&gt;8 PCIe expansion slots&lt;/li&gt;
&lt;li&gt;IO Card: two Thunderbolt 3 ports, one USB-A port, audio jack, two 10 gigabit Ethernet ports&lt;/li&gt;
&lt;li&gt;supported graphics through up to two Mac Pro Expansion Module (MPX): Radeon Pro 580 X, Radeon Pro Vega || (two supported)&lt;/li&gt;
&lt;li&gt;"Afterburner" module (6 billion pixels per second of hardware accelerated video editing)&lt;/li&gt;
&lt;li&gt;optional wheels for transport&lt;/li&gt;
&lt;li&gt;can drive six 6K displays&lt;/li&gt;
&lt;li&gt;Fall release starting price: $5999&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Live Demo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;1,000 audio tracks + software instruments in Logic
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2f9kxaw2g8l81nppv6tg.png" width="800" height="455"&gt;

&lt;ul&gt;
&lt;li&gt;Simultaneously playing 3 streams of 8K ProRes RAW footage&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pro Display XDR
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;32-inch LCD&lt;/li&gt;
&lt;li&gt;6K Retina&lt;/li&gt;
&lt;li&gt;superwide viewing angle&lt;/li&gt;
&lt;li&gt;anti-reflective coating&lt;/li&gt;
&lt;li&gt;nano-texture matte glass panel option without haze effect&lt;/li&gt;
&lt;li&gt;1000 nits of indefinite full-screen brightness for HDR

&lt;ul&gt;
&lt;li&gt;peak of 1600 nits&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;1 million to 1 contrast ratio&lt;/li&gt;

&lt;li&gt;rotation to portrait mode &lt;/li&gt;

&lt;li&gt;Fall release starting price: $4999

&lt;ul&gt;
&lt;li&gt;nano-texture version: $5999&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  macOS Catalina
&lt;/h2&gt;

&lt;h3&gt;
  
  
  iTunes split - Apple Music, Podcasts, TV
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;How about calendar in iTunes? ... How about Mail in iTunes? And maybe Safari in iTunes! ... Well of course we'll add a dock ... Nailed it! - Craig Federighi&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Music
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Unobtrusive device syncing from Finder&lt;/li&gt;
&lt;li&gt;New sidebar and recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Podcasts
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Machine Learning-informed search for spoken content&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  TV
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Contains purchased movies, subscribed channels&lt;/li&gt;
&lt;li&gt;4K HDR playback&lt;/li&gt;
&lt;li&gt;Dolby Atmos spatial audio&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sidecar
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use iPad as a second Mac display&lt;/li&gt;
&lt;li&gt;Precise input with Apple Pencil in several macOS apps&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Accessibility
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Voice Control for iOS and Mac.

&lt;ul&gt;
&lt;li&gt;Text correction/editing&lt;/li&gt;
&lt;li&gt;Open apps&lt;/li&gt;
&lt;li&gt;Scroll instructions&lt;/li&gt;
&lt;li&gt;Tab-based navigation&lt;/li&gt;
&lt;li&gt;Button clicking&lt;/li&gt;
&lt;li&gt;Field navigation&lt;/li&gt;
&lt;li&gt;Maps grid view&lt;/li&gt;
&lt;li&gt;Volume control&lt;/li&gt;
&lt;li&gt;Local processing&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Find My
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Find my iPhone + Find My Friends&lt;/li&gt;
&lt;li&gt;Available on Mac and iOS&lt;/li&gt;
&lt;li&gt;Offline location detection through secure distributed Bluetooth relay through other's Apple devices&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Activation Lock
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Supports all T2 Macs&lt;/li&gt;
&lt;li&gt;Locks the boot and OS install processes with your credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Project Catalyst (Marzipan)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start with a "Mac" checkbox in Xcode and build iPad and macOS apps simultaneously.&lt;/li&gt;
&lt;li&gt;Early adopters:

&lt;ul&gt;
&lt;li&gt;Asphalt&lt;/li&gt;
&lt;li&gt;Twitter&lt;/li&gt;
&lt;li&gt;Atlassian&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  ARKit 3
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;plus a Minecraft Earth Live Demo&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People Occlusion
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k3djo101dxhy438n1h3.png" width="706" height="894"&gt;
&lt;/li&gt;
&lt;li&gt;Motion Capture support&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Just to be clear no chickens were harmed on stage at WWDC - Craig Federighi&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Swift
&lt;/h1&gt;

&lt;h2&gt;
  
  
  New UI Framework: SwiftUI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;declarative, expressive UI&lt;/li&gt;
&lt;li&gt;size classes&lt;/li&gt;
&lt;li&gt;automatic animation&lt;/li&gt;
&lt;li&gt;automatic Dark Mode support&lt;/li&gt;
&lt;li&gt;live UI preview in Xcode&lt;/li&gt;
&lt;li&gt;drag and drop component ("view") library with code generation&lt;/li&gt;
&lt;li&gt;smart view inspect menu&lt;/li&gt;
&lt;li&gt;built-in localization&lt;/li&gt;
&lt;li&gt;live, on-device code editing&lt;/li&gt;
&lt;li&gt;modular adoption (one view or full application)&lt;/li&gt;
&lt;li&gt;runs natively on watchOS and every Apple platform, and binds to every native control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb5ng64fb7o8ve514e7tz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb5ng64fb7o8ve514e7tz.png" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Release Dates (all platform announcements)
&lt;/h1&gt;

&lt;p&gt;Developer beta: Today&lt;br&gt;
Public seed: July&lt;br&gt;
General user availability: Fall&lt;/p&gt;




&lt;p&gt;If you liked this post, make sure to smash that ❤ button an &lt;em&gt;odd&lt;/em&gt; number of times. Thanks!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkzg42vdnjpvu0hxi5nf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkzg42vdnjpvu0hxi5nf.png" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wwdc</category>
      <category>apple</category>
      <category>news</category>
      <category>mac</category>
    </item>
    <item>
      <title>How to reload your unpacked Chrome extensions on-save from anywhere!</title>
      <dc:creator>Solomon</dc:creator>
      <pubDate>Wed, 27 Feb 2019 00:28:28 +0000</pubDate>
      <link>https://dev.to/solomon/reloading-your-unpacked-chrome-extensions-on-save-from-anywhere-884</link>
      <guid>https://dev.to/solomon/reloading-your-unpacked-chrome-extensions-on-save-from-anywhere-884</guid>
      <description>&lt;p&gt;There's a really cool Chrome extension called "Reload Extensions", and it saved me from a (now fixed) extension loading bug, and the inconvenience of reloading unpacked extensions:&lt;/p&gt;


&lt;div class="liquid-comment"&gt;
    &lt;div class="details"&gt;
      &lt;a href="/solomon"&gt;
        &lt;img class="profile-pic" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F94029%2F0e1191e6-bc65-4e6f-a9b9-6259656d4777.jpg" alt="solomon profile image"&gt;
      &lt;/a&gt;
      &lt;a href="/solomon"&gt;
        &lt;span class="comment-username"&gt;Solomon&lt;/span&gt;
      &lt;/a&gt;
      &lt;span class="color-base-30 px-2 m:pl-0"&gt;•&lt;/span&gt;

&lt;a href="https://dev.to/solomon/comment/92b9" class="comment-date crayons-link crayons-link--secondary fs-s"&gt;
  &lt;time class="date-short-year"&gt;
    Feb 23 '19
  &lt;/time&gt;

&lt;/a&gt;

    &lt;/div&gt;
    &lt;div class="body"&gt;
      

&lt;p&gt;Yep! Especially when the extension icons don't update after I enable/load an extension (which I think is unintended behavior), I just go to &lt;a href="http://reload.extensions" rel="noopener noreferrer"&gt;reload.extensions&lt;/a&gt; and everything works as intended!&lt;/p&gt;



    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;But it can get even more convenient for us aspiring extension developers:&lt;/p&gt;


&lt;div class="liquid-comment"&gt;
    &lt;div class="details"&gt;
      &lt;a href="/kinghat"&gt;
        &lt;img class="profile-pic" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F110942%2F7580105f-8724-4c99-bc72-ba22547273ba.png" alt="kinghat profile image"&gt;
      &lt;/a&gt;
      &lt;a href="/kinghat"&gt;
        &lt;span class="comment-username"&gt;kinghat&lt;/span&gt;
      &lt;/a&gt;
      &lt;span class="color-base-30 px-2 m:pl-0"&gt;•&lt;/span&gt;

&lt;a href="https://dev.to/kinghat/comment/92b7" class="comment-date crayons-link crayons-link--secondary fs-s"&gt;
  &lt;time class="date-short-year"&gt;
    Feb 23 '19
  &lt;/time&gt;

&lt;/a&gt;

    &lt;/div&gt;
    &lt;div class="body"&gt;
      

&lt;p&gt;are you using the extensions reloader url to automate the reloading?&lt;/p&gt;



    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;(kudos to &lt;a class="mentioned-user" href="https://dev.to/kinghat"&gt;@kinghat&lt;/a&gt; for aiding in the research of this post!)&lt;/p&gt;

&lt;h1&gt;
  
  
  Requirements
&lt;/h1&gt;

&lt;p&gt;Let's go back to the basics!&lt;/p&gt;

&lt;p&gt;You need to have the following software installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git-scm.com" rel="noopener noreferrer"&gt;git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.visualstudio.com/Download" rel="noopener noreferrer"&gt;a text editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;any browser that supports Chrome extensions&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Instructions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The Extension
&lt;/h2&gt;

&lt;p&gt;Run the following commands in your terminal to build a copy of &lt;a href="https://github.com/JeromeDane" rel="noopener noreferrer"&gt;Jerome Dane&lt;/a&gt;'s &lt;code&gt;chrome.management&lt;/code&gt; API-based fork of the extension source code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/JeromeDane/chrome-extension-auto-reload
&lt;span class="nb"&gt;cd &lt;/span&gt;chrome-extension-auto-reload
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm audit fix
npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, load the contents of &lt;code&gt;chrome-extension-auto-reload/build/&lt;/code&gt; into Chrome as an unpacked extension and configure it like so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;a href="https://dev.tochrome://extensions"&gt;chrome://extensions&lt;/a&gt; using the address bar.&lt;/li&gt;
&lt;li&gt;Toggle on "Developer Mode" in the top right corner if you haven't already.&lt;/li&gt;
&lt;li&gt;Click on "Load Unpacked" and browse to the &lt;code&gt;build&lt;/code&gt; directory we generated earlier.&lt;/li&gt;
&lt;li&gt;Click the "Details" button seen in Figure 1.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqifxb640jt6yjfmq686z.png" alt="Figure 1: the extension card with the " width="800" height="472"&gt;
&lt;em&gt;Figure 1: the extension card with the "Details" button.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Scroll to the "Extension options" link and click on it.&lt;/li&gt;
&lt;li&gt;At the top of the page, change the "reload method" dropdown to equal "Manage API". This allows it to work with all extension scripts on the latest version of Chrome.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Your Project
&lt;/h2&gt;

&lt;p&gt;Navigate to your extension project's directory, create a new file called &lt;code&gt;gulpfile.js&lt;/code&gt;, and paste the following contents into it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;gulp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gulp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;watch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gulp-watch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;io&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;socket.io&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;gulp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;task&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;chrome-watch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;WEB_SOCKET_PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8890&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;io&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;WEB_SOCKET_PORT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;watch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**/*.*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;file.change&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{});&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the &lt;code&gt;Gulpfile&lt;/code&gt;'s dependencies into your extension project like so: &lt;code&gt;npm install gulp gulp-watch socket.io --save-dev&lt;/code&gt;. Assuming it isn't a Node project yet, you'll need to run &lt;code&gt;npm init&lt;/code&gt; and fill out the metadata to be placed into &lt;code&gt;package.json&lt;/code&gt; first.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;npx gulp chrome-watch&lt;/code&gt; and enjoy!&lt;/p&gt;




&lt;h1&gt;
  
  
  Sources
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/JeromeDane/chrome-extension-auto-reload" rel="noopener noreferrer"&gt;https://github.com/JeromeDane/chrome-extension-auto-reload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Conversations with &lt;a href="https://dev.to/kinghat"&gt;@kinghat&lt;/a&gt; regarding my previous &lt;a href="https://blog.solomonvictorino.com/reload-chrome-extensions-on-save-vs-code/" rel="noopener noreferrer"&gt;post&lt;/a&gt; on this topic.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>chrome</category>
      <category>extension</category>
      <category>gulp</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Reloading your Chrome extensions on-save in VS Code!</title>
      <dc:creator>Solomon</dc:creator>
      <pubDate>Sun, 24 Feb 2019 00:24:04 +0000</pubDate>
      <link>https://dev.to/solomon/reloading-your-chrome-extensions-on-save-in-vs-code-3cgb</link>
      <guid>https://dev.to/solomon/reloading-your-chrome-extensions-on-save-in-vs-code-3cgb</guid>
      <description>&lt;p&gt;&lt;em&gt;Update: &lt;a href="https://dev.to/solomon/reloading-your-unpacked-chrome-extensions-on-save-from-anywhere-884"&gt;there's a better way to do this&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There's a really cool Chrome extension called "Reload Extensions", and it saved me from a (now fixed) extension loading bug, and the general inconvenience of reloading unpacked extensions:&lt;/p&gt;


&lt;div class="liquid-comment"&gt;
    &lt;div class="details"&gt;
      &lt;a href="/solomon"&gt;
        &lt;img class="profile-pic" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F94029%2F0e1191e6-bc65-4e6f-a9b9-6259656d4777.jpg" alt="solomon profile image"&gt;
      &lt;/a&gt;
      &lt;a href="/solomon"&gt;
        &lt;span class="comment-username"&gt;Solomon&lt;/span&gt;
      &lt;/a&gt;
      &lt;span class="color-base-30 px-2 m:pl-0"&gt;•&lt;/span&gt;

&lt;a href="https://dev.to/solomon/comment/92b9" class="comment-date crayons-link crayons-link--secondary fs-s"&gt;
  &lt;time class="date-short-year"&gt;
    Feb 23 '19
  &lt;/time&gt;

&lt;/a&gt;

    &lt;/div&gt;
    &lt;div class="body"&gt;
      

&lt;p&gt;Yep! Especially when the extension icons don't update after I enable/load an extension (which I think is unintended behavior), I just go to &lt;a href="http://reload.extensions" rel="noopener noreferrer"&gt;reload.extensions&lt;/a&gt; and everything works as intended!&lt;/p&gt;



    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;But it can get even more convenient for us aspiring extension developers.&lt;/p&gt;


&lt;div class="liquid-comment"&gt;
    &lt;div class="details"&gt;
      &lt;a href="/kinghat"&gt;
        &lt;img class="profile-pic" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F110942%2F7580105f-8724-4c99-bc72-ba22547273ba.png" alt="kinghat profile image"&gt;
      &lt;/a&gt;
      &lt;a href="/kinghat"&gt;
        &lt;span class="comment-username"&gt;kinghat&lt;/span&gt;
      &lt;/a&gt;
      &lt;span class="color-base-30 px-2 m:pl-0"&gt;•&lt;/span&gt;

&lt;a href="https://dev.to/kinghat/comment/92b7" class="comment-date crayons-link crayons-link--secondary fs-s"&gt;
  &lt;time class="date-short-year"&gt;
    Feb 23 '19
  &lt;/time&gt;

&lt;/a&gt;

    &lt;/div&gt;
    &lt;div class="body"&gt;
      

&lt;p&gt;are you using the extensions reloader url to automate the reloading?&lt;/p&gt;



    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;(kudos to &lt;a class="mentioned-user" href="https://dev.to/kinghat"&gt;@kinghat&lt;/a&gt; for inspiring this post!)&lt;/p&gt;

&lt;h1&gt;
  
  
  Configuration
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;You need to have the following software installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://code.visualstudio.com/Download" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/arikw/chrome-extensions-reloader" rel="noopener noreferrer"&gt;Extensions Reloader&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Any browser that supports Chrome extensions. The example command configurations are for Chrome, but &lt;code&gt;start http://reload.extensions&lt;/code&gt; (Windows), &lt;code&gt;open http://reload.extensions&lt;/code&gt; (Mac), and &lt;code&gt;xdg-open http://reload.extensions&lt;/code&gt; (&lt;a href="https://en.wikipedia.org/wiki/GNU/Linux_naming_controversy" rel="noopener noreferrer"&gt;GNU/Linux&lt;/a&gt;) can work with any of the aforementioned browsers, assuming they are your computer's default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can get this Visual Studio Code extension called &lt;a href="https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave" rel="noopener noreferrer"&gt;RunOnSave&lt;/a&gt;, which lets you add this to your &lt;code&gt;settings.json&lt;/code&gt;:&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nl"&gt;"emeraldwalk.runonsave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"commands"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"match"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\\\\&lt;/span&gt;&lt;span class="s2"&gt;extension-project-folder&lt;/span&gt;&lt;span class="se"&gt;\\\\&lt;/span&gt;&lt;span class="s2"&gt;.*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"start chrome http://reload.extensions"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just make sure to replace "extension-project-folder" with the name of your project's folder.&lt;/p&gt;

&lt;p&gt;The double escaping of the backslashes isn't required on Unix-like operating systems like Mac and GNU/Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  macOS
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nl"&gt;"emeraldwalk.runonsave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"commands"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"match"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/extension-project-folder/.*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"open -a 'Google Chrome' http://reload.extensions"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  GNU/Linux
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nl"&gt;"emeraldwalk.runonsave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"commands"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"match"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/extension-project-folder/.*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"google-chrome http://reload.extensions"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Autosave configuration
&lt;/h2&gt;

&lt;p&gt;(this step is optional but recommended)&lt;/p&gt;

&lt;p&gt;For minimal interruptions, I recommend setting the save mode to auto save when the VS Code window loses focus in &lt;code&gt;settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"files.autoSave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"onWindowChange"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  That's it!
&lt;/h2&gt;

&lt;p&gt;It's kind of annoying (because it focuses your browser every time you switch away from VS Code) unless you're only switching between Code and Chrome, in which case it works really well!&lt;/p&gt;

&lt;p&gt;I haven't tested this on every OS and browser, so let me know if this functions for you in the comments below.&lt;/p&gt;




&lt;h1&gt;
  
  
  Sources
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/a/32775952" rel="noopener noreferrer"&gt;https://stackoverflow.com/a/32775952&lt;/a&gt;&lt;br&gt;
&lt;a href="https://stackoverflow.com/a/23039509" rel="noopener noreferrer"&gt;https://stackoverflow.com/a/23039509&lt;/a&gt;&lt;br&gt;
&lt;a href="https://superuser.com/a/790678" rel="noopener noreferrer"&gt;https://superuser.com/a/790678&lt;/a&gt;&lt;br&gt;
&lt;a href="https://askubuntu.com/a/19920" rel="noopener noreferrer"&gt;https://askubuntu.com/a/19920&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/emeraldwalk/vscode-runonsave/blob/master/README.md" rel="noopener noreferrer"&gt;https://github.com/emeraldwalk/vscode-runonsave/blob/master/README.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>chrome</category>
      <category>extension</category>
      <category>vscode</category>
      <category>json</category>
    </item>
  </channel>
</rss>
