{"id":23275,"date":"2018-11-01T16:52:17","date_gmt":"2018-11-01T20:52:17","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=23275"},"modified":"2018-11-05T15:33:33","modified_gmt":"2018-11-05T20:33:33","slug":"superdupers-smart-wake","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2018\/11\/01\/superdupers-smart-wake\/","title":{"rendered":"SuperDuper&rsquo;s Smart Wake"},"content":{"rendered":"<p><a href=\"https:\/\/www.shirt-pocket.com\/blog\/index.php\/shadedgrey\/the_best_ui_is_no_ui\/\">Dave Nanian<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.shirt-pocket.com\/blog\/index.php\/shadedgrey\/the_best_ui_is_no_ui\/\"><p>Apple, of course, has its own &ldquo;dark wake&rdquo; feature, used by Power Nap. Dark wake, as is suggested by the name, wakes a system without turning on the screen. However, it&rsquo;s not available to 3rd party applications and has task-specific limitations that tease but do not deliver a solution here.<\/p><p>And you can&rsquo;t put up a black screen on wake, or adjust the brightness, because it&rsquo;s too late by the time the wake happens.<\/p><p>[&#8230;]<\/p><p>Basically, if we are running a minute before the backup is scheduled to run, we assume we&rsquo;re also going to be running a minute later, and cancel any pending wakes for that time. So, if we have an event for 3am, at 2:59am we cancel that wake if we&rsquo;re already running.<\/p><p>That ensures that a system that&rsquo;s <strong>already awake<\/strong> will not wake the screen, whereas a system that&rsquo;s <strong>sleeping<\/strong> will wake as expected.<\/p><\/blockquote>\n<p>SuperDuper deserves an award for sweating so many details like this. Nanian&rsquo;s posts are a sobering reminder of the difference between theory and practice in app development. A direct API is often missing, so you need to find roundabout solutions. And much remains undocumented and unreliable.<\/p>\n\n<p id=\"superdupers-smart-wake-update-2018-11-05\">Update (2018-11-05): <a href=\"https:\/\/twitter.com\/dnanian\/status\/1059282337245130752\">Dave Nanian<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/dnanian\/status\/1059282337245130752\">\n<p>The result of the rather intensive stress testing: once over about 700 sdautomatedcopycontrollers are queued up waiting, things get weird.<\/p>\n<p>In case it isn&rsquo;t obvious: no one would ever do that. But it shouldn&rsquo;t ever get weird, so I&rsquo;m trying to fix it anyway.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Dave Nanian: Apple, of course, has its own &ldquo;dark wake&rdquo; feature, used by Power Nap. Dark wake, as is suggested by the name, wakes a system without turning on the screen. However, it&rsquo;s not available to 3rd party applications and has task-specific limitations that tease but do not deliver a solution here.And you can&rsquo;t put [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2018-11-01T20:52:19Z","apple_news_api_id":"6b771045-96fb-4f6b-b052-381991167218","apple_news_api_modified_at":"2018-11-05T20:33:39Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAA==","apple_news_api_share_url":"https:\/\/apple.news\/Aa3cQRZb7T2uwUjgZkRZyGA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[],"tags":[146,30,32,1609,369],"class_list":["post-23275","post","type-post","status-publish","format-standard","hentry","tag-backup","tag-mac","tag-macapp","tag-macos-10-14","tag-superduper"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/23275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=23275"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/23275\/revisions"}],"predecessor-version":[{"id":23291,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/23275\/revisions\/23291"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=23275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=23275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=23275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}