{"id":29089,"date":"2020-05-28T16:23:48","date_gmt":"2020-05-28T20:23:48","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=29089"},"modified":"2020-05-28T16:23:48","modified_gmt":"2020-05-28T20:23:48","slug":"shrugs-1-0","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2020\/05\/28\/shrugs-1-0\/","title":{"rendered":"Shrugs 1.0"},"content":{"rendered":"<p><a href=\"https:\/\/shrugs.app\/2020\/05\/27\/shrugs-release\/\">Helge He&szlig;<\/a> (<a href=\"https:\/\/twitter.com\/helje5\/status\/1265658810779254784\">tweet<\/a>):<\/p>\n<blockquote cite=\"https:\/\/shrugs.app\/2020\/05\/27\/shrugs-release\/\"><p>ZeeZide GmbH is happy to announce the release of Shrugs.app, a native macOS Slack client[&#8230;]<\/p>\n<p>[&#8230;]<\/p>\n<p>Shrugs complements the capable official Slack client by providing deep integration with the macOS system: Multiple windows, trackpad gestures, or iPhone &amp; iPod integration using Apple&rsquo;s Continuity.<\/p><\/blockquote>\n\n<p><a href=\"http:\/\/www.alwaysrightinstitute.com\/shrugs-history\/\">Helge He&szlig;<\/a>:<\/p>\n<blockquote cite=\"http:\/\/www.alwaysrightinstitute.com\/shrugs-history\/\"><p>Apart from a weak IRC gateway that eventually got killed,\nit unfortunately didn&rsquo;t (and still doesn&rsquo;t) use any standard protocols.\nHowever, it turned out that \nSlack quite likely has <strong>one of the world&rsquo;s best documented<\/strong> \nJSON based HTTP <strong>API&rsquo;s<\/strong>:\n<a href=\"https:\/\/api.slack.com\">https:\/\/api.slack.com<\/a>.\nAnd part of the official API are\n<a href=\"https:\/\/api.slack.com\/authentication\/token-types#user\">user tokens<\/a>, \na.k.a. tokens to act on behalf of the user.<\/p>\n<p>[&#8230;]<\/p>\n<p>End of August the authentication flow worked really well. Including the API token gateway, a small SwiftNIO (MicroExpress) server running in the cloud. This server component is required to avoid having to embed the Slack API credentials in the app (from which they would be easy to extract).<\/p><\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2018\/12\/07\/electron-and-the-decline-of-native-apps\/\">Electron and the Decline of Native Apps<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Helge He&szlig; (tweet): ZeeZide GmbH is happy to announce the release of Shrugs.app, a native macOS Slack client[&#8230;] [&#8230;] Shrugs complements the capable official Slack client by providing deep integration with the macOS system: Multiple windows, trackpad gestures, or iPhone &amp; iPod integration using Apple&rsquo;s Continuity. Helge He&szlig;: Apart from a weak IRC gateway that [&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":"2020-05-28T20:23:51Z","apple_news_api_id":"cc796e5f-51a9-4814-960d-d45e75da1750","apple_news_api_modified_at":"2020-05-28T20:23:51Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AzHluX1GpSBSWDdReddoXUA","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":[2],"tags":[1048,1627,30,32,1666,1500,1901,50],"class_list":["post-29089","post","type-post","status-publish","format-standard","hentry","category-technology","tag-continuity","tag-electron","tag-mac","tag-macapp","tag-macos-10-15","tag-slack","tag-swiftnio","tag-webapi"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/29089","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=29089"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/29089\/revisions"}],"predecessor-version":[{"id":29090,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/29089\/revisions\/29090"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=29089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=29089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=29089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}