# Testing https://davidblue.wtf/drafts/EC1F9B3A-DCEE-4375-A72F-250F95CD944F.html ` [[Testing]] ` ## Test Header https://docs.getdrafts.com/changelog/ https://bilge.world/twitter-jail #f7ff85 #00006b #1c0021 #fffdeb #fff4e6 #007ee5 #4078f2 #f9ffdb #83d58b I’ve got a whole lot of fucking money blinkshell://run?key=361DC9&cmd=ssh%20Tilde.Town%20&%20cd%20public_html%20&%20pbpaste%20%3E%20fromdrafts.html # On Drafts and Obsidian [image:F76850D7-FA37-4D24-8190-8CB8C60EBFE4-596-0000000E5DB691A1/IMG_2327.png] ## Native As Fuck might be out of style, but who can afford redundancy? Not I. Undoubtedly, the most creatively productive person in my family is my brother-in-law, Carlos Gabriel Ruiz, who somehow manages to take care of a household, raise a preteen son, work a full-time iOS dev job of the most tedious, high-grade sort, *and* churn out visual and written work on a regular basis. Something he told me last year has been on my mind nearly every day, since: his preferred word processor is Ye Olde FinalDraft, in which he still uses the same templates he configured in college. (That was quite a while ago.) I’ve thought about it just about every day, since, as I’ve spent an inquantifiable amount of time Just Fucking Around with my “workflow,” and reading other professional accounts of Just Fucking Around with workflows[^1] these past eighteen months. [image:EC1FB630-11B7-457B-9FB2-9543BF0CAA55-596-0000000E880BCE2F/Sunday, 13 Feb 2022 175034.png] I tried Obsidian. In fact - and I’m still not one hundred percent positive about this - I’m pretty sure I first tried Obsidian several years ago, though the Obsidian.md domain only stretches back to [April of 2020](https://web.archive.org/web/20200410075559/https://obsidian.md/), so I might just be nuts. Regardless, something said by *MacStories* founder and Definitive iPad Professional, Federico Viticci, in an issue of *MacStories Weekly* from late Summer really... leapt out to me. > At its core, Obsidian is a Markdown text editor. Just point the app to a folder on your iPhone or iPad and you're ready to get started. The app is based on web technologies, which means it is highly customizable. Obsidian supports a theming system, with a wide variety of themes provided by the app's vibrant community of users and plugins to extend the app's functionality. The app's primary views are its editor and preview mode, which can be split into multiple panes both vertically and horizontally. Obsidian also supports saved workspaces that allow users to open a predefined group of notes easily, commands for quickly opening documents and accessing the app's features, along with extensive, customizable keyboard shortcut support. Of course, notes can be linked internally, allowing for the creation of a wiki-like web of documents. In the interim, I've reviewed these few sentences over and over again, trying to find the discrepancy, but basically the core of my issue is that **Federico is describing *Drafts* as I know it, word for word**. In fact, since you're here, bear with me just a second as I misquote him, replacing the word "Obsidian" with "Drafts:" > At its core, Drafts is a Markdown text editor. Just point the app to a folder on your iPhone or iPad and you're ready to get started. ~~The app is based on web technologies~~, which means it is highly customizable. Drafts supports a theming system, with a wide variety of themes provided by the app's vibrant community of users and plugins to extend the app's functionality. The app's primary views are its editor and preview mode, which can be split into multiple panes both vertically and horizontally. Drafts also supports saved workspaces that allow users to open a predefined group of notes easily, commands for quickly opening documents and accessing the app's features, along with extensive, customizable keyboard shortcut support. Of course, notes can be linked internally, allowing for the creation of a wiki-like web of documents. Now, there are several points I probably wouldn't *start out with* when describing Drafts, but not one of these statements is wholly untrue, either. While you absolutely can "point [Drafts] to a folder on your iPhone or iPad" and be ready to "get started," [Folder Bookmarks](https://docs.getdrafts.com/docs/settings/bookmarks) *are* a fairly recent feature for Drafts, and not exactly configured *out of the box*. It is not - nor will it ever be - local filesystem-based like Obsidian, but honestly - especially as an iCloud+ subscriber with 2TB of iCloud Storage - I'm not sure this should be left as a detriment. Though I use a Git-enabled system to track revisions (which [I basically learned from Federico](https://www.macstories.net/ios/my-markdown-writing-and-collaboration-workflow-powered-by-working-copy-3-6-icloud-drive-and-github/)!,) I've honestly had much more success configuring specific actions tied to specific folders and keyboard shortcuts than I did running off the filesystem with Obsidian for the few months-long period I gave it a shot, last year.[^2] [image:830F95A1-C106-40E7-BCE5-D9B27463C1E5-596-0000000F2AA097A2/Sunday, 13 Feb 2022 165558.png] I’m not sure if Federico and company still use Git to collaborate between each other, but I continue to do so [publicly](https://github.com/extratone/bilge/tree/main/drafts/). In fact, it’s more likely than not you can still see [this very draft I’m whittling on](https://github.com/extratone/bilge/blob/main/drafts/On%20Drafts%20and%20Obsidian.md#L0) - along with its entire composition/revision history - whenever you’re reading, given how often I forget to move completed work from `drafts/` to `posts/`. [image:578CF497-4C10-4E11-9C10-428925DB9F3A-596-0000000F3E7F0F7F/Monday, 14 Feb 2022 175437.png] I’m one hundred percent positive I spent far, *far* more time reading about and updating plugins than I did actually *writing* in Obsidian. Just now, I finally rid my repository of the last of their files, and they numbered almost one *thousand*. Just configuration files. Participation in the fiddling was fun and exciting, but it didn’t exactly lend well to productivity. I found myself in a very specific cycle: whenever a new functionality or integration was shouted about in Obsidian, I would search to see if it already existed in Drafts. It sounds ridiculous, but I tell you I did not find a single case where my findings were not at least “equivalent” to what Obsidian users/developers had rigged up - in the vast majority of cases, I found them vastly more ideal, more robust, and better documented. Eventually, I dropped Obsidian altogether and honestly, [I’m still going](https://bilge.world/drafts-zalgo-action). There is tremendous value in the hype surrounding whatever writing app is currently trending. A trip not so far back in the *MacStories* archives reveals that just [four years ago or so](https://club.macstories.net/posts/compiling-and-exporting-tagged-notes-in-drafts-5), Drafts was having its’ own moment [after the release of Drafts 5](https://club.macstories.net/posts/interview-greg-pierce-1). [Tim Nahumck's review for *MacStories*](https://www.macstories.net/reviews/drafts-5-the-macstories-review/) was quite celebratory. Rosemary Orchard, undeniably the queen of automation on Apple Devices, [praised it in her review](https://rosemaryorchard.com/blog/my-drafts-5-review/), as well. I can tell you that no major release of any Windows application I use regularly has ever gotten such attention as Drafts 5, even - at least, not in my lifetime. [1] Usually of a much more directed sort. [2] Yes, a real shot. I promise. # How to Fuck Text [image:D811E7E5-77C8-44D4-AC58-1733E8517163-20824-0000256AF692D076/153741149-a149b9b4-bb62-47a8-9991-44904bdcfc03.jpeg] ![TextFuckHeaderImage](https://user-images.githubusercontent.com/43663476/153741149-a149b9b4-bb62-47a8-9991-44904bdcfc03.jpeg) ## A guide on digital text fuckery (largely on iOS) from one of the world’s foremost authorities. My [project to properly document Bluetooth keyboard support on iPhone](https://uikeycommand.com) has given me a new reverence for accessibility, generally, which might come as a hypocritical statement at the beginning of such a piece, but I *did* [explicitly ask you](https://mastodon.social/@DavidBlue/107589034582138302) if you felt this subject was anti-accessibility before I officially embarked upon writing This Post. I don't consider the answer - a very weak "no" - to be an all-encompassing excuse, whatsoever. If you feel this post's existence has the potential to do real harm, [contact me](https://davidblue.wtf/db.vcf) and I *will* straight up take it down. I dare you. Since I consider myself a genuine authority on Text Fucking, however, I am going to do my best to main unapologetic language when expressing opinions in orbit of the matter. You can trust me, I think. [image:281DD516-56B9-44EF-9EE9-DD7178618240-20824-0000256ECB8E8CC1/K2E9UV7S.png] ![Discerning Yelp Connoisseur](https://i.snap.as/K2E9UV7S.png) Here’s my definition from [the “Text Fucking” entry](https://github.com/extratone/bilge/wiki/Text-Fucking) in [*The Psalms* wiki](https://github.com/extratone/bilge/wiki): **Text Fucking** *verb* a.) hardcore text manipulation. b.) destruction of usable digital text. I won’t say Text Fucking is an art. Indeed, perhaps it is anti-art. It *is* a discipline, nearly. At least enough so that I believe this Post is worth it[^1]. Like most disciplines, it can be used for your particular definitions of “good” and/or “bad.” I would like to think most of my use over the years has been toward my own of “good,” but - as per the unsearchable nature of Fucked Text, generally - this is not easily verifiable or citable. [file:2814807F-3DE8-4FFF-A53F-F68431B34BE5-20824-0000257569610623/audio_Voice Notes_textfucker.mp3] ## History As detailed in the audio account embedded above, I believe my Text Fucking career began somewhere around the 7th grade, at 13-14 years old. It was my second or third time flunking MS02 - the Microsoft Office II course - taken on fairly outdated school desktop machines in the 2007-2008 era, all running Windows XP. Because of some inexplicable ability to simply do what I was told, I would spend class periods trying to create the largest possible text file in Notepad by copying and pasting huge, exponentially growing globs. Eventually, I did crash a machine at least once. Though it could very well be simply the self-exaggerated recollection of preteendom, I even remember crashing the school server with one of those files. https://twitter.com/draftsapp/status/1492645727729766400 My Text Fucking reached its peak proliferation in [the Drywall Era](https://drywallmusic.tumblr.com), when I first discovered the magic of Zalgo Text. The original generator at eemo.net has been replaced by an exact duplicate at [eeemo.net](http://eeemo.net). I have actually managed to successfully duplicate it [on my own NeoCities website](https://davidblue.wtf/zalgo/), as well. You might say that this original Zalgo Generator is The Original Text Fucking Tool. It can still generate quantities of fucked digital text information that *will* Fuck Shit Up on any social network, and as far as I can tell, the entire program is contained within [a single HTML file](https://davidblue.wtf/zalgo/index.html). https://twitter.com/NeoYokel/status/1492783081593483266 As Drywall’s first and second albums - “[Hamura](https://ihadtopee.bandcamp.com/album/hamura)” and “[Suburban Anarchy](https://ihadtopee.bandcamp.com/album/suburban-anarchy),” respectively - were studies in [audio clipping](https://en.m.wikipedia.org/wiki/Clipping_(audio)), I felt strongly at the time that Zalgo Text was the digital text equivalent. In fact, I couldn’t have imagined a more apt way to describe it. *Beyond The Rails* was my cringey “label” name, directly describing this phenomenon. Indeed, Zalgo Text goes beyond the “rails” of text input/display fields reliably, depending on the intensity of the configuration you’re using to create it. ## Apps The core necessity of any good text fucker is a robust text editing and/or word processing application. Zalgo text is a real bitch for Electron apps like my dearest [Typora](https://typora.io), unfortunately. On iOS, this summation also applies to [Obsidian](https://obsidian.md), I’m afraid. I recommend native apps like [Drafts](https://apps.apple.com/us/app/drafts/id1435957248) (big surprise) - which astonishingly has [**its very own native Zalgo action**](https://actions.getdrafts.com/a/1vM) as developer Greg’s [gift to me](https://twitter.com/draftsapp/status/1492645727729766400)! - and [Bear](https://apps.apple.com/us/app/bear-markdown-notes/id1016366447) (no less of a surprise.) In terms of default configuration intensity, the Drafts action hits the sweet spot out of the box. If you don't believe me, here are some more particularly robust text editors on iOS: - [Kodex](https://apps.apple.com/us/app/kodex/id1038574481) - [Koder](https://apps.apple.com/us/app/koder-code-editor/id1447489375) - [Taio](https://apps.apple.com/us/app/taio-markdown-text-actions/id1527036273) - [Typewriter](https://apps.apple.com/us/app/typewriter-for-markdown/id1556419263) - [Runestone](https://testflight.apple.com/join/Q6S1cuCd) (Beta) If that’s not enough for you, I suggest perusing [Brett Terpstra’s iTextEditors Wiki](https://brettterpstra.com/ios-text-editors). I have previously reviewed two wonderful Text Fucking iOS apps on this blog: [**UniChar**](https://bilge.world/unichar-for-ios-app-review) and [**Zalgo Generator**](https://bilge.world/zalgo-generator-ios-app-review). There’s now [a macOS version of the latter](https://apps.apple.com/us/app/zalgo-generator/id1304137527) which is particularly powerful. Or at least has particularly powerful implications. There are a few more to be discovered, though: ![TextcraftIcon](https://user-images.githubusercontent.com/43663476/153724474-6a64b3d3-cb87-428e-81d6-a900746f9886.png) ### Textcraft [**Textcraft**](https://apps.apple.com/us/app/textcraft/id1546719359), by [Aviary](https://apps.apple.com/us/app/aviary-for-twitter/id1522043420) and [Mast](https://apps.apple.com/us/app/mast-for-mastodon/id1437429129) creator, [Shihab Meboob](https://apps.apple.com/us/developer/shihab-mehboob/id1533949185), has become my goto Text Fucking app - even above [Zalgo Generator](https://apps.apple.com/us/app/zalgo-generator/id1304137527), I’m somewhat sad to say - on both iOS and macOS. ![Textcraft for macOS](https://user-images.githubusercontent.com/43663476/153737944-46db7da5-6d85-41da-abd1-78a54bb58b99.png) ![TextExpanderIcon](https://user-images.githubusercontent.com/43663476/153726269-6d8cee5d-116b-4b28-99a0-91842e502456.png) ### TextExpander Another cross-platform application - this one [extending to Windows](https://textexpander.com/download), too - TextExpander has very recently become an integral part of my day-to-day creative life. It’s used by professionals at companies with "thousands of people," supposedly, to “expand” any sort of text, set off scripts (on macOS,) and paste fill in-able templates. These functions are divided into “[snippets](https://textexpander.com/learn/getting-started)” as part of “[snippet groups](https://textexpander.com/learn/getting-started/getting-started-for-admin).” In fact, I’ve created [**a dedicated snippet group to accompany this guide**](https://app.textexpander.com/public/12c50fb2360617d3cc66d757cf26383b). You can view all my TextExpander snippets in [this GitHub Repository](https://github.com/extratone/TextExpander). ![TextFuckSnippetGroup](https://user-images.githubusercontent.com/43663476/153726468-25b5a5a9-0381-4720-b1e7-c7fb2ef357d9.png) It’s not much just yet, but if you “[subscribe](https://app.textexpander.com/public/12c50fb2360617d3cc66d757cf26383b)” to this snippet group from your own account, you’ll be treated to whatever I come up with in the future, delivered to your devices in real time. If you find yourself trying it out, you may as well check out my main Snippet Group, [Extratext](https://app.textexpander.com/public/14093096578d4f40eeea15649f5cefbb), which is documented [here](https://davidblue.wtf/extratext). ## Siri Shortcuts ![TextFuckShortcuts](https://user-images.githubusercontent.com/43663476/153750918-ca0c5eb6-0d91-4d7f-b70b-550f0f44c528.png) Another method of general Text Fuckery on iOS is achieved through its relatively new personal automation system, Siri Shortcuts. Through a Reddit thread I've never been able to find again, I discovered a method of randomizing strings of text that led to the creation of the Shortcuts you see below, all with native actions (aside from the outputs of those with specific services.) If you're willing to splurge on the whole 3.3mb, free (for macOS, iPadOS, and iOS) [**Actions app**](https://apps.apple.com/us/app/actions/id1586435171), you can accomplish the same task, but much more quickly and with less resource consumption. ![Random Text ⇨ Clipboard](https://user-images.githubusercontent.com/43663476/153768899-51ed409f-7fef-46d0-978f-8a5fc19ad5f7.png) ### Text-Fucking Siri Shortcuts with Actions - [Random Characters ⇨ Clipboard](https://www.icloud.com/shortcuts/ed9216202df4481d9ae001b0531384c2) - [Random Characters ⇨ Mastodon](https://www.icloud.com/shortcuts/af64b43604334d21ad5a6668471b828f) - [Random Characters ⇨ Tumblr](https://www.icloud.com/shortcuts/399a857145e34d8b94b994fa3f9ca300) or https://twitter.com/NeoYokel/status/1492926569496649730 ### Native Text-Fucking Siri Shortcuts - [Random Text ⇨ Twitter](https://www.icloud.com/shortcuts/0873152dee3e4d32828cd28bcbc1be06) ([Tweetbot](https://apps.apple.com/us/app/tweetbot-6-for-twitter/id1527500834)) - [Random Text ⇨ Twitter II](https://www.icloud.com/shortcuts/21ab008699ce44dabc9f9a249fc6f881) - [Random Text ⇨ Clipboard](https://www.icloud.com/shortcuts/3bfc10474a254aec8a0f8f89da96d198) - [Random Text ⇨ Drafts](https://www.icloud.com/shortcuts/f550febfa39b465b88217e1717f37548) - [Random Text ⇨ Mastodon](https://www.icloud.com/shortcuts/0e517d1438b44d3d980c8afb9891a724) - [Random Text ⇨ Tumblr](https://www.icloud.com/shortcuts/3c38ca0a7ec9413f9c9a6f6328fb1b09) - [Random Text ⇨ WordPress](https://www.icloud.com/shortcuts/07668aacd5ce4e59b76dd54ffc255209) —- [1] Whaddya think‽‽‽ [Should I write a book](https://twitter.com/NeoYokel/status/1492589668843634692)‽‽‽ # The Macalope [MacWorld](https://www.macworld.com/author/the-macalope) - `04202022-043839` # Apple is getting coal this year because the iPhone is doomed [image:A47B2758-CDDC-4443-BBB9-5823FAA0DF3B-10961-0000011E2ADE24A3/iphone-11-and-13-2.jpg] Happy Cutmas, everyone! Yes, it’s that time of year again as /Bloomberg/ (the outfit that ran the highly refuted story [“The Big Hack”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.bloomberg.com/news/features/2018-10-04/the-big-hack-how-china-used-a-tiny-chip-to-infiltrate-america-s-top-companies&xcust=1-1-557837-1-0-0&sref=https://www.macworld.com/article/557837/macalope-iphone-doomed-holidays-demand-cuts.html) ) is here to remind us to put some cookie cutters out for Father Cutmas. [“Apple Tells Suppliers iPhone Demand Has Slowed as Holidays Near”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.bloomberg.com/news/articles/2021-12-02/apple-tells-suppliers-iphone-demand-has-slowed-as-holidays-near&xcust=1-1-557837-1-0-0&sref=https://www.macworld.com/article/557837/macalope-iphone-doomed-holidays-demand-cuts.html) Okay, well, surprise, we get these stories /every/ year because sales naturally fall after the big fall release. This time it comes with some added global supply chain garment-rending so let’s see if we can follow the logic here. Without taking any dangerous drugs. > Apple Inc., suffering from a global supply crunch, is now confronting a different problem: slowing demand. Nobody wants iPhones! > …signaling that some consumers have decided against trying to get the hard-to-find item. We’re in the second sentence and we’ve already careened off Making Sense Blvd., busted through the guardrails and exploded spectacularly over What The Actual Heck Ravine. /No one is buying the phones that Apple cannot make enough of to keep up with demand./ If you wondered why the Macalope drinks… [points accusingly at the quoted sentences above]… this. This is why. Right here. This stuff. > Already, Apple had cut its iPhone 13 production goal for this year by as many as 10 million units, down from a target of 90 million… So, according to this math, Apple was planning on selling about 80 million units of /just/ the iPhone 13. That’s kind of a lot of units. > The company is still on track for a record holiday season… [image:378C7889-E15F-44E2-B1B6-7965D809A5C9-10961-0000011E2ADF58DF/macalope-2021.jpg] IDG Nobody wants iPhones. Apple records record holiday season. That… you just… I don’t… why… Apparently the idea here is that Apple is still going to sell gobs of iPhones, it just isn’t going to sell the huge gobs that it /thought/ it was going to sell. We know this because Apple is such an open book. And how Apple can be facing “slowing demand” when it already can’t keep up with the current demand is beyond this furry observer. Long story short, Apple’s clearly the biggest loser in all of Loserville. So who’s winning? [“Q3’21 Was a Record Quarter for Foldable Smartphones, Samsung Enjoys a 93% Share per DSCC Report”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.displaysupplychain.com/press-release/q321-was-a-record-quarter-for-foldable-smartphones-samsung-enjoys-a-93-share-per-dscc-report&xcust=1-1-557837-1-0-0&sref=https://www.macworld.com/article/557837/macalope-iphone-doomed-holidays-demand-cuts.html) Huge quarter for foldable phones! Unbelievable! Just mind-bogglingly large! How big is the winning, you ask? Oh, well, why get into the minutia when it’s all right there in the head- > Q3’21 foldable smartphone shipments were larger than the previous four quarters combined and grew 215% Q/Q and 480% Y/Y… Wow! Well, that’s all you need to know, then. Case closed. Big winning. Guess we can just close this tab and go back to watching ASMR TikTok videos with the sound off and… > …to 2.6M phones. Wait, what? Yes, the entirety of the foldable phone market is practically a rounding error for Apple. And even at that low level, it’s /larger than the previous four quarters combined/. Why are we even talking about this? Analysts have been saying that Apple better get on the foldable phone bandwagon (disclaimer: no band, no wagon) quick or BE DOOMED as long ago [as 2012](https://www.macworld.com/article/216829/macalope_under_pressure.html). Nine years later, the entire market is maybe 3.5 percent of Apple’s quarterly sales. It is possible Apple might not ship as many phones as it expected. But that’s a number no one really knows, even the company’s suppliers. The Macalope must insist that people chillax themselves before they must ax themselves what they’re so worked up about. [Apple is getting coal this year because the iPhone is doomed](https://www.macworld.com/article/557837/macalope-iphone-doomed-holidays-demand-cuts.html) # If a billion Android users switch to the iPhone, the Macalope will eat his horns [image:A063AEEF-6625-44A3-84E4-72D9085EB23B-10961-0000011E2AE0B924/iphone-se-2020.jpeg] Well, there goes the neighborhood because if startling headlines are to be believed, we’re about to get a whole bunch more new iPhone users. [“Apple’s upcoming iPhone SE 5G could help attract billion-plus Android users- J.P.Morgan”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.reuters.com/markets/commodities/apples-upcoming-iphone-se-5g-could-help-attract-billion-plus-android-users-2021-12-13/&xcust=1-1-559353-1-0-0&sref=https://www.macworld.com/article/559353/macalope-iphone-se-5g-billion-android-users-switch.html) A BILLION?! That’s a lot of users! But hold on to your hats because that “plus” isn’t just, like, five more dudes with money or cheaply made Android phones burning holes in the pockets of their cargo shorts. > The upcoming smartphone has the potential to lure nearly 1.4 billion low- to mid-end Android phone… That’s like 40 percent more than were in the headline! Very close to that! Like somewhere in the vicinity of, oh, the horny one is going to guess around 400 million users. The Macalope is not good at math! Regardless, this sounds absolutely gigantic. But is Apple going to lure “nearly 1.4 billion” new users? Of course not. All they’ve done is tell us the size of the market. That’s how many people own low- to mid-end Android phones. Are 1.4 billion people going to switch to the iPhone SE simply because it gets 5G? /Of course not./ Maybe a fraction will. Ted, for example, is never going to switch. He still has several pockets of his cargo shorts he hasn’t burned through and several more pairs of cargo shorts. It could be years before Ted considers switching. [image:8AE6FCE2-6A27-401E-9A16-F7D211B143FB-10961-0000011E2AE0231F/macalope-2021.jpg] IDG 5G in and of itself is just another factor in a sea of factors. All providers are not the same but here in the U.S. the major ones require you to upgrade your plan to get the full benefits of 5G, so getting a cheap phone for 5G has an additional cost. And some people just don’t care about 5G. Despite all the talk of a BILLION Android users, by how much does J.P.Morgan expect Apple to increase shipments next year? > The brokerage raised its estimates for fiscal 2022 iPhone SE unit sales to 30 million units and annual iPhone shipments expectations to 250 million units, 10 million higher than a year earlier. Well, that’s a letdown. Apple disappoints again. Of course, there are other reasons to switch to the iPhone than 5G on a cheap but solid device. [“iPhone 13 Depreciates Half as Much as Flagship Android Rival”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2021/12/13/iphone-13-depreciates-half-as-much-as-android/&xcust=1-1-559353-1-0-0&sref=https://www.macworld.com/article/559353/macalope-iphone-se-5g-billion-android-users-switch.html) Holding value has been one of the more underrated features of Apple products since–let the Macalope just pretend to put on some reading glasses and check his notes here–uh, 1977. “Apple products cost too much!” say people who never take into account the resale value or usable life of the device. “What is this ‘time value of money’ nonsense?! Get outta here with /that!/ ” It’s a little awkward for Google that the Pixel 6 line, the aforementioned “flagship Android rival”, isn’t holding up better. But the Pixel’s real competition is less the iPhone than it is other Android phones, against which it probably does quite well. 5G was hyped as a huge game-changing innovation in mobile honk-honk [seltzer bottle spray] [slide whistle] technology and Apple was derided for being “late” to the game. This being the game you couldn’t play anywhere except three or four major markets. But the company managed to do just fine until it shipped 5G phones. And now that it’s expected to be bringing 5G to its most affordable phone… well, that’s good and it’ll certainly help the company sell more phones. But the Macalope never expected it to be a gigantic change in volume, even before he read “billion” in a headline. [If a billion Android users switch to the iPhone, the Macalope will eat his horns](https://www.macworld.com/article/559353/macalope-iphone-se-5g-billion-android-users-switch.html) # When Apple the brand loses, Apple the company still wins [image:DC3CE321-910F-4614-9C5A-358B2FBF58D7-10961-0000011E2AE217CD/apple-store-logo.jpg] Congratulations, Apple! The legislations that you have been lobbying against has been torpedoed in the Senate! Also, condolences, Apple. Several things you say you are for are going to be harder to achieve now. President Biden’s Baby Buggy Bumpers bill… no, wait, that’s not it. Banana Bumble Bingo bill. No. No. Uh… Build Back Better bill! That’s it. The one [Apple has reportedly been lobbying against for months](https://go.redirectingat.com/?id=111346X1569486&url=https://www.washingtonpost.com/us-policy/2021/08/31/business-lobbying-democrats-reconciliation/&xcust=1-1-561172-1-0-0&sref=https://www.macworld.com/article/561172/macalope-build-back-better-climate-bill.html). How silly of the Macalope. Anyway, it suffered a severe setback in the Senate as Joe Manchin (D-Coal) declared he would not vote for it, saying, and the Macalope is not at all quoting here: “Look at me, look at me, oh, god, please everyone look at me.” He did not actually say that. It just seems like he’s constantly saying that. What was in this legislation that has to do with Apple? Well, for a company that loves to tell us how much it values the environment, a clean energy standard that would decarbonize the electric grid. Surely Apple is for that, right? Well, if it is it has [a funny way of showing it](https://go.redirectingat.com/?id=111346X1569486&url=https://popular.info/p/bad-apple&xcust=1-1-561172-1-0-0&sref=https://www.macworld.com/article/561172/macalope-build-back-better-climate-bill.html). The plan would have also made it harder for companies to manipulate tax loopholes to reduce their effective tax rate to almost nothing or, in many cases, actually nothing. These would be the loopholes that someone from Apple told Congress back in 2013 that the company was in favor of eliminating. Who was that again? Let’s see. Hmm. Just gonna look it up here… [Some Tim Cook fella.](https://go.redirectingat.com/?id=111346X1569486&url=https://www.theguardian.com/technology/2013/may/29/apple-tim-cook-tax-loophole&xcust=1-1-561172-1-0-0&sref=https://www.macworld.com/article/561172/macalope-build-back-better-climate-bill.html) Probably a low-level paper pusher. Not familiar with his work. [image:6C356900-2307-415F-B11A-C3C46E548C35-10961-0000011E2AE15A0A/macalope-2021.jpg] IDG Now, this criticism sticks less than the environmental issues because the proposal doesn’t end loopholes, it just tries to do an end-run around them. But Apple proudly declaring it pays all the taxes it legally has to while using its considerable power to lobby against having to pay what the rest of us pay is, pun /very/ much intended, pretty rich. The horny one isn’t saying Apple should lobby for the things he wants. They’ve never once lobbied for the Alfalfa Affordability Act. Not once. And that hasn’t stopped the Macalope from having enough Mac boxes in his basement that he could build a considerable fort with them. Not that he’s ever done that. That you know of. No, he’s saying Apple shouldn’t lobby. At all. It didn’t used to lobby and the Macalope preferred it that way. Look, the Macalope is not a policy wonk (although he briefly worked in DC). He’s not an expert in climate dynamics (he just listens to experts in climate dynamics). He’s not a tax accountant (although he was once a corporate accountant). He’s not a cereal or a floor wax (although one day we all will be as our atoms are recycled continuously on this planet until the sun one day explodes, sending them back to the cosmos). But he knows when people are talking out of both sides of their mouths. You don’t have to be much of an expert in anything other than /people/ to recognize that. Is Apple doing anything that other companies — like Microsoft, Alphabet and Facebook — aren’t also doing? No. And that’s what’s disappointing. [When Apple the brand loses, Apple the company still wins](https://www.macworld.com/article/561172/macalope-build-back-better-climate-bill.html) # Apple's 2021 was the stuff of miracles [image:716F1135-D428-4A54-BA9D-674369A83B1F-10961-0000011E2AE2C730/macalope-2021-1.jpg] [Scene: A snowy streetscape in the early morning. As a young man trudges by, a second-story window opens and an old man sticks his head out.] OLD MAN: You, there! Boy! YOUNG MAN: Boy? I’m 22. I have a college degree. I mean, in English, but still… OLD MAN: What day is it! YOUNG MAN: [sighs and checks iPhone] December 28th. OLD MAN: They did it! YOUNG MAN: Come again? OLD MAN: I haven’t missed the end of 2021! So many miracles, all in one year! YOUNG MAN: [looks around] Are we talking about the same world? Because… eesh. OLD MAN: The Apple world, boy! YOUNG MAN: Oh. You see, usually, when strange old men yell at me from windows it’s about the government or their underpants or… OLD MAN: So many Apple miracles this year! YOUNG MAN: Uh, were there? I guess. Maybe? OLD MAN: Why, yes! YOUNG MAN: Name one. OLD MAN: Getting rid of the Touch Bar for instance! The Touch Bar was [a failed attempt at a new input mechanism](https://www.macworld.com/article/554041/macalope-right-to-repair-iphone.html). And Apple never really committed to it. And now it’s gone! In just one year! YOUNG MAN: What are you talking about? The MacBook Pro had it for four years. OLD MAN: Yes! Four long, pointless years! And they got rid of it in one! YOUNG MAN: That’s… not… The Apple product development cycle… You know what? Never mind. So, Apple got rid of the Touch Bar. What else? OLD MAN: Well, the company also backtracked on the right to repair! Now anyone can repair their iPhone! YOUNG MAN: Anyone? OLD MAN: Anyone who feels comfortable doing it. And has good eyesight. And a steady hand. And would rather do it themselves than have Apple or a licensed third party do it. YOUNG MAN: So, [like five people](https://www.macworld.com/article/554041/macalope-right-to-repair-iphone.html). OLD MAN: Five very loud people! YOUNG MAN: OK, that’s a fair point. OLD MAN: Well, what about the M1 Pro and M1 Max? These are [amazingly powerful processors](https://www.macworld.com/article/547310/macalope-m1-max-intel-alder-lake-cpu-benchmarks.html) considering their level of power consumption. YOUNG MAN: Oh, they’re great. They’re not actual /miracles/, more the result of a lot of hard work. But they’re outstanding laptop processors. It does remain to be seen what kind of performance per watt the upcoming mobile version of Intel’s Alder Lake will have and how that compares to… OLD MAN: And Apple did it in one year! YOUNG MAN: Again, I’m not sure you get how Apple’s product development cycle works. Or, possibly you’ve suffered some form of head trauma. OLD MAN: And you seem to know a lot about Apple for a random passer-by. YOUNG MAN: Hmm. OLD MAN: Hmm. YOUNG MAN: Well, at least there’s [some sign](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2021/10/17/intel-hopes-to-win-back-apple/&xcust=1-1-562064-1-0-0&sref=https://www.macworld.com/article/562064/macalope-apple-2021-year-in-review.html) that maybe Intel will stop its [pathetic ad campaign against Apple](https://www.macworld.com/article/543805/macalope-intel-anti-mac-ads.html). That’d be a miracle. OLD MAN: What, and put all those actors pretending to be regular people out of a job?! YOUNG MAN: Hahahaha! OLD MAN: Hahahaha! YOUNG MAN: [looking around] Wait, do you really live above a Hot Topic? What’s that like? OLD MAN: Say, what about the Apple Watch? 2021 was [another banner year](https://www.macworld.com/article/347714/macalope-apple-watch-sales-market-share-google-samsung.html) for a product that pundits once declared a “flop”! YOUNG MAN: Sure, yeah, the Apple Watch is a legitimate hit, no matter what anyone says. The Series 7 might not be a dramatic leap forward for the form factor, but it’s a solid entry into a line that’s doing well enough it doesn’t need dramatic updates every year. OLD MAN: And you can’t deny that back in August Apple made major concessions to app developers! YOUNG MAN: Yeah, I can! The company gave [a relatively small settlement](https://www.macworld.com/article/354510/macalope-app-store-terms-developers-settlement.html) — $100 million is chump change for Apple — and let developers use more price points which it will still take 15 or 30 percent of, so it’s not that big a concession. It also agreed not to ban them for doing things they were supposed to be allowed to do! Wow! Further… OLD MAN: Now, see here, boy! YOUNG MAN: /Further/… it appealed and was [granted a delay](https://go.redirectingat.com/?id=111346X1569486&url=https://daringfireball.net/2021/12/appeals_court_grants_apple_delay_on_app_store_injunction&xcust=1-1-562064-1-0-0&sref=https://www.macworld.com/article/562064/macalope-apple-2021-year-in-review.html) on the one thing it lost in the Epic case. To top all that off, it’s summarily declared that it’s already in compliance with the law South Korea implemented requiring alternate payment methods in the App Store. Basically, hardly anything has changed since it announced the Small Business Program. OLD MAN: Ah, but that was a /true/ miracle! YOUNG MAN: That happened in 2020! Wait, a minute… was this just an excuse to do a lousy clip show and avoid doing an actual column? OLD MAN: Quiet, you! Now go fetch me a turkey! [flips coin down] YOUNG MAN: This is a quarter! And I don’t work for you! [throws it back] OLD MAN: Ow! [shakes fist] Damn Generation Z! [Apple's 2021 was the stuff of miracles](https://www.macworld.com/article/562064/macalope-apple-2021-year-in-review.html) # $3 trillion later, maybe it's time to reset our expectations of Apple [image:36D0A749-4536-4AD8-B4AD-C4574EE34EEB-10961-0000011E2AE47A44/apple-store-logo-1-3.jpg] Let’s talk about words. This week some words were applied to Apple that the Macalope would like to drill down on a bit because he finds them interesting. No, don’t get up. We’re doing this. How about “modest”. That’s a word. [Here’s Mark Gurman](https://go.redirectingat.com/?id=111346X1569486&url=https://www.bloomberg.com/news/newsletters/2022-01-02/what-s-apple-aapl-releasing-in-2022-iphone-14-airpods-pro-2-imac-pro-ipads-kxxmcej5?sref=5KSwFgaY&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) discussing what we might see from Apple in 2022. > After a modest set of device launches in 2021… Reasonable people may disagree… Well, /people/ may certainly disagree. Is it reasonable to call a year in which Apple announced not one but two professional-level mobile chips that get unheard-of performance per watt “modest”? Just that seems to make it a pretty great year for Apple and that’s not all Apple announced. There might have been [one](https://go.redirectingat.com/?id=111346X1569486&url=https://support.apple.com/kb/SP850?viewlocale=en_US&locale=en_US&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) or [two](https://go.redirectingat.com/?id=111346X1569486&url=https://support.apple.com/kb/SP839?viewlocale=en_US&locale=en_US&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) [other](https://go.redirectingat.com/?id=111346X1569486&url=https://support.apple.com/kb/SP843?viewlocale=en_US&locale=en_US&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) [things](https://go.redirectingat.com/?id=111346X1569486&url=https://support.apple.com/kb/SP852?viewlocale=en_US&locale=en_US&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) the company shipped if you [look closely](https://go.redirectingat.com/?id=111346X1569486&url=https://support.apple.com/kb/SP856?viewlocale=en_US&locale=en_US&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html). Also, the company got rid of the Touch Bar. So. QED. The second half of the sentence is a real bottom slice of bread to this bewildering sandwich. > …Apple Inc. is set for a stronger 2022—with new iPhones, AirPods and potentially a VR headset. Uh, okay, they /had/ two of those things in 2021 and your third thing is a real maybe. “Apple stands to have a much better year if it can finally teach monkeys how to fly zeppelins.” Yeah, wow, that would be something! Probably better than that VR thing. Which the Macalope may quibble about the use of the word, a “modest” year for Apple is usually a real ripper for any other company so “modest” may be correct from a certain point of view. Like the kind of point of view where I say “Darth Vader betrayed and murdered your father” when what I really mean is “He is totally your father and I should know because I’m the guy who cut off his limbs but, in my defense, I told him I had the high ground and he wouldn’t listen so he /kinda/ had it coming.” [image:72106233-E537-4AA3-BA4C-4BE7F4BC2117-10961-0000011E2AE3B1C0/macalope-2021.jpg] IDG Let’s move on to our next word: trillion. Oh, but you say “Macalope, that’s a number, not a word.” And the Macalope says to you “I can’t hear you, that’s not how this medium works. You must be thinking of telephone, this is an article.” But if the Macalope /could/ hear you he would say that “trillion” is a word that describes a number. So go back to teaching your pedantics class at Neil deGrasse High. On January 3rd, Apple became [the first company to be valued at $3 trillion](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/01/03/apple-becomes-3-trillion-dollar-company/&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) based on market capitalization. Huzzah! Apple wins again! At something that is not exactly meaningless but really doesn’t matter that much. As [Casey Newton quipped](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/CaseyNewton/status/1478080127175036930&xcust=1-1-562713-1-0-0&sref=https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) on Twitter: > This victory belongs to all of us — families who bought iCloud because the entry-level phone only came with 64GB of storage, developers paying 30 percent of their revenue in perpetuity, people who forget to cancel AppleTV+ in between seasons of Ted Lasso … This is tongue in cheek but, let’s face it, not all of Apple’s business practices are, uh, super cool, shall we say. But the market, much like the badger who loves honey, does not care. So a lot of that not coolness is baked into this valuation. It’s like chocolate chip cookies with walnuts in them. Seriously, who does that? Still, it’s just a number. Or a word representing a number. Apple’s no different than it was last week when it was worth a bit less than $3 trillion. And at some point, another company will reach $3 trillion. And it still won’t matter much. But thinking about the company’s treatment of App Store developers over its rise to THREE TRILLION DOLLARS, it occurs to the Macalope that if you’re the company that’s worth more than any other company in the history of companies, maybe you can afford to be… what’s the word? Magnanimous. That’s the word. [$3 trillion later, maybe it's time to reset our expectations of Apple](https://www.macworld.com/article/562713/macalope-market-cap-device-launches.html) # How doomed is Apple? This doomed [image:3DC727D3-4200-4D4C-802A-518629664B71-10961-0000011E2AE60949/iphone-storm.jpg] IDG Pundits have been fear-mongering about Apple’s position in China for years. First, it was [Xiaomi that was going to beat Apple](https://www.macworld.com/article/223286/booga-booga.html). Then it was [Huawei](https://www.macworld.com/article/229731/scaredy-cat-the-latest-company-apple-should-be-afraid-of.html). Then it was just gravity or the law of big numbers or angry beavers or something. The Macalope doesn’t know if China has beavers. Supposedly they were going to be imported to destroy Apple. There was a chart and everything. [Back in May](https://www.macworld.com/article/345259/macalope-apple-earnings-predictions-naysayers-airpods-iphone-sales.html), Apple’s small drop in sales after two monster months was A VERY BIG CONCERN, I ASSURE YOU. WHY ARE YOU LOOKING AT THE 320 PERCENT INCREASE IN FEBRUARY WHEN YOU SHOULD BE LOOKING AT THE 10 PERCENT DECREASE IN MARCH, UGH, IT’S LIKE YOU KNOW NOTHING ABOUT NUMBER THINGS. YOU’RE CLEARLY NOT A NOTED NUMBEROLOGIST LIKE I AM. Then a funny thing happened in October. Downright hilarious even. [“Apple Becomes Largest Smartphone Brand in China in October 2021”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.counterpointresearch.com/apple-becomes-largest-smartphone-brand-china-october-2021/&xcust=1-1-564262-1-0-0&sref=https://www.macworld.com/article/564262/macalope-iphone-doomsayers.html) Oh. You don’t say. Now, a lot of this was due to the absolute collapse of Huawei since the summer of 2020 and a sharp spike up by Apple. So, it’s possible things could turn around for Huawei in the long term or that Apple’s current fortunes aren’t sustainable. Buuuuut… [“Apple Stays on Top for Phone Sales in China”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.wsj.com/articles/apple-stays-on-top-for-phone-sales-in-china-11640945397&xcust=1-1-564262-1-0-0&sref=https://www.macworld.com/article/564262/macalope-iphone-doomsayers.html) > Apple Inc. secured the top spot for phone sales in China for a second straight month in November, according to market research data, driven by the success of the iPhone 13 series. The iPhone 13, you will recall, is [the phone that nobody likes](https://www.macworld.com/article/557837/macalope-iphone-doomed-holidays-demand-cuts.html) which is selling so well that it’s back-ordered so Apple will be cutting orders for the phone that it can’t supply enough of because nobody wants one. Look, the Macalope doesn’t make up the arguments about the iPhone, he just reports them. Besides, you can’t even make this stuff up. [image:F2CBB6CA-AE32-4C7E-ABEB-783DF296B931-10961-0000011E2AE51A70/macalope-2021.jpg] IDG Still, though, this was November. That was two months ago. Maybe things have dropped off for Apple since then. [“Apple: Strong Demand Bodes Well for 2022, Says Top Analyst”](https://go.redirectingat.com/?id=111346X1569486&url=https://finance.yahoo.com/news/apple-strong-demand-bodes-well-181743215.html&xcust=1-1-564262-1-0-0&sref=https://www.macworld.com/article/564262/macalope-iphone-doomsayers.html) > “Based on our supply chain checks over the last few weeks,” said [Wedbush’s Daniel Ives], “We believe demand is outstripping supply for Apple by roughly 12 million units in the December quarter which now will add to the tailwinds for Apple in the March and June quarters…” Welp. The Macalope is trying to help you, Apple doomsayers, it’s just not that easy! Look on the bright side: if Apple doesn’t announce [an AR/VR headset](https://www.macworld.com/article/557878/apple-headset-ar-vr-design-features-specs-price.html) this summer as the rumor mill expects it to, then you can say the company will [“disappear in 60 days”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.cnbc.com/2014/03/20/time-is-ticking-for-apple-to-announce-an-iwatch-say-analysts.html&xcust=1-1-564262-1-0-0&sref=https://www.macworld.com/article/564262/macalope-iphone-doomsayers.html) if it doesn’t snap to it. Chin up! After all, Apple doom can never fail, it can only be failed by a lack of imagination! /Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our/ [affiliate link policy](https://www.macworld.com/about/affiliate-link-policy) /for more details./ * iOS * iOS 14 * iPhone 12 * iPhone 13 [How doomed is Apple? This doomed](https://www.macworld.com/article/564262/macalope-iphone-doomsayers.html) # So the Mac isn't doomed to fail anymore? Who'd a thunk it? [image:3B60E242-BAC5-49A3-946B-3274AA8045CB-10961-0000011E2AE7672B/14-inch-macbook-pro-1.jpg] Remember Macs? No? Well, see, Apple used to make them, and then Windows came out and everyone switched to Windows-based PCs and Apple stopped making Macs and went out of business, the end. That’s the story to hear some people tell it, anyway. But, as a point of fact, Apple still makes and sells Macs! No, it’s true! In fact, it’s selling even more of them thanks to the M1 chip. [“Apple gains market share, as Macs grow twice the rate of PCs in Q4”](https://go.redirectingat.com/?id=111346X1569486&url=https://seekingalpha.com/news/3787581-apple-gains-market-share-as-macs-grow-twice-the-rate-of-pcs-in-q4&xcust=1-1-605724-1-0-0&sref=https://www.macworld.com/article/605724/macalope-mac-market-share-apple-silicon.html) Macs gaining market share? Perhaps in some upside-down world where fish evolved from humans! But apparently, both Canalys and IDC agree that the Mac increased its market share, with Canalys estimating that the Mac’s year-over-year growth for the quarter at about 9 percent. > For the full year, Apple shipped an estimated 29 million units, up 28.3%, compared to the broader PC market, which saw a 15% rise in 2021, totaling 341 million units. To be fair, Apple was probably due for some growth as it had somewhat neglected the Mac in the preceding few years. Anyway, it’s probably just tempor- [“Apple likely to keep taking computer market share due to M1 chips, MS says”](https://go.redirectingat.com/?id=111346X1569486&url=https://seekingalpha.com/news/3788253-apple-likely-to-keep-taking-computer-market-share-due-to-m1-chips-ms-says&xcust=1-1-605724-1-0-0&sref=https://www.macworld.com/article/605724/macalope-mac-market-share-apple-silicon.html) Uh, first of all, Morgan Stanley analyst Katy Huberty, cutting the Macalope off mid-word like that is very rude. Second of all, please continue. > ”We expect that as Intel-powered Mac’s are phased out in favor of a M1-driven Mac portfolio, Apple will continue to see incremental share gains.” Huberty has clearly not seen the Twitter postings of @Intel4EvahBro69 who believes the mobile version of Alder Lake will smoke the M1 Max and not just with actual smoke from the heat it will generate but, uh, yes, also with actual smoke from the heat it will generate. [image:C7A45EE1-F174-42FF-BD42-1CE92D382285-10961-0000011E2AE6C055/macalope-2021.jpg] IDG Now, the Macalope would be remiss if he did not point out that these are analysts who are making guesses about what will happen in the future. Sometimes that works out. Other times you get hilarity like this: [“Windows Phone will beat Android in 2013, analyst explains”](https://go.redirectingat.com/?id=111346X1569486&url=https://bgr.com/general/windows-phone-will-beat-android-in-2013-analyst-explains/&xcust=1-1-605724-1-0-0&sref=https://www.macworld.com/article/605724/macalope-mac-market-share-apple-silicon.html) The Macalope has linked to that no less than nine million times because it is really just one of the funniest things ever. Even back in 2011 is was clear to anyone with two neurons to scratch together that Android was likely to take most of the smartphone market share, Apple was going to take most of the profit, and Windows Phone was going to take the train to Obscurity, Nevada—which may or may not be a real town, how are you going to tell? This was likely an instance of a research firm looking to say something counter-intuitive in order to get its name in the press. It’s unlikely Pyramid Research really believed what it was saying. At least the Macalope hopes not. The Macalope has no idea why firms seem to think getting their name in the press for saying something cosmically dumb is a great idea, but maybe it works. Maybe the kind of people who hire high-priced analysis firms do it entirely by just trying to remember the last one they heard about in the news. Looking at the state of the world, that seems perfectly plausible. Frightening, but plausible. The point is, analysts say lots of things. You can’t always assume they’re right. Seems likely, though, that the Mac might end up having at least a pretty good year. /Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our/ [affiliate link policy](https://www.macworld.com/about/affiliate-link-policy) /for more details./ * MacOS * Macalope * MacBook Air * MacBook Pro * Macintosh computers [So the Mac isn't doomed to fail anymore? Who'd a thunk it?](https://www.macworld.com/article/605724/macalope-mac-market-share-apple-silicon.html) # Apple's folding phone is the only one that makes sense [image:B6298D66-0E49-407A-8FCA-3C849F52A269-10961-0000011E2AE80DA2/samsung-galaxy-z-fold-1.jpg] Is everyone enjoying their foldable phones? You may recall that a few years back we were being told that foldable phones were all the rage and soon we would all be using one and, sure enough, here we are all folding our phones. What a magical world we all live in. So foldable. So phone. No, actually, none of that happened, despite the fevered dreams of pundits which go back as far back as 2017, when people were claiming Apple was behind on foldable phone technology because Microsoft filed a patent for one. And now Microsoft is the largest phone manufacturer. Nope. Nope. That didn’t happen, either. Microsoft /does/ now sell [a foldable Android phone](https://go.redirectingat.com/?id=111346X1569486&url=https://www.microsoft.com/en-us/d/surface-duo-2/9408KGXP4XJL?activetab=pivot%3aoverviewtab&xcust=1-1-607939-1-0-0&sref=https://www.macworld.com/article/607939/macalope-android-folding-phones-samsung-future.html) (not with a foldable display but with two separate screens connected with a hinge). So that happened and you can get one for the low, low price of… [pretends to check something, really just spends a moment sighing and staring at nothing]… $1,499.99. Surely the company has sold dozens of them. This is indeed troubling for Apple. One thing we know for sure, though, is that it’s Apple that sells products that are priced too high and are niche devices not suitable for most users. Yeah. In 2019, pundits said the fact that Apple hadn’t shipped a foldable phone showed the company was [“no longer innovative”](https://www.macworld.com/article/232887/the-feature-that-dare-not-be-named-apple-s-privacy-advantage.html). After all, Samsung shipped one and it worked just great. [“My Galaxy Fold display is damaged after a day”](https://go.redirectingat.com/?id=111346X1569486&url=https://techcrunch.com/2019/09/26/my-galaxy-fold-display-is-damaged-after-a-day/&xcust=1-1-607939-1-0-0&sref=https://www.macworld.com/article/607939/macalope-android-folding-phones-samsung-future.html) Okay, not /great/ great, just, you know… well, terribly, to be honest. Just awful. Still, pundits pushed the idea that Apple was somehow behind on these things that didn’t work at all. Apple was “boring” for shipping the iPhone 12 [and Microsoft “exciting”](https://www.macworld.com/article/234495/dynamic-duo-the-iphone-12-has-already-lost.html) for shipping the Surface Duo. This [despite the fact](https://www.macworld.com/article/234591/upon-further-review-the-duo-won-t-be-killing-the-iphone-anytime-soon.html) that the Duo had buggy software and a lousy camera at the aforementioned high price. [image:98F95F99-2007-4BF3-A751-DF8DBA95361D-10961-0000011E2AE8A2B4/macalope-2021.jpg] IDG STILL. Still, though. The phones. They /fold/. Very exciting, right? No, still not exciting. And here in the now times, it’s Samsung that’s getting chastised for actually still making foldable phones. Irony! [“Samsung Falling Behind Apple in AR/VR Space Due to ‘Obsession’ With Foldable Smartphones”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/01/19/samsung-falling-behind-due-to-foldable-smartphones/&xcust=1-1-607939-1-0-0&sref=https://www.macworld.com/article/607939/macalope-android-folding-phones-samsung-future.html) Look, just give them 40 or 50 more tries, they’ll get them right! Admittedly, only after Apple ships one and shows them how it’s done, but still. > Samsung shareholders are said to be concerned by its perceived preoccupation with foldable devices, which is distracting the company’s attention from the need to compete with future AR and VR devices from its main rivals. What?! But the foldable phone market is seeing explosive growth! To… uh… the levels of [a rounding error for iPhones](https://www.macworld.com/article/557837/macalope-iphone-doomed-holidays-demand-cuts.html). Now, while Samsung shareholders may think AR and VR are where future growth is going to come from, that may or may not turn out to be the case. The Macalope has yet to see a demonstration of AR or VR technology that hasn’t had him rolling his eyes or falling asleep or rolling his eyes and then falling asleep and waking up days later in a dumpster outside Canton, Ohio. Maybe Samsung should be investing more in AR/VR, maybe it shouldn’t. The point is, foldable phones were not the next big thing that everyone said it was going to be when they could use it as a club to beat Apple over the head with. Not that Apple noticed in the slightest. That’s the benefit of having a helmet made out of money. [Apple's folding phone is the only one that makes sense](https://www.macworld.com/article/607939/macalope-android-folding-phones-samsung-future.html) # If Apple doesn't start losing, nothing's ever going to change [image:44294193-553E-43D8-AF29-CE181113B8DC-10961-0000011E2AE9D80F/apple-store-logo-4.jpg] First, an apology. Last September when [the Macalope challenged](https://www.macworld.com/article/357491/macalope-apple-epic-app-store-court-decision.html) Paul Thurrott’s assertion that Epic won big in its case against Apple, he made a mistake and for that, he apologizes. It wasn’t in noting that it was Apple that had won big and Epic lost. He was completely right about that and Thurrott was completely wrong. No, the Macalope was wrong in suggesting that Apple would not appeal the ruling. As it turned out, [Apple did appeal the ruling](https://go.redirectingat.com/?id=111346X1569486&url=https://www.cnbc.com/2021/10/08/apple-files-appeal-in-epic-games-case-that-could-delay-changes-.html&xcust=1-1-610455-1-0-0&sref=https://www.macworld.com/article/610455/macalope-app-store-anti-competitive-epic-trial-appeal.html)! It just appealed the one small thing it lost on. Nothing but [ultimate victory](https://go.redirectingat.com/?id=111346X1569486&url=https://daringfireball.net/linked/2021/10/09/apple-appeals-anti-steering-injunction&xcust=1-1-610455-1-0-0&sref=https://www.macworld.com/article/610455/macalope-app-store-anti-competitive-epic-trial-appeal.html) for Cupertino! Please arrange the spikes with the heads of our enemies on them /neatly/ outside Apple Park. Thank you. Good day. One other thing the horny one was completely right about in that piece was the final sentence: > While the company is probably right to celebrate this ruling, it continues to ignore the frustration with App Store policies at its peril. Fast forward to now: [“Epic vs. Apple Takes a Twist As 35 US States and Department of Justice Weigh in to Back ‘Fortnite’ Maker”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/01/28/us-states-back-fortnite-maker-epic-v-apple/&xcust=1-1-610455-1-0-0&sref=https://www.macworld.com/article/610455/macalope-app-store-anti-competitive-epic-trial-appeal.html) > “Apple’s conduct has harmed and is harming mobile app-developers and millions of citizens,” the states said. > ”Meanwhile, Apple continues to monopolize app distribution and in-app payment solutions for iPhones, stifle competition, and amass supracompetitive profits within the almost trillion-dollar-a-year smartphone industry.” Spellcheck says “supracompetitive” is not a word and the Macalope was going to make a joke about Toyota not making the Supra anymore but it actually started making it again in 2019. See, that’s the kind of rigorous fact-checking you’re going to get in this column from a cartoon antelope/human/Mac hybrid in a suit. You’re welcome. [image:868C6AD5-E0FA-41D5-B208-EF23FD606313-10961-0000011E2AE93AE4/macalope-2021.jpg] IDG The Macalope finds it hard to disagree with the states here and it doesn’t look like this situation is going to go away easily for Apple. > The DoJ said the court had interpreted the Sherman Act, an 1890 law prohibiting anti-competitive behavior, “narrowly and wrongly, in ways that would leave many anti-competitive agreements and practices outside their protections.” It’s a shame that the poster child for opening up the App Store is not a child at all but a carnival barker that wants to sell virtual skins to children. Selling actual skins was once an honorable tradition back when skins were used to keep warm and protect people from the elements (not that this furry creature is a huge fan of such things unless said skins are willingly gifted at the time of natural death). Now it’s a way to shake down the kiddies for their allowance money. Of course, it is true that Apple helped popularize that particular self-enrichment technique. But you don’t want to replace a despot with a would-be despot. Epic only wants to open the App Store so it can squeeze developers through its funnel instead of having them go through Apple’s. So, while the Macalope is not an enthusiastic supporter of overturning this verdict, he definitely believes that changes need to be made. You may excuse him for being slightly cynical about the chances of legislation rectifying the situation, but it’s possible and at this point, it doesn’t seem like Apple is interested in making more big changes on its own. Maybe only losing some of these cases will make it change its ways. /Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our/ [affiliate link policy](https://www.macworld.com/about/affiliate-link-policy) /for more details./ * Apple App Store * iOS 14 * iPhone 12 * iPhone 13 * Macalope [If Apple doesn't start losing, nothing's ever going to change](https://www.macworld.com/article/610455/macalope-app-store-anti-competitive-epic-trial-appeal.html) # Facebook is more valuable than your privacy [image:95616D66-DCD9-442B-9A6F-E0B4B4486C32-10961-0000011E2AEAEA9D/facebook-ios-icon-1.jpg] Hello. Were you aware that every day in America a company goes to sleep hungry? Hungry for your personal data? No, don’t get up. It seems inconceivable that this could happen here, in the self-declared greatest country in the world, but it does. Particularly after a certain selfish company [COUGH *apple* COUGH] restricted app tracking on its mobile platform, stealing your privacy right off of Facebook’s plate and giving it back to you. You who will surely squander it. Why just look at these hungry faces. [image:2E732428-E983-49A0-BEA4-44520E56C0C5-10961-0000011E2AEA68CB/mark-zuckerberg.jpg] Hungry Mark Zuckerberg.[REUTERS/Stephen Lam](https://go.redirectingat.com/?id=111346X1569486&url=http://pictures.reuters.com/&xcust=1-1-612634-1-0-0&sref=https://www.macworld.com/article/612634/macalope-facebook-privacy-app-tracking-transparency.html) That’s why we’re asking all Americans to give whatever of their personal privacy they can directly to Facebook. It could be as simple as jotting down your social security number on a Post-It note and mailing it to Menlo Park. Maybe you could send an old diary. We find that those who give more generously send their last five tax returns, all passwords to significant websites, and the results of any colonoscopies they’ve had. Your buying habits would also be appreciated. And the names of any pets. Blood types would be good. Just send it all. Facebook doesn’t care. Soon those hungry faces will turn to ones of delight. [image:1F1386D8-896F-448B-8E36-141AE20B349B-10961-0000011E2AEB4FF5/_mark-zuckerberg.jpg] Delighted Mark Zuckerberg.[REUTERS/Stephen Lam](https://go.redirectingat.com/?id=111346X1569486&url=http://pictures.reuters.com/&xcust=1-1-612634-1-0-0&sref=https://www.macworld.com/article/612634/macalope-facebook-privacy-app-tracking-transparency.html) Thank you, and God bless. Yes, pity poor Facebook (disclaimer: do not actually pity it) as its stock tumbled on news last week that privacy changes implemented by Apple [will decrease its sales by about $10 billion](https://www.macworld.com/article/611551/facebook-app-tracking-transparency-iphone-quarterly-results.html). Finally, privacy has a price tag! And if you’re enjoying this heaping helping of schadenfreude, please tuck into the news that the company also [lost a million subscribers last quarter](https://go.redirectingat.com/?id=111346X1569486&url=https://www.theverge.com/2022/2/2/22914970/facebook-app-loses-daily-users-first-time-earnings&xcust=1-1-612634-1-0-0&sref=https://www.macworld.com/article/612634/macalope-facebook-privacy-app-tracking-transparency.html). Oof. That’s… so rich. Not sure the Macalope can eat… any… m… [chewing noises] [image:3C132569-DCEF-4794-A447-388174FA0198-10961-0000011E2AEBC662/macalope-2021.jpg] IDG Can’t imagine why anyone would leave a platform that’s clearly making big bank /on your privacy/. Baffling, really. Your privacy isn’t going to sell itself to advertisers, you know. Facebook went on to grouse that Apple was creating a “carve-out” for browsers because Apple makes money from Google search ads. Sure, except as [Glenn Fleishman pointed out](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/GlennF/status/1489276282667892737&xcust=1-1-612634-1-0-0&sref=https://www.macworld.com/article/612634/macalope-facebook-privacy-app-tracking-transparency.html), Apple has also made one of the most privacy-forward browsers in the industry, certainly the most privacy-forward browser that’s widely used. So, no. Apple may use privacy as a marketing tool but it also packs it into its devices as a feature, so it’s entitled. This furry observer has long been arguing that product reviews should take privacy into account when evaluating products and platforms. Certainly, Facebook does. [Legally mandated “ZING!”] /Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our/ [affiliate link policy](https://www.macworld.com/about/affiliate-link-policy) /for more details./ * Apple * Facebook * Facebok privacy * iOS 14 * iPhone 13 * Macalope [Facebook is more valuable than your privacy](https://www.macworld.com/article/612634/macalope-facebook-privacy-app-tracking-transparency.html) # With AirTag, Apple's best just isn't good enough [image:BED53A60-E19C-48D8-BC83-72BD3C1155D8-10961-0000011E2AEC2EB0/airtag-6.jpg] According to The New York Times, the Apple Standard is alive and well. If you’re not familiar with the Apple Standard, well, where have you been? Not reading this column, certainly. Probably doing something productive like exercising or taking a correspondence course or something. How dare you. Anyway, the gist of the Apple Standard is that if Apple is being chastised for something, you can bet your Apple Cash balance that its competitors are way worse about that very same thing. (Notable exceptions include the App Store developer terms, Craig Federighi’s dad jokes and Eddy Cue’s shirt collection. Void where prohibited.) After the recent press concerning AirTags being used for nefarious purposes such as theft and stalking, The Times’ Kashmir Hill tried tracking her husband (with his permission) using AirTags, a Tile Bluetooth tracker and a GPS tracker. [“I Used Apple AirTags, Tiles and a GPS Tracker to Watch My Husband’s Every Move”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.nytimes.com/2022/02/11/technology/airtags-gps-surveillance.html&xcust=1-1-614441-1-0-0&sref=https://www.macworld.com/article/614441/airtag-privacy-warnings-iphone-android-stalking.html) It’s a great look at the problems with this technology. Interestingly enough, Hill found that while none of the devices provided adequate security to prevent malicious use, AirTags provided the most. The most! The most is always the best, right? Well, except when the most is not enough. > Another key difference between Tile and AirTag is that if an iPhone detects an unknown AirTag continuously moving with it, the iPhone owner gets a notification… Great! No problem then. Apple has thought of everything. Assuming you have an iPhone. Oh. Right. Turns out there are other phones. Who knew? Certainly not the Macalope. Must be a new thing? Whatever. There is an app for Android that that lets you manually scan for nearby AirTags, but how many Android-using victims are going to know to download it? Or use it? And why should they have to? > Apple itself has realized the inadequacy of its safeguards and [announced improvements](https://go.redirectingat.com/?id=111346X1569486&url=https://www.nytimes.com/2022/02/10/business/apple-airtags-safety.html&xcust=1-1-614441-1-0-0&sref=https://www.macworld.com/article/614441/airtag-privacy-warnings-iphone-android-stalking.html) this week, including making the devices louder and telling AirTag users that tracking someone without consent is a crime. Ah! /That/ will surely stop them! If there’s one thing we know it’s that telling people who are about to commit a crime that it is a crime that they are about to commit will immediately stop them from doing all the crimes. Because criminals are always such rational actors. Still, it’s better than Tile and other types of trackers that currently provide no warning. The GPS tracker Hill tested is made by LandSeaAir which [advertises it on Amazon](https://www.amazon.com/LandAirSea-Waterproof-Magnetic-Personal-Location/dp/B06XVZ6Y4T?tag=macworld05-20&asc_refurl=https://www.macworld.com/article/614441/airtag-privacy-warnings-iphone-android-stalking.html) as “The ultimate in discreet tracking”. Ah! Very cool. Nothing uncool about that. At least its advanced features require an expensive subscription. [image:F430D77E-BE00-4148-8905-0CB442AB399F-10961-0000011E2AEC9711/macalope-2021.jpg] IDG After being tracked and apparently forgiven for going to Dunkin Donuts without his wife (guess the Hills do things differently than the Macalopes), Hill’s husband had this to say: > “For all the bad press the AirTags have gotten, and as flaky as the detection mechanisms were, at least I was consistently getting notifications they were following me,” he said. “The privacy dangers of the other trackers were way worse.” Which gets us back to the Apple Standard. A lot of reports act like Apple just invented car theft and stalking and faxed instruction manuals to the Dark Web (the Maclaope doesn’t know how the Dark Web works). Of course, there is a difference between a product being sold by Brand Z Industries (available at finer gas store convenience stations and combination Hardees across the country) and by Apple. Apple is going to make almost any technology easier to use and make more people aware of it. It’s one thing to figure out how to train dolphins to blow up commuter rail trains, it’s another to sell the dolphins at the mall. Sadly, all of these technologies can be misused by bad actors and companies, Apple included, should think twice before shipping products that can make people less safe. Pretty much any technology comes with a societal price. But it should be up to the companies selling that technology to mitigate it. Give Apple some credit for doing a better job than its competitors, but also demand it does a better job still. Fortunately, in this case it seems like [it knows it needs to](https://www.macworld.com/article/613588/airtag-find-my-updates-reduce-unwanted-tracking.html). [With AirTag, Apple's best just isn't good enough](https://www.macworld.com/article/614441/airtag-privacy-warnings-iphone-android-stalking.html) # Apple's trust issues could end up hurting us all [image:90DE6208-3415-4F52-B607-43F662C1E9AB-10961-0000011E2AED6ABB/app-store-trust-2.jpg] You remember the App Store’s motto, right? “The apps you love. From a place you can trust.” Let’s check in on how /that’s/ going. [“Indie Developer Dogged By Scammy Clone Apps Again Highlights the Holes in Apple’s App Store Review Process”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/02/21/indie-developer-scam-clone-app-store/&xcust=1-1-616239-1-0-0&sref=https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html) To be fair, Apple doesn’t say what you can trust the App Store for. Maybe the App Store will help you move someday. We don’t know. It doesn’t seem right now that you can trust all the apps to be scam-free if that’s what you were thinking it meant. But, is that worth more to you than someone who shows up and loads your comic book collection and dilapidated Casper bed into a rented van and then back out again for the reward of a couple of slices of pizza and a canned IPA? According to developer Kevin Archer, a copycat app lifted the artwork and text from his app (kinda scammy), asked for a review during the onboarding process (super scammy), and then charged a weekly $3.99 subscription (neon light saying “SCAM” goes off over your iPhone). (Pro tip: weekly subscriptions are almost always a sign the app is a scam.) Well, at least it’s easy to get your app onto the App Store! Ha ha haaaaaaa. > Archer went on to say that indie developers regularly get their apps “rejected for silly things,” while others spam [the] ‌App Store‌ with imitations and weekly subscriptions.” He’s not wrong! That was last Wednesday. As of Monday, the copycat app has been removed, as has the other sketchy app made by the same company. So… problem solved! All is well! The system of complaining about things on Twitter and getting Mac news sites to write about it works! Not that this particular solution is actually detailed in the App Store rules anywhere. As a matter of fact, Apple rather famously [used to tell developers](https://go.redirectingat.com/?id=111346X1569486&url=https://daringfireball.net/2010/09/app_store_guidelines&xcust=1-1-616239-1-0-0&sref=https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html) that if they “run to the press and trash us, it never helps.” Seems like that’s the undocumented process now. Well, now we can put all that unpleasantness behind us. [image:C65D4EDC-C87F-41BE-B330-2418127DFE06-10961-0000011E2AED027F/macalope-2021.jpg] IDG And move on to [the next complaint](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/agneevX/status/1495467540566675457&xcust=1-1-616239-1-0-0&sref=https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html) about the App Store on Twitter which was posted Sunday. “Will no one rid me of these turbulent tweets?!” Tim Cook was heard to cry. (Disclaimer: Cook was not heard to cry anything.) This case revolves around the definition of the “Data Not Collected” checkmark that Apple hands out based on what developers say about their apps. The app in this case, one promoted by Apple, says it does not collect any data but then refuses to launch unless you let it send data to a third party. The app uses a third-party tool that anonymizes data and thus may skate on [Apple’s provision](https://go.redirectingat.com/?id=111346X1569486&url=https://developer.apple.com/app-store/app-privacy-details/&xcust=1-1-616239-1-0-0&sref=https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html) that data “not be sent off the device in a way that can identify the end-user or device”. Is that how people think of “Data Not Collected”? Perhaps, but it doesn’t help that the link to the privacy policy for the app doesn’t work. Well, as unfortunate as this all is, surely Apple is learning from these problems and will soon take the idea of App Store reform ser- [“Apple Fined Another €5 Million Over Dating Apps as Dutch Regulators Say Apple Has ‘Refused to Put Forward Any Serious Proposals’”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/02/21/apple-dutch-fines-no-serious-proposals/&xcust=1-1-616239-1-0-0&sref=https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html) Or not. Yep. Okay. Apple can afford to pay €5 million fines all day long, of course, and not even notice. Heck, if Tim Cook is granted [his new compensation package](https://go.redirectingat.com/?id=111346X1569486&url=https://www.cnn.com/2022/02/17/investing/apple-tim-cook-compensation/index.html&xcust=1-1-616239-1-0-0&sref=https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html), he could pay it himself every day for a fortnight and still earn as much as he made in 2020. Not that the guy isn’t worth a lot of money but was the $14.8 million he was already making not “a lot of money”? Meanwhile, the horny one is pleased to report he no longer buys Safeway Selects tonic. [adjusts cravat] Apple seems very confident it will continue to be able to play the same game it’s been playing for years, complaints be damned. The Macalope’s mother was always fond of ruefully warning, “These games end in tears” when the Macalope was running around jumping off the furniture. Guess we’ll see what happens. [Apple's trust issues could end up hurting us all](https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html) # Too big to fine: How do you punish a company that can afford anything? [image:BA0A91BB-8B03-40F1-90F5-4A1B9CF557EE-10961-0000011E2AEDDA02/app-store-netherlands-1.jpg] Apple [Last week](https://www.macworld.com/article/616239/macalope-apple-trust-app-store.html), the Macalope wondered how long Apple would continue to play chicken with regulators. It seems like it might be a while yet. Not to go all the way back to the [Dr. Evil](https://go.redirectingat.com/?id=111346X1569486&url=https://i.pinimg.com/originals/d0/7e/44/d07e44e436aa5b9ef5c80950c8702959.png&xcust=1-1-618019-1-0-0&sref=https://www.macworld.com/article/618019/macalope-app-store-netherlands-fines.html) well, but it’s as if regulators set up their schedules for fines in the mid-1980s and then never updated them again. These fines might be a lot for some companies, but for today’s gigantocorp they’re laughably small. How small? Let’s take a look. [“Apple Defends App Store Changes in the Netherlands as Fines Reach €30 Million”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/02/28/apple-defends-app-store-netherlands-plan/&xcust=1-1-618019-1-0-0&sref=https://www.macworld.com/article/618019/macalope-app-store-netherlands-fines.html) Apple’s “solution” to the Dutch regulatory requirement that it allow third-party payment processing in dating apps was to require developers to submit separate app binaries if they want to use payment processing other than Apple’s. Certainly makes sense for Apple. “Let’s make this as hard as possible for developers so they won’t want to do it.” Nailed it. The Dutch regulatory body was, shall we say, not impressed. It says Apple is still not in compliance, hence the €30 million fine, which works out to about $34 million. “$34 million?!” you say. “How will Apple ever manage to…” Let the Macalope just stop you there, fictional reader who the Macalope can somehow hear. He knows you’re just a facile construct but just slow your imaginary roll. Apple made $123.9 billion in revenue [last quarter](https://www.macworld.co.uk/news/apple-q1-2022-report-3812857/). Now, the holiday quarter is always Apple’s biggest, but let’s just go with that and do a little math (I know, you were told there’d be no math but sometimes there’s math, okay?). Divide by the number of days in the quarter and then we can see how many days it’ll take Apple to pay… uh, nope, sorry, the number is still hilariously big. We need to do more math. Sorry. Divide further by the number of hours in the day and… criminy, are you kidding? But we’re very close! Our long math nightmare is almost over. Divide again by the number of minutes in an hour and /now/ we have a number we can work with. [image:3D0F1501-DC5C-47AF-9893-BB9A40B2FBBB-10961-0000011E2AEE636B/macalope-2021.jpg] IDG Turns out that Apple made /$34 million every 36.8 minutes/ during the last holiday quarter. The entirety of this penalty is like the company taking a very short lunch in November. In the building. This, in a nutshell, is why Apple feels fine thumbing its nose at regulatory requirements from South Korea, the Netherlands and freaking Narnia, if it wants to (“Mr. Tumnus demands 12 sugar-topped cakes for every day Apple is in non-compliance!”). It considers paying the fines cheaper than giving up total control over payment processing. And at these prices, it is. Not that Apple has [actually paid](https://go.redirectingat.com/?id=111346X1569486&url=https://www.ped30.com/2022/02/28/apple-dutch-single-euro/&xcust=1-1-618019-1-0-0&sref=https://www.macworld.com/article/618019/macalope-app-store-netherlands-fines.html) any of it yet. If regulators really want Apple to change, they’re going to have to up the ante. The Macalope is not an expert at app design, nor is he an expert in payment processing. As an app /user/, however, and a customer of the App Store, he feels Apple should have always allowed for links to developers’ sites to allow for customers to pay outside the App Store. They can already do that so forbidding developers from letting customers know is just some wicked gaslighting campaign. Apple consistently says the App Store is the place people love to shop but it always seems afraid to give them the opportunity to actually show that. /Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our/ [affiliate link policy](https://www.macworld.com/about/affiliate-link-policy) /for more details./ * Apple App Store * iOS 13 * iPhone 12 * iPhone 13 * Macalope [Too big to fine: How do you punish a company that can afford anything?](https://www.macworld.com/article/618019/macalope-app-store-netherlands-fines.html) # The iPhone SE is forever doomed to fall short of lofty expectations [image:558C69A2-55A4-462B-9C9E-4AEA5BF6823F-10961-0000011E2AEF35DD/iphone-se-2020-4.jpg] The third-generation iPhone SE was announced at Apple’s “Peek Performance” event on Tuesday and if estimates are any indicator, almost half of us will be getting one. [“40% of iPhone Users Plan to Buy iPhone SE 3, Survey Indicates”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/03/07/40-percent-plan-to-buy-iphone-se-3/&xcust=1-1-620457-1-0-0&sref=https://www.macworld.com/article/620457/macalope-iphone-se-buying-survey.html) 40… uh… 40 percent, huh? That, uh, that would be a lot! Wow! That is an… interesting estimate! [whispers] Honey, get your stuff and slowly back toward the door. Don’t make eye contact. When you get out, run as fast as you can. I love you. All kidding aside, let’s be clear: it’s not going to be 40 percent. Just… no. The Macalope has been warning people off of these surveys of buying intentions [for years](https://go.redirectingat.com/?id=111346X1569486&url=http://www.macalope.com/2009/08/21/apple-losing-sales-to-netbooks/&xcust=1-1-620457-1-0-0&sref=https://www.macworld.com/article/620457/macalope-iphone-se-buying-survey.html). People will tell you all kinds of things about what they’re “going” to do. “I’m going to take a correspondence course and learn how to make my own iPhone SE!” Gary, the last time you tried to solder something, you burned down your house and now you have to live in a gully. Stop it with this. Watch what people actually do, not what they say they’re going to do. The Macalope has no doubt the new SE will sell /pretty/ well for a number of reasons. First, there are people who prefer Touch ID to Face ID. Second, the addition of 5G will probably get a fair number of people holding on to older iPhones to upgrade. And, last but not least, it’s the most affordable iPhone even at its new $429 price tag. The Macalope would also mention the size factor, the iPhone SE being the next smallest phone after the iPhone 12 and 13 mini, but that form factor is expected to be discontinued. Despite the Macalope’s personal preference for that size, Apple apparently doesn’t consider it a large enough market to chase. Boo. [image:0D716A07-E4CE-4041-BE2C-0E3AA5BC7465-10961-0000011E2AEED571/macalope-2021.jpg] IDG No doubt the third-generation iPhone SE will do just fine. Just not two out of five iPhone owners kind of fine. Not “astoundingly fine.” Not “aggressively fine.” Not “whatever sales are reported are going to look terrible compared to this outlandish prediction fine.” The company pushing the results of this survey, SellCell, even seems to [tug at its collar a bit](https://go.redirectingat.com/?id=111346X1569486&url=https://www.sellcell.com/blog/iphone-se3-2022-purchase-intent-survey/&xcust=1-1-620457-1-0-0&sref=https://www.macworld.com/article/620457/macalope-iphone-se-buying-survey.html) when talking about the estimate. > This might seem like a high figure… [Jimmy Stewart voice] “Wh-where will all these sales come from?! Why, why, they’ll come from your house, Ned! And yours, Mary! And, and your grocery store, Al!” [Angry townsfolk] “KILL HIM! KILL HIM!” SellCell goes on to note that only 24 percent of respondents said they’d be buying one for themselves. 16 percent said it would be for someone else. Honestly, though, even 24 percent sounds high. The company doesn’t really say how the respondents were selected, it just said it was “an independent survey of 2,549 adult US iPhone owners”. A somewhat more reasonable estimate [comes from IDC](https://go.redirectingat.com/?id=111346X1569486&url=https://www.reuters.com/technology/apple-expected-launch-new-low-cost-5g-iphone-2022-03-07/&xcust=1-1-620457-1-0-0&sref=https://www.macworld.com/article/620457/macalope-iphone-se-buying-survey.html) which forecasts the third generation iPhone SE will make up about 10 percent of iPhone shipments globally after it launches. Reasonable estimates may disagree. It’s just that 40 percent isn’t a reasonable estimate. The kind that yells loudly at a barista when given full caf instead of half caf in its soy vanilla latte and demands to see a manager to have the barista fired instead of simply taking a replacement. A very /unreasonable/ estimate. [ /Editor’s note: IDC is a division of IDG, Inc., which is the parent company of Macworld./ ] Thank you for attending Anthropomorphized Estimate Theater. Still, it’s better than [the 1.4 billion buyers](https://go.redirectingat.com/?id=111346X1569486&url=https://www.reuters.com/markets/commodities/apples-upcoming-iphone-se-5g-could-help-attract-billion-plus-android-users-2021-12-13/&xcust=1-1-620457-1-0-0&sref=https://www.macworld.com/article/620457/macalope-iphone-se-buying-survey.html) J.P. Morgan was throwing out back in December. > iPhone SE 5G has the potential to attract more than a billion non-premium Android users… Sure, just as Coke has the potential to attract all Pepsi drinkers and the Red Sox have the potential to attract all Yankees fans. It could happen! You can’t deny it! Sure. Okay. A non-zero chance is still a chance. At some point, though, the chance gets so close to zero that there’s no real point in writing it up. [The iPhone SE is forever doomed to fall short of lofty expectations](https://www.macworld.com/article/620457/macalope-iphone-se-buying-survey.html) # Apple left out the 'Pro' when it made Mac Studio [image:A5CBBFE4-A93A-41D1-87E9-69172E78A082-10961-0000011E2AF0027B/john-ternus-peek-performance-2.jpg] It is time once again for another edition of “What Is Up With Macs?!”, our long-running series that details the state of the Mac lineup. But you say “Macalope, I have just reviewed all of your columns over the last 12 years and you have never once run a feature titled ‘What Is Up With Macs?!’” To which the Macalope responds, “Oh, yeah? Well, you’re just a fictional construct that the Macalope created for humorous effect. You’re not my real dad. For starters, the Macalope’s real dad doesn’t read these columns.” [Turns face to window. Watches the rain for three hours while Cat Stevens plays. Single tear.] Where was I? Oh, right. The VERY POPULAR “What Is Up With Macs?!” feature the Macalope does ALL THE TIME. The Macalope will preface this with a standard disclosure as required by law that he has no inside information about any future plans for the Mac that Apple may have. He denies ever having met Johny Srouji and the rumors the Macalope once played squash with John Ternus and was absolutely destroyed are unfounded. Un. Founded. It was racketball. (Disclaimer: it was also not racketball.) As exciting as Apple’s announcement of the Mac Studio last week was, the company still has a few loose ends some of its customers would like tied up. As Ternus teased toward the end of the presentation, the Mac Pro is the one product that Apple is still making that hasn’t yet been transitioned to Apple silicon. Ternus let people know it was coming “another day”. WHICH DAY, JOHN? NEXT WEDNESDAY? A DAY IN EARLY JUNE? JOHN? COME BACK, JOHN. Aaand he’s gone. [image:1AAF9D43-CCB5-46E7-A955-9D2D79DECA7D-10961-0000011E2AEFAA3C/macalope-2021.jpg] IDG [Mark Gurman believes](https://go.redirectingat.com/?id=111346X1569486&url=https://www.bloomberg.com/news/newsletters/2022-03-13/apple-aapl-m2-pro-max-ultra-chip-plans-imac-mac-pro-macbook-air-details-l0pbx53z&xcust=1-1-623046-1-0-0&sref=https://www.macworld.com/article/623046/macalope-mac-studio-m1-ultra-imac-pro.html) that because the M2 is already getting ready to appear in Apple laptops, the first Mac Pro with Apple silicon won’t ship until the M2 Ultra is ready, which would mean more likely at or after WWDC 2023. This lines up with [a tweet previously](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/mingchikuo/status/1502163650387542019?s=20&t=pFNERgMhfNwuDFTNeqhR_A&xcust=1-1-623046-1-0-0&sref=https://www.macworld.com/article/623046/macalope-mac-studio-m1-ultra-imac-pro.html) from Ming-Chi Kuo. The horny one is inclined to think Ternus’s verbal wink to the audience means it’s coming sooner than that, but is an M1 Ultra-based Mac Pro different enough from the M1 Ultra-based Mac Studio to really make that much of a difference? Well, it better be, or why even have a Mac Pro since Apple has indicated that Ultra is as high as the M1 goes (at least for now). Eventually, the expandability of the Mac Pro and the option for dual M1 Ultra processors will have to be enough to make it an attractive product, so why not ship them this year? Then there’s the 27-inch iMac, which Apple killed, and the iMac Pro, which is no longer a product. But if there are two things the Macalope has learned from zombie movies, it’s don’t split up your party to explore the abandoned mental asylum, and things are only dead until they aren’t anymore. Again, both Kuo and Gurman believe the iMac Pro will be back next year. Color the Macalope brown and at least a little skeptical as that would lead to a fairly crowded top end of the lineup. He’s not saying it’s not happening. And he’s not saying it is happening. What he is saying is don’t split up when you’re exploring the abandoned mental asylum. This leaves us with a gap in the current lineup overall. As [Dan Moren noted](https://go.redirectingat.com/?id=111346X1569486&url=https://sixcolors.com/post/2022/03/the-missing-mid-range-desktop-mac/&xcust=1-1-623046-1-0-0&sref=https://www.macworld.com/article/623046/macalope-mac-studio-m1-ultra-imac-pro.html), you can’t currently buy a desktop Mac with an M1 Pro processor. The Mac mini is currently limited to the base M1 and Intel Core i5 and the Mac Studio starts with the M1 Max. That seems… wrong. Before Apple starts crowding the high end with an embarrassment of riches, it should address the needs of the starving middle class with an M1 Pro Mac mini. If the Macalope were the betting sort, he’d guess that Apple will announce an M1 Ultra-based Mac Pro at this year’s WWDC and an M1 Pro-based Mac mini either at the same time or in the fall. But just as valid as “don’t split up when exploring the mental asylum” is the adage “don’t bet on predictions made my cartoon Mac/antelope/human hybrids in a suit.” [Apple left out the 'Pro' when it made Mac Studio](https://www.macworld.com/article/623046/macalope-mac-studio-m1-ultra-imac-pro.html) # Apple is about to make a big mistake with the iPhone 14 [image:B75A92AA-409F-4E1A-979F-0782EEBC0EDD-10961-0000011E2AF0B11C/iphone-12-mini-2.jpg] It is time once again for one of the Macalope’s quarterly paeans to the small iPhone form factor. If small phones aren’t your thing, feel free to read this week’s column at 1.5X speed. Writing for The Verge, Sean Hollister says [“Please don’t kill the iPhone Mini”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.theverge.com/2022/3/16/22980216/apple-iphone-mini-hopefully-alive&xcust=1-1-625084-1-0-0&sref=https://www.macworld.com/article/625084/macalope-iphone-mini.html) (Tip o’ the antlers to [Nick](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/nwsayer/status/1505353118141149186&xcust=1-1-625084-1-0-0&sref=https://www.macworld.com/article/625084/macalope-iphone-mini.html).) Preach. The Macalope used his first-generation iPhone SE for four years, waiting for the time Apple would ship a modern small smartphone again. Then he had to wait another six months while using a second-generation iPhone SE. Finally—FINALLY!—Apple shipped the iPhone 12 mini. Huzzah! The huzzahs were not long-lived. Several months later, rumors said that Apple would ship an iPhone 13 mini and then be done with minis again. As Hollister notes, [a recent tweet by Ming-Chi Kuo](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/mingchikuo/status/1503033674643939333&xcust=1-1-625084-1-0-0&sref=https://www.macworld.com/article/625084/macalope-iphone-mini.html) seemingly confirms it, as far as rumors go: there will be no small phone introduced this fall. This is what is known as the tick-tick-TOOOOOOK strategy. And the Macalope hates it. Hollister and some of his colleagues agree. > …when I polled my colleagues this week, seven of us still agree that the rest of the world’s too-big phones can shove it. Your ideas are intriguing to me and I wish to subscribe to your newsletter. Much like comic book characters, however, Apple products are only dead as long as they’re dead. The Macalope believes there’s every chance the company will ship another true small phone (the third-generation iPhone SE is a fine phone but it’s not a true small phone) /someday/. Apple certainly knows better than the Macalope what sells. The company may feel the market is insignificant enough that it can just drop us a bone when it feels like it. [image:8880F1BE-C5F9-4B9D-BEF7-321A4ED9F49D-10961-0000011E2AF058D3/macalope-2021.jpg] IDG You can’t build a market on anecdotes, but to back up Hollister and his colleagues at The Verge, the horny one regularly talks to diehard small phone fanatics. Back when the first generation iPhone SE shipped, the father of a friend literally switched platforms in order to get a smaller phone with modern internals, something that was unavailable on Android. Hollister does get a little desperate, even if the Macalope feels it. > If Apple offered a Mini in 2023 instead of 2022… > Or Apple could bring it back in 2024… Or… OR… OR! LOOK, JUST GIVE US THE SMALL PHONE AND NO ONE GETS HURT, OKAY? Like Hollister, the Macalope would be fine if the company adopted an “every few years” approach to shipping a small phone. But there’s no regularity in Apple’s approach other than seeming continued disdain. The irony here, of course, is that Apple was famously late to the large phone game. [This piece on Engadget](https://go.redirectingat.com/?id=111346X1569486&url=https://www.engadget.com/2010-07-16-jobs-no-ones-going-to-buy-a-big-phone.html&xcust=1-1-625084-1-0-0&sref=https://www.macworld.com/article/625084/macalope-iphone-mini.html) detailing how Steve Jobs said “no one’s going to buy” larger phones is an amusing slice of life from 2010. Of course, Jobs said that kind of thing all the time about stuff Apple wasn’t currently shipping. “No one’s going to buy high-priced, boxy Macs with ports on the front!” What’s funny is the size of phone that was considered “large” back then. > We’re assuming he’s likely talking about the latest crop of 4-, 4.3- and 5-inch phones… Six years later, Apple’s 4.5-inch iPhone SE would be the smallest phone on the market from a major smartphone manufacturer. Six years after that, the 5.4-inch iPhone 12 and 13 minis are. And while Apple did make substantial strides in screen space by reducing the size of the bezels, the iPhone 13 mini is substantially larger overall than the original SE was. The smallest phone now is only small compared to every other phone currently shipped. The Macalope isn’t sure how he became the weird, cartoon poster child for small iPhones but it’s a hill he’s going to die on. Apparently over and over again. [Apple is about to make a big mistake with the iPhone 14](https://www.macworld.com/article/625084/macalope-iphone-mini.html) # Of course the new iPhone SE is doomed–and in record time too! [image:3B91E4A5-423C-4CBB-B275-46B0779F3598-10961-0000011E2AF106A0/iphone-se-2022-home-button-1.jpg] It is fitting that the seminal /Star Trek: The Next Generation/ episode “Cause and Effect” had its [30th anniversary last week](https://go.redirectingat.com/?id=111346X1569486&url=https://www.hollywoodreporter.com/tv/tv-features/star-trek-next-generation-best-episode-1235116052/&xcust=1-1-626919-1-0-0&sref=https://www.macworld.com/article/626919/macalope-iphone-se-production-cuts-demand.html) because once again the Macalope feels caught in a time loop. [Oh, yeah? Well, /you/ try writing a new intro every week.] As you may recall, expectations for third-generation iPhone SE sales were high. Very high. Because they were set that way. Set that way by stories that Apple could win over up to 1.4 billion Android users with the device. And not only were a billion-plus Android users going to line up for it, [40 percent of iPhone owners](https://www.macworld.com/article/620457/macalope-iphone-se-buying-survey.html) were going to switch to it, too! Yes, it was nothing but blue skies for Apple’s new device! Surely it would set records as people ditched Android and iPhone alike to buy the plucky little phone that cou- [“Apple Reportedly Cutting iPhone SE Production Just Weeks After Launch Due to ‘Weaker-Than-Expected’ Demand”](https://go.redirectingat.com/?id=111346X1569486&url=https://www.macrumors.com/2022/03/28/apple-cutting-iphone-se-production/&xcust=1-1-626919-1-0-0&sref=https://www.macworld.com/article/626919/macalope-iphone-se-production-cuts-demand.html) Wow, that was quick. Jim, is that a record? The Macalope is going to check with Jim the stats guy to see if that’s a record. He won’t get back to you about that as Jim is not a real person, the Macalope does not have a “stats guy”. Yes, our good friends at Nikkei Asia are back with more tales of iPhone production cuts to astonish. Nikkei is the same outfit that [four years ago](https://www.macworld.com/article/230937/going-wrong-the-desire-to-fix-the-iphone-x.html) told us Apple was cutting iPhone X production by a whopping 50 percent because it was such a loser. The iPhone X, as you may recall, went on to sell extremely well. Just as you should not have believed the lofty expectations of [ /pretends to check calendar/ ] two weeks ago, you should probably also not believe the dire warnings of poor demand now. No one knows what Apple’s expectations for sales were. Just because those of others were lofty doesn’t mean the company is disappointed. [image:F2D6AA1B-3D3A-4CFC-BD84-7EC44042F492-10961-0000011E2AF15F6B/macalope-2021.jpg] IDG But production cuts aren’t the only thing that’s making the Macalope wonder if he knocked that glass off the nightstand before. Apple might want to try decompressing the shuttle bay instead of using the tractor beam because… [“Dutch watchdog continues to cash out as it fines Apple tenth time over App Store policy”](https://go.redirectingat.com/?id=111346X1569486&url=https://9to5mac.com/2022/03/28/dutch-watchdog-continues-to-cash-out-as-it-fines-apple-tenth-time-over-app-store-policy/&xcust=1-1-626919-1-0-0&sref=https://www.macworld.com/article/626919/macalope-iphone-se-production-cuts-demand.html) The Macalope doesn’t know about you but he settles all his €5-million debts promptly. You don’t want that to go on for long. €5 million here, €5 million there and pretty soon you’re talking about real money. Well, don’t you think eventually for even Apple? No? Okay, maybe not. Carry on, Apple. It does seem that the company may actually be [getting close to satisfying Dutch regulators](https://go.redirectingat.com/?id=111346X1569486&url=https://techcrunch.com/2022/03/28/apple-acm-dating-apps-tenth-fine/?tpcc=tcplustwitter&xcust=1-1-626919-1-0-0&sref=https://www.macworld.com/article/626919/macalope-iphone-se-production-cuts-demand.html), so maybe it’ll break out of that time loop soon. /Cheers/ to the company if it manages to get out of that destructive cycle. … Get it? Because Kelsey Grammer? Yeah, you got it. [Of course the new iPhone SE is doomed–and in record time too!](https://www.macworld.com/article/626919/macalope-iphone-se-production-cuts-demand.html) # Apple can make its legendary ease of use extremely difficult when it wants to [image:73252FB4-97B3-4935-8D94-481EEB6F5600-10961-0000011E2AF206C4/app-store-iphone-1-2.jpg] IDG Big—HUGE!—news this week as Apple has actually relaxed an App Store rule, giving developers more flexibility in how they can get customers to pay for apps! [“Apple Will Let Content Apps Like Netflix, Spotify Link to Their Websites to Sign Up Users”](https://go.redirectingat.com/?id=111346X1569486&url=https://variety.com/2022/digital/news/apple-app-store-netflix-spotify-web-accounts-1235219399/&xcust=1-1-629450-1-0-0&sref=https://www.macworld.com/article/629450/macalope-app-store-external-links-restrictions.html) Huzzah! Progress is made! Let us now move forward into this bright new future, hands clasped together in… > However, there are restrictions. Oh. Okay. Okay. Okay. Some restrictions are fine. Like, you wouldn’t want the links to be a [Rickroll](https://go.redirectingat.com/?id=111346X1569486&url=https://youtu.be/https://youtu.be/dQw4w9WgXcQ?t=1&xcust=1-1-629450-1-0-0&sref=https://www.macworld.com/article/629450/macalope-app-store-external-links-restrictions.html). There are probably some other things you wouldn’t want. [Links to images of Steve Ballmer](https://go.redirectingat.com/?id=111346X1569486&url=https://www.bing.com/images/search?q=steve+balmer&form=HDRSC3&first=1&tsc=ImageBasicHover&xcust=1-1-629450-1-0-0&sref=https://www.macworld.com/article/629450/macalope-app-store-external-links-restrictions.html). Stuff like that. But why does the Macalope get the feeling we’re building to a very sad trombone here? > For example, app developers may not include “the price of items available on the website” in their iOS apps… “Certainly we don’t want to junk up iOS with such tawdry things as /prices/ for digital goods,” says the company that popularized buying coins to play games. Okay, that’s obnoxious, but not the end of the world. At least developers can add the link and then people who are curious can… > Also, reader app developers must apply for permission to use the External Link Account Entitlement. Developers may get a link to their website as a treat. Or they may not! Come /on/. Has someone checked the tap on this faucet? The drip of these changes seems so slow that it might just be a loose fitting somewhere in the legal department. “I found it, Tim! Turns out Ned in Developer Agreements just had to be rotated a half turn to the left. Won’t happen again.” [image:627331DB-CFE7-479F-8148-38F2FB83C8F2-10961-0000011E2AF1B27F/macalope-2021.jpg] IDG On top of these other restrictions, this change only applies to reader apps. So, the apps that already don’t sell any digital goods through Apple’s purchasing mechanism can now /ask/ to add a link to a page that explains how to actually sign up for their service. Wow! For a company that prides itself on making things easy to use, that was a ridiculously long period for customers to have to jump through an unnecessary hoop like poodles who have to guess where to find the hoop in the first place. And developers still don’t know if they’ll be granted this ability, they have to /apply/ for it. The Macalope has never pretended to know what the right balance for the App Store is. He remains unsure of how side-loading could best be implemented, what the right percentage split should be, and whether or not should have to stop by Craig Federighi’s house to comb his hair whenever he asks (that one is a rumored requirement). But he knows that where we are now is not how it should be. At a minimum, he believes that /any/ developer, not just those of reader apps, should be able to provide a link to where people can go to pay for an app on the developer’s website outside of the App Store payment mechanism. Apple loves to tell us how people love the convenience of the App Store but it sure doesn’t act like it, as it persists in maintaining these ludicrous barriers. /Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our/ [affiliate link policy](https://www.macworld.com/about/affiliate-link-policy) /for more details./ * Apple App Store * iOS 14 * iPhone 13 * Macalope [Apple can make its legendary ease of use extremely difficult when it wants to](https://www.macworld.com/article/629450/macalope-app-store-external-links-restrictions.html) # These hot Apple takes were so bad they've gone rotten [image:EDBC0BAE-0F9F-475E-87B2-FB1E40A9F97C-10961-0000011E2AF26563/apple-store-logo-1.jpg] Certain recent events have the Macalope reminiscing about some of his favorite hot takes that have come and gone over the years. And by “favorite” the Macalope means the most hilariously bad. Let’s just limit this to the last 10 years, otherwise we’ll be here all night. Also, this is not an exhaustive list. The only thing exhausted about this list is the man/Mac/antelope who had to read these opinions. First up, for [no reason](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/paraga/status/1513354622466867201&xcust=1-1-630754-1-0-0&sref=https://www.macworld.com/article/630754/macalope-hot-apple-takes-tesla-facebook-fire-phone.html) at all this week, the idea that Apple should [buy Tesla and make Elon Musk the CEO](https://www.macworld.com/article/229907/rocket-science-fixing-all-apple-s-problems-with-this-one-incredibly-unlikely-trick.html). These are two separate suggestions. First, that Apple should buy Tesla. Second, should make a man who publicly trashed a company he was taking a financial stake in and was therefore [able to buy said stake for less](https://go.redirectingat.com/?id=111346X1569486&url=https://www.washingtonpost.com/technology/2022/04/06/musk-twitter-sec/?utm_source=twitter&utm_medium=social&utm_campaign=wp_main&xcust=1-1-630754-1-0-0&sref=https://www.macworld.com/article/630754/macalope-hot-apple-takes-tesla-facebook-fire-phone.html). We’ll start with the first suggestion. Should Apple have bought Tesla? No. Not at all. Yes, if Apple had bought Tesla, at least it’d be producing electric vehicles now. But it still wouldn’t be producing autonomous electric vehicles, which is what it really wants to do. And, no, it’s not “behind” on making them because no one else is, either. Even the guy who said for years his company was just months away from delivering them. [The name of this person](https://go.redirectingat.com/?id=111346X1569486&url=https://jalopnik.com/elon-musk-promises-full-self-driving-next-year-for-th-1848432496&xcust=1-1-630754-1-0-0&sref=https://www.macworld.com/article/630754/macalope-hot-apple-takes-tesla-facebook-fire-phone.html) escapes the Macalope right now. As far as the suggestion that Musk should be made CEO of Apple because Tim Cook is… boring or something… (Competence is so boring!) Yeah, sure. Much better to have a toxic narcissist who insists on shooting his mouth off on Twitter and loves to [pick fights with the SEC](https://go.redirectingat.com/?id=111346X1569486&url=https://www.cnbc.com/2022/04/04/elon-musk-thumbs-his-nose-at-the-sec-again-with-twitter-stake.html&xcust=1-1-630754-1-0-0&sref=https://www.macworld.com/article/630754/macalope-hot-apple-takes-tesla-facebook-fire-phone.html). What? Could? Go? Wrong? The Macalope thinks the years between 2017 when this brilliant idea was floated and now have pretty conclusively driven it into the black hole at the center of the galaxy where it belongs. [image:2D689938-C917-4A59-8B29-C616FE6B5FE0-10961-0000011E2AF2BA79/macalope-2021.jpg] IDG Next up is Facebook Home. Every once in a while the Macalope remembers that this was a thing for a hot, disgusting minute back in 2013. If you don’t recall, Facebook Home was a Facebook-forward front end for Android smartphones. The thinking among certain congealed chunks of walking bio-matter was that [Apple was “screwed” because of it](https://www.macworld.com/article/220788/macalope-weekly-repeating-history.html). They claimed it gave Facebook “the upper hand” and would soon suck iPhone users away because who wouldn’t want to have their entire smartphone experience controlled by the company that has no regard for your privacy and taught your uncle how not only was the moon landing faked, the moon isn’t even real, you can totally see the strings holding it up? The evidence for this claim of iPhone doom was that the Facebook Home was made by some admittedly talented ex-Apple employees and, at the time, Facebook had more users than there were iPhone owners. The thought that not every Facebook user was in loooove with the platform and would do anything for it apparently did not occur to those pushing this idea. Facebook Home’s last major update was in December of 2013 and then, after somehow managing to fail at killing the iPhone, its source code was quietly dropped in a dumpster behind a Sonic on Route 100. Well, probably not really, but who knows. Lastly, remember the Fire Phone? Some people complain about the Macalope harping on the Fire Phone for years after its demise but everyone needs a hobby and it keeps him off the streets. Mostly. (On hot summer nights he still drives up and down De Anza Blvd. in his tangerine El Camino, just looking for fools who want to drag.) When the Fire Phone came out in 2014 pundits predicted it would see “healthy rates of adoption” because of its “innovative features” like… um… well, who can remember, really? Some scrolling thing or something? Alexa? It would explode when someone said the word [“union”](https://go.redirectingat.com/?id=111346X1569486&url=https://twitter.com/amazonlabor/status/1510031752114364418&xcust=1-1-630754-1-0-0&sref=https://www.macworld.com/article/630754/macalope-hot-apple-takes-tesla-facebook-fire-phone.html)? Hard to recall as it was canceled after just over a year. Is continuing to bring these things up in any way important? The Macalope feels it is. Because punditry–including what you’re reading right here–is cheap and yet often still overpriced. [These hot Apple takes were so bad they've gone rotten](https://www.macworld.com/article/630754/macalope-hot-apple-takes-tesla-facebook-fire-phone.html) # 5G is a joke and the iPhone is the well-timed punchline [image:3A354E48-5D23-439C-ABBC-0C7F13BA48C6-10961-0000011E2AF36DEA/iphone-13-2.jpg] Have you heard of these nothing burgers? Apparently, they make the entire burger from absolutely nothing. The Macalope doesn’t know how they do it and still make a profit. It’s crazy. Which brings us to 5G. You remember 5G, right? It’s the thing on your phone you hardly notice, except when it’s draining your battery for no good reason. [A little over a year ago](https://go.redirectingat.com/?id=111346X1569486&url=https://www.theverge.com/2021/2/22/22292074/5g-nationwide-verizon-att-tmobile-c-band&xcust=1-1-633236-1-0-0&sref=https://www.macworld.com/article/633236/macalope-5g-iphone-late.html) The Verge reported the 5G situation (and before you say it, “The 5G Situation” is a /terrible/ band name) thusly: > …what we have now is widespread 5G that’s more or less the same speed as (or even slower than) 4G and super-fast mmWave 5G in some parts of some major cities with highly limited range. A year later, it’s not much better. Tim Bray recently collected [some anecdotal evidence](https://go.redirectingat.com/?id=111346X1569486&url=https://www.tbray.org/ongoing/When/202x/2022/03/26/Is-5G-BS&xcust=1-1-633236-1-0-0&sref=https://www.macworld.com/article/633236/macalope-5g-iphone-late.html) (tip o’ the antlers to [John Gruber](https://go.redirectingat.com/?id=111346X1569486&url=https://daringfireball.net/linked/2022/03/31/tim-bray-5g-skeptic&xcust=1-1-633236-1-0-0&sref=https://www.macworld.com/article/633236/macalope-5g-iphone-late.html) ) about peoples’ reaction to 5G and it’s a symphony in the key of middling. His conclusion: > It’s perfectly possible that, ten years from now, we’ll look in the rear-view and say “[5G] was a good investment.” I wouldn’t bet on it, but it’s possible. The modest and spotty improvements brought by 5G might be fine, but as /The Wall Street Journal/ reported, 5G also [drains your battery](https://go.redirectingat.com/?id=111346X1569486&url=https://www.wsj.com/articles/5g-drains-your-iphones-battery-heres-what-you-can-do-about-it-11647716969?st=dejaoo8lf1p8v2w&reflink=desktopwebshare_twitter&xcust=1-1-633236-1-0-0&sref=https://www.macworld.com/article/633236/macalope-5g-iphone-late.html) like it’s mining bitcoin on your phone in the background. It’s probably not really doing that. Right? Hmm. Anyway, 5G does seem to offer advantages for a limited number of customers and you can really get great speeds if you’re able to connect to mmWave, which is rare, but this is not what we were promised when pundits were howling that Apple was doomed because it wasn’t the first to ship a 5G phone. Let’s go back to 2018 when [we were told](https://www.macworld.com/article/232229/this-time-for-sure-apple-s-behind-again.html) that 5G was “a game-changer”, “the real deal”, and that Apple had “fallen substantially behind”. Yes, [Apple was](https://www.macworld.com/article/233252/s-yearing-analysis-judging-tomorrow-s-iphones-today.html) “behind its rivals” who would now have “the chance to define what the future of phones will look like.” [image:13EE7EBB-714C-4F3C-AC40-3B209B9BEA91-10961-0000011E2AF3190F/macalope-2021.jpg] IDG It was a very dire situation for Apple, let the Macalope assure you. Mmm-hmm. Three and a half years later we’ve forgotten all about those predictions and now it’s assuredly something else Apple’s behind on. We’ve been through wrap-around screens, foldable phones, 3D screens, even [projector phones](https://go.redirectingat.com/?id=111346X1569486&url=https://www.gsmarena.com/samsungs_first_projector_phone_sees_daylight_at_ces_2009-news-732.php&xcust=1-1-633236-1-0-0&sref=https://www.macworld.com/article/633236/macalope-5g-iphone-late.html). Let’s just say it’s quantum phones. The Macalope doesn’t know what that means, but it’s probably a thing. The horny one doesn’t keep up on the Forbes contributor network and gag reflex testing machine much anymore. None of this is to say that 5G isn’t a vague improvement. It’s definitely a vague improvement. Technology plods ever forward, lumbering toward the future like a rough-hewn golem fashioned of so many half-baked dreams. The point is that Apple “missed” absolutely nothing. In fact, it probably gained by not forcing battery-hungry modems on users before they could even make use of them. Even if 5G had turned out to be the game-changing real deal those who eat up carrier marketing materials like monkeys eat up monkey chow believed, there was no cost to not shipping a 5G phone in 2018 or even 2019. Apple’s definitely been behind the curve before (see: DVD-RAM drives and CD burners) and it’ll probably happen again. But it wasn’t 5G. [5G is a joke and the iPhone is the well-timed punchline](https://www.macworld.com/article/633236/macalope-5g-iphone-late.html) # Hustler at the end of the world [image:A5D1599F-CADA-4332-BFB8-727D5D8C5306-8338-000000DE8D37FB8F/VRG_4994_001.jpg] Fong and Rob got on a call. “You just want to see results,” Fong said. “Doc Fong, that’s exactly right,” Rob responded. Three months was far too long, he went on, to wait for a shipment. Then Rob made his position very clear to Fong: “In my world, you’ve got two choices. You can either kill yourself because you screwed this up so bad, hari-kari, or I can have it arranged for you. Your choice. Your choice.” Kaplan couldn’t bring himself to believe that Fong had betrayed him. “He seemed articulate, intelligent,” he told me last May. “I think he’s a good, honest person, but common sense tells me there’s no way he could be involved with a company like that and not know where the money went, how it disappeared, or claim innocence in knowing these people were scumbags when he brought them to us,” he said. He recalled his own rule: either you’re stupid, or you’re in on it. And yet. /My dear friend… and one whom I have not even met in the flesh,/ Fong wrote to Kaplan last summer. /I have not, thus far been either able to extricate myself from this foul business, nor have I been able to benefit from the same. I have been a lost creature over the last 19 months…. having lost track of time, season, days, weeks, or months of the year……/ /I have been and am currently finding I am to ashamed at my situation,/ Fong went on, /where I have found myself in such financial peril after so long without much to show for it/ “There’s a part of me that feels for him, alone in a foreign country,” Kaplan said. “He’s a doctor, not a businessman.” He tried to put himself in Fong’s shoes. “If the person he’s been talking to for the past year, who’s been with him on every journey, shepherding him through the entire thing, just decides to say, ‘Go fuck yourself. We’re going to send someone to go kill you’...” He wanted so badly to believe that Fong could make this right — that he would refund the money or find another allocation of gloves and get it shipped. He wanted so badly for this deal to work out. He also knew that the financing had only come through because “someone I knew for 20 years vouched for me, and I vouched for Dr. Fong,” he said. He worried about how a quarter-million dollars disappearing might blow back on him. “You are responsible for every person you introduce,” Kaplan said glumly. By the end of July 2021, as the delta variant made clear the pandemic was far from over, Kaplan forced himself to cut off contact with Fong, who was still promising to send the gloves. In October, a CNN investigation called nitrile gloves “the most dangerous commodity on Earth right now,” highlighting “an industry riddled with fraud,” particularly in Thailand, where high demand meant that even bloodied, used gloves were being washed, repackaged, and sold to hospitals. CNN reported that one former MDMA trafficker went to Thailand to try to recoup $2.7 million lost in the glove trade but ended up “arrested and charged with assault and kidnapping after a confrontation in a Bangkok restaurant.” Kaplan and Rob chose a more conservative path, compiling a file and turning it in to both the Department of Treasury and the FBI. As for the financing company that lost the money and now owed their clients much more than the original amount in interest, well, they “started getting a bit more insistent,” Kaplan said, “and then threats followed — glass rods being inserted in penises and assholes, and finding the money after that should be relatively easy.” The financiers cut off contact after Kaplan told them he’d involved the feds. Fong later told me over the phone that he arranged five glove deals like this one, where, instead of buying gloves, his Thai partners had used client money to cover “operating costs,” including Fong’s house, car, and salary. Still, he insisted, “I’m really innocent here. I never take the money for myself,” beyond “some commission and also other living costs.” He said he had reported fraudulent activity to the Thai police, and now worried he was in danger: “The pandemic has caused a lot of loopholes. A lot of people are being cheated.” In early November, Kaplan and Rob met face to face for the first time, after a year and a half of daily conversations. “I opened the door, and it could have been my dad standing there, the height, the build, the way he dressed, the way he talked, the mannerisms, the food he liked. And gout, which my dad also had. It was a very surreal experience,” Kaplan said. Soon after, Rob told Kaplan he had stage four kidney cancer and stopped being able to talk on the phone. “He is more than a business partner,” Kaplan told me in December through tears. A joint venture the two men put together might soon be able to bid on choice government contracts. For Kaplan, that hardly mattered now. “Stuff we put into place is starting to generate revenue, but he’s not going to be able to enjoy it.” The last time I spoke with Rob, in the middle of 2021, he warned that the United States was not prepared for another wave of the pandemic. “What do you got in the national stockpile? There’s nothing,” he fumed. “You’ve gotta maintain it. You’ve gotta have some kind of plan.” At the time, I was skeptical. Hadn’t we learned our lesson? No, Rob told me, we hadn’t. Sure enough, as omicron cases rose, coronavirus testing and mask shortages returned. By the beginning of 2022, Rob was dead. The last two years have been some of the most intense of Kaplan’s life, filled with close calls and hazards he is just beginning to process, but more than anything, amidst all of the death and destruction and delays and disconnection, he sees now that he is not alone. “A big takeaway was understanding and appreciating the value of building a relationship with someone who is a trusted friend and partner, how fragile life really is, and how being with somebody you’re supposed to be with can be a pleasurable experience,” Kaplan told me. He realized he was ready to consider someone else’s needs besides his own again and proposed to Milla. In the weeks after she said yes, Milla described “romantic dinners, champagne, coffee in bed, flowers, sweet surprises” and wrote that she saw Kaplan as “a real prince in my life.” They hired an immigration attorney and filled out the necessary forms. “After the papers arrived, confirming our marriage,” Milla wrote, in a narrative to convince immigration authorities that their love was genuine, Kaplan “took me to the beach to watch the sunrise, and when we got to the beach, he knelt on the sand and put a wedding ring on my finger, I was paralyzed with such emotion. We got married there, without ceremony. This, in my mind, would only happen in the most romantic films, but it really happened and with me!” It’s been a humbling time to be a hustler. After thousands of hours of work, through all his pandemic wheeling and dealing, Kaplan has only made around a thousand dollars total. Yet it doesn’t feel like a waste. He may not have found the wealth he was looking for, but he did find friendship, with Rob, and love, with Milla. “If it wasn’t for that woman,” he told me, “I would have lost my mind.” Many people feel as though the past two years were stolen, wiped from the calendar and replaced with a long and empty slog. Nearly a million Americans have died of COVID, but mask mandates and vaccine requirements are ending, and the country is ready to move on, variants be damned. Kaplan still views the pandemic as an opportunity, a gift of perspective that will shape the rest of his days. Money is great and all, but as he saw with Rob, you can’t take it with you. “Time is the most precious and finite commodity you have,” Kaplan said. He even has the space now to forgive Fong and, to a certain extent, forgive himself. To get anything done in this world, you need other people, and other people will always involve some degree of risk. After all, you can listen, you can research, you can interrogate, but in the end, there’s only so much you can verify about another person’s heart. Unless you want to end up alone, sometimes you’re just going to have to trust. [Hustler at the end of the world](https://www.theverge.com/c/23010055/pandemic-ppe-supply-chain-gloves-coronavirus) # Automate your notes with Shortcuts and Bear [image:7B48A964-B349-4978-BB74-AF9CDB559350-8338-000000DA2672E0FD/shortcuts-02_blog-1200x820-1.png] Our devices have gotten pretty good at saving time and simplifying complicated tasks. We can catch a Lyft simply by asking Siri, create entire websites with simple apps, and collaborate with people in real-time around the world. But we can push things even further. Our devices can save us a /ton/ of time and taps when going about our daily lives with Bear. Things like saving new information to existing notes, sending tasks to dedicated apps, keeping a daily journal, downloading articles to read later, and much more can all be done automatically, thanks to the amazingness of Apple Shortcuts. ## Quick primer Shortcuts are a (free!) way to simplify multi-step tasks down to just one or two taps. They can get /very/ powerful, and you can learn more about the basics in [Apple’s User Guide](https://support.apple.com/guide/shortcuts/welcome/ios). But a simple example is turning a webpage into a PDF and emailing it to a specific coworker. Or opening two specific apps side-by-side in Split View. Or sending all the photos you shot today to a friend—all with a tap. An important aspect of shortcuts is that they can be run from a variety of places—your Home Screen, Mac’s Dock, iOS Share Sheet, Spotlight search, and Siri. Shortcuts can also do neat stuff with Bear, which means /you/ can do neat stuff with Bear. Learn more about the [Bear actions we have available](https://bear.app/faq/How%20to%20use%20Siri%20Shortcuts%20with%20Bear/#how-to-use-siri-shortcuts-with-bear) for creating your own shortcuts and check our examples there. If you need even /more/ ideas to get started, we’ve created new Bear shortcuts for things like quickly searching Bear with your voice, running a daily journal, adding clipboard contents to notes, and more. Feel free to download these, take a look inside, build on them, and share your own creations! ### Automatic daily journal [image:7FFD47EA-9524-406B-AE22-F3E63AE1149E-8338-000000DA26710BD2/shortcuts-daily-journal-example-1024x880.jpg] This is a clever shortcut for keeping a journal, daily thoughts, or anything else that would benefit from collecting together in notes based on the day. On first run each day, the shortcut creates a new “Journal” note titled with the date and prompt you for text. Every subsequent run that day, it appends your text to that note. The next day, it creates a new note and starts the cycle again. For maximum convenience and the least friction while going about your day, try running this from a Home Screen icon or a Spotlight search. ### Send Bear tasks to Reminders (iOS only) If you have tasks in a Bear note but want more tools like alerts, due dates, and even location triggers, this is the shortcut for you. It copies all tasks from the note you selected over to the default list in Reminders, including a link back to the original note in Bear. Run this shortcut from the Share Sheet in a note. To set this up: edit the shortcut and check its settings to make sure *Show in Share Sheet* is enabled. Then, in any note, tap the (…) menu, then Share, and look for this shortcut near the bottom of the Share Sheet. [image:B8BC1DF8-C3FB-4166-9F78-4003CD9EC1D6-8338-000000DA266FEE2D/IMG_0758.jpeg] /Sidenote/: We’re working on exploring Shortcuts more and adapting this for other task apps. Stay tuned. ### Meeting notes from template [image:226C3D98-7749-4579-AFA7-AA955BCC343C-8338-000000DA2669A205/meeting-note-template-shortcut-example-1024x894.jpg] This is another one worth customizing for your needs. It prompts you for a meeting title, grabs the date, then adds it all to a new note including a simple meeting-centric template of headings of things like attendees, discussion points, and action items. Crack open the shortcut, and the meeting template is easy to change for your needs. ### Bear note to calendar (iOS only) Create a new calendar event from the current note, including a link back to the note. The note’s title is used for the event title, and the shortcut prompts you to set a day and time for both the start and end of the event. Like the tasks-to-Reminders shortcut, run this one from the Share Sheet, too. ### Search Bear with your voice This shortcut prompts you for audio input, transcribes it, opens Bear, then searches all your notes. ### Dictate new note with your voice – no Apple Watch required [image:96D4D839-1AB0-4E0C-AE1A-05D671394282-8338-000000DA26664B6B/dictate-new-note-shortcut-example-996x1024.jpg] Sure, a handy feature of Bear for Apple Watch is quickly dictating a note into your wrist, Dick Tracy style. But what if you don’t own an Apple Watch, or you (gasp!) forgot yours at home? No worries – trigger this shortcut just about any way from your iPhone, iPad, or Mac and dictate away. ### Append clipboard to a note Copied something for an ongoing note? Trigger this shortcut from any app using Spotlight or Siri, search all your Bear notes, select one, and consider it appended. *Pro tip*: You can easily edit this shortcut to choose ‘prepend’ when adding content, or ‘ask every time,’ if that’s your thing. [Automate your notes with Shortcuts and Bear](https://blog.bear.app/2022/03/automate-your-notes-with-shortcuts-and-bear/) # Testing2 fantastical2://x-callback-url/show?date=2022-04-20 01:12 # iPad Air 5 review: It’s time to make iPads water-resistant [image:0F523AAD-8423-402B-83D7-6E29392E7826-5095-000000D415321665/0737acef-6658-4995-9a66-6fbfb71ca484-ipad-air-5-review-top.jpg] Two weeks ago, I took Apple's latest [fifth-generation iPad Air 5](https://www.inputmag.com/tech/apple-ipad-air-5-groovy-purple-blue-starlight-color) (or iPad Air 2022 if you prefer that) for a [week-long vacation](https://twitter.com/raywongy/status/1506508349793218561?s=20&t=ELKSxHEcO5v6ulf1upCsIg) in Hawaii. I used the iPad Air 5 for everything. I checked /some/ email (I'm a monster for doing this on vacation), navigated Oahu for all the best food spots and hiking trails, read a few e-books, allowed myself to get back into /Asphalt 9/, and caught up on my queue of Netflix shows. I even sketched out a few ideas for a side project I'm working on (though my doodles still suck). Not once did I wish I had my [iPad mini 5](https://www.inputmag.com/tech/apples-redesigned-ipad-mini-looks-like-the-ipad-air-pro) (smaller size) or my [12.9-inch M1 iPad Pro](https://www.inputmag.com/reviews/m1-ipad-pro-review-the-last-tablet-you-will-ever-need-to-buy) (mini-LED display) instead — the iPad Air 5 was the right balance of display size with its 10.9-inch display and performance from the M1 chip. Starting at $599, the iPad Air 5 is, as my colleague Ian Carlos Campbell put it following the announcement: [Apple's best iPad deal](https://www.inputmag.com/tech/m1-ipad-air-5-best-ipad-deal). There are only two things I want improved: double the paltry 64GB storage to 128GB and make it water/liquid/splash-resistant. If a week of "me time" in paradise taught me anything, it's that iPad Air 5's storage is simply not enough for offline TV/movies and games. And the iPad Air 5 can't be used in a hotel tub/jacuzzi/pool or anywhere near water like a beach. The iPhone has had IP-rated water resistance since the iPhone 7 (we're now on the [iPhone 13](https://www.inputmag.com/reviews/iphone-13-mini-review-so-ordinary-its-extraordinary)!). Why can’t I use an iPad without fear of liquid damaging it? In my spiffy Hyatt hotel, I settled for using my [iPhone 13 Pro](https://www.inputmag.com/reviews/iphone-13-pro-max-review-a-mighty-upgrade-thats-just-shy-of-perfect) to rewatch /Terrace House: Aloha State/ and read Min Jin Lee's /Free Food for Millionaires/ in my room's tub, and the on-premise jacuzzi, and pool (and Waikiki Beach where showers would start and stop without notice). What I really wanted most was to use the iPad Air 5 for its larger display and superior speakers. It's time, Apple — make iPads water-resistant. /Input may receive a portion of sales if you purchase a product through a link in this article. We only include products that have been independently selected by Input's editorial team./ ## Air vs. Pro There are measurable differences between the iPad Air 5 and the M1 iPad Pros (11- and 12.9-inch), but I wouldn't obsess over the [comparison chart](https://www.apple.com/ipad/compare/?afid=p238%7CszuZbAhk3-dc_mtid_2092592t39165_pcrid_586515161434_pgrid_135433186218_&cid=wwa-us-kwgo-ipad-slid---brand-ipadcompare-announce-). The differences are minor in my opinion and some of the features like Touch ID instead of Face ID might even be preferred. Let's start with pricing because this is where the iPad Air 5's value shines. It starts at $599 for the Wi-Fi model versus $799 for the 11-inch M1 iPad Pro. What more do you get for $200? The M1 iPad Pro has a slightly larger screen (11 inches) compared to 10.9 inches on the iPad Air 5 and a faster 120Hz ProMotion refresh rate. Neither iPad has a mini-LED display and I didn't miss it from my 12.9-inch M1 iPad Pro at all; the black text on websites and e-books look no better with mini-LED and not having "pure" blacks for video simply doesn't bother me. (I watched /Dune/ on my flight's garbage in-flight entertainment display with its near non-existent contrast and terrible brightness. The iPad Air 5's black levels are a million times better so unless you're a creator using an M1 iPad Pro for the best color accuracy, a few lighter shades of black isn’t a dealbreaker.) The iPad Air 5 has virtually the same dimensions as the 11-inch iPad Pro.`Raymond Wong / Input` That said, the dimensions of the two iPads are nearly identical save for a 0.2mm thicker aluminum body and five grams of extra weight on the iPad Air 5. Not that I noticed this; the iPad Air 5 works perfectly with the 11-inch [Magic Keyboard](https://www.inputmag.com/reviews/ipads-mid-life-crisis-two-weeks-with-the-magic-keyboard). The iPad Air 5 front camera is the same 12-megapixel resolution as on the M1 iPad Pro. Lacking the TrueDepth camera sensor package, the iPad Air 5 doesn't support Face ID or Animoji/Memoji FaceTimes. It does support Center Stage, a feature I initially didn’t care for but came to appreciate whenever I had the iPad in landscape orientation; Center Stage zooms in on your face so that the camera doesn’t look like it’s aimed at your cheek. On the rear of the iPad Air 5, there's only one 12-megapixel wide camera as opposed to the M1 iPad Pro's 12-megapixel wide, 10-megapixel ultrawide, and LiDAR sensor. On an iPad, a single rear camera is sufficient — serviceable for photos and scanning documents, but nowhere near as impressive as the cameras on an iPhone. The display on the iPad Air 5 is just marginally smaller than on the 11-inch iPad Pro.`Raymond Wong / Input` The Magic Keyboard for the 11-inch iPad Pro is compatible with the iPad Air 5.`Raymond Wong / Input` Other differences between the iPad Air 5 and M1 iPad Pro include two speakers versus four, mid-band (sub-6 GHz) 5G versus mid-band /and/ mmWave, a regular USB-C port instead of a USB-C port that supports Thunderbolt/USB 4 speeds, and multiple anodized aluminum colors (five versus two). And, of course, the iPad Air 5 comes with only two storage capacities (64GB and 256GB) compared to the M1 iPad Pro's storage which starts at 128GB and goes up to 2TB. It reads like the iPad Air 5 is missing a lot of features found on the M1 iPad Pro. As an iPad fanatic (yes, I know [iPadOS is still largely limiting](https://www.inputmag.com/reviews/m1-ipad-pro-review-why-apple-will-never-put-macos-on-ipad), but a [Magic Keyboard](https://www.inputmag.com/reviews/ipads-mid-life-crisis-two-weeks-with-the-magic-keyboard) and [Universal Control](https://www.inputmag.com/tech/the-5-biggest-features-in-macos-monterey) have made it more usable as a "real" computer), I can tell you the iPad Air 5 still smokes any similarly priced Android tablet or even some that cost more. The 64GB of storage is really the only major downside. ## iPad core Almost everything that makes the iPad Air 5 such an excellent tablet can be attributed to the similarities it shares with the M1 iPad Pro: M1 chip performance, 10 hours of battery life, and Apple Pencil 2 and Magic Keyboard support. These iPad tentpoles are not compromised on the iPad Air 5. Instead of Face ID, you get Touch ID.`Raymond Wong / Input` The 12-megapixel camera on the back is fine... for a tablet.`Raymond Wong / Input` The dual stereo speakers get pretty loud. `Raymond Wong / Input` Everything I normally do on my 12.9-inch M1 iPad Pro, the iPad Air 5 handled just as well. There's no drop in performance playing 3D games like /[Genshin Impact](https://www.inputmag.com/gaming/why-genshin-impact-is-so-insanely-popular)/ or /Pokémon Unite/ on an iPad Air 5 compared to an M1 iPad Pro. Upscaling an image with the "Super Resolution" feature in Pixelmator Pro took the exact same amount of time to process. The responsiveness of the Apple Pencil from its tip to the screen didn't feel perceptively slower; any reduction in latency from the M1 iPad Pro's higher 120Hz refresh rate is lost on stick-figure artists like me. That Apple could put an M1 chip into the iPad Air 5 and there's no dip in performance showcases not only what a triumph its custom silicon is in performance and efficiency, but its scalability across the 13-inch MacBook Air/MacBook Pro, [24-inch M1 iMac](https://www.inputmag.com/tech/m1-imac-comes-in-7-colors-but-does-not-have-sd-card-slot) /Mac Mini, and iPads. For better or worse, the story of iPadOS has not changed. There’s a wealth of really good iPad apps for everything from drawing, writing, streaming, to games; way more than for Android tablets. Widgets on the home screen and the App Library are great. But, why does Apple still not have its own weather app like on iPhone? The weather widget kicks you over to the ad-infested Weather.com website. [I’m not asking for macOS on an iPad](https://www.inputmag.com/reviews/m1-ipad-pro-review-why-apple-will-never-put-macos-on-ipad) like everyone is — just know what you can and can’t do with iPadOS. Get a laptop if you want a laptop; Apple sells a [whole family of MacBooks](https://www.inputmag.com/tech/apples-new-macbook-pros-just-gave-everyone-a-nerdgasm) with good keyboards and [M1 performance now](https://www.inputmag.com/reviews/macbook-air-m1-review-windows-laptops-are-so-screwed). Widgets on the home screen has made iPadOS 15 more like a laptop.`Raymond Wong / Input` Multitasking on iPad Air 5 is as smooth as it is on an iPad Pro as far as I can tell.`Raymond Wong / Input` Even if Apple had used an A15 Bionic — the same chip in the [iPad mini 6](https://www.inputmag.com/tech/apples-redesigned-ipad-mini-looks-like-the-ipad-air-pro), [iPhone 13/13 Pro](https://www.inputmag.com/reviews/we-got-the-green-iphone-13-pro-iphone-13-mini-early/amp), and [iPhone SE 2022](https://www.inputmag.com/reviews/iphone-se-3-review-half-iphone-8-half-iphone-13) — the iPad Air 5 would still be far ahead of any Snapdragon-powered Android tablet. And the battery life: It's just as good as ever. Since the original iPad, Apple has maintained 10 hours of battery life for its tablets. While I think it's time Apple pushed the hours from a single charge upward, 10 hours of battery is still nothing to sneeze at. I used the iPad Air 5 during almost the entirety of my 11.5-hour flight to watch downloaded Netflix episodes and TV, read e-books, play games, and there was still around 15 percent leftover by the time I landed. And that’s all while listening to downloaded music from Spotify using [AirPods Pro](https://www.inputmag.com/reviews/airpods-pro-review-apple-may-have-built-the-perfect-wireless-earbuds). As with my M1 iPad Pro, I did notice that using the Magic Keyboard with the iPad Air 5 drained the battery faster. Your mileage will vary, but 10 hours of typical iPad workload is right on the money. ## All iPads are great The blue iPad Air 5 is definitely a looker. The other colors look good, too.`Raymond Wong / Input` Does Apple sell a bad iPad? Not as far as I can tell. Even the [entry-level iPad 9](https://www.inputmag.com/tech/the-ipad-9-is-here-and-its-more-evolution-than-revolution), with its old design that dates back to the original iPad Air and Touch ID home button and Apple Pencil 1 support, is a damn good deal for $329. I'm always reminding people that the basic iPad’s 10.2-inch display is larger and sharper, and the price is $70 less than the first few years of iPads which started at $499. iPads back then didn't even support Apple Pencil! The iPad Air 5 continues Apple's tradition of iPad excellence and dominance by bringing key technologies like the groundbreaking M1 chip down to a more affordable price. As much as I lean towards the premium end of the gadget spectrum with the best features packed inside, I was more than satisfied with using the iPad Air 5 and its features during my Hawaii trip. I found it lacking in only two areas (storage and lack of water resistance); everything else is as good as it gets for the price. > The iPad Air 5 is a *terrific deal* any way you look at it. Unless you absolutely /must/ have all of the bells and whistles of the M1 iPad Pros, the iPad Air 5 is more than capable. I don’t mean that in the sense that it’s a little better than the competition; the iPad Air has a very long life ahead of it. The M1 chip alone means the iPad Air 5 has tons of headroom for years of iPadOS updates to come — something Apple is very good at. Just look at how the iPhone 6S runs iOS 15 or the iPad or the iPad Air 2, released in 2014, supports the latest [iPadOS 15.4](https://www.inputmag.com/tech/ios-15-4-macos-12-3-release-universal-control-emoji-face-id-unlock). The iPad Air 5 is not a difficult iPad to understand: It's an 11-inch M1 iPad Pro stripped of all non-essentials. Don't let that fool you into thinking it's a vastly inferior iPad. It's not. The M1 chip is just as much of a beast in the iPad Air 5 as it is in the M1 iPad Pro. Use the $200 saved to get yourself an Apple Pencil 2 and you still have money left over for a case (or apps). Or knock $200 off the $299 Magic Keyboard. The iPad Air 5 is a terrific deal any way you look at it. [iPad Air 5 review: It’s time to make iPads water-resistant](https://www.inputmag.com/reviews/ipad-air-2022-review-time-to-make-ipads-water-resistant) # Controlling Working Copy with URL schemes You can open Working Copy and make it go to a specific screen with a URL: ``` working-copy://open?repo=my%20project&path=README.md&mode=content working-copy://open?repo=my%20project&commit=23f387&mode=status working-copy://open?repo=https%3A%2F%2Fgithub.com%2Flibgit2%2Flibgit2&branch=develop working-copy://open?repo=my%20project&path=README.md&mode=preview ``` Here /repo/ is either the name of a repository as seen in the list of repositories or the full remote URL. If you specify a /path/, Working Copy will show the given directory or file and if you specify a /commit/ hash (or prefix) you are shown the given commit. You can specify one of /path/, /commit/ or /branch/ but not more than one. You can control what to show such that /mode=content/ shows file content tab or directory contents for directories and repository; /mode=changes/ shows the Changes-tab and is only valid for files, /mode=status/ shows the Status-tab for files or Status screen for directories and repositories while /mode=preview/ shows the Content-tab in preview mode for files supporting this. You can omit the /mode/ parameter to leave mode unchanged. Jump to specific lines in the text file opened with the /line=123/ parameter and show messages with either /error=red%20%text/ or /message=blue%20text/ to inform the user of something related to the file. If you include /line=/ but no /path=/ the app uses the path of current file. This can be used with [shortcuts](https://www.icloud.com/shortcuts/43044ef544dd4e0db2886f6408fee047) activated through the share sheet that validate the current file. Make sure all parameters are URL-coded and that space is percent- rather than plus-encoded. You can ask Working Copy to open the clone-dialog with a specific URL awaiting the users confirmation: ``` working-copy://clone?remote=https%3A%2F%2Fgithub.com%2Fgit%2Fgit.git ``` If you need to make a link that shows a given remote repository inside [Working Copy](https://workingcopyapp.com/), without knowing whether the user has a existing clone, use the /show/ command that will open the repository if one exists with that remote and otherwise initiate cloning. ``` working-copy://show?remote=https%3A%2F%2Fgithub.com%2Fgit%2Fgit.git ``` The app supports using [log files](https://workingcopyapp.com/manual.html#logfiles) in the context of the repository contents and it can be useful to import and show these with a URL: ``` working-copy://import-log?lines=first%20line%0Asecond%20line ``` The /lines/ parameter is mandatory and you can use /repo/ to specify either a repository name or remote url the log refers to, /timestamp/ to indicate the time the log was recorded as [unix time](https://en.wikipedia.org/wiki/Unix_time) and /kind/ to one of /import/, [bitrise](https://www.bitrise.io/), [circleci](https://circleci.com/), [jenkins](https://jenkins.io), [buddy](https://www.buddybuild.com), /fetch/, /push/, /pull/, /clone/ where /kind=import/ is the default. To support workflows and automation, Working Copy has rich support for [x-callback-url](http://x-callback-url.com/) commands. Because the commands allow reading and writing your sourcecode, they are protected by a /key/ parameter which must match a random alphanumeric code created when you first launch Working Copy on a new device. You can edit this key inside settings to get the same code for all your devices making it easier to reuse scripts, but you should make sure never to use a /key/ value you found in some public script, as this would be equivalent to sharing a password with everyone else. The following commands are supported, where a 🔒 indicates that the /push/ feature must be unlocked for that command to be available. 0. [write](https://workingcopyapp.com/url-schemes.html#writing) files, 0. [read](https://workingcopyapp.com/url-schemes.html#reading) 🔒 files, 0. [move](https://workingcopyapp.com/url-schemes.html#moving) files, 0. [archive](https://workingcopyapp.com/url-schemes.html#zipping) 🔒 multiple files, 0. [commit](https://workingcopyapp.com/url-schemes.html#committing) changes, 0. list file [status](https://workingcopyapp.com/url-schemes.html#status), 0. [push](https://workingcopyapp.com/url-schemes.html#pushing) 🔒 to remote and 0. [pull](https://workingcopyapp.com/url-schemes.html#pulling) from remote. 0. [fetch](https://workingcopyapp.com/url-schemes.html#fetching) from remote. 0. [checkout](https://workingcopyapp.com/url-schemes.html#checkout) branch. 0. [delete](https://workingcopyapp.com/url-schemes.html#delete-branch) branch. 0. [merge](https://workingcopyapp.com/url-schemes.html#merging) branches. 0. start or stop the [WebDAV](https://workingcopyapp.com/url-schemes.html#webdav) server. 0. [list](https://workingcopyapp.com/url-schemes.html#listing) repositories 0. show commit [log](https://workingcopyapp.com/url-schemes.html#log) 0. list [branches](https://workingcopyapp.com/url-schemes.html#branches) 0. [init](https://workingcopyapp.com/url-schemes.html#init) empty repository 0. [clone](https://workingcopyapp.com/url-schemes.html#clone) repository from remote 0. run [secure shell](https://workingcopyapp.com/url-schemes.html#ssh-command) commands 0. [chain](https://workingcopyapp.com/url-schemes.html#chain) multiple commands 0. Universal Link [parameters](https://workingcopyapp.com/url-schemes.html#universal-url-arg) You can also read a little about creating URL templates in [Drafts](https://workingcopyapp.com/url-schemes.html#drafts-templates) and manually [chaining](https://workingcopyapp.com/url-schemes.html#chaining-callbacks) together callbacks. URLs for x-callback-url must have the form: ``` working-copy://x-callback-url//?x-success=&repo=...&key=... ``` If you include a /x-error/ parameter it will be used to deliver errors, otherwise errors are shown inside Working Copy. Including /x-success/ is also possible. [image:89284244-6B0B-4170-BF88-489941ECA8DB-3951-0000005354FD02C0/callback-settings.png] To avoid very long examples the /key/ parameter will not be included in every example here, but it IS required for every x-callback-url command. In order to foil brute-force attempts at guessing the /key/, Working Copy will show errors related to /key/ inside the app, but will not be calling /x-error/. Most commands requires the /repo/ parameter that specifies which repository the command is about. This can either be the name of the repository as seen in the list of repositories in the outermost view of the app or the full remote url of the repository. Remember to url-encode /repo/ just like all other parameters. Space needs to be percent- rather than plus-encoded. If you specify /repo=$current/ the repository shown inside the app will be used. Many commands require the /path/ parameter which specifies the file or directory the command will act on. Paths are specified relative to the root of the repository where a empty /path/ is the root directory and this the entire repository. Some commands will ask the user to pick a file or directory if no /path/ is specified and others will just use the root directory as its default. The details are documented in the section for each command. You can use /path=$current/ to specify the currently shown path of a file or directory where the empty string will be substituted if you are not looking at any path. [image:92650286-957A-47B5-95AD-85F192191F43-3951-0000005354FBC418/my-repo.png] Write to existing or new files with the /write/ command. If you include a /text/ parameter this will be the content written to the file at the given /path/. The text parameter is transferred as UTF-8 but will be written in the encoding of the existing file or UTF-8 for new files. ``` working-copy://x-callback-url/write/?key=123ABC&repo=my%20repo&path=README.md&text=hello%20there ``` If you need to write images or other binary files you can transfer the content as [base-64](http://en.wikipedia.org/wiki/Base64) by using the parameter /base64=/ instead of /text=/. You need to URL-encode after base-64 encoding since the characters /+/ and /// occur after base-64 coding. This can also be handy if you want to overwrite the encoding of a existing file. If you do not include either a /text/ or /base64/ parameter the clipboard content is written or you can include /clipboard=1/ as a more direct way to write from the clipboard. If no /path/ parameter is specified the user will be asked to pick a file and if no /repo/ is specified either the user will start out by picking a repository. In these situations you can suggest a filename with the /filename/ parameter and /uti/ to indicate the [Uniform Type Identifier](http://en.wikipedia.org/wiki/Uniform_Type_Identifier) such that the user can be warned before saving into a file where the name suggests a different type of data. If no /uti/ is specified the default is either "public.plain-text" or "public.item" depending on whether content is specified with /text/ or /base64/. ``` working-copy://x-callback-url/write/?text=hello%20there&filename=test.txt&uti=public.text ``` Working Copy supports exporting files with a filename with special information such that it can be identified as a specific file in a certain repository even though the original filename is used multiple times. To get this behaviour in /x-callback-url/ use the /write/ command with a /path/ but no /repo/ parameter. The path must be recognized for this to work or you will get a error that the file is not known. You can include /askcommit=1/ to be asked to commit and push the file after saving. You control how and when to write to the file with the /mode/ parameter. The default /mode=safe/ will create new files or overwrite non-modified files but refuse to write to files with uncommitted changes. When the user pick the file to write to you are allowed to overwrite files with uncommitted changes and you can force this behaviour with /mode=overwrite/. To combine new and old input you use /mode=append/ or /mode=prepend/. You can get the contents of text files with the /read/ command and result will be URL-encoded and appended to the x-success callback. ``` working-copy://x-callback-url/read/?repo=my%20repo&path=file&x-success=app%3A%2F%2Fx-callback-url%2Fread%3Ftext%3D ``` will make Working Copy open a url on the form: ``` app://x-callback-url/read?text=hello%20there ``` You need to url encode /x-success/ and to support different apps that want to receive text differently and might not follow the x-callback-url conventions you should include the parameter name and then /=/ at the end of /x-success/. Working Copy tries to be smart about appending the file content as /&text=.../ if it detects a /x-callback-url/ that would become malformed, but your best bet is to format /x-success/ manually. If you are reading a binary file the result will be transferred as [base-64](http://en.wikipedia.org/wiki/Base64) and if Working Copy appends the parameter name it will be /&base64=.../ but to ensure the file content is returned in base64 coding you include the input parameter /type=base64/. ``` working-copy://x-callback-url/read/?x-success=...&repo=my%20repo&path=README.md&base64=1 ``` If no /path/ parameter is specified the user will be asked to pick a file and if no /repo/ is specified either the user will start out by picking a repository. You can use /uti/ to specifify the kind of files you want. The user will be warned when picking a file that does not match the given [Uniform Type Identifier](http://en.wikipedia.org/wiki/Uniform_Type_Identifier). The default value for /uti/ is "public.plain-text" but this is changed to "public.item" if /base64/ indicates that you accept binary results. If you are asking the user to pick a file that will be used for a number of commands /type=url/ can be used to get a [universal url](https://workingcopyapp.com/url-schemes.html#universal-url-arg) that can be passed to other x-callback-url commands. Include /clipboard=1/ to put the content of the file on the clipboard. To move or rename files within a repository you use the /move/ command. Both the /source/ and /destination/ filenames are relative to the root of the repository. ``` working-copy://x-callback-url/move/?repo=my%20repo&source=from.txt&destination=to.txt ``` If you need to read multiple files you can use the /zip/ command that will return a base64-coded zip-archive of all the files in the directory specified by /path/. If you do not specify any /path/ the entire repository is archived and if /path/ points to a single file, you will get a zip containing just this file. When you zip up entire repositories, the .git directory is not included unless /.git=1/ is passed along. ``` working-copy://x-callback-url/zip/?x-success=my-app://x-callback-url/read?path=/&repo=my%20repo ``` The /commit/ command can be used on single files, directories or the entire repository. You use the /path/ parameter to specify the files to take into account, where a missing or empty parameter means the entire repository is checked for modified files to commit. To avoid accidentally committing unexpected changes the /limit/ parameter is checked and if there are more changed files covered by /path/ than allowed by /limit/ the commit fails. The default is /limit=1/ but you can set it to large values if you intentionally want to commit all changed files. You can supply a /message/ parameter for the commit message and formatting/wrapping this /message/ in accordance with [best practices](http://git-scm.com/book/ch5-2.html#_commit_guidelines) is your responsibility. If no /message/ is supplied a dialog is shown to commit the given files. Since this requires user interaction it's allowed without the callback /key/. ``` working-copy://x-callback-url/commit/?repo=my%20repo&path=&limit=999&message=fix ``` If you need to determine the status of the repository, the files that are modified or even all the files it contains, you can use the /status/ command. It takes a /path/ parameter and has the same default value and interpretation as for the [commit](https://workingcopyapp.com/committing) command. Normally you will only get the status for files that have changed since the last commit, but this behaviour can be changed by adding the parameter /unchanged=1/. If path points to a directory you will get the status for all files in the directory and for sub-directories as well. To limit this, you can specify a maximum depth, where /depth=1/ will include the contents of the immediate sub-directories of /path/ but no deeper. ``` working-copy://x-callback-url/status/?repo=my%20repo&unchanged=1 ``` ``` [{"name": "README.md", "path": "README.md", "status": "modified", "kind": "Markdown", "size": 355}, {"name": "src", "path": "src", "status": "unchanged", "kind": "directory"}, {"name": "main.c", "path": "src/main.c", "status": "unchanged", "kind": "C source", "size": 4510} …… ] ``` The results are delivered as JSON and note the difference between /path/ which is relative to the root of the repository and /name/ that is just the filename. Use the /push/ command to send commits back to the origin remote. If you need to authenticate, the push command will wait until you have entered your credentials. ``` working-copy://x-callback-url/push/?repo=my%20repo ``` You can push to other remotes than origin by using the /remote/ parameter. ``` working-copy://x-callback-url/push/?repo=my%20repo&remote=heroku ``` You can push all repositories remotes by using wildcards on the form /repo=*/ where the asterix matches one or more characters, but these wildcards are only resolved against name, not remote URLs. As with other special characters /*/ needs to be URL-encoded as /%2A/. ``` working-copy://x-callback-url/push/?repo=%2A ``` The /pull/ command fetches and merges changes from your origin remote. If you need to authenticate, the pull command will wait until you have entered your credentials. Any merge conflicts will count as a error. ``` working-copy://x-callback-url/pull/?repo=my%20repo ``` Just like the /push/ command you can use the /remote/ parameter to pull from non-origin remotes and /repo/ parameter can contain wildcards. The /fetch/ command fetches from your origin remote and if you need to authenticate, the command will wait until you have entered your credentials. ``` working-copy://x-callback-url/fetch/?repo=my%20repo ``` Just like the /pull/ command you can use the /remote/ parameter to fetch from non-origin remotes and /repo/ parameter can contain wildcards. Default behaviour is to switch to a existing branch which requires that there are no current modifications. You can specify /branch=$current/ to checkout the branch currently being shown in the app, which is not the same thing as the current branch for the repository, which there is no need to checkout. To create a new branch during checkout use /mode=create/ or /mode=ensure/ to only create the branch when missing. ``` working-copy://x-callback-url/checkout?repo=my%20repo&branch=develop ``` Delete a branch if all commits are available in other branches. Set /mode/ to /force/, /refuse/ or the default /prompt/ to control behaviour when commits would be lost. ``` working-copy://x-callback-url/delete?repo=my%20repo&branch=develop&mode=refuse ``` Use this command to merge branches programmatically. ``` working-copy://x-callback-url/merge?repo=my%20repo&branch=develop ``` The /branch/ parameter names the branch that will be merged on the current branch, but to merge the remote counterpart of the current branch you leave the /branch/ parameter missing or empty. You can specify a particular remote for the /branch/ with the /remote/ parameter using either a remote name or URL. This remote will be fetched before merge to make sure the remote branch is up-to-date and if you specify /create=1/ the remote will even be created if missing. If there are any conflicts the user will be asked to fix these interactively followed up by a commit to finish the merge. You can disable this with the parameter /resolve=0/ and merge conflicts will count as error. Use the /webdav/ command to start or stop the [internal WebDAV server](https://workingcopyapp.com/manual.html#webdav-server). The /cmd/ parameter can be either /start/ or /stop/ where the default is /cmd=start/. ``` working-copy://x-callback-url/webdav/?cmd=start ``` Use the /repos/ command to get information about name, status, current branch and remotes for all repositories inside Working Copy in JSON format. ``` working-copy://x-callback-url/repos ``` ``` [{"name":"welcome to working copy", "branch":"master", "head":"d39002a…", "status":"tap to learn more", "remotes":[]}, {"name":"libgit2", "branch":"master", "head":"e70d822…", "status":"nothing to commit", "remotes": [{"name":"origin", "fetch":1,"push":1,"url":"https:\/\/github.com\/libgit2\/libgit2.git"}]} ] ``` It can get a little complicated to work with this JSON, but [Workflow](https://itunes.apple.com/app/workflow-powerful-automation/id915249334?mt=8&at=1000lHq) users can try this small [workflow](https://workflow.is/workflows/a7fb61375f474925a1c047c7e28b3017) that asks the user to pick one of the available repositories and could be used as a component for something bigger. You will need to insert your URL key in the first action. You can read a list of commits with the /log/ command. You need to specify a /repo/ and will get the newest 10 commits in JSON format, unless /limit/ parameter overrides this. To only get commits relevant for particular files or diretories, use the /path/ parameter or use /branch/ to only get commits for that particular branch. ``` working-copy://x-callback-url/log?repo=my%20repo ``` ``` [{"summary":"fix README.md spelling","id":"af6a47f8a831d17513ec13357d11cf3cab222b19", "author":"Anders Borum ", "timestamp":"2017-01-08T15:06:20.000Z", "description":"","parent":["133ca4376290313d0359f8ed97a93125a4e2f297"]}, {"summary":"import image assets","id":"47040b679c5bfd8c99f1d0df7b04c5a9af157adc", "author":"Anders Borum ", "timestamp":"2017-01-08T15:05:07.000Z", "description":"longer description", "parent":["7f03af16e1bbe820ae48d25a27143c5765007930"]} ] ``` Use the /branches/ command to enquire about all local and remote branches in a repository. ``` working-copy://x-callback-url/branches?repo=my%20repo ``` ``` [{"name":"master", "head":"af6a47f8a831d17513ec13357d11cf3cab222b19", "latest":"2017-01-08T15:06:20.000Z"}, {"name":"origin/master", "head":"af6a47f8a831d17513ec13357d11cf3cab222b19", "latest":"2017-01-08T15:06:20.000Z"}, ...] ``` Use the /init/ command to create a new repository without any files or remotes, where /name/ parameter must not be used by any other repository. ``` working-copy://x-callback-url/init/?name=new%20repository ``` Use the /clone/ command clone repository with /remote/ parameter. Result of callback will be the name of the repository inside Working Copy. ``` working-copy://x-callback-url/clone/?remote=https%3A%2F%2Fgithub.com%2Flibgit2%2Flibgit2 ``` Use this command to automate the [SSH Command](https://workingcopyapp.com/manual/ssh-command) feature. Remember that this will upload your local repository before running the /cmd/ and download files that change while the command is running. If you just want to run a command on a remote server there are perhaps other apps better suited for this. ``` working-copy://x-callback-url/ssh-command/?server=remote.server.net&cmd=run%20tests ``` You can specify /source=subdir/ and /remote=dir/ to specify the local and remote directories to keep upload to and download from. The default for /source/ is the repository root and the default for /remote/ is the remote home directory. Sometimes you want to run several x-callback-url commands in Working Copy and this becomes very convoluted with multiple levels of encoding. You would need to start with the last command and work your way to the first building a larger and larger /x-success/ chain. To achieve the same result, use the /chain/ command. ``` working-copy://x-callback-url/chain?repo=my%20repo&command=commit&message=fix&command=push working-copy://x-callback-url/chain?repo=%2A&command=pull&command=push ``` You use the /command/ parameter once for each command. The parameters before the first /command/ parameter is shared by all commands, and parameters meant for a single command is specified after the /command/ it applies to but before the next one. Often parameters /key/, /repo/ and /x-error/ are shared. You can specify /x-success/ as a shared parameter, but it will only be used for the last command since the earlier commands are bound by the command chain. Inside Working Copy you can create Universal Links that describe repositories or files, branches or commits inside repositories with the Share Sheet. [https://workingcopyapp.com/git/#repo=https://github.com/twbs/bootstrap&path=README.md](https://workingcopyapp.com/git/#repo=https://github.com/twbs/bootstrap&path=README.md) Their primary purpose is to make it easy to jump to specific content in Working Copy, but they also serve a purpose as x-callback-url parameters. You can include a Universal Link in the /url/ parameter and all the inner parameters will be extracted and used making the following two commands equivalent: ``` working-copy://x-callback-url/read?url=https%3A%2F%2Fworkingcopyapp.com%2Fgit%2F%23repo%3Dhttps%3A%2F%2Fgithub.com%2Ftwbs%2Fbootstrap%26path%3DREADME.md working-copy://x-callback-url/read?repo=https://github.com/twbs/bootstrap&path=README.md ``` This is useful when you start a Workflow from within Working Copy, as you can specify the file, directory or repository to act on and send this along as a single parameter. Use [x-callback-url/read](https://workingcopyapp.com/url-schemes.html#reading) with /type=url/ to get back the universal url of a file picked by the user. [image:06978525-89DD-4CBE-98EA-CCEB8E739690-3951-0000005354FA736A/drafts-example.png] If you are using [Drafts](https://itunes.apple.com/app/id905337691?mt=8&uo=4&at=1000lHq) by [Agile Tortoise](http://agiletortoise.com/drafts/), there are some tricks that make it much easier to make [URL templates](https://agiletortoise.zendesk.com/hc/en-us/articles/202843484-Templates-and-Tags). First line in a draft can be referenced as /[[title]]/ and the remainder as /[[body]]/. Often you want to send a draft into Working Copy. You need to use the [write](https://workingcopyapp.com/url-schemes.html#writing) command, specifying filename (path), repository (repo), access key (key), content (text) and perhaps you want to jump back to Drafts when done (x-success={{drafts://}}). Imagine that you need to create a new Jekyll post from a draft. The date determines the filename and the content is a combination of YAML front matter and content. Note how /%0a/ is encoded manually to have newline in the front matter. For more complicated actions it is probably a good idea to use javascript to compose the URL with the [Script](https://agiletortoise.zendesk.com/hc/en-us/articles/202771590-Action-Step-Script) action step using the clipboard as temporary storage. ``` working-copy://x-callback-url/write/?repo={{jekyll-site}}&path={{posts/}}[[date]].md&text=---%0a{{layout: post}}%0a{{title: }}[[title]]%0a---%0a[[body]]&key={{12345678}} ``` [image:7E152629-9472-493A-B713-45490BE4D8B8-3951-0000005354F878AA/textastic-new.gif] URL callbacks can get pretty complicated when you want to send the result of one callback along to another URL callback. To create a new text file in [Textastic](http://www.textasticapp.com/v4/manual/x-callback-url.html) with the filename "two words.txt" you would use the following URL: ``` textastic://x-callback-url/new?name=two%20words.txt&text=hello%20there ``` If you wanted to create this file with content from the file /README.md/ in the repository /my repo/ you would need to URL escape the callback to Textastic which gives rise to double-encoding of parameters passed along. /space → %20 → %2520/ ``` working-copy://x-callback-url/read/?repo=my%20repo&path=README.md&x-success=textastic%3A%2F%2Fx-callback-url%2Fnew%3Fname%3Dtwo%2520words.txt%26text%3D ``` You could also start a new email with the contents of this file, by making /x-success/ use the /mailto:/ scheme with something like ``` working-copy://x-callback-url/read/?repo=my%20repo&path=README.md&x-success=mailto%3A%3Fbody%3D ``` If you need to debug your callbacks, setting /x-success=mailto%3A%3Fbody%3D/ can be very helpful. [Controlling Working Copy with URL schemes](https://workingcopyapp.com/url-schemes.html#reading) # Complete List of iOS URL Schemes for Third-Party Apps (Always-Updated) [image:1E5AA0CE-AE34-41F7-A51C-CF5FBD89145B-3654-0000004D4C9CF2CA/1*FQkY321NuzxqR_HQMqX2YA.png] [image:EBD21A3A-2CB8-4F96-B3A6-77EE5B433C8C-3654-0000004D4C9AFE52/_1*FQkY321NuzxqR_HQMqX2YA.png] Since iOS 13, you could open any app on your iPhone from a custom workflow in the Shortcuts app using the “Open App” script—something that should have been in Shortcuts from the start… [Complete List of iOS URL Schemes for Third-Party Apps (Always-Updated)](https://medium.com/@contact.jmeyers/complete-list-of-ios-url-schemes-for-third-party-apps-always-updated-5663ef15bdff) # Hipster Green Palette ``` t.prefs_.set('color-palette-overrides',["#000000", "#b6214a", "#00a600", "#bfbf00", "#246eb2", "#b200b2", "#00a6b2", "#bfbfbf", "#666666", "#e50000", "#86a93e", "#e5e500", "#0000ff", "#e500e5", "#00e5e5", "#e5e5e5"]); t.prefs_.set('foreground-color', "#84c138"); t.prefs_.set('background-color', "#100b05"); t.prefs_.set('cursor-color', 'rgba(35,255,24,0.5)'); ``` #000000 #b6214a #00a600 #bfbf00 #246eb2 #b200b2 #00a6b2 #bfbfbf #666666 #e50000 #86a93e #e5e500 #0000ff #e500e5 #00e5e5 #e5e5e5 #84c138 #100b05 #24ff18 # Newsletters + Podcasts = Big Money? | Matt Birchler My small business idea I wish someone was doing today and making a killing at: Someone works with writers of popular paid newsletters and records and edits audio versions of the newsletter that the author can publish as a podcast. Maybe this person even publishes for the author as well so the author doesn't have any additional work to do. I guess the thing to do would be to have 2 fee options: [$X](https://twitter.com/search?q=%24X) /month to record and give you the files $2X/month to record and publish for you I think Stratechery is leading the way here, and I don't think I'd still be subscribed if there wasn't a podcast version that came out a few hours after the email. I'll read when I can, but I always have time to do a 10-20 minute podcast. Also, I know companies like Curio have tried to do something like this, but I have always found that to be wildly inconsistent. Sometimes episodes got podcast versions, sometimes they didn't 🤷‍♂️ Anyway, I don't know if this is a good idea or not, I haven't done the market research, but I know I would subscribe to more paind newsletters if I knew I could reliably listen to high quality versions of them as well. [Newsletters + Podcasts = Big Money? | Matt Birchler](https://typefully.com/mattbirchler/GlMjaHk) # Neocities * Create your own blog, and use a script to add new blog posts. * Integrate external HTML editors / upload tools. * Provide updated air quality information from a gauge at your house. * Conduct regular backups of your site. ## Rules * Do not spam the server with tons of API requests. * Try to limit recurring site updates to one per minute. * Do not use the API to "game" the site (increase ranking by manipulating our algorithms, or constantly updating your index.html with the same content). Sites caught doing this will be de-listed from the browse page. * Do not use the API to data mine / rip all of the sites. ## Command Line Usage If you're just looking for a command line interface to the API, [go here](https://neocities.org/cli). ## Libraries There are client libraries available for popular programming languages to make it easier to work with the API: The Neocities API is a [REST](http://en.wikipedia.org/wiki/Representational_state_transfer) API, which uses query parameters for input, and returns data in the [JSON](http://en.wikipedia.org/wiki/JSON) format (except for file downloads). It uses client-side [HTTP AUTH](http://en.wikipedia.org/wiki/Basic_access_authentication) to authenticate, using your user/site name and password as the credentials. It is designed to play nicely with the most common HTTP libraries available in programming languages, and can be easily used with *cURL* (a command-line tool for making HTTP requests you can use by opening a terminal on your computer). *That's a lot of buzz words if you're new to programming.* Don't worry, it's easier than it sounds! We'll walk you through some working examples you can get started with. ## POST /api/upload Uploads files to your site. You can upload as many files as you want with a single query, as long as the entire request stays within the disk space limit. The parameter name should be the name of the file, with the extension so we know what kind of file it is (index *.html* ). ### Examples ###### Using cURL Upload a single local file ( *local.html* ), which will be named *hello.html* on your site: ``` $ curl -F "hello.html=@local.html" "https://USER:PASS@neocities.org/api/upload" ``` ###### Using Node.js This example uses the [neocities](https://github.com/neocities/neocities-node) module. You can install it by running *npm install neocities --global* in your terminal. ``` var neocities = require('neocities') var api = new neocities('YOURUSERNAME', 'YOURPASSWORD') api.upload([ {name: 'hello.html', path: './local.html'} ], function(resp) { console.log(resp) }) ``` ## POST /api/delete Deletes files from your site. Provide a *filenames* argument with an array of filenames you wish to delete. You can delete any files except index.html. *Be careful with this API call.* There is no way to undo a delete! ### Examples ###### Using cURL Delete *img1.jpg* and *img2.jpg* from your site: ``` curl -d "filenames[]=img1.jpg" -d "filenames[]=img2.jpg" \"https://YOURUSER:YOURPASS@neocities.org/api/delete" ``` ###### Using Node.js ``` var neocities = require('neocities') var api = new neocities('YOURUSERNAME', 'YOURPASSWORD') api.delete(['img1.jpg', 'img2.jpg'], function(resp) { console.log(resp) }) ``` ## GET /api/list This call provides a list of files for your site. If you pass no arguments, it will return a list of all files. If you provide a *path* argument, it will return a list of files for the path. Dates conform to *RFC2822*. ### Examples ###### Using cURL ``` $ curl "https://USER:PASS@neocities.org/api/list" { "result": "success", "files": [ { "path": "index.html", "is_directory": false, "size": 1023, "updated_at": "Sat, 13 Feb 2016 03:04:00 -0000", "sha1_hash": "c8aac06f343c962a24a7eb111aad739ff48b7fb1" }, { "path": "not_found.html", "is_directory": false, "size": 271, "updated_at": "Sat, 13 Feb 2016 03:04:00 -0000", "sha1_hash": "cfdf0bda2557c322be78302da23c32fec72ffc0b" }, { "path": "images", "is_directory": true, "updated_at": "Sat, 13 Feb 2016 03:04:00 -0000" }, { "path": "images/cat.png", "is_directory": false, "size": 16793, "updated_at": "Sat, 13 Feb 2016 03:04:00 -0000", "sha1_hash": "41fe08fc0dd44e79f799d03ece903e62be25dc7d" } ] } ``` ``` $ curl "https://USER:PASS@neocities.org/api/list?path=images" { "result": "success", "files": [ { "path": "images/cat.png", "is_directory": false, "size": 16793, "updated_at": "Sat, 13 Feb 2016 03:04:00 -0000", "sha1_hash": "41fe08fc0dd44e79f799d03ece903e62be25dc7d" } ] } ``` ## GET /api/info This call lets you retreive information about a web site. This call does not require site authorization if you provide a *sitename* argument. Note that the sitename is the same as a username. If you provide auth credentials, you will receive the info for the auth user's site. Dates conform to *RFC2822* format, and there are helpers for parsing it into a time object for most programming languages. ### Examples ###### Using cURL ``` $ curl "https://neocities.org/api/info?sitename=youpi" { "result": "success", "info": { "sitename": "youpi", "hits": 5072, "created_at": "Sat, 29 Jun 2013 10:11:38 +0000", "last_updated": "Tue, 23 Jul 2013 20:04:03 +0000", "domain": null, "tags": [] } } ``` Getting your own site's info: ``` $ curl "https://YOURUSER:YOURPASS@neocities.org/api/info" ``` ###### Using Node.js Your site: ``` var neocities = require('neocities') var api = new neocities('YOURUSERNAME', 'YOURPASSWORD') api.info(function(resp) { console.log(resp) }) ``` Getting data for a different site - such as the [Madam FRP Manual](http://madamfrp.neocities.org): ``` var neocities = require('neocities') var api = new neocities('YOURUSERNAME', 'YOURPASSWORD') api.info('madamfrp', function(resp) { console.log(resp) }) ``` ## GET /api/key Returns an API key that you can use for the API instead of login credentials. It will automatically generate a new API key if one doesn't exist yet for your site. ### Examples ###### Using cURL ``` $ curl "https://USER:PASS@neocities.org/api/key" { "result": "success", "api_key": "da77c3530c30593663bf7b797323e48c" } ``` Using the api key for requests: ``` $ curl -H "Authorization: Bearer da77c3530c30593663bf7b797323e48c" \ https://neocities.org/api/info ``` ## Need something the API doesn't provide? If the API does not supply something you need, [contact us](https://neocities.org/contact) and we will try to add it! [Neocities](https://neocities.org/api) [file:8CDFC5D7-8045-44A4-81F8-FCCD77C15777-4002-0000006F29210522/rfc2388.txt] https://www.ietf.org/rfc/rfc2388.txt # There Is More Than One Way to Be Exhausted by “Turning Red” [image:C6221B47-CA15-4B34-94CF-224A2E90BC7A-1520-00000027BD9CE383/hu-turning-red.jpeg] “Turning Red,” Pixar’s twenty-fifth feature film, contains a lot of firsts. It’s the first Pixar feature directed solely by a woman, Domee Shi, whose “Bao,” from 2018, won an Oscar for Best Animated Short. It’s also the first Pixar film set in Canada—in Toronto, where Shi grew up. The coming-of-age story follows a thirteen-year-old Chinese Canadian girl, Meilin Lee (voiced by Rosalie Chiang), whose first period triggers yet another first: she turns into a giant red panda. This transformation recurs whenever she is overcome with intense feelings, be they of lust, rage, or embarrassment. To a great extent, the film is a depiction of how Meilin adjusts to her new bodily functions around her school friends and, especially, her strict Chinese mother, Ming (Sandra Oh). The “gross red monster,” as Meilin calls herself whenever she takes on the panda form, can be read as an obvious metaphor for menstruation—at least at first. (It could be a metaphor for blushing, too, and maybe there’s some palimpsest trace of Communist menace in there as well.) Like the monsters in “Monsters, Inc.” or Bing Bong the elephant in “ [Inside Out](https://www.newyorker.com/magazine/2015/06/29/head-trips) ” (on which Shi worked as a storyboard artist), Meilin’s red panda initially appears as though it were a figment of a child’s imagination. Unlike previous movies such as “Monsters, Inc.,” “Turning Red” makes the monster real to children and adults alike. “Perhaps we should talk about why this is happening,” Ming says the first time her daughter emerges from her bedroom as a fluffy, red creature. “You’re a woman now, and your body is starting to change.” Ming doesn’t bat an eye at her daughter’s metamorphosis because she has gone through the same process herself. As Meilin soon learns, turning into a red panda is an ancient, matrilineal Chinese curse. In this way, the gendered trope of “Turning Red” (getting your period) bleeds into the ethnic trope of “Turning Red” (becoming a red panda). The parallel red scares here are united under the trope of turning Chinese. And why not? In the growing panoply of culturally inflected Pixar films, it was only a matter of time before the studio featured China. This, too, is a first for Pixar. Since its release on Disney+ earlier this month, “Turning Red” has been received positively for its portrayal of women’s reproductive processes and Chinese Canadian culture. It unfolds amid the turmoil and chaos of Chinese girlhood in 2002, when Tamagotchis were all the rage, cell phones hadn’t completely caught on yet, everyone drank milk from bags, and Toronto’s Rogers Centre was still called the SkyDome. “Toronto is awesome, and I don’t see it in movies a lot,” [Shi told](https://torontolife.com/culture/how-domee-shi-turning-red-became-new-pixar-superstar/) Toronto /Life./ “And everyone at Pixar was on board with the idea. For some reason, Americans are always amused by Canadian things. It actually helped me sell the pitch even more.” The cultural specificity of “Turning Red” irked an American critic, Sean O’Connell of CinemaBlend, who, in a review so controversial that it has since been taken down, [wrote](https://www.cbc.ca/news/entertainment/turning-red-review-pulled-1.6377614) that the film “feels like it was made for Domee Shi’s friends and immediate family members.” The review continued: “There’s an audience out there for /Turning Red/. And when that audience finds the movie, I’ve no doubt they will celebrate it for the unique animal that it is. In my opinion, however, that audience is relatively small, and I’m not part of it.” [ /Support The New Yorker’s award-winning journalism. [Subscribe today »](https://subscribe.newyorker.com/subscribe/splits/newyorker/NYR_Generic?source=HCL_NYR_IN_CONTENT_SUBSCRIBE_0_ZZ)/ ] As a Chinese immigrant who grew up in Canada around the same time as Shi and Meilin, I might be considered among those O’Connell imagines to be the target audience for “Turning Red.” (In elementary school, I even picked the red panda as my chosen species for a science project.) Yet I, too, found the film, as O’Connell puts it, to be “a jumble of familiar ideas and manic energy that exhausted me”—though perhaps not in the same way that it exhausted him. The manic energy is surely intentional, at least insofar as puberty works up nontrivial surges of eros and frenetic drive that need to get displaced /somewhere/. (As a Pixar heroine, Meilin is obnoxious enough to be weirdly refreshing.) In “Turning Red,” Meilin and her friends’ sexual awakening largely gets worked out through their collective obsession with the boy band 4*Town, a group that scans like an algorithmic mashup of ’NSync, Backstreet Boys, O-Town, and the Canadian pop sensation soulDecision. In private, Meilin explores her burgeoning desires by sketching her crush in exaggeratedly chiselled form—an Adonis-like rendering that seems to outpace Meilin’s own recognition of her desires. The unabashed portrayal of adolescent sexuality is inspired, but the film’s embrace of girlish horniness gets muddied by its parallel representation of Chineseness. When Meilin first “turns red,” Ming lurks outside her classroom window with a box of pads, drawing the attention of seemingly the entire school. Chinese mothers /are/ overbearing, sure. But they are not typically overbearing in /this/ way. In its effort to meld a celebration of Chinese culture with the destigmatization of gendered taboos, “Turning Red” renders these tropes as at once hyper-specific and alienating. The movie’s Asian stereotypes are neither winkingly ironized nor reanimated into something like realism. The CinemaBlend review of “Turning Red” wasn’t smart, but it wasn’t necessarily wrong. Had the critic pushed his analysis further, he might have discerned that the chaotic overlap of identity-politics plots—Chinese mothers, horny girls, the cold, hard facts of reproductive biology—is exactly what guards the film from any meaningful critique. If one sees the movie as too sexualized or adult-themed for a young audience, that suggests only the conservatism and squeamishness of the critic. The literalism of “Turning Red” is, of course, part of the point—in making a topic that is still socially taboo friendly to all ages, Pixar works to undo the shame attached to something as banal as getting your period. But the film does so by distorting other cultural tropes, such as the tiger mother, who, in this rendition, literally shoves pads into her daughter’s face. Gender and ethnicity work as mutually reinforcing shields; in order to make female puberty everyone’s problem, “Turning Red” turns it into a Chinese person’s problem. It’s a film as messy as its subject matter. [There Is More Than One Way to Be Exhausted by “Turning Red”](https://www.newyorker.com/culture/culture-desk/there-is-more-than-one-way-to-be-exhausted-by-turning-red) # Scripting and Automation Scripts in BBEdit can be executable Unix files, AppleScript files, text factories, or Automator workflows. These are run simply by loading the item and calling it directly, without providing any inputs. (Naturally, AppleScript scripts and Automator actions can query the application, and #! scripts have some information passed to ` argc ` and ` argv ` as usual.) The Scripts menu (and palette) contains all eligible items from the Scripts folder, which can be found in ~/Library/Application Support/BBEdit/Scripts. ## Automating BBEdit ## BBEdit with other applications ## BBEdit and Unix * [Edit a file in BBEdit from SSH on another machine!](https://github.com/cngarrison/rbbedit) ## Text Selection and Text Navigation Scripts * [Delete entire line](http://www.allthecandyintheworld.com/bbedit/scripts.html) * [Comment entire line](http://www.allthecandyintheworld.com/bbedit/scripts.html) ## Applescript Snippets for BBEdit These snippets illustrate techniques for doing stuff in BBEdit with Applescript. They are not meant to be full scripts, but show techniques that you might need for scripts /you/ write. ## More Don’t see what you’re after? Try these other wiki pages: * [Using BBEdit and (your language)](http://www.bbeditextras.org/wiki/index.php?title=Using_BBEdit_and_%28your_language%29) * [Using BBEdit to make eBooks](http://www.bbeditextras.org/wiki/index.php?title=Using_BBEdit_to_make_eBooks) A BBEdit package also contain the script you’re looking for: check out this wiki’s list of [Packages](http://www.bbeditextras.org/wiki/index.php?title=Packages) [Scripting and Automation](https://www.bbeditextras.org/scripting-and-automation/) # Tips and Tricks - BBEdit * Most things you can do in BBEdit can be done with a keystroke. You can *add or edit keystrokes* in the “Menus & Shortcuts” Preferences pane. * *[Clippings](http://www.bbeditextras.org/wiki/index.php?title=Clippings)* are little bits of text that you can add quickly to your documents. You can assign a keystroke to any clipping, or use auto-complete. (They will show up in auto-complete if they are in the clipping set for the document type you’re working on.) Clippings can also have placeholders (jump points) and run scripts to generate content. * The *Expert Preferences* section in BBEdit help tells you how to change preferences that don’t appear in the BBEdit Preferences pane. * The BBEdit User Manual contains a very detailed *regular-expression reference* for grep searches. * BBEdit keeps a selection history for every open document. Use “Jump Back” and “Jump Forward” on the Search menu. (See above about editing keystrokes.) * Many menu commands have *extra functionalities* that toggle into view if you hold down the Shift or Option key (or sometimes both) while the menu is pulled down. (e.g. “Save” turns into “Save All” with the Option key.) * If you don’t want BBEdit to start up with the same *state* as when you shut it down (open documents and such), hold down the Shift key while launching. Note: This also will skip items in ~/Library/Application Support/BBEdit/Startup Items/. * BBEdit supports *multiple clipboards* (up to six) when you cut or copy. They stack on top of one another until you hit six, and then wrap around, first in, first out, so the last six things you copied or cut are always available for pasting. By default, Paste inserts text from the most recently used clipboard. To see what is on your six clipboards, use Show Clipboard on the Edit menu. Control-[ and control-] cycle forwards and backwards through your clipboards in memory, whether the Clipboard window is open or not. Command-Shift-V pastes only what’s in the previous clipboard, and using it repeatedly will replace the previous pasted clipboard with the one before it. * To open *all the files in a folder as a project*, drop the folder onto the BBEdit icon in the dock. * You can view formatted *Markdown* in the preview window, which updates as you type. You can also save your Markdown document as HTML. Also, if you copy the contents of the preview window, you will get formatted text that you can pass into any word professor or other application that supports styled text. * If you want to change the *default size of your editing window*, choose “Save default project window” from the window menu. * To manually manage font smoothing for *proportional fonts*, go to the Terminal window and do the following: * defaults write com.barebones.bbedit FontSmoothingThreshold -int N (“N” is some integer reflecting font size) * To manually manage font smoothing for *fixed-width fonts*, go to the Terminal window and do the following: * defaults write com.barebones.bbedit FixedWidthFontSmoothingThreshold -int N (“N” is some integer reflecting font size) * You can use *[INI files](http://www.bbeditextras.org/wiki/index.php?title=INI_files)* for global and directory-specific preferences [Tips and Tricks](https://www.bbeditextras.org/tips-and-tricks/) # Making Pages EPUBs readable in BBEdit with GREP I keep meaning to write a full article on using GREP to edit EPUB, but until I do, at least let me share some of the tools I'm working with. Suppose you're testing Pages, Apple's word processing software that exports to EPUB, and you want to be able to look at the code to see just how Pages translates from word processing document to XHTML. Or why on earth it stuck an image between two words in your text. Unfortunately, Apple doesn't add returns, and frankly, it's tough to slog through: [image:C196E4F4-673A-439C-B471-71C5BCFD1DC1-7348-00001FCE647741FC/4973220185_03a9aa0bc8.jpg] You can use GREP to add a return before each opening tag that doesn't already have one. Search for `([^\r])(<[^/])` (find a less than sign that is NOT after a return and NOT followed by a backslash) and replace it with `\1\r\2` (whatever was found before the less than sign, followed by a return, followed by the less than sign and whatever followed it). Then your XHTML will look like this: [image:5513BAA4-79B1-47E9-9C1C-56AC5B17543C-7348-00001FCE6441F914/4973839030_88bd733a5f.jpg] And you might actually be able to assess Pages' usefulness as an EPUB creation tool. And I know I'm far from the first person to ask this, but how is it that Apple can get away with charging more than $100 for a product in Europe that in the US only costs $79 (and about $50 if you buy it on [Amazon](https://web.archive.org/web/20170927183527/http://www.amazon.com/exec/obidos/ISBN=B0014X2UAK/elizabethcastroA/ref=nosim/) )? [Making Pages EPUBs readable in BBEdit with GREP](https://web.archive.org/web/20170927183527/http://www.pigsgourdsandwikis.com/2010/09/making-pages-epubs-readable-in-bbedit.html#) # Helper scripts in BBEdit packages - All this August 31, 2013 at 11:50 PM by Dr. Drang I didn’t put this in [yesterday’s post](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-3/) because it was already 1,600 words long, but I need to write it down before I forget. It’s the set of tricks I learned—mostly from Patrick Woolsey of Bare Bones support—on how to put a complicated BBEdit package together. By “complicated,” I mean a package in which the user-facing scripts—the ones you see in a menu—call other scripts that you want to include in the package but don’t want users to call directly. The tricks concern where to store these helper scripts and how to call them from the user-facing scripts. Where to store them is easy. A BBEdit package is simply a folder whose name has been given a `.bbpackage` extension. According to the [BBEdit manual](http://pine.barebones.com/manual/BBEdit_10_User_Manual.pdf), the folder structure for the package should look like this: [image:44A4CFA2-D8FB-4AFC-BC6F-72D20FDCD203-7348-00001F9DB908DBDC/9642569108_53e606ac12_o.png] Basically, everything inside the Contents folder is optional. If you have clippings, you’ll need the Clippings folder to put them in. Likewise for the Language Modules, Preview CSS, Preview Templates, Scripts, and Text Filters folders. That leaves the Resources folder and the Info.plist file, which the manual mysteriously says “are currently not required, and are reserved for future use.” According to Patrick, the future is now. When I asked where helper scripts should go, he told me to put them in the Resources folder, which makes sense, given its name. That leaves us with the problem of how to call a helper script stored in a package’s Resources folder, which is a little trickier because it depends on what’s doing the calling. If the user-facing script is a Unix script (that is, a shell, Perl, Python, Ruby, etc. script), then the working directory for the script is the folder in which it’s located—typically the Scripts or Text Filters folder of the package. So when you call a helper script in Resources, you need to use a relative directory path to climb up and then down the directory tree. An example might help. Let’s say you have a helper script called `upper` in the packages Resources folder. It’s a Python script that takes the text fed to it in `stdin` and returns an upper case version of it: ``` python: 1: #!/usr/bin/python 2: 3: from sys import stdin, stdout 4: original = stdin.read() 5: stdout.write(original.upper()) ``` Now let’s say you want to create a Text Filter that calls `upper`. Here’s a shell script that would work. ``` bash: 1: #!/bin/bash 2: 3: ../Resources/upper ``` Notice the relative directory path used to find `upper`. That’s where `upper` is located relative to the shell script in the Text Filters folder. This is, of course, a contrived example. It’s far too simple to require a helper script, but the principle of using a relative path applies in more complicated situations. The same idea works in Clippings, too. For example, the “Flickr original image” clipping in [my WP-MD package](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-3/) is saved in the Blogging.md folder inside the package’s Clippings folder and is defined this way: ``` #SELSTART##SYSTEM../../Resources/flickroriginal##SELEND# ``` Here you see that the relative path needs to climb up two levels before climbing down into the Resources folder. AppleScripts don’t follow the same rules as Unix scripts. Say you have this AppleScript, called PWD, saved in your package’s Scripts folder: ``` applescript: tell application "BBEdit" to set selection to do shell script "pwd" ``` Does it insert the path to the directory it’s stored in? No, it inserts a single slash (/), the path to the root directory. So getting the path to the package’s Resources directory can’t be done through `do shell script "pwd"`. There is, however, a similar AppleScript construct that works: `path to me`. Here’s how I get the POSIX-style path to a package’s Resources directory in an AppleScript stored in the package’s Scripts directory: ``` applescript: tell application "Finder" to set cPath to container of container of (path to me) as text set rPath to (quoted form of POSIX path of cPath) & "Resources/" ``` The variable `me` refers to the AppleScript itself. Its `container` is the Scripts directory, and the `container` of that is the Contents directory. Therefore, the `cPath` variable created by the first line is an absolute path to the package’s Contents folder. We need to use `tell application "Finder"` because `container` isn’t part of regular AppleScript, it’s in the Finder’s dictionary.[1](http://www.leancrew.com/all-this/2013/08/helper-scripts-in-bbedit-packages/#fn:sys) The second line then gets the POSIX form of `cPath`, makes sure it’s properly quoted (very important because the absolute path will include at least one space), and tacks on the Resources subdirectory. With `rPath` defined this way, you can call a helper script in the Resources folder via something like ``` do shell script rPath & "upper" ``` Several of the scripts in [my WP-MD package](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-3/) use this technique. If I remember correctly, TextMate has some environment variables defined to help the bundle programmer access directories within the bundle to call helper scripts. BBEdit package programming lacks that convenience, but once you know these tricks, adding helper scripts to your packages is pretty easy. [Helper scripts in BBEdit packages - All this](http://www.leancrew.com/all-this/2013/08/helper-scripts-in-bbedit-packages/) # Scripts for WordPress and BBEdit ## Part 1 - All this August 21, 2013 at 11:25 PM by Dr. Drang About this time last year, I switched from TextMate to [BBEdit](https://itunes.apple.com/us/app/bbedit/id404009241?mt=12&at=10l4Fv) and wrote a few scripts to help me blog directly from my new editor. As I explained in [these](http://www.leancrew.com/all-this/2012/08/blogging-from-stdin/) [two](http://www.leancrew.com/all-this/2012/08/editor-agnostic-editing/) posts, the goal of these scripts was to be editor-agnostic—I wanted them built as Unix utilities that communicated entirely through `stdin` and `stdout`. I’d then call them from shorter scripts, possibly AppleScripts, that included all the BBEdit-specific code. The scripts have worked quite well, but they aren’t in the same state they were a year ago, so I thought I’d post an update. Over the next few days, I’ll be posting about several little scripts I’ve built up over the past year. When I’m done I’ll put them in one or two BBEdit packages and make them available on GitHub. First, a script for publishing articles to the blog. It’s called `Publish Post.py`, and I keep it in the folder `~/Dropbox/Application Support/BBEdit/Text Filters`.[1](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit/#fn:db) It then appears in BBEdit’s menus as , where I’ve assigned it the keyboard shortcut ⌃⌘P. Here’s the script: ``` python: 1: #!/usr/bin/python 2: 3: import xmlrpclib 4: import sys 5: from datetime import datetime, timedelta 6: import pytz 7: import keyring 8: import subprocess 9: 10: ''' 11: Take text from standard input in the format 12: 13: Title: Blog post title 14: Keywords: key1, key2, etc 15: 16: Body of post after the first blank line. 17: 18: and publish it to my WordPress blog. Return in standard output 19: the same post after publishing. It will then have more header 20: fields (see hFields for the list) and can be edited and re- 21: published again and again. 22: 23: The goal is to work the same way TextMate's Blogging Bundle does 24: but with fewer headers. 25: ''' 26: 27: # The blog's XMLRPC URL and username. 28: url = 'http://mysite.com/path/to/xmlrpc.php' 29: user = 'myname' 30: 31: # Time zones. WP is trustworthy only in UTC. 32: utc = pytz.utc 33: myTZ = pytz.timezone('US/Central') 34: 35: # The header fields and their metaWeblog synonyms. 36: hFields = [ 'Title', 'Keywords', 'Date', 'Post', 37: 'Slug', 'Link', 'Status', 'Comments' ] 38: wpFields = [ 'title', 'mt_keywords', 'date_created_gmt', 'postid', 39: 'wp_slug', 'link', 'post_status', 'mt_allow_comments' ] 40: h2wp = dict(zip(hFields, wpFields)) 41: 42: # Get the password from Keychain. 43: pw = keyring.get_password(url, user) 44: 45: def makeContent(header): 46: "Make the content dict from the header dict." 47: content = {} 48: for k, v in header.items(): 49: content.update({h2wp[k]: v}) 50: content.update(description=body) 51: return content 52: 53: # Read and parse the source. 54: source = sys.stdin.read() 55: header, body = source.split('\n\n', 1) 56: header = dict( [ x.split(': ', 1) for x in header.split('\n') ]) 57: 58: # The publication date may or may not be in the header. 59: if 'Date' in header: 60: # Get the date from the string in the header. 61: dt = datetime.strptime(header['Date'], "%Y-%m-%d %H:%M:%S") 62: dt = myTZ.localize(dt) 63: header['Date'] = xmlrpclib.DateTime(dt.astimezone(utc)) 64: else: 65: # Use the current date and time. 66: dt = myTZ.localize(datetime.now()) 67: header.update({'Date': xmlrpclib.DateTime(dt.astimezone(utc))}) 68: 69: # Connect and upload the post. 70: blog = xmlrpclib.Server(url) 71: 72: # It's either a new post or and old one that's been revised. 73: if 'Post' in header: 74: # Revising an old post. 75: postID = int(header['Post']) 76: del header['Post'] 77: content = makeContent(header) 78: blog.metaWeblog.editPost(postID, user, pw, content, True) 79: else: 80: # Publishing a new post. 81: content = makeContent(header) 82: postID = blog.metaWeblog.newPost(0, user, pw, content, True) 83: 84: # Return the post as text in header/body format for possible editing. 85: post = blog.metaWeblog.getPost(postID, user, pw) 86: header = '' 87: for f in hFields: 88: if f == 'Date': 89: # Change the date from UTC to local and from DateTime to string. 90: dt = datetime.strptime(post[h2wp[f]].value, "%Y%m%dT%H:%M:%S") 91: dt = utc.localize(dt).astimezone(myTZ) 92: header += "%s: %s\n" % (f, dt.strftime("%Y-%m-%d %H:%M:%S")) 93: else: 94: header += "%s: %s\n" % (f, post[h2wp[f]]) 95: print header.encode('utf8') 96: print 97: print post['description'].encode('utf8') 98: 99: # Open the published post in the default browser. 100: subprocess.call(['open', post['link']]) ``` Apart from some fiddle changes here and there, the biggest difference between this version and the one from a year ago is my use of the Keychain to retrieve the blog’s password. I do this through the cross-platform [keyring library](https://pypi.python.org/pypi/keyring), an extraordinarily easy library to use that seems to be under active development. If you go back and read that [first post](http://www.leancrew.com/all-this/2012/08/blogging-from-stdin/) from a year ago, you’ll see that I was originally reading the password from a dotfile in my home directory. Two commenters, including the redoubtable Daniel Jalkut, took me to task for that, and I eventually decided they were right. At first I thought I’d use a `subprocess` call to the [security command](https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/security.1.html), but then I learned about `keyring` and decided that was the way to go. To make sure I had the password stored in Keychain in a way that was keyed to the blog URL and username, I ran this little interactive Python session: ``` import keyring keyring.set_password('http://mysite.com/path/to/xmlrpc.php', 'myname', 'mypassword') ``` Once that was set—and I could confirm that it was by searching in Keychain Access—I knew the retrieval done in Line 43 would work. The script works like this: I write my post in BBEdit with a brief header at the top that includes the title and keywords (tags). ``` Title: Scripts for WordPress and BBEdit Keywords: blogging, bbedit, programming, python Date: 2013-08-21 23:25:11 About this time last year, I switched from TextMate to [BBEdit][3] and wrote a few scripts to help me blog directly from my new editor. As I explained in [these][1] [two][2] posts, the goal of these scripts was to be editor-agnostic—I wanted them built as Unix utilities that communicated entirely through `stdin` and `stdout`. I'd then call them from shorter scripts, possibly AppleScripts, that included all the BBEdit-specific code. The scripts have worked quite well, but they aren't in the same state they were a year ago, so I thought I'd post an update. Over the next ``` The Date header line is optional. I include it only if I want the post to be published in the future. When I select , the post is published (Line 82), and the text in the editor window is updated with new header lines: ``` Title: Scripts for WordPress and BBEdit Keywords: bbedit, blogging, programming, python Date: 2013-08-21 23:25:11 Post: 2114 Slug: scripts-for-wordpress-and-bbedit Link: http://leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit/ Status: publish Comments: 0 About this time last year, I switched from TextMate to [BBEdit][3] and wrote a few scripts to help me blog directly from my new editor. As I explained in [these][1] [two][2] posts, the goal of these scripts was to be editor-agnostic—I wanted them built as Unix utilities that communicated entirely through `stdin` and `stdout`. I'd then call them from shorter scripts, possibly AppleScripts, that included all the BBEdit-specific code. The scripts have worked quite well, but they aren't in the same state they were a year ago, so I thought I'd post an update. Over the next ``` If I need to edit the post, I can do so with it in this form and use to update it. Because it has the Post line in the header, the script knows that it’s an existing post and acts accordingly in Line 78. The nicest thing about this is that there’s no need for a BBEdit-specific wrapper script. Scripts stored in the `Filters` folder are treated by BBEdit in a very Unix-like way, with the content of the current editing window acting as `stdin` and `stdout`. You might argue that I’m taking liberties with the concept of a filter. That the main value of this script is in its side effect—the part that does the posting—rather than in the minor alteration of the header. And you’d be right. Fortunately, I don’t have a CS degree and don’t lie awake at night worrying about things like that. A few months ago, [Ben Brooks](http://brooksreview.net/) was casting about for a simple script that would allow him to post to his WordPress site via Keyboard Maestro. I know nothing about KM, but after a bit of back-and-forth, we came up with a variation on this script that worked for him. He may have switched to something else by now, but last I knew he was still using it. [Scripts for WordPress and BBEdit, Part 1 - All this](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit/) ## Part 2 - All this August 22, 2013 at 8:43 PM by Dr. Drang In contrast to [yesterday’s script](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit/), which focused on pushing posts up to the blog, today’s scripts focus on accessing and downloading articles from the blog. Like the publishing script, they’re built in an editor-agnostic way; unlike the publishing script, they require an AppleScript wrapper to work smoothly with [BBEdit](https://itunes.apple.com/us/app/bbedit/id404009241?mt=12&at=10l4Fv). The scripts in today’s post are updated versions of those I wrote [about a year ago](http://www.leancrew.com/all-this/2012/08/editor-agnostic-editing/) when I first switched over to BBEdit. There are definitely changes, but the overall structure is the same. The first is called `get-post`. It takes as its required argument the ID number of the post you want to retrieve. The ID number is assigned by WordPress when a post is published. There’s nothing fancy about it; the ID starts at 1 when the blog is new and gets incremented with each new post. What `get-post` returns (via `stdout` ) is the header and body of the post. For this blog, ``` get-post 2114 ``` returns ``` Title: Scripts for WordPress and BBEdit, Part 1 Keywords: bbedit, blogging, programming, python Date: 2013-08-21 23:25:11 Post: 2114 Slug: scripts-for-wordpress-and-bbedit Link: http://leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit/ Status: publish Comments: 0 About this time last year, I switched from TextMate to [BBEdit][3] and wrote a few scripts to help me blog directly from my new editor. As I explained in [these][1] [two][2] posts, the goal of these scripts was to be editor-agnostic—I wanted them built as Unix utilities that communicated entirely through `stdin` and `stdout`. I'd then call them from shorter scripts, possibly AppleScripts, that included all the BBEdit-specific code. The scripts have worked quite well, but they aren't in the same state they were a year ago, so I thought I'd post an update. Over the next ``` and so on for the rest of the post. I use `get-post` to pull down older posts that I need to update or fix. If used from the command line, I can pipe its output straight into BBEdit: ``` get-post 2114 | bbedit ``` And if I ever switch away from BBEdit, I can do the same with whatever editor I move to. Even if the editor doesn’t have a command-line utility, I can pipe the output into [pbcopy](https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/pbcopy.1.html) ``` get-post 2114 | pbcopy ``` and paste it anywhere. Here’s the source code of `get-post`: ``` python: 1: #!/usr/bin/python 2: 3: import xmlrpclib 4: import sys 5: from datetime import datetime 6: import pytz 7: import keyring 8: 9: ''' 10: Return the header and body of post specified on the command line. The 11: post is identified by an ID number assigned sequentially by WordPress. 12: The header consists of a series of lines like 13: 14: Title: Many happy returns 15: Keywords: bbedit, mac, regex, text editing, unix 16: Date: 2012-08-20 23:54:06 17: Post: 1920 18: Slug: many-happy-returns 19: Link: http://leancrew.com/all-this/2012/08/many-happy-returns/ 20: Status: publish 21: Comments: 0 22: 23: It's separated from the body of the post by one or more blank lines. 24: ''' 25: 26: # The blog's XMLRPC URL and username. 27: url = 'http://mysite.com/path/to/xmlrpc.php' 28: user = 'myusername' 29: 30: # Time zones. WP is trustworthy only in UTC. 31: utc = pytz.utc 32: myTZ = pytz.timezone('US/Central') 33: 34: # The header fields and their metaWeblog synonyms. 35: hFields = [ 'Title', 'Keywords', 'Date', 'Post', 36: 'Slug', 'Link', 'Status', 'Comments' ] 37: wpFields = [ 'title', 'mt_keywords', 'date_created_gmt', 'postid', 38: 'wp_slug', 'link', 'post_status', 'mt_allow_comments' ] 39: h2wp = dict(zip(hFields, wpFields)) 40: 41: # Get the post ID from the command line. 42: try: 43: postID = int(sys.argv[1]) 44: except: 45: sys.exit() 46: 47: # Get the password from Keychain. 48: pw = keyring.get_password(url, user) 49: 50: # Connect. 51: blog = xmlrpclib.Server(url) 52: 53: # Return the post as text in header/body format for possible editing. 54: post = blog.metaWeblog.getPost(postID, user, pw) 55: header = '' 56: for f in hFields: 57: if f == 'Date': 58: # Change the date from UTC to local and from DateTime to string. 59: dt = datetime.strptime(post[h2wp[f]].value, "%Y%m%dT%H:%M:%S") 60: dt = utc.localize(dt).astimezone(myTZ) 61: header += "%s: %s\n" % (f, dt.strftime("%Y-%m-%d %H:%M:%S")) 62: else: 63: header += "%s: %s\n" % (f, post[h2wp[f]]) 64: 65: print header.encode('utf8') 66: print 67: print post['description'].encode('utf8') ``` As you can see, it’s written very much like [yesterday’s script](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit/), which isn’t surprising because the publishing script returns the published post. It also uses the [keyring library](https://pypi.python.org/pypi/keyring) to get the blog password from the Keychain. See yesterday’s post for a description of how that works. Of course, the problem with `get-post` is that it forces me to know the ID of the post I want to edit. I seldom know that up front, so I wrote another script to help me out: `recent-posts`. It returns the /n/ most recent blog posts, where /n/ is an integer argument to the script. If /n/ is missing, it defaults to the 10 most recent posts. Here’s the script: ``` python: 1: #!/usr/bin/python 2: 3: import xmlrpclib 4: import sys 5: from datetime import datetime 6: import keyring 7: 8: ''' 9: Return a list of the most recent posts in the form 10: 11: nnnn Latest post title 12: nnnn Second latest post title 13: nnnn Third latest post title 14: 15: where the nnnn's are the post id numbers.Titles are truncated to 30 16: characters. The number of titles to return is given as the argument 17: to the command; 10 is the default. 18: ''' 19: 20: # The blog's XMLRPC URL and username. 21: url = 'http://leancrew.com/all-this/xmlrpc.php' 22: user = 'drdrang' 23: 24: # The number of posts to return. 25: postCount = 10 26: try: 27: postCount = int(sys.argv[1]) 28: except: 29: pass 30: 31: # Get the password from Keychain. 32: pw = keyring.get_password(url, user) 33: 34: # Connect. 35: blog = xmlrpclib.Server(url) 36: 37: # Return a list of post IDs and titles. 38: posts = blog.metaWeblog.getRecentPosts(0, user, pw, postCount) 39: for p in posts: 40: s = u'{1:>5} {0:<30}'.format(p['title'][:40], p['postid']) 41: print s.encode('utf8') ``` Running `recent-posts` right now gives me the following: ``` 2114 Scripts for WordPress and BBEd 2113 New Apple affiliate link scrip 2112 Hyperloop 2111 And it comes out here 2110 Poor practice in plotting 2109 Sorting with Pythonista 2108 I wish to register a complaint 2107 Parsing my Apache logs 2106 Multiple axes and minor tick m 2105 The Matplotlib documentation p ``` The number at the front is the post ID number. After that comes the first 30 characters of the title, which should be enough to figure out which one I want to edit.[1](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-2/#fn:trunc) The reason I truncate the title should become clear soon. The problem with the `recent-posts/get-post` system is that it requires too many command calls. What I want is a GUI that shows me the recent posts and opens the one I click on. That calls for AppleScript: ``` applescript: 1: set postText to do shell script "~/Dropbox/bin/recent-posts 15" 2: set posts to paragraphs of postText 3: set post to choose from list posts 4: try 5: set postID to word 1 of item 1 of post 6: set postContent to do shell script "~/Dropbox/bin/get-post " & postID 7: tell application "BBEdit" 8: set oldPost to make new document with properties {contents:postContent} 9: select insertion point before character 1 of oldPost 10: end tell 11: end try ``` This runs `recent-posts`, puts the results into a dialog box I can choose from, and opens a new window with the old post in BBEdit when I’ve made my choice. When run, it looks like this: [image:605584F8-A4A3-4DC7-B806-6EF5055887A3-7348-00001E83C67D1D3F/9571553673_124582c424_o.png] I truncate the titles in `recent-posts` so the occasional extra-long title won’t make this window ridiculously wide. AppleScript doesn’t provide any controls for keeping the window width reasonable. I suppose, though, I could extend the title length to 40 characters without hurting anything. The AppleScript is called `Get Recent Post` and is stored in `~/Dropbox/Application Support/BBEdit/Scripts`. It appears in my BBEdit Scripts menu, where I’ve given it a keyboard shortcut of ⌃⌥⌘G. That covers the interaction with WordPress. The next post in this series will show the scripts I use to create links and format source code. Then I’ll bundle everything up and post all the scripts on GitHub. [Scripts for WordPress and BBEdit, Part 2 - All this](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-2/) ## Part 3 - All this August 31, 2013 at 8:50 AM by Dr. Drang If you write a lot of helper scripts that you come to depend on, you’ll probably come to realize how interdependent they are. They don’t all get written at once, of course, so they kind of accrete onto your working environment—written in whatever language seems the most appropriate at the time and saved wherever convenient. If, at some later time, you try to rationalize these scripts, you’ll learn just how many you’ve built up and how difficult it is to organize them into something that others can use. That, at least, has been my experience in pulling together the scripts I’ve written for writing and publishing WordPress posts in Markdown format. The Scripts, Text Filters, and Clippings that actually appear in the BBEdit menus are themselves dependent on a raft of helper scripts and external libraries that are stored outside the BBEdit framework. Pulling everything together into a single package that can be downloaded and installed by someone else has been a chore, but I think it’s finally done. Many thanks to Patrick Woolsey, who mans the Bare Bones support email system, for walking my through some of the details of putting together a BBEdit package that aren’t covered in the manual. One day I’ll write a post about the tips I picked up from him, but this is not that day. The package is called WP-MD and is available in [this GitHub repository](https://github.com/drdrang/wp-md). The README describes each script and indicates whether the script needs customization, relies on non-standard libraries, or needs some other external configuration. You install it by downloading the `WP-MD.bbpackage` folder, customizing it as necessary, and dragging it into either * `~/Library/Application Support/BBEdit/Packages/`, or * `~/Dropbox/Application Support/BBEdit/Packages/` depending on where you keep your BBEdit extras. I use the Dropbox option to keep my iMac and MacBook Air in sync. There’s no need to keep every item in the package. You can trim it down by deleting anything you wouldn’t use. Just don’t delete helper scripts that other scripts rely on. Here’s the description of the package contents from the README. As you can see, even after tidying up it’s still an oddball collection of interlocking scripts written in four languages. Despite its convoluted structure, in practice it works very smoothly, especially with well-chosen keyboard shortcuts. ## Resources These are a set of helper scripts that are called by the user-facing scripts, text filters, and clippings. *bbstdin* (Shell script) A utility script that converts BBEdit text into `stdin` for piping to other scripts. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2012/08/markdown-reference-links-in-bbedit/). * External requirement: None. * Needs editing: No. *get-post* (Python script) Retrieve the header and text of the specified blog post and return it in `stdout`. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-2/). * External requirement: You must have a Keychain entry with a name set to the URL of the blog’s `xmlrpc.php` file, an account set to the blog’s username, and a password set to the blog’s password. * Non-standard libraries: [pytz](http://pytz.sourceforge.net/), [keyring](https://pypi.python.org/pypi/keyring) * Needs editing: The `url` and `user` variables must be personalized to the blog’s `xmlrpc.php` URL and username. The `myTZ` variable must be set to the blog’s time zone. *recent-posts* (Python script) Return a list of recent posts with post number and title for each. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-2/). * External requirement: You must have a Keychain entry with a name set to the URL of the blog’s `xmlrpc.php` file, an account set to the blog’s username, and a password set to the blog’s password. * Non-standard libraries: [keyring](https://pypi.python.org/pypi/keyring) * Needs editing: The `url` and `user` variables must be personalized to the blog’s `xmlrpc.php` URL and username. *nextreflink* (Python script) Scan text for numbered Markdown reference-style links and return the next one in the series. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2012/08/markdown-reference-links-in-bbedit/). * External requirement: None. * Non-standard libraries: None. * Needs editing: No. *getreflink* (Python script) Scan text for Markdown reference-style links, display them in a dialog box, and return the one chosen by the user. *glucky* (Ruby script) Return URL of Google’s “I’m Feeling Lucky” link for the given text. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2013/01/google-lucky-links-in-bbedit/). * External requirement: None. * Non-standard libraries: None. * Needs editing: No. *prepend-language* (Perl script) Determine a script’s language from its shebang line (if present) and return the script with that language prepended to it. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2013/01/a-line-numbering-text-factory-for-bbedit/). * External requirement: None. * Non-standard libraries: None. * Needs editing: No. *flickroriginal* (Python script) Return an `` link to the Original image file shown on the Flickr page in the frontmost Safari tab. * Fuller description: The library is described in [this post](http://www.leancrew.com/all-this/2011/08/more-flickr-api-stuff/). * External requirement: None. * Non-standard libraries: [currentflickr](https://github.com/drdrang/flickr-stuff). * Needs editing: No, but Flickr API credentials the `currentflickr` library it’s based on will need to be changed. *flickr640* (Python script) Return an `` link to the Medium 640 image file shown on the Flickr page in the frontmost Safari tab. * Fuller description: The library is described in [this post](http://www.leancrew.com/all-this/2011/08/more-flickr-api-stuff/). * External requirement: None. * Non-standard libraries: [currentflickr](https://github.com/drdrang/flickr-stuff). * Needs editing: No, but Flickr API credentials the `currentflickr` library it’s based on will need to be changed. *flickr800* (Python script) Return an `` link to the Medium 800 image file shown on the Flickr page in the frontmost Safari tab. * Fuller description: The library is described in [this post](http://www.leancrew.com/all-this/2011/08/more-flickr-api-stuff/). * External requirement: None. * Non-standard libraries: [currentflickr](https://github.com/drdrang/flickr-stuff). * Needs editing: No, but Flickr API credentials the `currentflickr` library it’s based on will need to be changed. *flickr1024* (Python script) Return an `` link to the Large image file shown on the Flickr page in the frontmost Safari tab. * Fuller description: The library is described in [this post](http://www.leancrew.com/all-this/2011/08/more-flickr-api-stuff/). * External requirement: None. * Non-standard libraries: [currentflickr](https://github.com/drdrang/flickr-stuff). * Needs editing: No, but Flickr API credentials the `currentflickr` library it’s based on will need to be changed. ## Text Filters *Publish Post.py* (Python script) Takes the current window or selection and publishes it. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit/). * External requirement: You must have a Keychain entry with a name set to the URL of the blog’s `xmlrpc.php` file, an account set to the blog’s username, and a password set to the blog’s password. * Non-standard libraries: [pytz](http://pytz.sourceforge.net/), [keyring](https://pypi.python.org/pypi/keyring) * Needs editing: The `url` and `user` variables must be personalized to the blog’s `xmlrpc.php` URL and username. The `myTZ` variable must be set to the blog’s time zone. *Line-Numbered Source Code.textfactory* (BBEdit text factory) Takes the selected lines, numbers the lines, indents it so Markdown will format it as source code, and prepends a language description if there’s a `#!` line. *Tabs to Markdown Table.pl* (Perl script) Takes a set of lines with tab-separated values and turns it into a MultiMarkdown-style table. Most useful when copying a table from a spreadsheet into a Markdown file. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2012/11/markdown-table-scripts-for-bbedit/). * External requirement: None. * Non-standard libraries: None. * Needs editing: No. *Normalize Table.py* (Python script) Takes a MultiMarkdown-style table with ragged column separators and aligns them. Intended to be used with a non-proportional font. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2012/11/markdown-table-scripts-for-bbedit/). * External requirements: None. * Non-standard libraries: None. * Needs editing: No. *Tidy Markdown Reference Links.py* (Python script) Renumbers and reorders Markdown reference links in a post. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2012/09/tidying-markdown-reference-links/). * External requirements: None. * Non-standard libraries: None. * Needs editing: No. * Warning: Doesn’t work if the post contains sections of Markdown source code with example reference links. ## Scripts *Get Recent Post* (AppleScript) Presents a list of the 15 most recent blog posts. Creates a new window with the selected post. Uses the `get-post` and `recent-posts` helper scripts. *New Reference Link* (AppleScript) Creates a new Markdown reference-style link, defaulting to the URL of the frontmost tab of Safari. Uses the `nextreflink` helper script. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2012/08/markdown-reference-links-in-bbedit/). * External requirements: None. * Needs editing: No. *Old Reference Link* (AppleScript) Creates a Markdown reference-style link to a URL already in the document. Uses the `getreflink` helper script. *Google Lucky Link* (AppleScript) Creates a Markdown reference style link to the “I’m Feeling Lucky” hit on the selected text. Uses the `glucky` helper script. * Fuller description: [This blog post](http://www.leancrew.com/all-this/2013/01/google-lucky-links-in-bbedit/). * External requirements: None. * Needs editing: No. ## Clippings These are kept in a Blogging subgroup and are tied to Markdown files. *Post header* Inserts a post template with fill-in spots for the title, keywords, and body. The publication date is given an initial value of two hours from the time the clipping is inserted. *Flickr original image* Inserts an `` link for the Original image file shown on the Flickr page in the frontmost Safari tab. Uses the `flickroriginal` helper script. *Flickr 640 image* Inserts an `` link for the Medium 640 image file shown on the Flickr page in the frontmost Safari tab. Uses the `flickr640` helper script. *Flickr 800 image* Inserts an `` link for the Medium 800 image file shown on the Flickr page in the frontmost Safari tab. Uses the `flickr800` helper script. *Flickr 1024 image* Inserts an `` link for the Large image file shown on the Flickr page in the frontmost Safari tab. Uses the `flickr1024` helper script. [Scripts for WordPress and BBEdit, Part 3 - All this](http://www.leancrew.com/all-this/2013/08/scripts-for-wordpress-and-bbedit-part-3/) # BBEdit 14.0 Release Notes [image:F3C1DAE9-D7C1-44D7-B600-2ADBB33DB661-7348-00001E67DB3C43EA/barebones_logo@2x.png] [Products](https://www.barebones.com/products/) [Support](https://www.barebones.com/support/) [Store](https://www.barebones.com/store/) [Contact](https://www.barebones.com/contact/) [About](https://www.barebones.com/company/) [Products](https://www.barebones.com/products/) [Support](https://www.barebones.com/support/) [Store](https://www.barebones.com/store/) [Contact](https://www.barebones.com/contact/) [About](https://www.barebones.com/company/) BBEdit 14.0 is a major upgrade, which includes significant new features; visible changes to existing features; and fixes for reported issues. Because BBEdit 14 builds on features that were added during the BBEdit 13 cycle (as well as previous versions), please take a few moments to browse the [release notes archive](https://www.barebones.com/support/bbedit/archived_notes.html) and review the release notes for any versions that you may not have seen. To get a high-level overview of what's new in BBEdit 14, with screen shots, see the [What's New in BBEdit 14](https://www.barebones.com/products/bbedit/bbedit14.html) page. For detailed information on using any of BBEdit's features, please refer to the user manual (choose "User Manual" from BBEdit's Help menu). --- ### Requirements BBEdit 14 requires Mac OS X 10.14.2 or later, and is compatible with macOS 10.15 "Catalina" and macOS 11 "Big Sur". If you are using macOS 10.14 "Mojave", please make sure that you have updated to the latest available OS version (10.14.6 or later). If you are using macOS 10.15 "Catalina", please make sure that you have updated to the latest available OS version (10.15.7 or later). If you are using macOS 11 "Big Sur", please make sure that you have updated to the latest available OS version (11.5 or later). --- ### Upgrading If you have been using any previous version of BBEdit in Free Mode, starting BBEdit 14.0 will reset your 30-day evaluation period, so that you can have a full trial of the new features. If you have previously purchased a license from us for BBEdit 13 or older, you will have a full 30-day evaluation period in which to try out BBEdit 14's new features. License upgrades are available at a discount for existing customers. Please see [the BBEdit upgrades page](https://www.barebones.com/store/bbedit_upgrades.html) for information and instructions. --- ### Additions * BBEdit 14 enables the following new and/or enhanced features for source code editing: * Improved language-specific completions while typing; * On-demand display of function parameters and (if available) documentation; * In-editor highlighting of errors, warnings, and notices from "linters" and syntax checkers; * Reformatting of entire documents and/or selection ranges; * Enhanced "Go to Definition"; * Navigation to declarations, definitions, and symbol references (reverse lookup), where applicable; * Interactive symbol search via "Find Symbol in Workspace" and "Go to Named Symbol". BBEdit 14 implements these additions and enhancements via new built-in support for the [Language Server Protocol](https://github.com/microsoft/language-server-protocol) (often referred to as "LSP", not to be confused with Lightspeed Pascal). ( *Note:* Despite the term "server", nothing is transmitted over a network, nor does any data otherwise leave your computer by means of LSP support.) Complete information on BBEdit's support for LSP is documented here: [Language Server Protocol Support in BBEdit 14](https://www.barebones.com/support/bbedit/lsp-notes.html). * You know that thing where you have a whole bunch of untitled documents open, because it's so easy to make one and type some notes, and then just leave it open? And you rely on BBEdit's amazing crash recovery and document restoration to not lose your carefully kept notes? You can keep doing that if you want, but we have a new feature to make the whole thing faster and easier: Notes. * Notes are mostly like ordinary text documents, except that you don't have to remember to save them or even make up a name if you don't want to. BBEdit keeps notes all together in a "notebook". Notes exist on disk as text files; there's no secret file format involved. * Although notes are stored as text files, some of BBEdit's commands for working with text files are disabled or modified when a note is active, in order to avoid confusion. (For example, you can't relocate a note file since that would break lots of things, but you /can/ use "Save a Copy" to save a copy of a note's contents as an ordinary text file somewhere else.) * There are many ways to make a note, so you can use whatever fits your workflow and style: * Choose "Note" from the "File → New" menu. This makes a new empty note, into which you can type or paste text. * Choose "Note (with selection)" from the "File" → New menu. If you have a range of selected text in a BBEdit text document, this command is enabled and choosing it will create a new note with the selected text. * Choose "Note (with Clipboard)" from the "File → New" menu. If this command is enabled, choosing it makes a new note with the contents of the Clipboard. * Choose "Save as Note" from the File menu. This command is available for untitled text documents (which have never been saved to disk). * Right-click on some selected text in a BBEdit editing window and choose "New Note (with selection)" from the contextual menu. * Right-click on some selected text in another application, and choose "New Note in BBEdit" from the Services submenu of the contextual menu; or from the Services submenu of the  menu. * Open the Notes window (on the Window menu), and use the "+" button at the bottom of the sidebar, or the contextual menu in the sidebar, to add a new empty note. * With the Notes window open and its sidebar visible, drag a file or some text into the sidebar. If you drag a file, the original file is left undisturbed. * After installing the command line tools, pipe some text into `bbedit --note`; BBEdit will create a new note from the text. Additional details are available in the `bbedit(1)` man page. The "Notes" command on the Window menu opens the Notes window, which displays all of the notes that you've created. Drag notes in the sidebar to rearrange them; you can also use the "+" menu or contextual menu in the sidebar to create Collections to organize your notes. When you create a note, and as you edit it, BBEdit will change the note's title based on the text at the beginning of the note. If you would like to make a note's name "sticky", right-click on it in the Notes window sidebar and choose the "Rename Note" command from the contextual menu. The name you apply there will become that note's name forever (or until you "Rename Note" again), and subsequent edits to the note's content won't affect the note's name. To permanently delete a note, use the "Remove" command in the Notes window's sidebar contextual menu. You can right-click on any note to remove it; or on a selected range of notes; or on a selected range of collections and notes. (Removing a collection will remove all of the notes within it.) You'll need to confirm that you wish to permanently delete the note(s), since the operation is not undoable. When you delete a note, BBEdit will place the note's backing file in the Trash, so if you change your mind you can open the file and recover its contents. If for some reason you need to export all of your notes, use the "Export Notes" command on the File menu. This will create a folder with all of your notes in it, with subfolders for collections. This command is always available if any notes exist. Use the "Notes" item in the list of search sources in the Multi-File Search window to have BBEdit search your notes when doing a multi-file search (or replace, or extract). You can quickly go to a note using the "Open File by Name" window; enter all or part of a note's title, and matching notes (and other files) will appear in the results. * If you are using [Anaconda](https://www.anaconda.com/) via the [conda or miniconda tools](https://conda.io), BBEdit will list your available environments on the "`#!`" menu, and you can change the active environment (which has effect only within BBEdit) by choosing it from the menu. * The following notes and limitations apply: 1. Scripts and filters that you run from the `#!` menu's commands, as well as from the Scripts menu, Apply Text Filter, and text factories, will use the additional environment variables contributed by the current virtual environment. 1. This includes, but is not by any means limited to `$PATH`, and so switching virtual environments may alter the behavior of Unix script operations in ways that only make sense if you keep this in mind. 2. Shell Worksheets do not participate in virtual environment awareness or switching. * Added "Repeat Last Command" to the Edit menu. This command literally repeats the previous menu command selection. This includes base menu commands as well as items on the Scripts, Clippings, Apply Text Filter, and Stationery submenus. * Note that that choosing the Repeat command only repeats the /selection/ of the previous menu command, /not/ necessarily its effects. If the state of your document or the application has changed so that the previous command would be disabled, "Repeat" will be disabled. * The only repeatable commands are the ones that also appear in the "Commands" command window. Therefore, items on the "BBEdit" menu are not repeatable, nor is the "Repeat Last Command" command itself, nor is the "Commands" command. * Some menu commands will not affect the "Repeat Last Command" state, specifically: commands on the Window menu, Close commands, and "Next Document"/"Previous Document" will leave the Repeat Last Command state alone. So (for example) if you did "Change Case" on a document, and then switched to another document, "Repeat Last Command" would repeat the selection of "Change Case". * The factory default keyboard equivalent for "Repeat Last Command" is Command-Y. As always you can adjust this in the "Menus & Shortcuts" preferences. * Added "Automatic completion" to the language-specific preferences, in the "Editor" tab. You can employ this as desired, either to turn completion off by default and then re-enable it for specific languages, or (more likely) turn off automatic completion for Markdown and other content- oriented (vs code-oriented) languages. * Added the `extract` command to the scripting dictionary. * The Clipboard window makes a triumphant return. (Choose "Show Clipboard" from the Edit menu to make it visible.) * When dragging an image or an HTML file into a Markdown document, BBEdit will generate appropriately formatted Markdown references. (As when doing this in an HTML document, you can bypass the behavior by holding down the Option key while dragging and dropping.) * BBEdit now displays Finder tag information for files in sidebars. You can control this using the "Show Finder tags in sidebar lists" setting in the Sidebar preferences. * File (and folder) filters include a new term: "Any Finder tag". You can enter the name of a single Finder tag in the string field, and if the file has any Finder tags applied /and/ any of the applied tags matches the tag name you entered (using any available string test), the file or folder will match the filter. * "Remove Blank Lines" is now available as a text transformation on the Text menu, in text factories, and via the AppleScript interface. This transformation will remove blank (only whitespace) and empty (no characters before the line break) lines from the document. This saves you the trouble of having to come up with a Grep pattern to do the same work, as well as the effort of trying to misuse "Process Lines Containing" for the job. * Added "Alternate Case" to the available options for Change Case (in the menu command, submenu, text factories, and scripting interface). This option will force the character case of everything in the processed range, starting with lower case and alternating between upper and lower; and resetting at sentence boundaries. hErE'S aN eXaMpLe Of WhAt ThIs LoOkS lIkE. sOmEtImEs It's CaLlEd "sPoNgEcAsE". * The "Replace All" panel for text factory windows now provides a "history" menu button, providing access to the Find window's history. That way, if you've spent time sorting out a search/replace pair in the Find or Multi-File Search window, you can easily reuse it in a text factory without resorting to copying and pasting it like some kind of cave dweller. * You can now control whether any given language appears in the Languages menu (as used in the status bar and in the "Text Options" panel). In the "Languages" preferences, click the "Installed Languages" button to see the list; you can use the check box in the "Menu" column to show or hide the language. Hiding a language from the menu does not affect BBEdit's ability to open files in that language. * When "Show matches" is turned on in the Find window, a status line appears at the bottom of the window to indicate the live-match results. * BBEdit will now provide docset information to [Dash](https://kapeli.com/dash) when you use "Find in Documentation". Most of BBEdit's factory-supplied languages specify a default docset list, derived (where applicable) from [information provided by the developer](https://kapeli.com/dash_plugins). * Custom language settings (in the "Languages" preferences) have a tab for "Dash". In here, you can customize (or set up) the list of Dash docsets that BBEdit will request when using Dash for "Find in Documentation". * The Languages preferences pane now has settings to control the default language. There are separate settings for new vs. existing documents, the latter which affects files that already exist, but which don't carry any metadata (such as a mode line, EditorConfig file, or filename extension) to identify their language. * Added two commands to the Text menu: "Reformat Document" and "Reformat Selection". These are enabled when the current document's language module supports reformatting intrinsically, /or/ if the language module has a configured running language server which supports the respective capabilities. * Added "Expand Emmet Abbreviation" to the Edit menu. If you have [Emmet](https://emmet.io/) installed (see below), this command will ask Emmet to expand the abbreviation on the line containing the insertion point, based on the line's contents and the position of the insertion point. * This feature requires that Emmet be installed, which you can do using "`npm install emmet`"". That means you must also have [Node](https://nodejs.org) and `npm` installed. You can do this using [Homebrew](https://brew.sh) (use "`brew install node`") or some other utility; or by downloading the installation package from the [Node.js web site](https://nodejs.org/en/download/). * As long as the `emmet` package has been installed as of application launch, BBEdit will be able to run Emmet. * Added JSON formatting support to the factory-supplied JSON language module. Choose "Reformat Document" from the Text menu to reformat the document's text. * Added built-in support for [R](https://www.r-project.org) syntax coloring, function navigation, and folding. * Added a built-in language module for Lisp (its base keyword set comes from Common Lisp), Scheme (whose keyword set is derived from MIT scheme), and Clojure. * Added built-in support for [Go](https://www.golang.org): syntax coloring, function navigation, and folding. * Added a built-in language module for [Rust](https://www.rust-lang.org). * Added a built-in language module for [TOML](https://toml.io). * Added built-in support for syntax coloring and function navigation in Arduino source files. The "Arduino" language is treated similarly to C++, so that counterpart navigation and other relevant features behave as they would for such files. * /Note:/ If you previously were using an outboard Arduino codeless language module, we recommend that you remove it from your Language Modules folder, or else it will override the built-in support. * Added "Vue.js" as a distinct language setting, to allow separate filename extension mappings and language server configuration for [Vue.js](https://vuejs.org/) source files. * Added a language module for [USDA](https://graphics.pixar.com/usd/docs/Introduction-to-USD.html), the ASCII interchange format for Universal Scene Description files. * Added Grep syntax coloring to the text factory "Replace All" sheet (when "Use Grep" is turned on). * Added support for `~~strikethrough~~` syntax coloring in Markdown documents, as defined in GitHub-flavored Markdown. * Added an adjustable splitter to the Pattern Playground window, so that the Search Pattern area can be enlarged. * Packages can now contain a `Custom Keywords` folder and thus contribute additions to any language's built-in keywords. * Changed the HTML syntax coloring scanner so that "sloppy" comments which contain runs of dashes are allowed, as long as they begin with "``". * Added support to Markdown module for syntax coloring of footnote references and footnote definitions, as supported by some flavors of Markdown. * A footnote definition must start at the beginning of a line, and looks like `[^theName]: the footnote text`. * An inline footnote reference is just `[^theName]`. * URLs from inline links in Markdown documents are now listed in the includes menu at the top right of the editor window. Selecting one of these URLs from the menu will do the regular thing: try to open the contents of that URL in a new document. * If the system trackpad preference for "Look up & data detectors" is set to "Force Click with one finger", then doing so on a word in a text document will open the Dictionary panel on that word. * Added the ability to drag files (not folders) from an FTP/SFTP browser window to the Finder (and other applications that want files). When the item is dropped in its destination, BBEdit will download the file as indicated. * This is intended strictly as a convenience. * The "Add Items" file panel for projects gets a "Show hidden items" check box, which allows you to add normally invisible files/folders to the project. * Added "Show in Project List" to the contextual menu for a single item in the Currently Open Documents list of a project window. * The Appearance preferences provide the following options for which application icon to display in the Dock: 1. /Default/: the factory application icon; 2. /Classic/: the icon used in BBEdit versions 11-13; 3. /Legacy/: the icon used in versions of BBEdit first shipped in the 20th century; 4. /TextWrangler/: the TextWrangler application icon. * Added the ability to use wildcard filename extension mappings, both in the custom mapping list (Languages preferences) as well as in the defaults for a language module, in its `BBLMFilenameExtensions` list. * Added "Precompose Unicode" to the Text menu. This command will convert decomposed Unicode pairs (such as a letter followed by a combining accent or diaresis) into a single Unicode character, where possible. Precompose Unicode is also available as a Text Factory operation as well as via the AppleScript interface. * "Open in New Window" is available when right-clicking on an item in the Project section of the list, as well as in the Notes window, for documents that are not otherwise open in the current window. Likewise, for documents that /are/ open in the current window, "Move to New Window" and "Open in Additional Window" are available on the contextual menu in the Project section (or Notes window sidebar). * Text factory windows get a contextual menu; you can cut, copy, paste (if you previously cut or copied a text factory operation), and enable/disable selected items. * Added "Open Issues Panel" to the Navigation Bar section of the Menus & Shortcuts preferences; this keyboard equivalent can be used as a substitute for clicking on the diagnostics indicator in the navigation bar. In addition, using this keyboard gesture while the insertion point is in the middle of an underlined issue range will open an issue panel at that location. * Added `omni*js` as a default mapping to TypeScript, to support [Omni Automation](https://omni-automation.com/) composition. * Added a new script attachment point, to provide additional control over the text generated when you drop an image file into a BBEdit editing view. * The entry point for the script is `documentWillInsertTextForDroppedImageFile`, and the parameters are (listed in the order supplied): * a reference to the BBEdit document on which the image file is being dropped; * a reference to the image file being dropped; * the text generated by BBEdit for the drop, if any. This will always be present, but may be the empty string. Unlike the other "`will`" attachment points, `documentWillInsertTextForDroppedImageFile` should return a value. This can be one of: * the proposed text, which inserts what BBEdit would have inserted anyway had this script not been present; * the `missing value` pseudo-value, which will abort the drop operation (and insert no text); * some customized string, generated at the script's sole discretion. Note that BBEdit will wait for this function to return, so any work that it does must take minimal time (or be done asynchronously, perhaps in an "`ignoring application responses`" block). Here is a small example script to describe and illustrate. In this case, the script asks [Acorn](https://flyingmeat.com/acorn/) to open the image file being dropped, while otherwise leaving BBEdit's default behavior unaffected. ``` on documentWillInsertTextForDroppedImageFile(theDocument, theImageFile, proposedText) tell application "Acorn" to open theImageFile return proposedText end documentWillInsertTextForDroppedImageFile ``` [back to top](https://www.barebones.com/support/bbedit/notes-14.0.html#top) --- ### Changes * The "BBEdit Backups" folder now lives inside of the application's sandbox container, within the "Documents" folder. You can get there from the "Document Backups" command on the Folders submenu of the BBEdit application menu. Existing BBEdit Backups folders (including those in Dropbox, iCloud Drive, and the previous location in `~/Documents/` ) are recognized and used in place; there is no need to relocate them. * "Reveal in Finder" and "Reveal in Project List" have been renamed to "Show in Finder" and "Show in Project List", respectively. They still do the same thing, though. * Added a "System Diagnostic Folders" entry to the Folders menu, for quick access to diagnostic logs generated by macOS. * "Entab" and "Detab" have had their names changed to "Convert Spaces to Tabs" and "Convert Tabs to Spaces", respectively. This is more verbose but less abstruse. * The "none" indicator for unset keyboard equivalents in the Menus & Shortcuts preferences now reads "click to set", thus making it clear(er) that you need to do something to change an unassigned keyboard equivalent. * The "Counterparts" navigation bar item has been renamed, and reworked. It's now called "Related Files", and the Appearance preferences have been changed to reflect that. The Related Files menu contains includes (as detected by the language module's function scanner, if any) as well as related "counterpart" files in the same directory. The "Includes" navigation bar item has been retired (and the Appearance preferences have changed to reflect that, too). * Although BBEdit will avoid activating the "Unix Script Output" window when it's already open, you may find it desirable to do so anyway. If so, an expert preference exists for this purpose: * `defaults write com.barebones.bbedit AlwaysBringUnixScriptOutputToFront -bool YES` * When using a Unix command to generate HTML for previewing, BBEdit will set the current working directory to the directory containing the document, if possible. That way, processes which depend on being able to find data relative to the file can use `getcwd(3)` to find the appropriate location. * File transfer progress for open/save via FTP/SFTP is now window-modal when possible. * The Expert Preferences help is now exclusively served on our web site, at [https://www.barebones.com/support/bbedit/ExpertPreferences.html](https://www.barebones.com/support/bbedit/ExpertPreferences.html). The button in the "Expert" preferences pane will take you there, as will the Expert Preferences link in the help book. * Made a change so that shell worksheets don't show the language setting by default. (The language for worksheets is always "Unix Shell Worksheet".) * If for some reason you need to show or change the language of a shell worksheet (which affects only its display, not its behavior), you can do so with an expert preference: * `defaults write com.barebones.bbedit ShowLanguageSettingInShellWorksheets -bool YES` * The old path overrides for `git` and `svn` are surplus to requirements and are no longer supported. If BBEdit can't find those tools in your `$PATH`, fix your shell environment configuration as needed. If you need to disable Git or Subversion support entirely, turning the appropriate menu off in the "Menus & Shortcuts" menu does that. * Made a change to behavior when using "Save Default Text Window"/"Save Default Project Window" as follows: if the "Automatically show sidebar" preference is set to "as needed", BBEdit will store the /current/ sidebar visibility of the window as part of the default window layout. Otherwise, if the sidebar preference is set to "Always" or "Never", then BBEdit will set the default sidebar state to be visible ("Always") or hidden ("Never"), respectively. * BBEdit will always apply the font configured in the "Editor Defaults" preferences when opening an existing document, even if a different font was manually set in the document. That way, if you save changes to a file, close it, and subsequently change the default font setting, the new font setting will be in effect the next time you open that file, rather than the previous default. If you prefer the previous behavior, go to the Editor Defaults preferences and turn off "Override document setting". * Added a setting to the Editing preferences, to explicitly collapse folds below a specified level when opening a document. This setting is off by default. * When running on macOS Big Sur, the "Don't Save" button (or its equivalent) in the "save changes before closing" alert is now tagged as a "destructive action" button. The OS may elect to color this button accordingly and/or implement behavior changes to prevent its accidental use. (At this writing, there is no visible difference in the button's appearance.) * Slightly tweaked the table layout in the Find Definition sheet for multiple results. * Gave item badges for the completion/function/Find Definition/Go To Named Symbol lists a white border to increase legibility on dark backgrounds (in dark mode or when selected). * Turned off "Check spelling as you type" by default for JSON and SQL. If you need this back on, you can add a custom language preference setting in the Languages preferences. * The Includes menu will show icons for other include-file reference types, based on their name. * Changed the factory default application appearance setting to "Use system appearance" rather than forcing Dark Mode. As always you can change this in the Appearance preferences. Existing preferences are unaffected by this change. * Made BBEdit's clipboard processing aware of "transient" items placed on the system clipboard by utilities such as Typinator, TypeIt4Me, TextExpander, and others. Under those circumstances, BBEdit will avoid rotating the clipboard ring so as not to disturb the other contents of the ring. * Changed the behavior of "Compare Two Front Windows" so that instead of always putting the newer document on the left, it will always put the front window's document on the left. In this way, if you want to alter the position of the compared documents, it's as simple as altering the front-to-back order of the desired windows. * Changed the behavior of "Un/Comment Lines", so that if /any/ lines in the selection range are /un/ commented, then /all/ lines in the selection range will be prefixed with the line comment delimiter -- including lines which are already prefixed. If /all/ lines are prefixed with the line comment delimiter, then BBEdit will remove the first occurrence of the line comment delimiter on each line, thus returning things to their previous state. This behavior is consistent with the "toggle comments" behavior of Xcode and others. * Made some changes to how status bar items are laid out below the text area, so that they occupy a little less space. This allows the Text Encoding and Line End status bar items to be on by default. (As always you can adjust which items are visible using the Appearance preferences.) * The document modification date status bar item will display only the time, in cases where the modification date is "today". If the document was last saved on a different day, the status bar will show the date and time. * When you are running in Free Mode and choose a command that requires a paid license or active subscription (the latter only in the Mac App Store), BBEdit will now bring up its license panel, which provides a better experience than the previous alert. * When aging out rescued items from the "Rescued Documents" window, BBEdit will place them in a "Rescued BBEdit Documents" folder in the Trash, so that their origin is a little less mysterious. (Reminder: you can control document rescue behavior in the "Text Files" preferences.) * When doing an Extract operation (from the Find or Multi-File Search window), with Grep turned /off/, BBEdit will now extract the entire line containing the match, rather than just the exact match. Because when your spouse needs to process a gigabyte of CSV data across two dozen files in under ten seconds, you do what you have to do. * Increased the maximum width of the Window palette, again. * Changed (and normalized) the nomenclature: "Spaces per tab" is now used instead of "Tab width: xxx spaces" in the Editor Defaults preferences, Text Options sheet, text options popover, and the font panel. * Added a stepper control to the tab width in the font panel (View => Text Display => Show Fonts) and modernized the control layout. * Added stepper controls to the tab width setting in the "Text Options" sheet and the Editor Defaults preferences. * If a search/replace string pair is added to the history as the result of an Extract operation, the history menu will so indicate. * Changed "Find in Reference" on the Search menu to "Find in Documentation", which is less ambiguous now that "Find References to Selected Symbol" exists. * Added qualifying terms ( `AND`, `OR` ) to the file filter editor settings. * Updated the built-in `cmark` to version 0.30.0 (the current as of this writing). * Language module developers: language modules (compiled and codeless) support a new (and recommended) property key: `BBLMFilenameExtensions`. This is an array of strings, and is intended to replace the legacy `BBLMSuffixMap` array of dictionaries. * Each string in the `BBLMFilenameExtensions` array is a filename extension (which by definition does not include a period) which should map to the language being described. * For backward compatibility, BBEdit will continue to recognize and load the legacy `BBLMSuffixMap` array, but you should not use it for new modules. * Language module developers: string constants in the language module API have been redefined as global symbols rather than macros, so that they get stored in a single global section rather than being replicated every time "`BBLMInterface.h`" gets included. You will need to add "`BBLMInterface.mm`" to your project. * Language module developers: if you would like to specify a default docset list for BBEdit to use, add a `BBLMDashDocsets` value to your language module's property list, with an array of strings. Each string is a docset name, and the list is provided to Dash in the order that you specify it. * Here is an example, for Objective-C: ``` BBLMDashDocsets iphoneos macosx watchos tvos cocoapods appledoc cocos2d cocos3d kobold2d sparrow c manpages ``` [back to top](https://www.barebones.com/support/bbedit/notes-14.0.html#top) --- ### Fixes * Made a change to improve performance when checking to see whether a given file is already open. This is noticeable when intersecting a lot of files (such as a multi-file search) with a lot of open documents. * If you specify a full path to a custom Markdown processor, that will now work correctly. (Generally there's no reason to do this, since command-line tools should generally be available in your `$PATH`.) * Made a change to improve the performance of UTF-16 byte-order conversion for very large documents. * Made a change to improve performance when computing sub-line differences in a Differences window. * Made a change to improve performance and reduce memory requirements during single-item drops into editing windows. * Adjusted the factory defaults so that the custom language settings list (in the Languages preferences) no longer shows a spurious entry for YAML. * Made some refinements to the (Go to) Named Symbol panel, with improvements to badge rendering and table item alignment. * Fixed clipped descenders in the language modules prompt in the Languages preferences. * Set a default sorting order for the custom settings list in the Languages preferences; the "Language" column is now sorted in ascending order by name (by default), and is the only sortable column. * Fixed cosmetic issue with the Language and Character Set popups in the "New HTML Document" dialog box when running on macOS 11. * When using a Subversion or Git "Revert" command on a document with unsaved changes, BBEdit will now discard those changes before issuing the SCM command, so as to avoid the alert which occurs when the backing file gets modified while the open document has unsaved changes. * Fixed bug in which BBEdit projects added to a project would appear as twistable items, and double-clicking the project would do a strange round-trip via the Finder rather than opening directly in BBEdit as they should have. * Reworked the cosmetics of badges used in the functions menu and completion panel, to improve appearance and (in some cases) readability. * Made a change so that BBEdit only calls the "`documentWillSave`" and "`documentDidSave`" attachment scripts in cases where the document's contents were actually changed. This prevents unnecessary work with automatically saved documents such as notes. * Fixed bug in which BBEdit projects were treated the same as folders in disk browser and project sidebars. * Made a layout change in the drawing of search results lists so that the text lines up more pretty. * Updated the HTML5 syntax tables to allow attributes and values that were previously reported as errors. * Changed the encoding of the BBEdit scripting dictionary to `Western (Mac OS Roman)` so that eight-bit Mac Roman characters in terminology codes don't confuse things like Cocoa Scripting. * Fixed a bug in which the Unix environment was not set up correctly when running `perldoc` for "Find in Documentation". * Fixed bug in which confirming the language-specific settings sheet without changing a custom color scheme setting would cause the setting to be reset to "Application Default". * Fixed bug in which "Deploy Site" would always request a password before starting, even when it wasn't strictly necessary (such as when using an SSH key). * Allow interstitial underscores in PHP numeric constants. * Worked around an iCloud Drive behavior which would cause document settings and state to be lost for documents stored there, when the "`UseResourceForkForDocumentState`" expert preference was in effect. * BBEdit no longer needs a custom I-beam cursor for dark backgrounds; so it (once again) uses the system-provided I-beam cursor. * Corrected the image used for the Grep pattern popup menu in the Sort Lines and "Save Grep Pattern" sheets. * Use the system image for "Caution" where appropriate, instead of our old one. * Made a change to the mechanics of Extract so that no work is done accumulating search results which are then discarded. * Fixed crash which would occur when attempting to convert a legacy (non-package) project document. * Put in a guard so that Open File by Name and other commands that enumerate Xcode projects won't get stuck if a project contains circular references to other projects that lead back to the original. (Yes, someone actually did this. No, I won't tell you who it was.) * Fixed bug in which the completion panel was allowed to run off the right-hand edge of the screen, in cases where it was wide and appeared close enough to that edge to matter. * Fixed bug in which the replace string was not included in the search history when using "Extract" from the Find or Multi-File Search window. * Fixed bug in which some submenu head items in the Menus & Shortcuts preferences had "click to set" indicators, even though setting a key equivalent for those items is not possible. * Fixed bug in the HTML includes processor in which relative include references which partially matched a file (but did /not/ actually match an existing file) would erroneously return the partial path to an existing folder, and then report an error. (The "can't include something that isn't a text file" error message has been corrected, as well.) * Fixed bug in the HTML includes processor in which relative include references which partially matched a file (but did /not/ actually match an existing file) would erroneously return the partial path to an existing folder, and then report an error. (The "can't include something that isn't a text file" error message has been corrected, as well.) * Fixed bug in which using "Print Selection" on a document would result in strange looking printed output if soft wrap for printing was in effect. [back to top](https://www.barebones.com/support/bbedit/notes-14.0.html#top) /fin/ ### Newsflash(es) * [BBEdit 14.1 Feature Update Released!](https://www.barebones.com/support/bbedit/notes-14.1.html) * [macOS Compatibility Guide](https://www.barebones.com/support/new-os.html) Updated! * [Product Downloads](https://www.barebones.com/support/updates.html) * [Mac App Store FAQ](https://www.barebones.com/store/macappstore.html) * [Visit our product discussion groups](https://www.barebones.com/discuss/index.html) ### Download: * [BBEdit 14](https://s3.amazonaws.com/BBSW-download/BBEdit_14.1.1.dmg) Updated! * [Older BBEdit versions](https://www.barebones.com/support/bbedit/updates.html#up11) * [Yojimbo](https://s3.amazonaws.com/BBSW-download/Yojimbo_4.6.2.dmg) Updated! ### Looking for TextWrangler? * We’ve [sunsetted](https://www.barebones.com/products/textwrangler/) it, and [BBEdit](https://www.barebones.com/products/bbedit/) is its successor. * Please see [our Q&A](https://www.barebones.com/products/bbedit/faqs.html) for important information. ### User manuals: * [BBEdit](https://s3.amazonaws.com/BBSW-download/BBEdit_14.1.1_User_Manual.pdf) * [TextWrangler](https://www.barebones.com/products/textwrangler/download.html) ### Lost your serial number? * [We’ll look it up for you!](https://www.barebones.com/contact/lostserial.html) Copyright ©1992-2022 Bare Bones Software, Inc. All rights reserved. [Privacy policy.](https://www.barebones.com/company/privacy.html) [image:8ABF3ACA-8D07-46A0-9ED2-AF8428115836-7348-00001E67DB18E41E/twitter_icon.gif] [image:CA091931-5DF6-49AD-972B-D795BC23A67D-7348-00001E67DAF66694/youtube_icon.gif] [image:6E0CB6F5-E744-496F-8D98-2C82F90A9128-7348-00001E67DAC156C7/BuiltWithBBEdit.jpg] [www.barebones.com](https://www.barebones.com/support/bbedit/notes-14.0.html) # BBEdit 8 [image:4F1CD07B-F162-40EF-B79C-3D672EEFA60E-7348-00001D7BD76D0CDA/df-square-1024.jpeg] All applications are software; but not all software is an application. The key difference is the primacy of the user interface in application development. To [paraphrase Edward Tufte](https://37signals.com/svn/archives/000831.php), the user interface /is/ the application — whereas most non-application software doesn’t even /have/ a user interface. From the perspective of a programmer, all software is just source code. In a broad sense, the source code for a UI-less background process such as the [Apache](https://www.apache.org/) web server very much resembles the source code for a GUI application. Developers’ relationship with the software they produce is abstract, conceptual. When an artist wants to produce a circle, he draws a circle. When a programmer wants to produce a circle, he writes a few lines of source code. It is the ability to grasp these abstractions that separates programmers from non-programmers. From the perspective of users, however, the importance of the user interface is profound. For users, the application is what they can see, click, and interact with. A user’s relationship with an application is perceptual, sensual. The raw capabilities of a particular application are, for most users, irrelevant; it’s the /usability/ that matters. Features which aren’t presented via an intuitive, discoverable, usable interface might as well not even exist. For something as inherently nerdy as a text editor, [BBEdit](http://www.barebones.com/products/bbedit/index.shtml) is phenomenally popular. But its appeal is not universal: in addition to those who simply have no need for a serious text editor, or who simply prefer other editors, there are vocal contingents of BBEdit non-believers who profess outright bewilderment at BBEdit’s decade-long dominance of the Mac text editor market. There are two vectors for such bewilderment, both of which belie a genuine understanding of what it is about BBEdit’s “interface” that makes it so beloved: * One is the conflation of /aesthetics/ with usability. The idea that the quality of an app’s user interface is simply a measure of how good it looks; i.e., that the state of being “Mac-like” implies only adherence to the gestalt of Apple’s recent-vintage Aqua-flavored visual whiz-bangery: gorgeous iconography, anti-aliased type, vibrant primary colors, and visual effects such as transparency, drop shadows, bezel edges, and smooth-gliding animated widgets. * This is not to say that aesthetics are unimportant. To find something aesthetically pleasing is deeply satisfying in a right-brained way. But aesthetic appeal is but one aspect of user interface design, not the whole of it — and for a serious tool, not the most important aspect. Compare and contrast to, say, choosing an office chair. It’s certainly nice to have a chair that looks good; but if you’re going to be sitting in it 8 or more hours every day, ergonomics are much more important than aesthetics. * I won’t dispute that BBEdit’s interface is relatively unadorned; but so while it’s not /pretty/, it isn’t trying to be. /Handsome/ is perhaps more apt. The layout of windows, dialogs, and menus is meticulous and thoughtful. The point is not to impress you; the point is to enable you to get work done. * The second is the belief that the user interface is worthy only of afterthought; that the real software is the underlying implementation, and that the user interface is but a wrapper. (Cf. April’s “ [Ronco Spray-On Usability](https://daringfireball.net/2004/04/spray_on_usability) ”.) * This view is generally expressed only by those who are extremely technically nerdy — i.e. the sort of guys who honestly see Mac OS X as /Unix with a Mac GUI/, rather than as an updated version of the Mac OS with Unix-like underpinnings. Their question to BBEdit advocates, invariably, goes something like: “What does BBEdit do that /[my favorite open source editor]/ doesn’t do?”, where the variable is usually [Emacs](https://www.gnu.org/software/emacs/emacs.html) or [vi/vim](https://www.vim.org/) — or occasionally [jEdit](http://jedit.org/). * The problem is that this is not the right question. Emacs, Vim, and their various derivatives are very fine editors, and inarguably offer many powerful features. They are also difficult to learn, cryptic to the uninitiated, and their human interfaces (such as they are) are unlike anything a Mac user would consider normal. Some would have you believe that such is the price of power — that /easy-to-use/ and /powerful/ are mutually exclusive. * The appeal of BBEdit is in its balance of powerful text-editing features and an elegant, intuitive, and unabashedly /Macintosh/ -style interface — and where by “interface” I don’t mean in the sense of superficial cosmetic appeal, but in the deeper, interactive sense. * It’s also worth pointing out here that “easy-to-use” is probably not the right adjective. Once you have learned to use any software package, no matter how cryptic its user interface may be, it can be very “easy” to use. Hence it’s true that one might find Vim easy to use if one takes the time to learn it and grow acclimated to its keystroke-driven interface. But that’s a big “if”. The Macintosh’s main appeal is not that it is easy-to-use, but rather that it is easy-to-learn. The difference is significant, but often overlooked. In short, the point of BBEdit is not just what it looks like or what it does, but how it feels. The challenge Bare Bones faces when releasing a major feature upgrade is not just to add to BBEdit’s capabilities, but to do so in a Mac-like way. ## Brief Aside on the Case for Using Emacs or Vim Furthermore, it’s also worth pointing out that, ironically, the most compelling case for adopting Emacs or Vim as one’s primary editor is not their feature sets, but their /interfaces/. Specifically, the fact that they run /everywhere/ in almost exactly the same way. Any system with a Unix-like shell can run these editors, and as of 2004, every significant desktop operating system either ships with a Unix-like shell or has one available as a free download. Thus, if you master Emacs or Vim, you can rightly feel quite confident that you’ll be able to use it on every computer you use for the rest of your life. If by circumstance or choice you use both a Mac and one or more non-Macs, it’s an appealing thought to be able to use the same editor on every system — using the same keystrokes, shortcuts, and customizations. Text editing habits run deep. Mac users forced to switch to Windows regularly plead with Bare Bones to port BBEdit to Windows. Windows users who switch to the Mac regularly badger Bare Bones to make BBEdit more like their favorite editor from Windows (e.g. [UltraEdit](http://ultraedit.com/) or [TextPad](https://textpad.com/) ). And, I’m guessing, after giving up on a BBEdit port to Windows, former BBEdit users start badgering for the BBEdit-ification of UltraEdit and TextPad. Emacs and Vim users, on the other hand, just copy their configuration files from one machine to another — be it Windows, Linux, or Mac — and they’re right at home. ## BBEdit 8.0 First Impressions Which brings us to [BBEdit 8.0](http://www.barebones.com/products/bbedit/index.shtml), the latest version of Bare Bones Software’s flagship text editor, released with much fanfare two weeks ago. Before we proceed, let’s just get it out of the way and link to my standard [I-used-to-work-for-Bare-Bones-Software disclosure](https://daringfireball.net/2002/12/bare_bones_disclaimer). The first thing you’ll notice is that BBEdit 8 sports a new application icon. The stately capital B set in bold Palatino — a hallmark of BBEdit’s iconography since its public debut 12 years ago — has been replaced by something, well, a bit jauntier: [image:BA129F70-DA33-485C-8B49-A29C97D197DE-7348-00001D7BD7517F04/bbedit_7-8_icons.png] Reaction from the design community has not been kind: * [Jon Hicks](http://www.hicksdesign.co.uk/journal/564/bare-bones-means-comic-sans): * With the release of BBEdit 8.0, has come the most inexplicable new feature. The application icon has been updated with the most grotesque typography, looking like a Comic Sans derivative. * (Hicks whipped up a replacement icon, which, whatever you think of the new BBEdit 8 icon, is far worse — not because it’s unappealing, but because it’s un-BBEdit-y.) * [Andrei Herasimchuk](http://www.designbyfire.com/000144.html): * But what the hell is up with the new BBEdit 8.0 icon? That has to be the worst looking “B” I’ve seen in some time. It almost looks like a “B” from [Comic Sans](http://bancomicsans.com/)! And we all know how catastrophic that is. Suffice it to say the new icon is the most unpopular aspect of version 8. On the other hand, if the icon is the most-complained-about change, it speaks well for the application itself. The most essential new aspect of BBEdit 8 isn’t what it looks like, or even what it does, but what it /doesn’t/ do — which is run on Mac OS 9. In fact, not only does BBEdit 8 only run on Mac OS X, it requires 10.3.5, due to several bugs in earlier versions of Panther. (Having beta-tested BBEdit 8 under pre-10.3.5 builds of Panther, I can attest to this.) This isn’t just an idle milestone — BBEdit 8’s Mac OS X-only nature informs nearly all of its major new features. This is not to say the last few versions of BBEdit didn’t take advantage of Mac OS X-only features. E.g., shell worksheets and the built-in Web Kit HTML preview, which for obvious reasons were only available when running BBEdit on Mac OS X. Now that it only runs on Mac OS X, however, BBEdit 8 can take advantage of OS X-only features throughout the entire application, including UI widgets only available on OS X. Most of the additions and changes to BBEdit 8’s user interface are tied to OS X-only controls and conventions. I see no need to provide a comprehensive overview of every new feature; [Bare Bones’ web site](http://www.barebones.com/products/bbedit/new.shtml) does a good job of that. And if that’s not enough information for you, the [full change notes](http://www.barebones.com/support/bbedit/arch_bbedit80.shtml) are available: over 300 bullet items spanning 27 printed pages. Needless to say, by any measure, this is a significant update. ## Multi-Document Interface The most profound addition is the new multiple-document interface. Analogous to tabbed browsing with Safari, you can now open multiple documents within a single BBEdit text window. A window’s open documents are displayed in a drawer on the right side of the window. Thus, the multi-document interface is much more like OmniWeb’s “tabbed” browsing than Safari’s. And like OmniWeb, BBEdit 8 allows you to drag documents from one window to another. Clicking an icon in the status bar opens and closes the Documents drawer. (A nice touch: if the Documents drawer in the front window is closed, it will open automatically if you hover a dragged document on top of the drawer-toggling icon in the status bar.) [image:70FBB329-7406-43DD-AD3B-F492BAA2778B-7348-00001D7BD73465FA/bbedit_8_doc_drawer.png] The multi-document interface is, of course, completely optional. If you’re not interested, you can merrily continue using BBEdit using only the traditional one-document-per-window. Conversely, a few new document-related preferences allow you to configure BBEdit to /always/ use the multi-document interface, putting new and opened documents in the frontmost window by default. It’s a radical departure from previous versions, where every text window represented one document, and every open document was in its own window. But it doesn’t feel radical. It just works, exactly how you’d expect it to. You can ignore it, you can use it all the time, or, you can use it when you want. I’ve been using the feature since it debuted during beta testing, and while I tend to use the traditional one-document scheme most of the time (if for no other reason than a decade of habit), I’ve found the multi-document interface convenient for grouping related files together. If you don’t want to give up the screen real estate for the documents drawer, you can keep it closed and switch between open documents in the front window using the also-new Navigation Bar, which looks and works very much like the Navigation Bar in Xcode. [image:36FCA9D3-0E8B-4B7B-AC7B-123E1E9F8446-7348-00001D7BD7133F09/bbedit_8_nav_bar.png] ## Unicode and Text Encoding Improvements BBEdit 8 now uses [ATSUI](https://developer.apple.com/intl/atsui.html) for text rendering. In all prior versions of BBEdit, the rendering engine was implemented using QuickDraw, a set of APIs dating back to the original Mac. This is an enormous under-the-hood change, text rendering being a core task of a text editor. If you only use roman character sets, you likely won’t notice that anything has changed — text editing and rendering looks and feels identical to that of BBEdit 7. Where the new ATSUI-powered engine shines is in the rendering of Unicode text. BBEdit now supports multiple languages — e.g. Chinese, Japanese, and English — all within the same document. If you don’t need advanced Unicode support, BBEdit’s new ATSUI-powered rendering engine works just as well as the old QuickDraw engine. If you do, you can now use BBEdit for tasks it previously couldn’t handle. For a small subset of BBEdit users, this is one of the biggest improvements in the history of the app. BBEdit’s handling of text file encoding formats has also improved greatly. A new Reopen Using Encoding sub-menu in the File menu allows you to manually specify the text encoding for a given file. Thus, if you open a file saved using Windows Latin 1 encoding, but BBEdit displays it as Mac Roman, you can easily reopen the file with the proper encoding. With BBEdit 7, you needed to close the file, then reopen it using the Open dialog box, specifying the text encoding using a pop-up menu in the dialog. There were other ways to do this ( [Marc Liyanage’s character set conversion Perl filters](http://www.entropy.ch/software/perl/) and the [Midex](http://www.barebones.com/support/bbedit/plugin_library.shtml#plugin_m10) BBEdit plug-in, for example), but nothing as easy or graceful as the new Reopen Using Encoding menu. ## Text Factories BBEdit’s multi-file searching allows BBEdit to act as a production tool for batch processing many files at once. Sure, it’s nothing a short Perl or Python script couldn’t do — but if you think everyone can or should learn to program, you’re missing the point. But there’s only so much a single search/replace can do. It’s great if you need to something simple, like changing the copyright date across a few thousand HTML files. But if you need to string together multiple replacements, it’s no longer a one-step process. Enter “ [Text Factories](http://www.barebones.com/products/bbedit/benefitsexercise.shtml#TextFactories) ”. A Text Factory is a new type of document that contains a list of one or more actions. You can easily add or remove actions similar to the way you add/remove search criteria in the Finder’s Find window: via ‘+’ and ‘-’ buttons next to each action. Text Factories seems conceptually similar to the [Automator](https://www.apple.com/macosx/tiger/automator.html) feature coming in Tiger. [image:E1E00470-402A-4157-BABA-5EE442684C77-7348-00001D7BD6E7D185/bbedit_8_factory.png] Many of the commands in BBEdit’s Text menu are available as Factory actions, as is the Search menu’s Replace All command. You can change files’ encoding and line-ending style (Mac/Unix/DOS). And for anything not covered by the built-in actions, you can also specify an AppleScript or shell script (Perl, Python, Ruby, bash, etc.) as an action item. You can execute a Text Factory against a single document window, but the real power comes when batch processing files. If you regularly perform the same repetitive actions against multiple files, a Text Factory might be able to automate the entire process, without scripting. And even if you’re comfortable with scripting — whether with AppleScript or a shell language — Text Factories still might prove useful for batch processing. If you write your script to serve as a Text Factory action, the script only needs to be concerned with processing the text of a single file at a time, saving you from writing code to recurse folders and loop through, open, and save files — which I consider a minor pain in the ass even in Perl. Multi-file Text Factory processing can also take advantage of the same file filtering mechanism used in BBEdit’s multi-file searching, making it easy to limit Factory processing based on attributes such as file names, modification dates, and labels. One obvious improvement for the future would be to allow Text Factories to be saved as “droplets” — small applications that you can drag files and folders to in the Finder. Adobe Photoshop and ImageReady allow their actions to be saved as droplets, and it’s a convenient way to invoke them when processing multiple files at once. ## Multi-File Searching Speaking of multi-file searching, BBEdit’s mighty Find dialog has received a makeover. Turning on multi-file searching now opens a drawer on the left side of the dialog. The drawer contains a list of search targets: all open documents, recently-searched folders, and every HTML Web Site configured in BBEdit’s preferences. It’s better-organized and more convenient than the pop-up menus it replaces. Plus, multi-file searches now run in their own thread, which means that searches can run in the background while you continue to work in BBEdit. Even though most searches I run take only a few seconds to run, it’s a nice improvement when I do run a lengthy search. ## Codeless Language Modules I mentioned this feature previously, when I released my [Apache Configuration](https://daringfireball.net/projects/apacheconfig) language module. Out of all the new features in 8, this is probably the one that most deserves a response of “It’s about time.” Prior to version 8, language modules for BBEdit needed to be compiled plug-ins written in C/C++. The advantage to this is that BBEdit’s compiled language modules are both powerful and very fast. The disadvantage is that most people aren’t willing or able to create them on their own. Most text editors follow the opposite approach, and /only/ support languages modules in a plain text format. Now that BBEdit supports both, it should provide a best-of-both-worlds experience. However, BBEdit 8.0’s codeless language module mechanism currently has a few shortcomings. It’s more than a little biased toward programming languages, with good support for things like functions, string delimiters, and keywords. What it’s not so good for are markup languages. (Like, say, Markdown.) The current CLM mechanism has no concept of things such as tags, and it doesn’t allow for using regex patterns to match language constructs. Nor does it allow for embedding one language within another, the way BBEdit’s built-in language module for HTML supports inline chunks of other languages, such as PHP, ASP, and CSS. ## Plug-ins Speaking of compiled plug-ins, BBEdit 8 now supports plug-ins compiled using Xcode (i.e. Mach-O binaries). Previously, BBEdit required plug-ins to be CFM binaries, which effectively meant they had to be compiled in CodeWarrior. This restriction pretty much eliminated hobbyist-level plug-in development, combined with the fact that many of the text-munging tasks tackled with plug-ins a decade ago are now much more easily written in Perl or Python. BBEdit 8 still supports old-style CFM plug-ins, with the sole restriction that it no longer supports plug-ins that aren’t Unicode aware. Also, a bunch of plug-ins that used to ship with BBEdit are now built-in commands in the Text menu: Add/Remove Line Numbers, Prefix/Suffix Lines, Sort Lines, Process Duplicate Lines, and Process Lines Containing. This, combined with the fact that other third-party plug-ins have been obsoleted by other new features in 8.0, has left me with zero plug-ins (other than language modules). Examples of obsoleted plug-ins: BBTidy (HTML Tidy is now available via BBEdit’s Markup menu) and Midex (no longer necessary thanks to the aforementioned Reopen Using Encoding sub-menu). I had a plug-in I wrote years ago for myself but never released, Stupefy Quotes, which has been obsoleted by the new Straighten Quotes command in the Text menu. I’m be interested to see whether support for Xcode spurs a surge in plug-in and compiled language module development. I’m guessing no for plug-ins — Unix Filters have eaten their lunch — but yes for compiled language modules. ## Support Files By dropping Mac OS 9 support, BBEdit is now able to fully support OS-X-style conventions for supporting files: * The application support folder is now named “BBEdit” instead of “BBEdit Support”. More importantly, it now supports proper domain layering, by which I mean that you can put a “BBEdit” support folder in `/Library/Application Support/`, and it will be available to any users on the machine running BBEdit. But each user can also have their own BBEdit support folder in the Application Support folder in their user Library folder, and the items therein will be used in addition to those from the top-level Library folder. * Custom keystroke shortcuts assigned to items such as AppleScripts, Glossary items, and Unix filters are no longer stored in the resource forks of each individual file. Instead, custom keystrokes are stored separately from the files, in a similar way as the custom menu key shortcuts for regular menu items. One reason for this is that users might not have sufficient privileges to write to the files in the top-level Library folder. Another is that it makes it possible for BBEdit to do a better job identifying and preventing keystroke conflicts. * BBEdit now uses OS X’s built-in preferences system. Thus there’s now a ‘com.barebones.bbedit.plist’ file containing your preference data, and, if necessary, you can set or check preference values using the `defaults` command-line tool — or you can hack a copy of plist file using BBEdit itself. There’s also a ‘com.barebones.bbedit.PreferenceData’ folder (named as such so that it sorts next to the regular preferences file in the Finder), containing user preferences that aren’t saved in the regular prefs file — including saved grep patterns, file filters, and S/FTP bookmarks. ## Document State Document state is text-file-specific metadata; for BBEdit, this includes things like the position and size of the window, the position of the scrollbar, the current text selection range, and the text encoding used to save the file. In all previous versions of BBEdit, state data was stored in the resource fork of each document. This technique was pioneered, I believe, by MPW (and BBEdit’s state resources were a superset of MPW’s). This scheme was quite clever, and worked exceedingly well in the old Mac OS world. The only thing /essential/ is the actual text of the document, which was stored in the data fork. By stashing state info in the resource fork, you could preserve it by passing it from one resource-fork-savvy medium to another. Send it to someone on Windows or Unix, and the state data would be lost, but the actual text in the data fork would be unaffected. In the new world of Mac OS X, however, storing state data in resource forks has significant downsides. For one thing, resource forks don’t survive the roundtrip through version control systems such as CVS or Subversion. It also causes problems with files are stored on file systems that don’t support multiple forks, such as WebDAV or UFS. For those reasons and others, BBEdit 8 has switched to an entirely new system for storing document state. Instead of storing state data inside each file, you get a single preference file that contains the state info for every file you edit. It’s stored in a new file inside com.barebones.bbedit.PreferenceData: “Document State.plist”. This solves all of the aforementioned problems with resource fork state info — you can commit a file into CVS, check out a new revision, and your state settings for that document will be preserved. If you work with multiple collaborators on the same set of files in a CVS repository, each of you can maintain your own state settings for each file. This is not to say there aren’t downsides to the new system. The new centralized state database is fragile — it references individual files by, of all things, a hardcoded pathname. Thus if you rename or move a file, BBEdit loses track of its state. Move it back and the state settings come back. This is clearly a trade-off. For anyone who works in a cross-platform environment or depends upon non-resource-fork-savvy tools, the new system clearly works better. However, for anyone for whom resource fork state storage did not pose a problem, the new system may not work as well, particularly for anyone accustomed to state persisting when you rename, move, or copy the file. ## Other Miscellaneous Improvements Based on Mac OS X Technology * BBEdit now optionally supports running pages through the Apache web server on your own machine before previewing them. Thus you can preview PHP-powered pages, and the preview will show the actual PHP-rendered output. There’s a world-class web server on every copy of Mac OS X, why /not/ use it? * [ *Update:* [Jerry Kindall points out](http://www.jerrykindall.com/2004/09/02_bbedit_80.asp) that the local preview server doesn’t need to be running on your machine — it could be any server which you can mount as a volume via filesharing (SMB, AppleShare, WebDAV). Thus members of a team working off a shared staging server can all preview the pages they’re working on “live” using the staging server. Very cool.] * BBEdit now uses Mac OS X’s built-in spelling checker. The advantage isn’t that the system’s spelling checker is particular great, but that BBEdit’s old built-in checker was rather clumsy and annoyingly modal. BBEdit doesn’t yet support check-as-you-type, but it does use the standard Spelling palette, and nicely underlines misspelled words in the document window itself. (The system’s Spelling palette inexplicably doesn’t have a Correct All button, and so neither does BBEdit. I hope this gets fixed, either by Apple in 10.4 or by Bare Bones in a future update to BBEdit.) * BBEdit now uses the system’s Fonts panel for choosing the display font and tab width of the current document. ## Other Details Worth Mentioning * In addition to the `bbedit` command-line tool that started shipping with BBEdit 6.5, BBEdit introduces a `bbdiff` tool for comparing the contents of files and folders. This completely obsoletes the [Perl script of the same name](https://daringfireball.net/projects/bbdiff) I slapped together two years ago. Bare Bones’ new tool does the same things as my script, plus more. * BBEdit 8 introduces several new text color preferences, including an option to subtly highlight the current line. It also allows you to specify custom colors for the selection highlight, independent of the system-wide setting set in System Prefs — this is useful if you decide to use a dark background with light text. * When BBEdit’s Balance While Typing option is on, you get a brief notification whenever you type an unbalanced closing parenthesis, bracket, or smart quote. In the old Mac OS, this notification took the form of briefly flashing the menu bar at the top of the screen. Easy to notice, but subtle enough so as not to be annoying. On Mac OS X, however, the API call that flashed the menu bar under Mac OS 9 and earlier does something different: it briefly flashes the entire screen. Definitely noticeable, and in many BBEdit users’ opinion, /too/ noticeable. * BBEdit 8 offers a much more OS-X-like notification: a transparent status window that fades in and out (similar to the ones the system displays when you change the volume or display brightness). [image:CCE54082-4775-4F25-B8F3-496B2F9CB3C1-7348-00001D7BD6CB80D5/bbedit_8_unmatched_bracket.png] * In an exceedingly nice touch, if the unmatched character is itself a smart quote, BBEdit uses straight quotes to delimit the character in the notification message. [image:A4E83B80-556A-45BD-B0F6-2BA8D5B30613-7348-00001D7BD6A51D16/bbedit_8_unmatched_quote.png] ## Pricing and Discounts The price for a new license has been raised to $199, but through the end of October, BBEdit 8 remains available for the old price of $179. Upgrades from version 7 are $49, and upgrades from /any/ previous version are only $59. Plus, BBEdit’s long-standing “cross-grade” discount remains: owners of Dreamweaver, GoLive, and BBEdit Lite can purchase BBEdit for only $129. (Yes, BBEdit Lite, which was available free of charge. No I don’t have something in my eye — I’m /wink/ ing.) ## Comments Elsewhere * [Michael Tsai](http://mjtsai.com/blog/2004/08/30/bbedit-8/) * [Jonathan ‘Wolf’ Rentzsch](http://rentzsch.com/notes/bbedit8) [BBEdit 8](https://daringfireball.net/2004/09/bbedit_8) # Using Drafts and Workflow as a clipboard manager. [image:936DF7C3-7EAD-4158-AB73-0DD92F410FDA-27570-00000302EE9BAFBB/maxresdefault-54e78818v1_site_icon.png] As I continue to play this little game I’ve created for myself in which I try to use and install fewer apps while [discovering](https://sethclifford.me/2015/09/using-slack-as-a-personal-information-center/) [new ways](https://sethclifford.me/2016/07/an-update-on-how-im-using-my-private-slack-team/) to use [the ones I love](https://sethclifford.me/2016/12/using-drafts-reminders-and-slackbot-as-a-task-management-system/), my latest run is based on replacing a dedicated clipboard manager app. While I do really like [Copied](https://geo.itunes.apple.com/us/app/copied-copy-paste-everywhere/id1015767349?mt=8&uo=4&at=10lSkX&ct=gr) and other apps like it, the truth of the matter is that I don’t need an app solely devoted to holding and managing snippets of information like this. I do /occasionally/ have this need, and so it’s something I like the idea of having, but it’s almost only for text/links, which I can do in a variety of ways. The trick is storing the snippets, but also making them accessible and easily retrieved, and because of the way iOS works, we’re limited in a few ways. Any app that does this can only run in the background for so long, and even if you’re using a widget for this, there’s only so much room in the UI to account for the things you can do without launching a full app UI. But since my specific needs are limited, I’ve experimented with pairing [Drafts](https://geo.itunes.apple.com/us/app/drafts-quickly-capture-notes/id905337691?mt=8&uo=4&at=10lSkX&ct=gr) and [Workflow](https://geo.itunes.apple.com/us/app/workflow-powerful-automation/id915249334?mt=8&uo=4&at=10lSkX&ct=gr) together: one as the snippet storage and one for the quick access to my most-used bits of text. A quick note: I think it goes without saying that if you use an app like Copied for images and other rich media, this wouldn’t really work for you. This is really centered on text, and the impetus for this was restoring my iPhone recently and for the millionth time not having my iCloud text expansions appear. Given that my needs are fairly limited anyway, I’m giving up on that broken-ass bullshit and building a replacement with the tools that I know will work. I still don’t understand how this far along and with all it can do having iCloud remember a three-letter shortcut for my email address and making it available on new devices consistently is such a fucking Herculean task. Anyway. ### Drafts as the library I used to use [TextExpander](https://geo.itunes.apple.com/us/app/textexpander-+-keyboard/id1075927186?mt=8&uo=4&at=10lSkX&ct=gr). I also used to have a million snippets I couldn’t remember. Then I decided to simplify and keep only the stuff I could. Once I realized this was a relatively small number of items, I decided to use the native iOS keyboard expansion for shortcuts. As you can see from my above comment, when it works, this is more than adequate for my needs. However, all too often I restore a device or set one up and I never get the shortcuts. Or they show up a month later. But Drafts is always there. Building on my thinking for how I was [using filters to move tasks out of my inbox](https://sethclifford.me/2016/12/using-drafts-reminders-and-slackbot-as-a-task-management-system/), I created a filter to separate these text snippets out too. I liked the way Copied allows you to have a title for the snippet, so I created that same structure in Drafts. I just added a tilde to the end of the title line. [image:1A7F67AE-CE3D-49F8-A72B-BA4DF1CED581-27570-00000302EE9A93B5/drafts_snippet.png] Along with that, I needed an action that would copy the body text but ignore the title line. Drafts has just such an action built in; just use the clipboard replace action, and instead of the `draft` tag, use the `body` tag. This takes everything but the first line and sets the clipboard. From here you can go wherever and slap it in. You can even search right within the filter if you have a lot of these. [image:3ED74AE9-7E85-4B5D-A9F8-81D79BAAA68B-27570-00000302EE994773/drafts_snippet_search.png] ### Workflow for quick access So that takes care of the storage and the occasional browse to find a thing you want. The other time I need this ability is when I’m doing something in another app, and the easiest way to do this is with a widget. I headed over to Workflow and built a very simple list of some frequent snippets that loads right in the widget body, replaces the clipboard, and can be dismissed immediately. I noticed that 15 lines is the max I can fit in one of these on my iPhone 7; any more beyond that and you won’t see everything. Again, my needs are simple, so this is fine. What I’ve done is build a multi-step action that first asks which list you want to display, and then displays the snippets in that list. [image:4583B3B0-AB87-4334-BE09-34348FD1A9C6-27570-00000302EE975B2E/workflow_snippet_widgets.jpeg] [The simplest way to get started](https://workflow.is/workflows/0eba95508858471a9955674c79326d1a) is to just do a basic text list, add the exact text you want, and have it replace the clipboard. But you could also use the text list to show a label, and then add “Replace Text” blocks for each one, and then send the replacement to the clipboard. This would work better if you had bigger blocks of stuff that you weren’t going to see anyway, or if you just like things looking tidy. (This was [Tim’s](https://twitter.com/nahumck) idea, I like it; I like tidy things.) What I’ve described is two separate sets of actions that manage this content. Now you /can/ can get Workflow to talk directly to Drafts by using the “Get Contents of Draft” action. This requires you to copy the UUID of the draft you want and place it in the action. This would be true automation, and way more fun. Unfortunately, when you do this, Workflow can’t grab the content directly from Drafts without first switching to the app, so you leave the widget and do a quick round-trip, which defeats the whole purpose of having a widget action in the first place. So I chose a few of my most-used snippets for access within the widget and spent the time up front to save it later. Now, you might be thinking: boy, that seems like a LOT of dumb work to do just to get the same functionality that a single app can provide, and you’d be totally right! It is. I will not argue this, not even a little. But, there are two reasons I like this. 1. I always have both of these apps installed, which means they’re always on every device anyway, and it’s one less app to install/manage in addition to that. 2. Every time I do this kind of thing, I figure out new things. In many cases, these dumb little experiments end up allowing me to refine something else I might have been doing already. This feels good. Finally, I figured I needed a quick way to make adding snippets easier, so I created [a basic Workflow](https://workflow.is/workflows/cecbbc0ade22475db15e46ab8a206826) that asks for input or grabs the clipboard (assuming I’ve copied what I want), asks for a title, and uses [Tim’s nifty Auto-Archive action](https://drafts4-actions.agiletortoise.com/a/1vu) to dump the filtered draft in the right bucket. Needless to say, since Tim and I go back and forth on this stuff all the time, I’ll drop an idea on him, and he’ll latch onto it and improve the flows. [image:80FAE0BF-6D9F-4E4E-A05D-D806F503400F-27570-00000302EE954377/pair_programming_posts.jpeg] So he figured out how to construct the text as a dictionary, and have Workflow present the list and pull the right text that way. Which means you can build a single text file in whatever app you want containing the labels and links/snippets/etc. and then just drop it into the leading text block in the workflow. This makes things very easy and nice. [Here’s the template for that.](https://workflow.is/workflows/b10ce195392744c5ba0eba6f0da06fd6) And then sometime later I went to bed. But he didn’t. I woke up to a long message and a few links. One to a [new Drafts action](https://drafts4-actions.agiletortoise.com/a/1wD) and one to [a Workflow](https://workflow.is/workflows/93fe39fe2c7a4c47abb42be96a733930) that’s called by that action. Basically, since Workflow can’t get the info directly out of Drafts in the background, he thought to create a text file that Workflow /could/ access in the background, and stuck it in its iCloud folder. Within that text file is the dictionary, containing the names of the text snippets, and the corresponding values for them. You can store these files in Drafts, and update them whenever you need to. Save the file again to that same folder in Workflow’s iCloud storage, and it’ll overwrite. The next time you run the workflow, it calls the new information from that file. It’s still not quite directly linking the two apps the way you’d think you should be able to, but it’s damned creative, and I told him so. And it’s way easier to edit the dictionary within Drafts than in a tiny box within Workflow. As far as I’m concerned, that’s the best way to do this: maintain a text file (or a series of text files for whatever you want) in Drafts, save out changes to Workflow’s iCloud folder, and the updated versions are always available when you want them. If you want to keep this in the widget, you’re still limited to the row number, but if you don’t care, you can have a list as long as you want. I realize it seems circuitous and somewhat silly, but the whole point of all of this is to *play and learn.* The game of reducing apps has a direct benefit in that every time I restore or set up a new device, it takes less time to get up and running. But these small excursions also allow me to think through problems and find new ways to solve them. Some people engage their leisure brain with crosswords or sudoku. These are the little puzzles I like to solve. *Update 2017-01-13:* I realized a week too late that I was mistakenly referring to dictionaries as arrays. So I corrected this egregious mistake. Sorry about that. [Using Drafts and Workflow as a clipboard manager.](https://sethclifford.me/2017/01/using-drafts-and-workflow-as-a-clipboard-manager/) # I Finally Reached Computing Nirvana. What Was It All For? [image:6C08633A-5F40-472B-AF79-6DDB6F00CB0C-25749-000002DAB76A137A/WI040122_MG_Ford_01.jpg] Like many nerds before me, I spent a goodly portion of my life searching for the perfect [computing system](https://www.wired.com/tag/computers/). I wanted a single tool that would let me write prose or programs, that could search every email, tweet, or document in a few keystrokes, and that would work across all my devices. I yearned to summit the mythic Mt. Augment, to achieve the enlightenment of a properly orchestrated personal computer. Where the [software industry](https://www.wired.com/tag/software/) offered notifications, little clicks and dings, messages jumping up and down on my screen like a dog begging for a treat, I wanted calm textuality. Seeking it, I tweaked. I configured. The purpose of configuration is to make a thing work with some other thing—to make the to-do list work with the email client, say, or the calendar work with the other calendar. It's an interdisciplinary study. Configuration can be as complex as programming or as simple as checking a box. Everyone talks about it, but it's not taken that seriously, because there's not much profit in it. And unfortunately, configuration is indistinguishable from procrastination. A little is fine but too much is embarrassing. I spent almost three decades configuring my text editor, amassing 20 or so dotfiles that would make one acronym or nonsense word concordant with another. (For me: i3wm + emacs + org-mode + notmuch + tmux, bound together with ssh + git + Syncthing + Tailscale.) I'd start down a path, but then there'd be some blocker—some bug I didn't understand, some page of errors I didn't have time to deal with—and I'd give up. A big problem I had was where to put my stuff. I tried different databases, folder structures, private websites, cloud drives, and desktop search tools. The key, finally, was to turn nearly everything in my life into emails. All my calendar entries, essay drafts, tweets—I wrote programs that turned them into gigs and gigs of emails. Emails are horrible, messy, swollen, decrepit forms of data, but they are understood by everything everywhere. You can lard them with attachments. You can tag them. You can add any amount of metadata to them and synchronize them with servers. They suck, but they work. No higher praise. It took years to get all these emails into place, tag them, filter them just so. Little by little I could see more of the shape of my own data. And as I did this, software got better and computers got faster. Not only that, other people started sharing /their/ config files on GitHub. Then, one cold day—January 31, 2022—something bizarre happened. I was at home, writing a little glue function to make my emails searchable from anywhere inside my text editor. I evaluated that tiny program and ran it. It worked. Somewhere in my brain, I felt a distinct /click/. I was done. No longer configuring, but configured. The world had conspired to give me what I wanted. I stood up from the computer, suffused with a sort of European-classical-composer level of emotion, and went for a walk. Was this happiness? Freedom? Or would I find myself back tomorrow, with a whole new set of requirements? [I Finally Reached Computing Nirvana. What Was It All For?](https://www.wired.com/story/i-finally-reached-computing-nirvana-what-was-it-all-for/) # All 105 Disney Channel Original Movies, Ranked [image:02F7984A-0B87-4B76-AD63-B9E2C5346AFD-20479-0000020BCC8EDFCE/88334202771e6f16d675997ab356e97606-disney-channel-original-movies-ranking-1.1x.rsocial.w1200.jpg] [image:A8C5E508-EAF1-40A2-BB14-FC6D712520B1-20479-0000020BCC8CB806/88334202771e6f16d675997ab356e97606-disney-channel-original-movies-ranking-1.rhorizontal.w700.jpg] Photo-Illustration: Vulture and Disney Channel Take it from someone who just watched every single Disney Channel Original Movie on [Disney+](https://disneyplus.bn5x.net/c/482924/707638/9358?sharedid=vulture &subId2=[]vu[p]ck9e9ay75005syjye4o0okb4k): You /think/ you want to revisit a Disney Channel Original Movie from your youth. You don’t. To paraphrase Matthew Broderick in Kenneth Lonergan’s /Margaret,/ which is about teens but very much /not/ a Disney Channel Original Movie: /Márgarét, áre you beaming/ /Over Cheetah Girls now streaming?/ /It ís the blight man was born for,/ /It is Margaret you mourn for./ I warn you: You’re not nostalgic for Disney Channel Original Movies. You’re nostalgic for a time when you were young and thought DCOMs were good, a time when you watched /Wizards of Waverly Place/ at the rate at which you now watch presidential addresses (which is to say daily, unfortunately). Some of them hold up wonderfully or are at least great examples of Y2K fashion. But most DCOMs walk like a movie and talk like a movie and yet feel like an uncanny species of sub-movie. They are paced strangely and slowly and follow kid logic or, rather, a TV executive’s /idea/ of kid logic. I say this from a place of love; I host a [Disney Channel Original Movies podcast](https://podcasts.apple.com/us/podcast/disney-channel-original-groupies/id1248587636). Like, for fun. But if theatrical releases are Oreos, DCOMs are Hydrox. They’re their own thing. Of course, there are exceptions. The works of Disney’s greatest living auteur, Kenny Ortega, for one. The works of Raven Symone, for another. Generally, if a DCOM is about learning to express yourself creatively, it plays better than the dead-parent ones, or the sports ones, or the ones about a protagonist learning to respect the differences between them and their bully/crush/townies. The fantasy ones are hit or miss; the science-fiction ones usually slap. But good or bad, nearly [all of them are available to stream on Disney+](https://disneyplus.bn5x.net/c/482924/707638/9358?sharedid=vulture &subId2=[]vu[p]ck9e9ay75005syjye4o0okb4k), making them easier than ever for you to revisit. So we’ve gone ahead and ranked all of them to help guide you through the catalog. Maybe you’re watching these out of nostalgia or boredom; maybe you have kids at home and are looking for all-ages content to play during quarantine. They need to learn their history. They need to learn about /Smart House./ *105. /Radio Rebel/ (2012)* A DCOM so bad, Disney has more or less disowned it. The real reason why /Radio Rebel/ isn’t available on Disney+ probably has less to do with shame and more based on distribution rights, due to it being a co-production with Canadian kids network YTV. Based on the original trailer, [Radio Rebel was produced](https://www.youtube.com/watch?v=Lc91iQ1Ivjo) by third-party producer MarVista Entertainment and distributed by the DCOM machine after the fact. That would explain the decidedly /un/ heimlich vibes of this Debby Ryan disasterpiece, about an awkward girl who’s secretly the most popular underground radio DJ in all of Seattle. The performances by Ryan and the background actors alike have become something of a TikTok meme recently, singled out and mimicked in [cringe compilations](https://www.youtube.com/watch?v=8D9LaIBJe-s). If the Gen-Z culturati has decreed that /Radio Rebel/ should be singled out and ridiculed, who am I to argue? /Radio Rebel/ should consider itself lucky. In 2010, Disney aired another [MarVista Debby Ryan original](https://www.youtube.com/watch?v=e1kPQFXlqzE) in conjunction with a /different/ Canadian kids network, and didn’t even grant it entry into the DCOM pantheon at all. That’s right: /16 Wishes/ is /not/ DCOM canon. *104. /Freaky Friday/ (2018)* This did not have to be done. Why was this done? It very much did not have to be. There is nothing wrong with remaking a classic for a new generation. Lindsay Lohan and Jamie Lee Curtis proved that when she remade the 1970s Jodie Foster /Freaky Friday/ for the 2000s. This 2018 version makes some grave mistakes, though. It is a musical with terrible, lazy music, the kind that people who /think/ they hate musical theater think all musical theater is. For another, the leads are deeply unpleasant, though not for lack of /so much effort/. Cozi Zuehlsdorff is a semi-unpleasant lead. Where Lindsay Lohan was punky and rebellious in /Freaky Friday/, Cozi’s Ellie is just sorta unhygienic and inconsiderate? The dreadful biology-class number, “ [Oh, Biology](https://www.youtube.com/watch?v=NZ4BnBAWvVw),” is probably the moment when this movie tipped over from cringeworthy and mediocre to genuinely offensive: The “over-40 soul” in a teenage body sings about getting horny for a young boy, with lyrics like “Why can’t my grown-up brain control my teenage parts?” and “I’m not in control and hunger has its say and hormones have their way” and “Though we’re both 15, he’s much too young.” Lock this movie in the Disney Vault and then set the vault on fire. *103. /Geek Charming/ (2011)* Watching every single Disney Channel Original Movie, I started to notice a dispiriting trend. As the decades rolled on, the movies started to get way /worse/ when it came to gender. In the ’90s movies about ragtag groups of siblings or bowling enthusiasts, boys and girls were friends without too much comment, and female characters were allowed to be tomboyish, nerdy, or girlie without morality judgments one way or the other. Then we hit the height of aughts fabulousness, the indulgent, beautiful, unapologetic over-the-top butterfly-clip goodness of Lindsay and Hillary and Raven. /Geek Charming/ features DCOM gender politics at their worst, though: All girls are inherently catty, shallow, and cruel, and boys are dopes of substance. Sarah Hyland plays popular girl Dylan, who is a grating affectation machine. She pronounces one-syllable words like two (“g /a-ROSSE”/ ), peppers her speech with a whole lot of “beaucoup” and “magnifique” and “d’accord,” and spells things out before she says ’em (“O-V-E-R, /over”/ ). Her terrible secret is that she’s good at math, even though she’s a /girl./ She ends up befriending and giving a makeover to a mini–Mark Cohen high school documentarian and film geek who wants to shoot a doc “about the revolution of robot voices in the science-fiction genre,” but ends up making a home movie about how even /girls/ can be /deep/ when they’re not busy being so /shallow./ The main character is rude to her maid, the female best-friend characters are all props, and there are “jokes” (in 2011!) about how sushi is yucky raw fish. /Heathers/ has better teen role models, and it’s about murder. *102. /You Lucky Dog/ (1998)* Kirk Cameron stars in this caper about a fraud dog psychic whose body gets possessed sometimes by a dog who is also an heir to a fortune. There has never been a kids’ movie with so few actual kids; it’s all grown-ups acting snooty and an adult Kirk Cameron acting like a dog. *101. /Dadnapped/ (2009)* In 2009, Disney was trying pretty hard to break Emily Osment out from under Miley Cyrus’s shadow. Disney was really trying to make the /Hannah Montana/ sidekick and sibling to Haley Joel /happen,/ you know? So they gave her this DCOM, which takes the plot of /Misery,/ makes it kid-friendly, and gives the kidnapped novelist a scrappy daughter. It’s as unpleasant as that sounds. *100. /Bad Hair Day/ (2015)* The plot of this movie is that on the day of the prom, prom-queen hopeful Laura Marano gets swept into a rote buddy-cop comedy with an adult PI played by Leigh-Allyn Baker, all while taking her driving test and having a very bad hair day. There’s something that feels very aimless and lost in translation about /Bad Hair Day,/ like it was a neutered Melissa McCarthy project that went through rounds of rewrites before becoming a DCOM. The characters never totally mesh in this unfunny /Ride Along./ Above all, though, main problem here is the filmmakers were so effective at making Marano’s hair day /so/ bad, it upsets me to look at. It’s very, very greasy and the word “crispy” gets thrown around and I couldn’t finish this movie because I didn’t want to look at it. *99. /The Poof Point/ (2001)* Tahj Mowry’s parents Benjamin Button themselves, and the whole thing is impossibly cringe. *98. /Under Wraps/ (1997)* /Under Wraps/ earns points for being the first-ever Disney Channel Original Movie, and loses points for being less of an in-mouse production. The movie was produced by Hallmark Entertainment and it the rights are now held by Universal, which would explain why it’s not available on Disney+. This movie about kids who discover a mummy and reunite it with its lost-mummy-love is a decent first effort, but it pales in comparison to Disney Channel’s later kiddie-macabre fare. Mummies just aren’t vampire or mermaid-tier monsters. *97. /Hatching Pete/ (2009)* The tagline is “Cock-a-doodle-WHO??” and it’s the best thing about this movie. Disney Channel helmet-haired fixtures Jason Dolley and Mitchel Musso play friends who switch places as their school’s chicken mascot because Musso is allergic to the feathers. Typical misunderstandings ensue. There’s a lot of “bare-minimum comedy” at work here, as though the writers assumed chicken suits and fake sneezing were good enough for discerning Disney Channel audiences. Fun fact: Mitchel Musso and Tiffany Thornton released a single for this movie called “Let It Go,” so up until 2013, if someone mentioned “that Disney song ‘Let It Go,’” they were talking about a track by the kid who played Oliver on /Hannah Montana./ Know your history. *96. /The Other Me/ (2000)* Andrew Lawrence clones himself and I’m thoroughly bored. *95. /Can of Worms/ (1999)* Here’s what I liked about /Can of Worms:/ Puppets. Practical effects. A talking dog with a C-3P0 accent. Here’s what I didn’t care for: /Can of Worms./ As you’ll see, there are movies on this list that do Space Teen better as a genre. *94. /Alley Cats Strike/ (2000)* Disney Channel has made movies about every possible sport. Some sports warrant multiple movies, like how every other DCOM is about basketball. Even so: Who was the audience for this movie about a bunch of teens who listen to doo-wop music and are into /bowling/ to a humorless degree in the year 2000? Tell me who! *93. /The Ultimate Christmas Present/ (2000)* Tiny Brenda Song stars in this forgettable Christmas movie about two friends who steal Santa’s weather machine to make it snow in L.A. The premise is cute-enough kid stuff, but the grown elf-men in lederhosen are thoroughly disturbing, if never as funny as they’re intended to be. Lots of Disney Channel Original Movies feature food fights or people falling into goop. The goop can range from frozen yogurt to mud, Jell-O to alien slime. Here, it’s a vat of chocolate in a chocolate factory. I assume this is a reference to the Joker’s origin story? Hard to say. *92. /Good Luck Charlie, It’s Christmas/ (2011)* I had phased out of Disney Channel by the time the sitcom /Good Luck Charlie/ came around, but it’s about a family with a baby named Charlie. Most Disney sitcoms are about teens with powers and/or double lives. This is far too thin a premise. Not enough dogs, not enough blogs. /Good Luck Charlie/ is the first DCOM adaptation of a Disney Channel series on this list, because it is the worst, because it is based on the worst, most boring show. *91. /Return to Halloweentown/ (2006)* The Sinister Sisters walked so the Weird Sisters could run, sure, but replacing Kimberly J. Brown with Sara Paxton was so rude I don’t even want to finish this sentence. *90. /Jumping Ship/ (2001)* This sequel to the much better Lawrence-brothers vehicle /Horse Sense/ takes them away from the horsies, which is already a point against it. Watching this made me wonder: How many DCOMs take place on a tropical island? Thirty? *89. /Invisible Sister/ (2015)* Rowan Blanchard turns her popular older sister invisible. Then they have to switch places? It’s too similar a premise to Katherine Heigl’s /Wish Upon a Star,/ which you’ll read more about shortly. *88. /Double Teamed/ (2002)* This children’s movie is called /Double Teamed,/ which is /insane./ Unfortunately, it doesn’t live up to the name. It’s about hypercompetitive twin sisters who are supposed to be 14 at most but who I believe are played by non-twin non-sister actors who are maybe 29 and who I believe were cast not for any acting ability but for being tall. They are bullied at school because they are tall, but they are also 29-year-old women who look nothing alike, surrounded by kids. It’s like that girl who plays Elle Woods in the most important YouTube video of all time, “ [Legally Blonde: ‘Omigod You Guys’ feat. All-Star Cast.](https://www.youtube.com/watch?v=_v8LF-YWKfo) ” It is also about basketball. *87. /Phantom of the Megaplex/ (2000)* This one’s a classic, but it’s so, so strange. A kid who doesn’t even appear to like movies all that much loves his job as the general manager of a movie theater. His passion is not for movies but for managerial skills, spreadsheets, and ordering people around. One fateful night, when important movie execs are there, a “Phantom of the Megaplex” sows chaos. The phantom turns out to be Mickey Rooney, and it’s kind of sad to watch, honestly? *86. /Kim Possible/ (2019)* Like lesser animated classics /Beauty and the Beast/ and /The Lion King,/ the thing about the /Kim Possible/ series is that it’s a perfect art object as is, and is in no way served by a live-action adaptation. Sure, this DCOM has Patton Oswalt and Alyson Hannigan, who are both about as A-list as most DCOM grown-ups get, but there’s not nearly enough Christy Carlson Romano to make it worthwhile. *85. /Frenemies/ (2012)* This movie stars Zendaya and Bella Thorne; therefore, it should be a masterpiece. Unfortunately, the movie is broken up into three intertwining stories, and only the second one concerns this collab of a lifetime. It’s a pass. *84. /Motocrossed/ (2001)* When a red-state DCOM doesn’t even have pretty horsies? Honey, what is the /point./ *83. /Twitches Too/ (2007)* The sequel to Tia and Tamera Mowry classic /Twitches/ is so very overladen with such a tiresome plot: In the magical land of Coventry, there is a shadow from the shadow realm attacking other shadows. But also, their wizard-dad (not their adopted Muggle-Dad) is dead but also trapped in shadow-land. When the dark lord Thantos is released, the Twitches put a stop to him by making him fall down a well. Spoiler alert, but there’s a happy ending where the annoying servant-sidekicks get married and don’t kiss. Despite watching it, I can barely tell you what actually happens. The Wikipedia page says that /Twitches Too/ had a $26.5 million budget. Not a dollar went to the special effects. *82. /Buffalo Dreams/ (2005)* Look, it is cool and majestic to see buffalo (the animal, not the city) on film. This is undeniably true. But everything you need to know about what makes /Buffalo Dreams/ a little sus for 2005 is in this line of its plot summary: “In recognition of his bravery, Josh is made an honorary member of the Navajo tribe with the name Rides With the Wind.” Oof. *81./Genius/ (1999)* A small nerdy child loves hockey and physics, which are two things I have never been able to bring myself to care about. When he takes a TA job lecturing at a college because he’s Doogie Howser–style smart, he decides to reinvent himself at the local high school as “cool kid” Chaz. But a tiny Emmy Rossum is the love interest, and she figure-skates, and that’s fun. *80. /Quints/ (2000)* A very early DCOM that asks, “What if there were five babies?” Kimberly J. Brown of /Halloweentown/ fame narrates the whole thing in a /Clarissa Explains It All–/ style fourth-wall break. I never thought I’d say this, but: Five babies is too darn many. *79. /The Suite Life Movie/ (2011)* Dylan Sprouse plays slacker Zack and Cole Sprouse plays nerdy Cody in this movie adaptation of the /Suite Life/ franchise. Where this one loses the mark for me is that it’s a sci-fi caper about a plan to mind-control sets of twins. But there is a subplot about all-time baddie and icon London Tipton (Brenda Song) talking to dolphins, which is very good, because it’s much more in the kooky spirit of the series. *78. /Wish Upon a Star/ (1996)* Katherine Heigl is the cool big sister, and Danielle Harris is the dorky little sister. That is, until they trade places. Now we’re stuck watching Katherine Heigl play a dork. I was going to put this movie lower, but [Hunter Harris](https://www.vulture.com/author/hunter-harris/) said, “How was I supposed to learn what a hickey was without that movie,” which is as good a justification for it as any! In fact, it’s what a DCOM /should/ do, we say. *77. /Zapped/ (2014)* Zendaya’s phone can control boys! This movie falls into a bit of the “girls are like /this/ and boys are like /this”/ trap, but it’s so much better than it would have been if it didn’t star Zendaya. *76. /Princess Protection Program/ (2009)* Demi Lovato is a princess of an off-brand [Genovia](https://www.nationstates.net/nation=genovia/detail=factbook/id=1011441) who must go into hiding with regular American tomboy Selena Gomez in her Louisiana swamp home. Along the way, there’s a super-secret spy agency that gives princesses makeovers, a devious scheming designer named Mr. Elegante, and more of those annoying, terrible gender politics about how a girl’s worst enemy is other girls, unless they’re a down-to-earth girl, who you can always tell apart from the other (evil shallow) girls by their flannel shirts. Also, the basic premise of /PPP/ is fundamentally hilarious to me because it’s about how a wealthy princess in the 21st century is clueless, sheltered, and innocent, when in reality she’d be partying in Ibiza. The fantastic thing about this movie is that [Cousin Greg](https://www.vulture.com/2019/08/nicholas-braun-succession-cousin-greg-encounter.html) is in it. *75. /’Twas the Night/ (2001)* Bryan Cranston plays a criminal who out of desperation drags his family into his seedy misdeeds. Only it’s not /Breaking Bad/; it’s a Christmas DCOM from 2001 where he has to be Santa for a night. This is one of those DCOMs like /You Lucky Dog/ or /Bad Hair Day/ that has way too much grown-up business. *74. /Johnny Kapahala: Back on Board/ (2007)* The original Johnny Tsunami was predicated on a brilliantly simple premise: What if a tropical surfer dude became a snowboarder? It works. Also, Brandon Baker was adorable as the plucky lead. The sequel was filmed an inexplicable eight years later, and finds Johnny … mudboarding? I’m good, luv. *73. /Phineas and Ferb: The Movie/ (2011)* DCOM adaptations of live-action Disney Channel series usually feel like distinct works, because they switch from the sitcom multicam to a more cinematic single cam. In contrast, the /Phineas and Ferb/ movie feels like a supersized episode of /Phineas and Ferb/. Which is good news for /Phineas and Ferb/ fans, which I’m sure many of you are! I personally think it’s a sub– /Dave the Barbarian–/ tier Disney cartoon that hit huge because it came out in an era when “random” automatically meant “funny,” but didn’t have the artistry of its far wackier Cartoon Network contemporaries or the sincerity of earlier Disney Channel cartoons and … Oy. Never mind. It’s about the boys discovering the truth about Perry the Platypus. Fine. *72. /Gotta Kick It Up!/ (2002)* This one had so much potential. “Susan Egan coaches America Ferrera in a Latina spin on /Bring It On/ ” sounds like DCOM gold, but where /Bring It On/ had jokes, this has blandly inspiring Disney Channel halfwayism. What a shame. *71. /You Wish!/ (2003)* The sidekick from /Even Stevens/ and the sidekick from /Lizzie McGuire/ join forces in a sidekick jamboree about a boy who wishes his little brother, Spencer Breslin, went away. It ends up being a meditation on the terrible realities of child stardom, which is especially fucked up considering, you know, Disney Channel. *70. /Wizards of Waverly Place: The Movie/ (2009)* Selena Gomez and her wizard family go on vacation to the Caribbean, and it’s pretty watchable and funny enough. *69. /Zenon: The Zequel/ (2001)* NOBODY replaces Raven. *68. /How to Build a Better Boy/ (2014)* Mae and Gabby are unpopular nerds at their high school, which is confusing because whoever did the costume design for this went /off/ and made them look pretty cool. Mae has a crush on Noah Centineo, but mean girl Nevaeh wants him for herself, so Mae and Gabby basically build a /Westworld/ host to take Mae to the dance instead. The Pentagon gets involved. This movie is probably a shade too kooky for its own good, but how can I be mad at a DCOM about teens who build a bioweapon prom date and face off with a shadowy arms dealer? Also, Centineo’s name is “Jaden Stark.” *67. /Zombies/ (2018)* Zombies live on the rough side of town. Humans go to a preppy school where they follow the rules and fear the zombies. What happens when the zombies go to human school? Love and musical numbers! *66. /Descendants/ (2015)* Disney villains live on the bad side of town. Good guys go to a preppy school where they follow the rules and fear the villains. What happens when the villains go to good-guy school? Love and musical numbers! This is kind of a fever dream, but it edges out /Zombies/ because Kristin Chenoweth plays Maleficent and Kathy Najimy plays the Evil Queen, and those casting decisions are huge for me, personally. Like /Zombies/ the DCOM /, Descendants/ was an absolute phenomenon when it came out. But unlike the deteriorating-flesh monsters, this franchise only gets better with time. *65. /Girl vs. Monster/ (2012)* Olivia Holt is a fifth-generation monster hunter in this spooky Halloween DCOM. Disney Channel has its fair share of supernatural Halloween movies, and this one isn’t the strongest, but what really matters in /Girl vs. Monster/ are [the bops](https://www.youtube.com/watch?v=8IW1yAPF3lo)! “Monster Mash” who? *64. /Starstruck/ (2010)* A celebrity superstar falls in love with just a regular girl. The celebrity superstar is played by Sterling Knight, who looks like a wax figure. His sidekick is played by Brandon Mychal Smith, a.k.a. Sam from /You’re the Worst,/ who elevates every Disney Channel product he touches. This movie is very “just fine.” It will roll right off your quarantine-smoothed brain like water off a duck’s back. *63. /Miracle in Lane 2/ (2000)* Frankie Muniz stars in the true story of a boy with spina bifida who finds a passion for soapbox-derby racing. This film mostly stuck with me from childhood because there’s a scene where God(?) shows him a glimpse of heaven(???) and it’s full of dead children in wheelchairs with wings, flying around(??!?!??!??!?!). I understand the message it is trying to impart, but that doesn’t make it not scary. *62. /Cloud 9/ (2014)* This Dove Cameron movie about competitive snowboarders falling in love at a lodge feels like some sort of missing link between DCOMs and more mature, mellow Hallmark romance movies. And that’s a good thing! Still, there are better snowboarding movies on this list. *61. /Go Figure/ (2005)* A figure skater gets a hockey scholarship so that she can train with a renowned Russian skating coach who is very mean, so you know she’s good. Kristi Yamaguchi cameos as herself. There’s a Brie Larson song on the soundtrack. Why is hockey such a mainstay in so many DCOMs? Is it because the majority of them film in Vancouver and Toronto neighborhoods that ably pose as American suburbs, and so the child actors and extras are all preternaturally talented at hockey? Maybe so. *60. /Minutemen/ (2008)* This DCOM about time-traveling teens gave us “Like whoa” from Aly & AJ. It also gave us Nicholas Braun in a leather jacket on a motorcycle. His character’s name is “Zeke,” as this DCOM was released in the era when there had to be at least one character per film named “Zeke.” Time travel is always a minefield, but /Minutemen/ has a fun, solid take on it that holds up. *59. /Now You See It …/ (2005)* /Now You See It/ is a hat on a hat on a hat. It is about a teen magician competition. But it’s also a teen magician competition reality series. But it’s also a teen magician competition reality series where the producers, camerapeople, and boom operators are also teens. And it’s also a semi-mockumentary about the “making of” the teen magician competition reality series, by one of the teen producers, Aly Michalka. I take it back. It’s not too many hats. /More/ hats, please! *58. /Hounded/ (2001)* /Smart Guy’/ s Tahj Mowry is bullied at prep school by Shia LaBeouf, whose dad is the headmaster and also Ed Begley Jr. This should be reason enough to watch, but if you still need convincing, most of the action centers around a Chihuahua named Camille. *57. /Don’t Look Under the Bed/ (1999)* /Don’t Look Under the Bed/ was so scary, apparently, that it got a rare PG rating and eventually stopped being played on Disney Channel altogether. The concept of there being a whole world under the bed where the bogeyman lives is a good one; it’s a shame that they saved it for the last 20 minutes of the movie. Also: “Larry Houdini.” *56. /Den Brother/ (2010)* A hockey-loving teen (because what else?) becomes a Girl Scout troop leader in order to win the affections of the popular girl. The rival scout-leader mom is a perfectly played-to-11 villain in an otherwise sweet, low-key movie. *55. /Read it and Weep/ (2006)* The premise is kind of like /Diary of a Wimpy Kid/ meets /A Million Little Pieces/ meets Carrie Bradshaw’s book launch. Make sense? No? Hm. Okay: Jamie is an awkward teen who writes doodle-filled wish-fulfillment diaries about a fictionalized version of herself, and the diary becomes a best seller. Here’s the real mind trip, though: Jamie and her fantasy alter ego Isabella are played by sisters Kay and Danielle Panabaker, who have each appeared in multiple DCOMs and who I thought were the same person until literally now. *54. /Ready to Run/ (2000)* Like the David Milch series /Luck,/ only without all the horse death … that we know of. Jason Dohring plays a rodeo clown in a shirt that I would very much like to own in this story of a girl who wants to be a jockey in a sport dominated by small men. She soothes a skittish horse using noise-canceling headphones. I’m sure this movie will go over big in a household of horse girls, but I expected revolutionary things from a movie named after an S-tier Dixie Chicks song. *53. /Tiger Cruise/ (2004)* Hayden Panettiere is a Navy brat who’s on a “Tiger Cruise” for military kids on an aircraft carrier on September 11, 2001. It’s the most Bush-era rah-rah DCOM there is, but it was filmed on actual U.S. Navy supercarriers and therefore a cool watch for kids who are into ships ’n’ planes ’n’ things. *52. /Rip Girls/ (2000)* A sweet, earnest DCOM about a tween who moves back to the Hawaiian island where she was born and learns about herself, her heritage, and surfing. There’s an evil-colonizer–resort-developer subplot. *51. /Up Up and Away/ (2000)* /Up Up and Away/ was the original [Sky High](https://en.wikipedia.org/wiki/Sky_High_%282005_film%29) /,/ and nobody can tell me otherwise. An average, powerless tween deals with his family of superheroes whose only weakness is tinfoil. *50. /Stepsister From the Planet Weird/ (2000)* This movie ranks as high as it does for having /the/ wildest sci-fi graphics I have ever seen in any movie, Disney Channel Original or otherwise, before or since. It only happens for a brief sequence, but when we see the alien sister’s home planet and she tells her family’s story, it’s so Y2K chic it defies explanation. *49. /Life Is Ruff/ (2005)* /Best in Show/ meets /Cory in the House./ A combo you didn’t know you needed, until now. *48. /Halloweentown High/ (2004)* Before zombies went to human high school or villains went to good-guy high school, the /Halloweentown/ franchise arranged an exchange program for some monster kids, including some /High School Musical/ backbenchers like Lucas Grabeel and Olesya Rulin. Finn Wittrock plays the love interest! I loved this movie as a kid, but upon rewatch, it makes less than no sense and the plot is writing special-effects checks that its budget can’t catch. This is the last /Halloweentown/ movie with the dream team of Debbie Reynolds and Kimberly J. Brown, though, so it’s a significant milestone in DCOM history. *47. /Horse Sense/ (1999)* Joey and Andrew Lawrence pet pretty horsies and build the perfect treehouse in this very good-enough DCOM. The “spoiled kid learning humility and good ol’ American values through farm work” thing is similar to /Cow Belles,/ but this is a much mellower breed of movie. *46. /Descendants 2/ (2017)* The sequel to /Descendants/ replaces Kristen Chenoweth with an actual lizard(?) and it didn’t have those big Najimy bucks either, but it’s an all-around better movie, centering around a bunch /more/ villain kids who try to ruin Dove Cameron and the Son of the Beast’s happily ever after. Namely, Ursula’s daughter Uma puts a love spell on the Son of the Beast, and eventually turns into a massive sea witch, recreating the climax of /The Little Mermaid./ The sons of Captain Hook and Gaston are her guylinered, ripped lackeys, and Lady Tremaine’s granddaughter runs an eeeeeevil hair salon and is played by Anna Cathcart, Kitty from /To All the Boys I’ve Loved Before./ If all this sounds like a fevered /Once Upon a Time/ spec script, that’s because it very well may be one. *45. /Avalon High/ (2010)* I love Arthurian nonsense, and so I’m all for this Meg Cabot adaptation about a daughter of medieval-studies professors whose high school is tied to the legends of King Arthur and the Knights of the Round Table. *44. /Teen Beach 2/ (2015)* This sequel couldn’t have possibly lived up to the impossibly high expectations I had for it. Anyone who has ever been cornered by me at a party knows that I think /Teen Beach Movie/ is a masterpiece of postmodern cinema. The sequel, which does the obvious thing of “You’ve seen these modern kids in ’60s movie world, now let’s see the ’60s movie kids in the modern world” that was teased in the original /Teen Beach/ post-credits. But any of the sly gender subversion at play in the first movie gets done to death far too bluntly in the sequel. And “These movie characters don’t know what a phone is!” jokes don’t make me laugh quite as hard as “these Gen-Zers don’t know who Gidget is!” jokes, because the former are done to death and the latter are patently insane. I admire how /Teen Beach 2/ commits to its high-stakes ending for the leads. Ultimately, though, the songs just aren’t as good, and that’s kind of the whole appeal of the first one. *43. /Mom’s Got a Date With a Vampire/ (2000)* Caroline Rhea plays the /titular/ mom, and Mr. Sheffield from /The Nanny/ is the /titular/ vampire. The kids elicit a big shrug, but the adults are fun. *42. /The Thirteenth Year/ (1999)* A young merbaby is abandoned by his mermom at birth and grows up in the human world, unaware of his origins, and a fan of competitive swimming. The decision to make this puberty parable about a merman instead of a dime-a-dozen mermaid is what tips /The Thirteenth Year/ over into iconic. The 1999 special effects on his mertail and his glamorous telepathic mermom are icing on the mercake. *41. /Going to the Mat/ (2004)* Andrew Lawrence is back, and this time he plays a blind teen with a passion for drumming who gets very into competitive wrestling. Watching this as a kid, I had never seen a blind character in this sort of active, protagonist role, and it definitely stuck with me. Kudos for that. *40. /Kim Possible Movie: So the Drama/ (2005)* Now /this/ is how you do a feature-length /Kim/ /Possible/ DCOM. *39. /The Even Stevens Movie/ (2003)* /Tim(!) Goddamn(!!) Meadows(!!!)/ plays a scheming reality-TV producer who tricks the Stevens into going on a tropical vacation that’s /actually/ the set of a reality show that they’re totally unaware they’re participating in. But it turns out Tim Meadows was being pranked all along by a /different/ reality show. /Even Stevens/ was so good, you guys. *38. /Tru Confessions/ (2002)* Shia LaBeouf has his Leo–in– /What’s Eating Gilbert Grape/ breakout moment as a teen with developmental disabilities. Instead of Johnny Depp, though, his sibling is a girl who escapes into a sitcom fantasy life, Abed Nadir style. It’s not a perfect DCOM by a long shot, but kudos for ambition. *37. /Cheetah Girls: One World/ (2008)* We’ll say this for /Cheetah Girls: One World —/ there isn’t another DCOM like it. The threequel finds the pop group traveling to India to compete against each other for the lead role in a Bollywood film called “Namaste, Bombay.” Raven Symone left the project, though, and her absence is certainly felt. *36. /Right on Track/ (2003)* Did you know there was a period of time that doesn’t get talked about in American-history class, when if you put Beverly Mitchell and Brie Larson side-by-side in a movie, Mitchell was the more famous of the two? In 2003, they starred in a movie about the kind of drag race I don’t normally go for. But hey, the cars vroom-vroom real fast, and as with /Ford v. Ferrari,/ that counts for something. *35. /Cow Belles/ (2006)* Mid-aughts power sibs Aly and A.J. Michalka play dairy heiresses who have to learn about responsibility by doing farm work. This fun, frivolous response to /The Simple Life/ has an Aly & A.J. soundtrack that /do/ slappeth, a cow-birth, and a hunky farmhand. *34. /Adventures in Babysitting/ (2016)* This 2016 remake of the 1987 sleepover classic is the 100th DCOM ever made, and therefore some sort of milestone for terrible freaks (me). It’s … totally fine! Sabrina Carpenter always makes Disney Channel shows and movies more watchable than they have any right to be, and the scope of it feels slightly larger than similar DCOMs. There’s a laughably bad rap-battle scene that bumps this up a few spots. *33. /Twitches/ (2005)* /Twitches/ really plugs into the teen fantasies of finding a long-lost identical twin sister and learning that you’ve got a magical destiny in another land. What doesn’t make total sense is that the twin witches in question are 21 and not, you know, /tweens./ So much of this movie stops making sense when you realize that Tia and Tamera Mowry were /almost 30/ when they made this. (And they /were/ 30 when the sequel came out.) The characters act like teens, and the plot feels so much more like teenage wish fulfillment. Why wasn’t /Twitches/ made in the ’90s, when Tia and Tamera were at the height of their /Sister, Sister/ powers and /Sabrina the Teenage Witch/ made witches a whole thing? Oh, well. As a Harry Potter–obsessed tween, I remember liking /Twitches/ a whole lot. And that’s who it’s for, after all, even if it’s about adults. *32. /Eddie’s Million Dollar Cook-Off/ (2003)* A classic, this was a classic. Fourteen-year-old Eddie has to balance his love of baseball with his passion for cooking. He’s the star player on a ragtag Little League team that has a /college scout/ coming to visit it. The team needs Eddie, but he wants to compete in the /titular Million Dollar Cook-Off,/ which angers his father, who’s constantly spewing little microaggressions. There’s definitely a queer reading that /could/ be made of /Million Dollar Cook-Off:/ Eddie’s confused about his identity and what cooking means at a pivotal age; his father shuns him and is furious with him for doing something feminine while his mother understands. He’s ostracized at school for “cooking,” and he has a crush on Bobby Flay, who makes a cameo as himself. There’s lots of talk of how when dads and coaches say things like “You throw like a girl,” it’s perpetuates really hateful stuff: The kids have an “I am Spartacus” moment about this. It’s basically /Free to Be You and Me, 2003./ Still, by the second or third food-fight scene, I was over it. Watch this while you’re teaching your kids to cook on Week 200 of quarantine. *31. /Zenon Z3/ (2004)* Where /Cheetah Girls: One World/ casts Raven aside, the Zenon threequel cleverly brings her back. Now, Zenon is competing to win the title of Galactic Teen Supreme, until she has to save Earth from a /moon goddess!/ Incredible. *30. /Let it Shine/ (2012)* Tyler James Williams from /Everybody Hates Chris/ plays the son of a pastor who calls rap “the devil’s music” (in the year 2012, can you imagine). He ends up writing and performing on behalf of his untalented friend, who plays the music off as his own to get with Roxie Andrews, a character named after [the greatest rapper of all time](https://youtu.be/PPTyqzM253Q?t=180). If you couldn’t tell yet, the premise is supposed to be a hip-hop teen version of /Cyrano de Bergerac./ The main character is even named Cyrus DeBarge. Brandon Mychal Smith steals scenes yet again as a rival rapper. *29. /Sharpay’s Fabulous Adventure/ (2011)* Can a movie not premiere on Disney Channel and still be a Disney Channel Original Movie? /Sharpay’s Fabulous Adventure/ can. This spinoff of the /High School Musical/ franchise is the first Disney Channel Original Movie to be released straight to home video. Watching the movie, I would wager that Disney shunted it to the Walmart DVD bin because it taints the relative prestige of the /HSM/ trilogy. In the spinoff, Ashley Tisdale’s spoiled theater girl Sharpay Evans moves to New York to try her shot at Broadway, shot on location in beautiful downtown Toronto. When her dog named Boi (insane) auditions for a dog musical (in- /sane/ ), he falls in love with a rival dog named Countess. Long, lingering dog-glances ensue while Ashley Tisdale stomps around saying things like “Daddy, the reason why I buy such expensive shoes is to take monumental steps,” and “Daddy, you know how I feel about carb references.” Austin Butler plays an NYU student who follows her around with a camera, because that’s Disney Channel’s No. 1 favorite romantic trope. For better or worse, this is the sort of high camp DCOM that I like. I watch movies like this and say “This is good” out loud. Sorry. *28. /Luck of the Irish/ (2001)* This coming-of-age story about an Irish-American kid who hits puberty and becomes a /leprechaun/ is a purely cuckoo-bananas venture in the vein of /Thirteenth Year,/ bless its heart. His hair turns red and his ears turn pointy and he becomes very small, which is a problem because he plays basketball, and his grandfather is an evil leprechaun named Reilly O’Reilly, and … actually, is this movie super-offensive to Irish-Americans? Feels like it, but it’s worth it. *27. /Ring of Endless Light/ (2002)* Mischa Barton can talk to dolphins in this masterpiece. *26. /Camp Rock 2: The Final Jam/ (2010)* In some ways, /Camp Rock 2/ is better than the first movie. It’s much goofier in tone, it features that great sequence where they’re all marching in a line chanting “Camp Rock!” and doing that hand-choreo, and it operates more like an actual musical, with songs that tiptoe on that touchy diegetic performance line. Lots of funny cutaway stuff with Kevin, too. *25. /Camp Rock/ (2008)* But /Camp Rock/ original flavor ultimately has the upper hand. It has an equally meme-able moment in Alyson Stoner’s impromptu DJ set, and nothing in the sequel reaches the musical heights of Demi Lovato and Joe Jonas singing “This Is Me.” *24. /The Swap/ (2016)* This 2016 girl-boy body-swap comedy is way funnier and more watchable than almost any other DCOM of its 2010s ilk. What it lacks in originality (we didn’t need another hockey movie) it makes up for in good performances by leads Peyton List and Jacob Bertrand, good jokes, and rhythmic gymnastics. *23. /The Proud Family Movie/ (2005)* A quadruple-long episode of /Proud Family?/ In which Penny Proud actually gets to wear more than one outfit for once? Yes, please. A peanut-obsessed mad scientist named Dr. Carver voiced by Arsenio Hall? /I mean!!!!!!!/ *22. /Halloweentown/ (1998)* Debbie /Thee/ Reynolds plays the Miss Frizzle–esque grandma to three children who learn they’re part of a powerful magical family in an alternate dimension called /Halloweentown./ Their mom has renounced magic for the real world, but the kids connect with their roots to save the day from an evil(?) mayor(??). The effects are corny, the costumes goofy, but it’s so sincere and full of heart that it’s the rare nostalgia-bomb that works every time. Pairs well with fun-size candies and rainy weather. *21. /The Scream Team/ (2002)* Before I set out to make this list of DCOMs, I had never heard of /The Scream Team,/ but it’s somehow an even better Halloweenie movie than /Halloweentown/ (the first one, anyway). It has an arch sense of humor and a cast of comedy heavy hitters that elevate the material. [Sex and the City Bat Mitzvah–girl era Kat Dennings](http://yZwPdPZg_pY) stars alongside Eric Idle, Tommy Davidson, and Kathy Najimy, who are ghosts. If you thought Disney kept its Mickey gloves off the world of the dead, save for the contractually obligated dead parent that every other DCOM protagonist has, you thought wrong. /Scream Team/ is all about a band of kids venturing to the afterlife to visit their late grandpa, aided by the help of a corpse bride and disgraced arson ghost. It’s very much in the spirit of the Haunted Mansion at Disneyland: It’s Baby’s First Macabre Memento Mori. This would make an excellent double feature with /Hocus Pocus/ or the Hillary Duff /Casper,/ neither of which, shockingly, are DCOMs. *20. /Descendants 3/ (2019)* Lunacy, just lunacy. /Descendants 3/ completes the descent into madness initiated in the two prequels, but has the best musical numbers of the three by a wide margin. Cheyenne Jackson plays Hades, who is Maleficent’s ex-husband, which is fine if you don’t think too much about it. Dove Cameron gets transformed into an old crone. Son of Beast turns into an effects-makeup nightmare of a demi-beast. Cinderella’s daughter (or something, who cares) sings a song that’s really feeling its /Hamilton/ zhuzh, and there’s this whole breakdance number with possessed suits of armor that has to be seen to be believed/reviled. The gay undertones between the sons of Jafar and Gaston are overtones. Mulan becomes captain of the school fencing team. Bobby Moynihan voices a talking dog named “Dude.” There is a teen wedding. This also was the first Cameron Boyce posthumous release after his untimely death at age 20, so it’s a little bittersweet. May Kenny Ortega continue to direct wacky shit forever and ever. *19. /Johnny Tsunami/ (1999)* A young teen with a passion for surfing moves from Hawaii to chilly Vermont, where he takes his skills to the slopes as a snowboarder. The snobs-vs.-slobs, preps-vs.-townies dynamic at play between the private-school skiers and the public-school boarders is an old formula done well, and the whole thing is aided by its lead’s sweet, cheery, performance. Good DCOM. *18. /Lemonade Mouth/ (2011)* Hayley Kiyoko! In a DCOM! About a very G-rated, musical version of the /Breakfast Club!/ Misfits meet in detention and start a counterculture rock band that releases a bop called “Determinate.” What’s their revolutionary cause? Saving the lemonade machine in the school basement! It lands them in /jail,/ folks. This movie is played so earnest that it will win you over if you let it. It’s streets ahead of /Camp Rock,/ even without Demi’s star power. *17. /Jump In!/ (2007)* Corbin Bleu plays a boxer who enters the world of competitive double Dutch and joins forces with Keke Palmer. Unlike some other sports-centric DCOMs, /Jump In/ is fun to watch because competitive double Dutch is mesmerizing. And unlike other DCOMs in general, the performances and filmmaking are actually good. *16. /Brink/ (1998)* The Dimes Square VFiles sk8r-boi aesthetic owes /eeeeeverything/ to /Brink!/ And Erik von Detten should demand credit where it’s due. This story about SoCal inline-skating teens and dueling sponsorship offers is just a whole cheerful mood and will take you out of your 2020 woes to a simpler time, when pop punk reigned. *15. /The Color of Friendship/ (2000)* I defy you to name a better children’s movie about South African apartheid. Based on a true story, this DCOM about a girl from South Africa who stays on exchange with an African-American family is a startlingly clear look at racism. It’s a DCOM that’s not afraid to go /allllll/ the way there. *14. /Wendy Wu: Homecoming Warrior/ (2006)* After years and years of playing the sidekick, Brenda Song finally got her leading role. And what a role it was! A charming, popular girlie-girl who becomes the “chosen one,” a Yin warrior who has to fight off an ancient dragon demon. It’s my favorite formula, which is to say, the /Buffy/ one. Add a subplot about getting back in touch with your heritage as a third-generation Chinese-American girl, /and/ Brenda Song having to juggle warrior training with campaigning for homecoming queen, and you’ve got a rock solid DCOM. *13. /Get a Clue/ (2002)* Yet another top-20-worthy Brenda Song joint, but one where even she, the queen of DCOMs, is overshadowed by Lindsay Lohan, who in 2002, by my recollection, was more famous than the actual moon. Lohan plays Lexy Gold, a precocious tween who wears Prada to class in middle school and has the scoop on everyone’s business as the school newspaper’s advice columnist. Basically a mini Manhattanite Cher Horowitz with Brenda as her Dionne, the two get all up in the adults’ business and solve a $10 million scandal. There is a chair shaped like a giant stiletto and too much fabulous early-2000s tech. *12. /Halloweentown II: Kalabar’s Revenge/ (2001)* This /Halloweentown/ sequel is, I’ll say it, even better than the first one. When Halloweentown is blasted with a spell that makes everyone boring, the Piper siblings and Debbie Reynolds have to save the day. They do this by reenacting the /Buffy/ episode where everyone is turned into their Halloween costumes. *11. /Full-Court Miracle/ (2003)* /Full-Court Miracle/ is straight-up S-tier iconic because it’s literally one of the only movies in the history of American cinema to depict modern Jewish day school. Like /Uncut Gems/ after it, /Full-Court Miracle/ dares to ask the question: What /is/ it with Jewish boys and basketball? Also, and this is what always got me, it acknowledges the blunt reality that it would take a /literal Hanukkah miracle/ for a team of Jewish kids to beat literally any other middle school in basketball. Between /Full-Court Miracle/ and the phenomenal Ramadan and Kwanzaa episodes of /Proud Family,/ early 2000s Disney Channel led the charge on the “Did you know there are holidays besides Christmas?” front. *10. /Zenon: Girl of the 21st Century/ (1999)* Zoom, zoom zoom! This movie about a girl who lives on a space station with her best friend, Raven, in the distant 21st century is Alpha Major. Can you believe the writers of this movie really thought that in the 21st century, students would learn on screens, via remote teaching? What a concept. The space station at the center of /Zenon/ is like sci-fi Hogwarts, with kids running around restricted rooms full of bleeps and bloops and using pre-iPad iPads (space magic!) to pre-FaceTime FaceTime with a cute Earth boy. The plot about the pitfalls of private-company-owned space exploration (hi, Elon) and British boy-band fandom still rings true today Space in general terrifies me, but /Zenon/ made it seem like an endless sleepover. The /real/ frighteningly vast frontier where no one can hear you scream, at least in /Zenon,/ is Vancouver. *9. /High School Musical 2/ (2007)* “Bet On It.” “Fabulous.” “What Time Is It? (Summer Time).” The bops simply refuse to stop in /High School Musical 2./ Some might even say they bop … to the top. After the fateful events of /High School Musical,/ the gang all get jobs at truly the nicest country club you have ever seen in your life, which is of course owned by Sharpay and Ryan’s family. The movie is so much more heightened and ridiculous than the first. The bright swimming-pool blues and golf-course greens are a damn near assault on the eyes. It’s so much fun. *8. /Cheetah Girls/ (2003)* Galleria. Chanel. Aqua. Dorinda. These aren’t the names of upscale outdoor malls. They aren’t the cast of a new /Real Housewives/ offshoot. They are four best friends in New York City who wear coordinated Baskin print and write the best pop of their generation. The first /Cheetah Girls/ is surprisingly more grounded than you might remember. Raven plays lead cheetah Galleria like an anti-hero; she’s legitimately terrible to her friends for a lot of the movie, and it’s an interesting dynamic for a DCOM lead. Dorinda lies about being a foster child. Chanel (Adrienne Bailon) has a single mom who loves her but pays more attention to the men she’s seeing. Aqua … is from Texas and is scared to ride the subway. Oh, and there’s a plot about the recording industry that plays like /Josie and the Pussycats/ lite /./ That comparison is the highest praise I can give. *7. /Stuck in the Suburbs/ (2004)* More! Brenda! Song! Hell! Yeah! She plays the phenomenally named Natasha Kwon-Schwartz, who is the sidekick to Danielle Panabaker’s lead, which is incorrect math, but whatever. The teens long for a more exciting life than their suburban existence, and find it through a swapped-cell-phone mix-up with pop star–hunk Jordan Cahill, played by /Taran Killam/. Along the way, Panabaker and Song have some of the more believable friend drama in a DCOM when it’s revealed that new girl in school Song was lying about her globetrotting, pre-suburban life to impress Panabaker’s other friends. There’s also a B-plot about trying to preserve the one historic house in the bland suburb. Most of the pleasures of this movie, though, are purely nostalgic: for mid-2000s pop, mid-2000s cell phones, and mid-2000s Limited Too accessories. Taran Killam’s music videos for “More Than Me” and “Make a Wish” are better pop satire than /Never Stop Never Stopping./ Taran /defined an era/ here. *6. /Cheetah Girls 2/ (2006)* /Cheetah Girls 2/ feels fabulously, deliriously expensive for a DCOM. The sequel sees the Cheetahs traveling to Barcelona and breaking out into song at every opportunity, and this tilt away from realism toward a full-blown musical travelogue gives it a slight edge of the original. Giving all the cheetahs cute Spanish love interests and a rival Eurovision dance-mom villain are just smart moves all around. Also, it’s produced by Whitney Houston /./ As in, Whitney Houston! The whole thing lights up the same pleasure centers in my brain as other Euro-musical delights like /The/ /Lizzie McGuire Movie, Mamma Mia,/ and the ending of /Shrek 2./ *5. /Pixel Perfect/ (2004)* Every single episode of /Black Mirror/ wants what /Pixel Perfect/ has. Ricky Ullman from /Phil of the Future/ plays a tech whiz who programs a perfect hologram girl named Loretta to play in his best friend Sam’s band. The songs are earworms that will stick with you for 16 years. Loretta’s post-human perfection includes doing impossible backflips and choreo onstage. The romantic tension between Sam, Ricky, and Loretta is /felt./ And when Loretta sacrifices herself for Sam, it makes /Blade Runner/ look like, well, like a piece of shit in comparison. *4. /Cadet Kelly/ (2002)* /Cadet Kelly/ gave the children of the year 2002 everything they could possibly want with this story of an arty cool teen played by Hilary Duff who single-handedly tries to bring down the military-industrial complex, mostly by being a bossy bottom to her military school’s drill sergeant Christy Carlson Romano. By the end of the movie, after multiple sexually charged dance-offs, the two learn to merge their gifts by blending the majesty of drill team with the lyrical beauty of ribbon dancing. Yes, this movie has a climax centered around ribbon dancing. /Cadet Kelly/ holds up on rewatch decades later as a charming, funny classic of the era, with lots of positive anti-authoritarian messages about being yourself, and how liking N*SYNC and making bracelets doesn’t make a person any less virtuous than someone who does Tough Mudders for fun (okay, maybe I’m projecting). Hilary and Christy are giants of Disney Channel lore. Oh, and the mom is played by the Philadelphia Cream Cheese angel, if you want even more of a throwback. There’s a reason why this one was a sleepover favorite and a core text of queer-girl canon. *3. /Smart House/ (1999)* /Pixel Perfect/ is one thing. /Black Mirror/ couldn’t even deign to dream of reaching the heights of /Smart House./ A family suffers the loss of their mother and moves into a technology-equipped smart home that develops the personality of a ’50s-sitcom housewife, the voice of Leela from /Futurama,/ and the evil-robot desire to control the family forever. I don’t know if there will ever be a house party onscreen again as cool as the one in /Smart House;/ the teens came up with choreo and everything. LeVar Burton directed this! *2. /Teen Beach Movie/ (2013)* A lot of this top-ten section is greatest aughties nostalgia hits, but allow me to direct your attention to this 2013 bopperoni of a later-era DCOM for a moment. Ross Lynch (a damn /star/ ) and Maia Mitchell play Brady and Mack, boyfriend and girlfriend surfer kids who go for a ride on an enchanted surfboard that washes them ashore in a 1960s /Beach Blanket Bingo–/ style campfest of a movie-within-a-movie called “Wet /Side Story./ ” Practical-headed Mack is confused by the internal logic at play, as was I the first two or three times I watched /Teen Beach Movie,/ but goofy Brady flips gender convention on its head by being a massive fan of musicals. He knows all the plot beats, but there’s one hitch: Mack has been teaching all of these 1960s movie-character girls feminism (oh, /no!/ ) and now the fabric of the movie universe is starting to disintegrate! It’s like /Purple Rose of Cairo/ meets /Back to the Future/ meets an Old Navy commercial meets … a Disney Channel Original Movie. Garrett Clayton and Jordan Fisher round out the cast as singing human Ken dolls. What makes /Teen Beach Movie/ succeed where other DCOMs fail is that it doesn’t for a second try to tap into those ever-fickle /hip tween trends,/ sticking instead to its very bizarre guns. This is an original movie that aired on Disney Channel in which bikers do pirouettes and sing about being “wrapped in leather, ready to go,” and people need to be made aware of its existence. *1. /High School Musical/ (2006)* The GOAT, and it wasn’t even close. /High School Musical/ imprinted so strongly on my tween brain that there was a time in my childhood that I lost the ability to do long division but /gained/ the ability to recite this perfect DCOM start to finish. Here was the movie that led to /Glee/, which led to /Pitch Perfect,/ which led to Rebel Wilson in /Cats./ It launched the careers of Zac Efron and Coachella queen Vanessa Hudgens. It centers around a villain whose only motivation is wanting desperately for her and her fraternal-twin brother to be cast as romantic leads opposite each other in front of their entire school. It gave us a rhythmic basketball-dribbling number, cafeteria-tray choreography, and the legendary Miss Darbus screaming things like “I will not allow my twinkle-toes musicale to be turned into a farce!” while swishing multiple scarves. DCOMs stumble when they aspire to things they can never truly be, like “real” or “cool.” But when they own up to exactly what they are and what they want to be and stay true to themselves, much like Troy Bolton, there’s not a star in heaven that they can’t reach. All 105 Disney Channel Original Movies, Ranked [All 105 Disney Channel Original Movies, Ranked](https://www.vulture.com/article/best-disney-channel-original-movies-ranked.html) # The Smartest Alcoholic in History by Eva Hagberg ***** “I didn’t really care that there were traditions about not really talking about the thing, that there were writers who had gone before me and somehow managed to both have vibrant careers and talk around recovery without ever naming the thing that was the thing that kept them sober. Not me!” When I got sober, the first thing I did was immediately tell everyone that I was sober like, I was sober like, for real sober, like FOR-EVER sober, like would never drink again one hundred percent. Like, I was an ALCOHOLIC sober. Like, please treat me differently but also not differently but also ask me for incredibly deep thoughts on life etc because, after about a week of not drinking, I was pretty sure I’d figured out how to not drink and why I’d drunk so much and why I had waited too long to get sober but now I was just going to do it and did anyone want to have their minds blown by the fact that I used to drink and now I didn’t or to be more accurate hadn’t, for a few days at least. And then the second thing I did when I got sober was pitched a story about it to an editor because if I couldn’t mediate my experience in public, I realized very quickly, that I wasn’t going to be able to mediate it at all. At the time, I was writing a monthly food column for a local fashion/cool stuff magazine, and I pitched my editor on writing a column about how I, low-key kind of a genius let’s face it, had gotten sober (for real, forever, etc etc) and I don’t remember exactly his answer but it must have been moderately positive because a few months later, an essay ran in which I talked about how I used to be mean to people with food allergies, but now I wasn’t, because I myself had a form of food allergy: alcoholism. Which was very very serious and no one should treat me any differently except that everyone should applaud and laud me all the time for the incredible strength of character and dedication and just general amazingness that I was representing simply by not taking a drink today. Days turned into weeks. Into months. I left one relationship and got into another one. “No I’m like an alcoholic sober,” I said, to anyone who asked, and many who didn’t. At one party I’d be sure that everyone was noticing that I was drinking seltzer instead of vodka tonics; at another, I’d wonder why no one had noticed or asked me to bestow upon them the meaning of life in the form of my deep thoughts about sobriety, thoughts that were mostly along the lines of, thank god I’m okay now, thank god I’m safe now, but that I still always thought might turn into some kind of poetic art, if pushed. ***** After six months, I’d stopped being able to sell essays about my sobriety. Maybe this is because my sobriety, by this point, consisted of just trying really really really hard not to drink, and somehow successfully not actually putting alcohol in my body, though I still went to bars, went to afterparties, passed plates of cocaine around, made out with people who’d done cocaine and got a mini contact high, offered to buy people drugs, went to the same Lower East Side street I’d bought so many drugs at, and basically clamped down on my entire self so hard that I wouldn’t actually ever have to ask for help. My sobriety wasn’t actually a present thing so much as a keening daily absence, a total lack. All I could feel that I was doing was not drinking. Not drinking was its own activity. Beyond that, I had no interests. Apparently, my only interests had ever been: drinking, buying drugs, regretting what I’d done while drinking, doing every mental trick I could to shut my mind down so that I wouldn’t remember what I’d done, apologizing while having no idea what I was actually apologizing for, and repeat. What was I waiting for? Honestly, I was waiting to be discovered. I was waiting to sell a book. I was waiting for an editor to tap me on the shoulder and say something like, hey, I’ve seen you at the parties, and I’ve seen you with your seltzer and would you like to blow my mind. But that didn’t happen. Neither did my fallback plan, which would have been getting tapped on the shoulder by a magazine editor. In my defense (this entire thing is in my defense), it was 2007 and most of the people who ended up getting sober after I did hadn’t gotten sober yet. I’m a trailblazer! I was a pioneer! One night, walking through Union Square, I ran into a friend I’d done a lot of drugs with. “I’m sober now,” I said, unprompted, because I didn’t have any other activities or thoughts to report, and then I said something like, “and I feel weird about it,” and he said, “don’t worry, you’re not the only, you’re just the first,” and he was right. ***** This is the part where now I am supposed to be humbled and learn a lesson about something, but that didn’t happen, not for five more years, not until a cyst in the center of my brain ruptured and with it my life, at least the life I’d always thought I’d wanted. Instead, I asked for help and started hanging around other sober drunks, and the first thing I thought was, “I’m going to write about this.” I didn’t really care that there were traditions about not really talking about the thing, that there were writers who had gone before me and somehow managed to both have vibrant careers and talk around recovery without ever naming the thing that was the thing that kept them sober. Maybe they needed to do that. But me? I was smarter than that. I was cannier. Craftier. My approach, I thought, would be so wrenching, and so perfect, that the entire totally un-organized organization would say, you know what? “We have found our spokesperson!” No one wanted a book about the minuscule amount of time I’d spent barely listening to people who had so much to teach me. And then no one wanted a book about nothing in particular besides how angry I was at everyone else, who wasn’t an alcoholic and didn’t have to deal with this shit. And no one wanted a book about how much of a total brilliant exception I was, and how I’d gotten sober by myself, and so slowly I stopped thinking about exactly how I was going to articulate this particular experience in print, and very very very slowly started just … having it. A friend of mine, Allison, a few years later, right around the time my life exploded, said that as soon as you start living life in capital letters you’re in trouble. WE’RE OUT OF TOILET PAPER I’M A SOBER ALCOHOLIC. That sort of thing. That’s how I’d lived for thirty years. Everything in capital letters, all the time, everything as important as everything else, and most of all everything some kind of creative exercise in brilliance and posturing and ego and stock-taking and comparing and judging, and until Allison told me to maybe stop recovering in capital letters, everything everyone said to me was still at a remove. The trick, as I learned it, wasn’t ever that I was particularly bad or wrong. I didn’t come to these answers because of something wrong with me. It was just that I didn’t have any idea how to live life, not as a creative exercise. I got into and out of relationships because I knew they’d make a good story. I justified incomprehensibly cruel behavior by convincing myself that I was some kind of artist living outside the bounds of the workday and ordinary responsibility. And I finally wrote that book. ***** Eva Hagberg is a writer who does many wonderful things. Find out more about her work right here. +Check In- Would you like to contribute to next month’s newsletter? This is for the first week of May: Tell us how you are feeling. Anonymity is guaranteed. Examples:  I am open and honest and also full of shit. For every published submission, we'll donate $5 to the Katal Center Send them in here: editors@thesmallbow.com This is The Small Bow newsletter. We send it out every Tuesday morning and also on the last Friday of the month. It's fun and helpful to talk to other weirdos and wasteoids. Please FORWARD it along to anyone you think would enjoy it. If you’re new here, most of our Greatest and Latest stories can be found on The Small Bow Dot Com. If you'd like to check in with me and find out information about our Zoom meeting schedule, here's where I can be reached: ajd@thesmallbow.com. Also: follow us on Instagram. It’s kind of cool. PLEASE SUPPORT OUR WORK  Hi, You ENDNOTE: “From high above the birds look down and sing because they see the monstrous comedies they miss living several stories higher the dirty degradations and gross humiliations they like the gods, without pity, look down upon from a telephone wire.” – George Barker All Illustrations by Edith Zimmerman Copyright © *2022 *DON'T TRY THIS AT HOME*, All rights reserved. Don't Try This At Home, LLC, 55555 Nowhereville, Los Angeles, California, USA Powered by Squarespace Unsubscribe [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjQ3NzJmODBjMDg0YzRiOGVhOGYxYTA3%0D%0AMGI2OTI3ZjViQHRoZXNtYWxsYm93LmNvbTtnSUQ6MTcyOTkwMTEzMjg1NDYwMDAz%0D%0AMDs0MjAzNTcxNzAz) # De-archive Web Archives One of the (welcome) additions to version 2 of Safari, included with Tiger, is the ability to save an entire Web page—text, images, and all—for offline viewing. You perform this task by viewing the desired Web page, choosing Save As from Safari’s File menu, and then choosing Web Archive from the Format pop-up menu in the Save dialog. You can open the resulting /.webarchive/ file in Safari and it will (roughly) look as if you were viewing the page normally via the Internet. This is a great feature; however, it has two downsides. The first is that these Web archives can be viewed only in Safari; you can’t open them in another browser. (An inconvenience if you, or someone to whom you send an archive, prefers to use a browser other than Safari; a show-stopper if you send an archive to someone using anything other than Tiger—including Windows.) The second is that if you ever need to get at any of the content of an archive—images or text, for example—you must use Safari to first open the archive, then grab the content from there. (See downside #1.) As easy solution to both these restrictions—with a few caveats, noted below—is Greg Weston’s free * [WebArchive Folderizer 1.2.2](https://go.redirectingat.com/?id=111346X1569486&url=http://homepage.mac.com/gweston/download.html&xcust=1-1-179419-1-0-0&sref=https://www.macworld.com/article/179419/webarchivefolderizer.html)* ( ). Simply drag a .webarchive file into WebArchive Folderizer’s generic-looking window (or onto its application icon) and in just a few seconds the utility extracts the contents of the Web Archive into a folder (located in the same directory as the original .webarchive file). Inside that folder, the original hierarchy of the archive’s contents is preserved; you can easily grab any of the contents of the archive or—by finding the /index.html/ file of the original Web page—open the archived page in any browser. /WebArchive Folder’s main window/ /A “folderized” version of a Web Archive of the CNN home page/ Unfortunately, WebArchive Folderizer can’t perform magic. Because of the way somes sites are coded, you can’t open the “folderized” archive via the /index.html/ file contained inside, and even for those you can, sometimes the result doesn’t look exactly like the original. Similarly, on some Web pages, media isn’t available in the folderized archive because Safari didn’t include it in the original archive. Still, WebArchive Folderizer has already come in handy for me several times. /WebArchive Folderizer works with Mac OS X 10.2 and higher. (Although Tiger’s version of Safari is required to/ create /a Web Archive, you can use WebArchive Folderizer on any Mac running 10.2 or later to extract content from that Web Archive.)/ [De-archive Web Archives](https://www.macworld.com/article/179419/webarchivefolderizer.html) # Keyboard Shortcuts For iOS 7 Apps [image:B624CA0E-579E-41A1-BBA6-021CCDF0744B-16399-000001A59FBD3761/256px.png] The list is a work in progress and will be regularly updated. Apps will be listed in alphabetical order with links to their website, full documentation (if any), and iTunes page. If you know of any iOS app that supports keyboard shortcuts, please [let me know](https://twitter.com/viticci). The following shortcuts will work with external Bluetooth keyboards supported by Apple devices. In the list, I won’t include basic keyboard shortcuts already supported by iOS, such as ⌘C for Copy or ⌥⌫ to Delete a word. A list of these system shortcuts can be found [here](https://discussions.apple.com/thread/3586784) and [here](http://www.logitech.com/en-us/articles/8694). ### Keys * ⇧ – Shift * ⌃ – Control * ⌥ – Option * ⌘ – Command * ⇥ – Tab * ↵ – Return * → – Right Arrow * ← – Left Arrow * ↑ – Up Arrow * ↓ – Down Arrow * ␣ – Space * ESC – Escape * ⌫ – Delete ### Keyboard Recommendation My personal recommendation for an external keyboard goes to the [Logitech Tablet Keyboard](http://www.logitech.com/en-us/product/tablet-keyboard-ipad). I’ve been using it for two years now, and I’ve never switched to any other keyboard when writing on my iPad. You can read my original review [here](http://www.macstories.net/reviews/review-logitech-tablet-keyboard-for-ipad/). The Logitech keyboard is lightweight, durable, and it’s got special keys for the Home button and Spotlight, both of which work on iOS 7. The Logitech Tablet Keyboard is [currently $49.99 on Amazon](http://www.amazon.com/gp/product/B0054L8MR8/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B0054L8MR8&linkCode=as2&tag=macst-20). ## Apps ## 1Writer [$2.99](https://itunes.apple.com/us/app/1writer-note-taking-writing/id680469088?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://1writerapp.com/) Command Shortcut New Document ⌘N Bold ⌘B Italic ⌘I Heading ⌘H Insert Link ⌘L ## AirWeb [$0.99](https://itunes.apple.com/us/app/airweb-web-browser-for-apple/id770893993?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://airwebapp.com/) Command Shortcut New Tab ⌘T Show All Tabs ⌘- Select Address Field ⌘L Toggle Help Mode ⌘H Toggle Zoom ⌘+ Single Screen Mode ⌘M Refresh Page ⌘R Toggle Help Mode ESC Scroll To Top/Bottom/Sides ⇧→←↑↓ Scroll One Screen Height Down ␣ Go Back ⌘← Go Forward ⌘→ Close Alerts ↵ ## Byword [$4.99](https://itunes.apple.com/us/app/byword/id482063361?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://bywordapp.com/) *Text Editing View* Command Shortcut Bold ⌘B Italic ⌘I Toggle List Items ⌘L Increase Quote Level ⌘’ Decrease Quote Level ⌥⌘’ Increase Heading Level ⌘+ Decrease Heading Level ⌘- Insert Image ⌥⌘I Insert Link ⌘K Toggle Text Editing ⌘E Toggle Text Counters ⇧⌘K Show/Hide Markdown Preview ⌥⌘P Open Tools Menu ⌘T Show/Hide Document Browser ⌘O Close Document ⌘W *Documents View* Command Shortcut Find Document ⌘F New Document ⌘N New Folder ⇧⌘N ## Codea [$9.99](https://itunes.apple.com/us/app/codea/id439571171?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://twolivesleft.com/Codea/) Command Shortcut Run Project ⌘R Search Project ⌘F Show Documentation ⌘D Close Project ⌘W New Class ⌘N New Blank File ⌘B Comment Line ⌘- Indent Code ⌘O Backwards Indent Code ⌘I Previous Tab ⇧⌘O Next Tab ⇧⌘I ## Day One [$4.99](https://itunes.apple.com/us/app/day-one-journal-diary/id421706526?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://dayoneapp.com/) – [Full Documentation](https://dayone.zendesk.com/hc/en-us/articles/200145895-Keyboard-shortcuts) Command Shortcut New Entry ⌘N Toggle Entry Edit Mode ⌘↵ Previous/Next Item In A List ↑ or ↓ ## Drafts [$3.99](https://itunes.apple.com/us/app/drafts-for-ipad/id542797283?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://agiletortoise.com/drafts/) Command Shortcut New Draft ⌘N Markdown Bold ⌘B Markdown Emphasis ⌘I Markdown Header ⌘H Markdown Link ⌘L ## Fiery Feeds [$3.99, iPhone](https://itunes.apple.com/us/app/fiery-feeds-rss-reader-for/id692742195?mt=8&uo=4&at=10l6nh&ct=ms_inline) - [$3.99, iPad](https://itunes.apple.com/us/app/fiery-feeds-for-ipad-rss-reader/id692752069?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://cocoacake.net/apps/fiery/) – [Documentation](http://cocoacake.net/blog/archives/505) *Account List (iPhone)* Command Shortcut Select First Account 1 Select Second Account 2 Select Third Account 3 Select Fourth Account 4 Select Fifth Account 5 Refresh All R *Main List* Command Shortcut Show All A Show Unread U Show Saved S Refresh Account R Full Refresh Account F Open First Element ␣ Back (iPhone) ESC *Item List (iPhone)* Command Shortcut Mark All Read ⇧M Close List B Open First Article ␣ *Article View* Command Shortcut Previous Article K Next Article J Toggle Starred S Open In Browser V Toggle Read M Share Item T Close Article ESC Mark All Read (iPad) ⇧M *Browser View* Command Shortcut Go To Next Page → Go To Previous Page ← Refresh Page R Toggle Mobilizer M Share Page T Close Browser ESC ## GV Connect [$2.99](https://itunes.apple.com/us/app/gv-connect-call-sms-client/id347835665?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://www.gvconnect.com/) Command Shortcut Save Note ⌘S Send SMS ⇧⌘D Cancel Note/SMS ESC ## iCab [$1.99](https://itunes.apple.com/us/app/icab-mobile-web-browser/id308111628?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://www.icab.de/mobile.html) Command Shortcut Search Web ⌘F Search Within Page ⇧⌘F Select Address Bar ⌘L List All Links In Page ⇧⌘L Reload ⌘R Scroll Up ↑ Scroll Down ↓ Scroll Up ␣ Scroll Down ⇧␣ Scroll To Top ⌘↑ Scroll To Bottom ⌘↓ Tab List ⇧⌘T Create New Tab ⌘T Close Current Tab ⌘W Switch To Next Tab ⇥ Switch To Previous Tab ⇧⇥ Switch To Next Tab ⌘← Switch To Previous Tab ⌘→ Go Back ⌫ Go Forward ⇧⌫ Go Back ESC Go Forward ⇧ESC Increase Font Size ⌘+ Decrease Font Size ⌘- Reset Font Size ⌘= Action Menu ⌘A Fullscreen Mode ⌘# Save Page In Downloads ⌘S Print Page ⌘P Modules ⌘M Downloads ⌘D Homepage ⌘H Quickstarter ⌘Q Add Page To Quickstarter ⇧⌘Q Bookmarks ⌘B Add Page To Bookmarks ⇧⌘B Create QR Code Of Page ⌘Y Scan QR Code ⇧⌘Y Reading List ⌘J Add Page To Reading List ⇧⌘J Read Now (Readability) ⌘K Settings ⌘, ## MindNode [$9.99](https://itunes.apple.com/us/app/mindnode/id312220102?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](https://mindnode.com/) – [Full Documentation](https://mindnode.com/support/MindNode3_iOS_UserGuide.pdf) *Node Creation* Command Shortcut New Child Node ⇥ New Subnode ↵ Create New Main Node ⌥↵ Delete (Nodes and Connections) ⌫ *Node Selection* Command Shortcut Move Selection One Node In Arrow Direction →,←,↑,↓ Cycle Through Main Nodes ⌥→ Cycle Through Main Nodes In Reverse Directions ⌥← *Node Movement* Command Shortcut Exchange Position With Upper Node ⇧⌘↑ Exchange Position With Lower Node ⇧⌘↓ Toggle Smart Layout ⌘/ Detach Node ⌥⌘D Create Cross Connection ⌥⌘L *Branch Folding* Command Shortcut Toggle Branch Folding ⌥⌘→ or ← *Node Editing* Command Shortcut Switch Into Editing Mode ⌘↵ New Child Node ↵x3 New Subnode ␣x3 *Inspector* Command Shortcut Toggle Inspector ⌥⌘I Show First-Fourth Inspector Tab ⌘1–4 Cycle Through Inspector UI ⌃⇥ Reverse Cycle Through Inspector UI ⇧⌃⇥ *Navigation* Command Shortcut Pan Around Canvas ⌘→←↑↓ Zoom In ⌘< Zoom Out ⌘> ## Notefile [$4.99](https://itunes.apple.com/us/app/notefile/id421973720?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://notefileapp.com/) Command Shortcut Add New Note ⌘N Search ⌘F Save and Close Current Note ⌘↵ Close Settings/Cancel Search ESC ## OmniOutliner [$29.99](https://itunes.apple.com/us/app/omnioutliner-2/id704610906?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://www.omnigroup.com/omnioutliner) – [Full Documentation](http://downloads2.omnigroup.com/software/MacOSX/Manuals/omnioutliner-2-for-ipad-manual.pdf) *Styles* Command Shortcut Bold ⌘B Italic ⌘I Underline ⌘U Copy Style ⌥⌘C Paste Style ⌥⌘P Clear Custom Style ⌃⌘⌫ Increase Font Size ⌘+ Decrease Font Size ⌘- Toggle First…Tenth Named Style ⌃1…0 Split Row At Cursor ⌃↵ Insert Line Break ⌥↵ Toggle Editing Current Row ⌘↵ *Reorganize* Command Shortcut Move Row Up ⌃⌘↑ Move Row Down ⌃⌘↓ Move Row Left ⌃⌘← Move Row Right ⌃⌘→ Indent Row ⇥ or ⌘] Outdent Row ⇧⇥or ⌘[ Add Row|↵ Add Row Above|⇧↵ Add Child|⇧⌘] Add Aunt ⇧⌘[ Group ⌥⌘L Ungroup ⌥⌘R Duplicate ⌘D Toggle Editing Note ⌘’ Select All ⌘A Deselect All ⇧⌘A Back Delete ⌫ Forward Delete fn⌫ Move To Next Cell ⇥ *View* Command Shortcut Expand All Rows ⌃⌘9 Collapse All Rows ⌃⌘0 Expand Selected Rows ⌘9 Collapse Selected Rows ⌘0 Expand Selected Rows Completely ⌥⌘9 Collapse Selected Rows Completely ⌥⌘0 *View (with a row selected)* Command Shortcut Scroll To First Row ⌘↑ Scroll To Last Row ⌘↓ Move Selected Row Up u Move Selected Row Down d Move Left l Move Right r Edit Row e Toggle Status ␣ Group ⇧G Ungroup ⇧U Select Row Above ↑ Select Row Below ↓ Expand Selected Row(s) → Collapse Selected Row(s) ← Add Row Above To Selection ⇧↑ Add Row Below To Selection ⇧↓ *Find* Command Shortcut Find ⌘F Select Previous Match ↑ Select Next Match ↓ Select All Matches ⌘A ## PCalc [$9.99](https://itunes.apple.com/us/app/pcalc-the-best-calculator/id284666222?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://www.pcalc.com/iphone/index.html) Command Shortcut Digits 1–9 and A-F Plus + Minus - Times * Divide / Modulo ⌥/ Equals ↵or = Decimal . or , Exponent E Clear C or Clear Clear All ⇧C Clear Calculation ⌥C Sign S Delete Digit ⌫ Dec/Hex/Oct/Bin ⇥ Degrees/Radians Y RPN R Bitwise And & Bitwise Or Vertical Bar Bitwise Not N Bitwise Xor X Minimise M Memory Plus H Memory Minus J Memory In K Memory Recall L Swap With Memory ~ Swap With Y (Grave accent i.e. backtick) Power ^ Inverse Power ⌥V Percentage % Inverse \ Pi P Square @ Square Root # or $ Factorial ! Increment > Decrement < ASL [ LSR|] ROL { ROR } Open Parentheses ( Close Parentheses ) Enter (RPN) ↵or = Drop (RPN) D Clear Stack (RPN) ⇧D Swap (RPN) W Roll Down (RPN) Q Roll Up (RPN) ⇧Q Show Tape T Show Registers/Stack I ## Phraseology [$1.99](https://itunes.apple.com/us/app/phraseology-text-editor-writing/id484666152?mt=8&uo=4&at=10l6nh&ct=ms_inline) - [Website](http://agiletortoise.com/phraseology/) Command Shortcut New Draft ⌘N Markdown Bold ⌘B Markdown Emphasis ⌘I ## Pushpin [$9.99](https://itunes.apple.com/us/app/pushpin-for-pinboard/id548052590?mt=8&uo=4&at=10l6nh&ct=ms_inline) - [Website](http://lionheartsw.com/software/pushpin/) - [Documentation](http://support.lionheartsw.com/knowledgebase/articles/330553) *General* Command Shortcut Add New Bookmark ⌘N *Bookmark List* Command Shortcut Set Focus To Search Bar / Move Down J Move Up K Open Selected Bookmark ⌘O Edit Selected Bookmark ⌘E Toggle Compressed / Uncompressed Bookmarks ⌥⌘C *Add / Edit Bookmark Screen* Command Shortcut Set Focus To Title Field ⌘1 Set Focus To Description ⌘2 Set Focus To Tag Field ⌘3 Toggle Private / Public ⌘4 Toggle Read / Unread ⌘5 Save ⌘S Cancel ESC *Tag / Description Editing Screens* Command Shortcut Move Back To Bookmark Edit Screen ESC ## Pythonista [$6.99](https://itunes.apple.com/us/app/pythonista/id528579881?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://omz-software.com/pythonista/) – [Full Documentation](http://omz-software.com/pythonista/docs/ios/pythonista.html) Command Shortcut Run ⌘R Switch Between Editor And Interactive Prompt ⌘␣ Toggle Search ⌘F Clear Console Output ⌘K ## SmartGo Kifu [$19.99](https://itunes.apple.com/us/app/smartgo-kifu/id364854741?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://www.smartgo.com/kifu.html) – [Full documentation](http://www.smartgo.com/blog/20131021.html) Command Shortcut Previous or Next Move → or ← Previous or Next Sibiling ↑ or ↓ Previous or Next Branch ⌘→ or ← Back To Main Line ⌘↑ Start Of Game ⌃← End Of Current Line ⌃→ End Of Main Line ⌃⌘→ Turn On/Off Auto-Play ␣ Switch Between Replaying Moves And Editing Comment ESC ## Textastic [$8.99](https://itunes.apple.com/us/app/textastic-code-editor-for/id383577124?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://www.textasticapp.com/) Command Shortcut Create New File/Folder ⌘N Toggle Find/Replace ⌘F Close Current File ⌘W Toggle Preview ⌥⌘P Toggle File Properties Popover ⌥⌘I Toggle Symbol List Popover ⌥⌘T Upload Current File ⌥⌘↑ Download Current File ⌥⌘↓ Toggle Italics (Markdown and HTML files ) ⌘I Toggle Bold (Markdown and HTML files ) ⌘B Toggle Underline (HTML files) ⌘U ## TextExpander [$4.99](https://itunes.apple.com/us/app/textexpander/id326180690?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](https://smilesoftware.com/TextExpander/touch/index.html) Command Shortcut Increase/Decrease Font Size ⌘+/- Create New Snippet/Group/Note ⌘N Done/Share ⌘↵ Cancel ESC Toggle Notes/Groups ⌘T Navigate ↑/↓ ## TextTool [$4.99](https://itunes.apple.com/us/app/texttool/id751972884?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://blackfoggames.com/TextTool/index.html) Command Shortcut Show Transforms ⌘T Share Workspace ⌘S New (Clear) ⌘N Show Settings ⌘, ## Trunk Notes [$3.99](https://itunes.apple.com/us/app/trunk-notes-personal-wiki/id302880785?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://www.appsonthemove.com/trunk.htm) – [Full Documentation](http://www.appsonthemove.com/blog/2014/02/trunk-notes-4/) Command Shortcut Bold ⌘B Italic ⌘I Link ⌘L Strikethrough ⌘T Save ⌘S Heading ⌘1 Bulleted List ⌘2 Numbered List ⌘3 ## Tumblr [Free](https://itunes.apple.com/us/app/tumblr/id305343404?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](https://www.tumblr.com/) – [Full Documentation](http://www.tumblr.com/tips) Command Shortcut Move Forward Through Posts J Reverse Move Through Posts K Like Current Post L See Post Notes N Fast Reblog Post ⌥R Compose New Post ⌥C ## Write [$1.99](https://itunes.apple.com/us/app/write-for-ipad-beautiful-note/id638171770?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://writeapp.net/) Command Shortcut Save File ⌘S Increase Font Size ⌘+ Decrease Font Size ⌘- ## Writer Pro [$19.99](https://itunes.apple.com/us/app/writer-pro-note-write-edit/id775737172?mt=8&uo=4&at=10l6nh&ct=ms_inline) – [Website](http://writer.pro/) – [Full Documentation](http://support.iawriter.com/help/kb/general-questions/using-a-bluetooth-keyboard) Command Shortcut Toggle Syntax Control ⌘D Cycle Through Syntax Control Options ⇧⌘D Reverse Cycle Through Syntax Control Options ⌥⇧⌘D [Keyboard Shortcuts For iOS 7 Apps](https://www.macstories.net/keyboard-shortcuts-for-ios-7-apps/) # A Decade of Drafts [image:4F3EC7FC-AE07-402E-8ACA-59F5E1EB3C1B-10758-000000E9334BB67C/cropped-nahumck-n-logo-favicon-1.png] I was a late iPhone adopter. I held on tight to my BlackBerry for way too long. It wasn’t until the iPhone 4S that I made my way over to the iPhone. And then a new opportunity really opened up for me – the App Store. There was a lot more development happening on iOS than any other platform, and there were new possibilities for me to explore. Of all the apps the App Store had to offer, one of the most transformative apps for me at the time was, you guessed it… [Twitter](https://apps.apple.com/us/app/twitter/id333903271?uo=4&at=1001l4VZ). Why Twitter? I suddenly had new acquaintances, and a different world opened up for me. I didn’t just find some new social network, I found a new community of people. Around this time I started following more people in the Apple community – Merlin Mann, Rene Ritchie, Seth Clifford and others of the Apple space. I started learning more about personal productivity and apps to help me make my life better. And that’s when I got introduced to the single app that has been the most impactful in my life: [Drafts](https://itunes.apple.com/us/app/drafts-capture-act/id1236254471?mt=8&uo=4&at=1001l4VZ). I bought Drafts in October of 2014. If memory serves, I was introduced to it via Merlin Mann on Back to Work.[1](https://www.nahumck.me/a-decade-of-drafts/#fn-2225-thanks) The concept was simple: Drafts is where your text starts. Capture everything, put it there, then figure out where it goes later. I spent a lot of time texting back and forth with Seth about how versatile the app could be. It was so simple: anything you are going to write down, it goes into Drafts. Have an email you want to write? Start it in Drafts. You have some random thoughts you need to get down? It goes in Drafts. Have a few tasks you need to get done? Yup, it goes there too. Over a short period of time, it started to be more central in my life, and made its way into the dock. With updates, I started to stretch the capability with URL schemes and JavaScript. At the time, MacStories really started showing off the [power](https://www.macstories.net/reviews/drafts-4-review/) that came with Drafts, even though it was still in its infancy in regards to automation. But to my recollection, it was really the first automation /anything/ that I can remember actively wanting to use in my daily life. I wanted to find more uses for it. I started using it for all sorts of things: note taking, list making, task/event capture. It quickly became the central point in my digital life. As apps like [Launch Center Pro](https://apps.apple.com/us/app/launch-center-pro-icon-maker/id532016360?uo=4&at=1001l4VZ), [Launcher](https://apps.apple.com/us/app/launcher-with-multiple-widgets/id905099592?uo=4&at=1001l4VZ), and Workflow – now [Shortcuts](https://apps.apple.com/us/app/shortcuts/id1462947752?uo=4&at=1001l4VZ) – made their way onto the scene, I found more ways to integrate Drafts into my life. There were communities through Twitter, App.net, and even Reddit. All of the excitement drove me more into what I could do and how I could improve life not only for me but for others as well. Drafts was the reason I started writing, something I didn’t know I wanted to do at the time. But it was the first thing that made me want to expand my creative interests. I finally hit my stride with all of it. That’s when I started [imagining](https://www.nahumck.me/drafts-5-0-a-wish-list/) what Drafts could /become/. I wanted it to break free, to be more extensible and customizable, to have the next evolution and start of a brand new chapter in its history. And that’s when [Drafts 5](https://www.macstories.net/reviews/drafts-5-the-macstories-review/) came to fruition. It gave me the opportunity to reach out to Federico Viticci on MacStories to write a major post on the site.[2](https://www.nahumck.me/a-decade-of-drafts/#fn-2225-connected) I was incredibly proud of that piece, and it’s something I look back on fondly. I wrote [more posts](https://www.nahumck.me/?s=Drafts) as new versions were released with new features I felt might help others, then a [few more posts](https://www.macstories.net/author/nahumck/) on MacStories for some of the major updates. Even though I wrote for /me/, it didn’t hurt that I gained visibility for my work based on what I had created and shared. I’ve shared countless workflows, how modular the app is, and even how to customize it using [themes](https://directory.getdrafts.com/t/1xW) and [syntaxes](https://directory.getdrafts.com/s/1hm). When I look back on my time learning Drafts, using it daily, and evangelizing it as much as I can, I’ve been so thankful for what it’s done /for/ me. It’s forged new connections with people across the country, and I have some meaningful, deep friendships as a result. It’s allowed me to create, produce, and be more effective than I ever thought possible. Every day, I feel like I’m making tiny improvements. It’s as if I was sculpting something from a block of clay or stone, and shave off a little more each day. It starts to come into focus over time. At 10 years in, it’s an incredibly astonishing feat: still retaining the core of the app – capturing text – and building powerful features surrounding it. Even this far on, I’m still enamored with where Drafts started, how far it’s come, and I’m even more excited for its future. Drafts is the single most important app in my life. There’s no workflow I have that does not touch Drafts in some way, shape, or form on a daily basis. It’s provided more opportunities than I ever thought possible and is the central hub for how I manage my life. As the app has evolved, I’m improving my workflows by adding new or improved functionality over time. As it continues to change over the next 10 years, it’s going to be great to see what gets created. I could find a replacement for many apps I use, but there’s no replacement out there for me with the way I use Drafts. This is the only app I could not live without. [Greg Pierce](https://twitter.com/agiletortoise) has created something truly incredible, and he should be very proud of what he’s accomplished. *Cheers to 10 years, Greg!* [A Decade of Drafts](https://www.nahumck.me/a-decade-of-drafts/) # The Automation Myth | Clinton Williamson [image:D631D410-4597-4F2F-9EB7-AE8827E31E98-7447-000000B20E5B6F7A/robbytherobottomsimpson.jpeg] > /Most important, computerization has reduced neither the workweek, the promise of all techno-utopias since the 1950s, nor the burden of physical work. We now work more than ever./ > —Silvia Federici, “Reenchanting the World: Technology, the Body, and the Construction of the Commons” In 1963, the Black working-class revolutionist James Boggs wrote of a coming cataclysm in American industrial production. As an autoworker at Chrysler in Detroit, Boggs had an intimate knowledge of the changes introduced on the shop floor and the impacts that reverberated from them across the city, seeing the ways in which these shifts in the technical aspects of the labor process came to affect the prospects for radical organizing. He saw one particular harbinger of this coming utter devastation of the working class, and especially the Black working class—automation. It makes sense that a Detroit autoworker would find himself especially attuned to this phenomenon. The contemporary usage of the word /automation/ has its origins in the Automation Department at Ford Motor Company set up by vice president of manufacturing Delmar Harder in 1947—even though Harder’s actual proposals for the reorganization of work in Ford’s factories primarily relied on nineteenth-century technologies designed simply to speed up the production line. Throughout /The American Revolution: Pages from a Negro Worker’s Notebook/, Boggs speaks of automation in apocalyptic terms, issuing the grave pronouncement that “America is headed toward full unemployment, not full employment.” By the early 1960s when Boggs wrote of this fast-approaching wave of automation, the term had come to mean the replacement of jobs once done by human laborers, now performed by an integrated system of machines that themselves come to regulate the pace of production for the smaller number of workers on the line. Central to Boggs’s analysis of automation is his insistence that the process will create a massive surplus population of “outsiders,” people whose labor has been made superfluous and obsolete who cannot get a foothold anywhere in the labor force. He argues that Black industrial workers will be hit first and hardest by this unemployment but assures his readers that it will come for all workers in time: > Automation replaces men. This of course is nothing new. What /is/ new is that now, unlike most earlier periods, the displaced men have nowhere to go. The farmers displaced by mechanization of the farms in the 1920s could go to the cities and man the assembly lines. As for the work animals like the mule, they could just stop growing them. But automation displaces people, and you don’t just stop growing people even when they have been made expendable by the system. Boggs’s vision of the world to come is a harrowing one indeed: even as work becomes increasingly scarce, the capitalist world-system will inevitably still condition the right to live upon the production of surplus value. This warning of automation’s capacity to create a crisis of joblessness and an ever-expanding surplus population still echoes in the contemporary discourse which always suggests a world of labor on the precipice of coming undone. Though this description of full unemployment did not unfold as Boggs predicted, the processes of deindustrialization and class decomposition certainly did, not just in the United States but all around the globe, even in nations whose industrial booms came much later in the twentieth century. To what degree can we blame automation for this shift? Has the coming onslaught of automation merely been delayed or are we living through a /longue durée/ of disappearing labor? What is the future of work? And above all else, how can we collectively ensure the possibilities for organizing ourselves as the ground shifts underneath our feet? Three more recent works of economic analysis provide a much-needed critical lens on the future of work, each arguing that not only is an impending future of laborlessness unlikely to arrive but also that the promise of automation (always doubling as a thinly veiled threat to workers) has been used to paper over the larger structural fault lines of a festering global regime of capital accumulation. Taken collectively, they portray a world economic system in long-term crisis and a global labor force increasingly stuck in low-wage service work while living under austerity regimes that have stripped both labor protections and social services to shreds. Automation’s acolytes often suggest that the hour of drudgery’s end is nigh, that a techno-utopian abundance, a land of milk and honey, is just around the corner if only we can have faith in technology’s promises just a little bit longer. Contrary to this assertion, these authors demonstrate that the work we do /is/ in fact changing, just not in the ways we have so often been palliatively foretold by the carnival barkers of automation. In 2020’s /Automation and the Future of Work/, Aaron Benanav contends that the resurgence of automation-related anxiety stems from the current harsh economic reality: “There are simply too few jobs for too many people.” The cause of this labor crisis, however, is not simply that automation has increased labor productivity and inversely decreased the demand for labor; instead, Benanav argues that the current under-demand for labor stems from “overcrowded global markets for manufactures, declining rates of investment in fixed capital, and a corresponding economic slowdown.” Certain segments of the industrial economy saw some processes automated, but this hardly explains why industrial output growth has stagnated for over a half century. As global manufacturing capacity grew, so, too, did competition in the global marketplace, which led to falling profits and, eventually, to manufacturers limiting output. Rather than deindustrialization happening in one country due to offshoring production to another, this widespread industrial overcapacity explains why it occurred worldwide, gradually moving outward from the capitalist core in the global North to the periphery in the Global South. As a result, companies are no longer willing to expend money in long-term fixed capital assets, opting instead for stock buybacks. With no alternative to the growth engine of manufacturing, capital chases its own tail, opting for the short-term windfalls of financialization. This mass scale disinvestment explains why so many analysts put their faith in automation. If the massive post-1945 manufacturing growth was but a brief blip on a long-term chart of capitalism’s global trajectory, the managers of capital can no longer jumpstart the engine. Instead they proclaim that we must reimagine and reorganize capital to save it, and that automation has or will force us to make these changes. But their new system relies upon a rate of growth it cannot possibly achieve, revealing the problem of overcapacity to be far more dire. /Automation and the Future of Work/ suggests that what we see is not Boggs’s eschatology of an economy moving towards full unemployment but rather one of incessantly growing underemployment. With overcapacity in industry, reduced unemployment benefits, and low union density, workers all over the world have been forced into deskilled, low-paying jobs with little to no substantive labor protections: > The postindustrial economy we have inherited, finally on a world scale, is, however, rather unlike the one whose emergence the American sociologist Daniel Bell first predicted in 1973: instead of an economy of researchers, tennis instructors, and Michelin-rated chefs, ours is predominately one of side-street barbers, domestic servants, fruit-cart vendors, and Walmart shelf stackers. In deindustrialized economies, workers have been absorbed by the stagnant service industries, an area which sees output growth predominately by expanding how many people it employs. Faced with a ceaselessly low demand for labor, millions end up stuck accepting low wages lest someone just as desperate step in to fill their position. Stuck in these dead-end jobs (many in the so-called gig economy), countless folks end up caught in a cycle of debt just to get by, with no way to get out. With workers thus unorganized and unprotected, employers can simply pay the bare minimum, assured that they can always secure replacements for alienated employees. But what if automation comes for jobs in the service sector? Wouldn’t this surely trigger Boggs’s predicted cataclysm of mass permanent unemployment? Jason E. Smith’s /Smart Machines and Service Work: Automation in an Age of Stagnation/ argues that not only do companies lack any incentive to invest in this technology (why spend money on fixed technological capital when you can rely on paying workers far less to do the same job) but also that many jobs in the service sector, like care work, simply cannot be automated as they rely on processes no machine can perform. Unlike Benanav’s meticulous exposition of quantitative data, /Smart Machines and Service Work/ is a work of political economic critique, which deftly disassembles the primary assumptions the field of automation (and capitalist economics more generally) rests upon. “The notion of a service sector, like the category of ‘services’ more generally, conceals as much as it clarifies,” Smith writes. “The more critical pressure is placed on this concept, the less useful it becomes as a tool of analysis.” If four out of five jobs in the United States qualify as existing within the service sector, what exactly ties together the labor of a day trader, a security guard, a middle manager, a line cook, and a teacher? Smith, placing himself in a Marxist tradition of critique, suggests that we instead understand our current economic stagnation as a result of the proliferation of labor that does not produce value. He points to the expansion of managerial supervision and circulatory labor as prime examples of unproductive labor. Whereas the fast-food worker performs work that looks and feels like Fordist production, the manager, like the cop, largely serves to enforce discipline and surveillance. Similarly, those vast circuits of transit which take a commodity from its point of production, to a shipping container, to a port, to a warehouse distribution center, and eventually to your doorstep in a single click, do not actually create value, they merely realize it. Most of the gains in productivity appear less as a miracle of automation and more as employers sweating increasingly more out of a workforce they see as disposable. Key to Smith’s argument is his rigorous skepticism towards much technology as such, rightly analyzing how most of the so-called developments of our era are little more than reworkings of prior technics, just packaged a bit sleeker, made a little smaller, and running a bit faster, but never able to fulfill even their modest promises of making life and work more tolerable. He writes that “the age of the computer has turned out to be a dud,” unable to turn around a sluggish world economy, while also observing that most much touted innovations amount to little more than “a tsunami of infantilizing gadgets that double as tracking collars for adults and children alike.” Most of the workplace innovations these companies have engineered amount to renting out digital platforms, charging tolls for their use, mining consumer data, and dissolving labor contracts by reclassifying their workers as freelancers. None of these advance us even an inch toward the lives of abundant leisure so many automation theorists promise. Instead, so long as companies continue to benefit from more technically efficient production processes, the service industry will continue to have a vast pool of labor to draw from, ensuring that these workers will always be cheaper than any permanent investments in automating even that segment of work which /could/ be done by machines. Under such a capitalist regime, full automation of work simply cannot happen. If the threat of automation remains far smaller than the existential problems of a capitalist world-system spluttering along, unable to grow, and beginning to show the inevitable signs of rot, then surely we must begin to look to other escape hatches. Benanav argues that neither neo-Keynesianism nor UBI programs are adequate solutions. Without a social movement capable of embarking on a quest of production that could actually place the means of our labor into our own hands, piecemeal reforms remain inevitably susceptible to the capital strike. Given that most workers “are paid low wages, forced out of cities, denied public services, are not unionized, and do not perform activities that are located at strategic points in the economy,” Smith doubts that any residual forms of twentieth-century organizing will be able to adequately address the fragmented, isolated, and alienated conditions so many now work within. To echo that old Lenin query, what then is to be done? While Benanav and Smith both provide crucial insight into the causes of global stagnation and its effects on the kinds of work we do now, Gavin Mueller’s /Breaking Things at Work/ views the story from an entirely different vantage, focusing on the workers who have struggled against mechanization and automation from its inception, telling a cultural history of machine smashing as revolutionary praxis against the onslaught of capital’s attempts to take more control of the workplace. Mueller’s work is a counter-history of automation, attending to all those who have fought back at every turn, acting out of a desire to maintain as much collective autonomy over what it means to work as possible. Mueller argues that technology “robs people of the feeling that they can control their own lives, that they can set the terms of their world.” He centers his story around the Luddites, a group of “discontented weavers, croppers, and other textile workers,” who in the 1810s embarked on covert machine-smashing riots in Britain to protest new technologies being introduced that would turn their professions into deskilled piecework. He quickly dispels the common misconception of Luddism as somehow synonymous with a vague and regressive primitivism and instead reclaims the legacy of the Luddites as one in which everyday workers engaged in collective action against unwanted changes in their labor conditions. In Mueller’s formulation, “to be a good Marxist is also to be a Luddite.” The Luddites serve as inspiration to our present. They mark a tradition to be learned from, one which can remind us that despite all those managers and guards placed in our workplaces to ensure speedups and intensifications run smoothly, workers themselves can always throw a hitch into the operation, can always resist the attempts to deskill and gigify our jobs. Mueller argues that automation does not so much replace humans with machines as it remolds work altogether, “isolating and rearranging tasks, altering job descriptions, and hollowing out middle-tier occupations.” In reaction to this, workers have historically participated in a variety of resistances which echo these Luddite methods, including wildcat strikes, slowdowns, sabotage, theft, and outright refusal to work. Union musicians in St. Louis “planted time bombs that damaged the Vitaphone sound film equipment that had replaced them”; American soldiers in Vietnam refused orders, destroyed equipment, and fragged their commanders; more recently, ILWU dockworkers in Seattle “damaged freight cars, dumped grain, and attacked windows with baseball bats during a contract dispute,” and Amazon warehouse workers continue to find ways to defy the surveillance regime meant to regiment their every movement in the workplace. /Breaking Things at Work/ draws these legacies into a cumulative strategy for how we might come together to combat the daily indignities and miseries of contemporary work, advocating on behalf of a politics of deceleration, “a politics of slowing down change, undermining technological progress, and limiting capital’s rapacity, while developing organization and cultivating militancy.” The decelerationist tendency of Luddism then is primarily about recapturing control of the terms not just of our work but of /all/ of our social relations. It signals the possibility of exerting collective force over our lives, which have been increasingly dictated by the terms of the wealthy. Mueller suggests that this can be coupled with a politics of degrowth, of envisioning a world not built on the mass extraction of resources required for the continual expansion of profits “as the advanced technology of Silicon Valley is built with rare earth metals mined ‘artisinally’ by children using primitive tools.” Along with deceleration and degrowth, we can add decarbonization to this mix, since the current organization of work is directly responsible for the rapidly accelerating destruction of the planet. The political praxis of Luddism offers up a way of linking concurrent struggles together and of acting now, for coming together within and outside of the workplace to reassert our collective autonomy, to begin to actually build a new world by taking apart our present one. Ultimately, so much of the discourse around automation reveals what we currently lack. We do not possess the leisure hours we deserve. Our workplaces already treat us like the robots they threaten to replace us with. We have ridden out a pandemic ever more reliant upon our smartphones and computers while being reminded of how isolated so many of us already had been made by these very technologies. Capitalists themselves have no solution to offer, not even an appealing fantasy to sell. Even the ludicrous dreams of Bezos and Musk to use space as an escape hatch from a climate ravaged world expressly rely upon transporting the division of labor off-world fully intact. As Boggs told us in 1963, we desperately desire to lead lives with meaning that decouple our work and our worth. We need a life not beholden to the value form. We need a labor no longer doggedly paced by Frederick Taylor’s stopwatch. We need a planet that remains inhabitable and biodiverse. Machines are not coming to make a better world for us. Robots won’t build the classless society. That historical task, as always, remains solely our own. [The Automation Myth | Clinton Williamson](https://thebaffler.com/latest/the-automation-myth-williamson) # Guanfacine Medication Not to be confused with [Guanine](https://en.wikipedia.org/wiki/Guanine), [Guanosine](https://en.wikipedia.org/wiki/Guanosine), [Guanidine](https://en.wikipedia.org/wiki/Guanidine), [Guaifenesin](https://en.wikipedia.org/wiki/Guaifenesin), or [Clonidine](https://en.wikipedia.org/wiki/Clonidine). [image:63D0B321-77AA-4FC7-A296-522B32A1F4AC-4579-0000005F9D23FB72/220px-Guanfacine.svg.png] Guanfacine [image:ADDC932D-83EA-4B29-B234-354E646672E6-4579-0000005F9D231C89/220px-Guanfacine_molecule_ball.png] Clinical data [Trade names](https://en.wikipedia.org/wiki/Drug_nomenclature#Trade_names) Estulic, Intuniv, Tenex, others [AHFS](https://en.wikipedia.org/wiki/American_Society_of_Health-System_Pharmacists) / [Drugs.com](https://en.wikipedia.org/wiki/Drugs.com) [Monograph](https://www.drugs.com/monograph/guanfacine.html) [MedlinePlus](https://en.wikipedia.org/wiki/MedlinePlus) [a601059](https://medlineplus.gov/druginfo/meds/a601059.html) [License data](https://en.wikipedia.org/wiki/Regulation_of_therapeutic_goods) * EU [EMA](https://en.wikipedia.org/wiki/European_Medicines_Agency): [by INN](http://www.ema.europa.eu/ema/index.jsp?curl=%2Fpages%2Fmedicines%2Flanding%2Fepar_search.jsp&mid=&searchTab=searchByKey&alreadyLoaded=true&isNewQuery=true&status=Authorised&status=Withdrawn&status=Suspended&status=Refused&keywordSearch=Submit&searchType=inn&taxonomyPath=&treeNumber=&searchGenericType=generics&keyword=Guanfacine) * US [DailyMed](https://en.wikipedia.org/wiki/DailyMed): [Guanfacine](https://dailymed.nlm.nih.gov/dailymed/search.cfm?labeltype=all&query=Guanfacine) * US [FDA](https://en.wikipedia.org/wiki/U.S._Food_and_Drug_Administration): [Guanfacine](https://www.accessdata.fda.gov/scripts/cder/drugsatfda/index.cfm?fuseaction=Search.SearchAction&SearchTerm=Guanfacine&SearchType=BasicSearch) [Routes ofadministration](https://en.wikipedia.org/wiki/Route_of_administration) [By mouth](https://en.wikipedia.org/wiki/Oral_administration) [ATC code](https://en.wikipedia.org/wiki/Anatomical_Therapeutic_Chemical_Classification_System) * [C02AC02](https://en.wikipedia.org/wiki/ATC_code_C02) ( [WHO](https://www.whocc.no/atc_ddd_index/?code=C02AC02) ) Legal status [Legal status](https://en.wikipedia.org/wiki/Regulation_of_therapeutic_goods) * AU: [S4](https://en.wikipedia.org/wiki/Standard_for_the_Uniform_Scheduling_of_Medicines_and_Poisons#Schedule_4) (Prescription only) * US: [℞-only](https://en.wikipedia.org/wiki/Prescription_drug) [Pharmacokinetic](https://en.wikipedia.org/wiki/Pharmacokinetics) data [Bioavailability](https://en.wikipedia.org/wiki/Bioavailability) 80–100% (IR), 58% (XR) [❲1❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-DM-1) [❲2❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-MSR-2) [Protein binding](https://en.wikipedia.org/wiki/Plasma_protein_binding) 70% [❲1❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-DM-1) [❲2❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-MSR-2) [Metabolism](https://en.wikipedia.org/wiki/Drug_metabolism) [CYP3A4](https://en.wikipedia.org/wiki/CYP3A4) [❲1❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-DM-1) [❲2❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-MSR-2) [Elimination half-life](https://en.wikipedia.org/wiki/Biological_half-life) IR: 10-17 hours; XR: 17 hours (10-30) in adults & adolescents and 14 hours in children [❲1❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-DM-1) [❲2❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-MSR-2) [❲3❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-3) [❲4❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-4) [Excretion](https://en.wikipedia.org/wiki/Excretion) Kidney (80%; 50% [range: 40–75%] as unchanged drug) [❲1❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-DM-1) [❲2❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-MSR-2) Identifiers [IUPAC name](https://en.wikipedia.org/wiki/IUPAC_nomenclature_of_chemistry) * /N/ -(diaminomethylidene)-2-(2,6-dichlorophenyl)acetamide [CAS Number](https://en.wikipedia.org/wiki/CAS_Registry_Number) * [29110-47-2](https://commonchemistry.cas.org/detail?cas_rn=29110-47-2) [image:D3C403F4-8FF3-4099-AB85-CB4C0DD4C9E0-4579-0000005F9D2243DA/7px-Yes_check.svg.png] * Y [PubChem](https://en.wikipedia.org/wiki/PubChem#CID) CID * [3519](https://pubchem.ncbi.nlm.nih.gov/compound/3519) [IUPHAR/BPS](https://en.wikipedia.org/wiki/Guide_to_Pharmacology) * [522](http://www.guidetopharmacology.org/GRAC/LigandDisplayForward?ligandId=522) [DrugBank](https://en.wikipedia.org/wiki/DrugBank) * [DB01018](https://www.drugbank.ca/drugs/DB01018) [image:CDE92B01-D939-428C-A547-EF190F6CB032-4579-0000005F9D217FC8/_7px-Yes_check.svg.png] * Y [ChemSpider](https://en.wikipedia.org/wiki/ChemSpider) * [3399](https://www.chemspider.com/Chemical-Structure.3399.html) [image:D5EA4C29-4EE3-4D44-BEDC-63EB8DDAC4A4-4579-0000005F9D20B38F/__7px-Yes_check.svg.png] * Y [UNII](https://en.wikipedia.org/wiki/Unique_Ingredient_Identifier) * [30OMY4G3MK](https://precision.fda.gov/uniisearch/srs/unii/30OMY4G3MK) [KEGG](https://en.wikipedia.org/wiki/KEGG) * [D08031](https://www.kegg.jp/entry/D08031) [image:E562E505-AF90-427E-B977-21CC763B7628-4579-0000005F9D1FDD8D/7px-X_mark.svg.png] * N [ChEMBL](https://en.wikipedia.org/wiki/ChEMBL) * [ChEMBL862](https://www.ebi.ac.uk/chembldb/index.php/compound/inspect/ChEMBL862) [image:187EEE75-1F5A-431C-A1BC-E602ABBCEE54-4579-0000005F9D1F104A/___7px-Yes_check.svg.png] * Y [CompTox Dashboard](https://en.wikipedia.org/wiki/CompTox_Chemicals_Dashboard) (EPA) * [DTXSID9046944](https://comptox.epa.gov/dashboard/chemical/details/DTXSID9046944) [image:8847AD3E-F385-47CF-99F0-A16B19920580-4579-0000005F9D1E49E9/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png] * [ECHA InfoCard](https://en.wikipedia.org/wiki/ECHA_InfoCard) [100.044.933](https://echa.europa.eu/substance-information/-/substanceinfo/100.044.933) [image:EA50CD96-C7B4-45FD-88C5-650A0E08BD6E-4579-0000005F9D1D7672/_10px-OOjs_UI_icon_edit-ltr-progressive.svg.png] Chemical and physical data [Formula](https://en.wikipedia.org/wiki/Chemical_formula) C9H9Cl2N3O [Molar mass](https://en.wikipedia.org/wiki/Molar_mass) 246.09 g·mol−13D model ( [JSmol](https://en.wikipedia.org/wiki/JSmol) ) * [Interactive image](https://chemapps.stolaf.edu/jmol/jmol.php?model=Clc1cccc%28Cl%29c1CC%28%3DO%29%5CN%3DC%28%2FN%29N) [SMILES](https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system) * Clc1cccc(Cl)c1CC(=O)\N=C(/N)N [InChI](https://en.wikipedia.org/wiki/International_Chemical_Identifier) * InChI=1S/C9H9Cl2N3O/c10-6-2-1-3-7(11)5(6)4-8(15)14-9(12)13/h1-3H,4H2,(H4,12,13,14,15) [image:FC403641-AA3C-42E1-A7F5-6888C9005711-4579-0000005F9D1C8DC8/____7px-Yes_check.svg.png] * Y * Key:INJOMKTZOLKMBF-UHFFFAOYSA-N [image:5916A049-A739-4355-80B2-2B70DF758A87-4579-0000005F9D1B8FCD/_____7px-Yes_check.svg.png] * Y [image:EB66CB32-DE8E-4254-A73E-477242FAA14E-4579-0000005F9D1A9DA1/_7px-X_mark.svg.png] N [image:2A4EACE3-6ED8-4C11-B549-6B9ADFA1159A-4579-0000005F9D199FCE/______7px-Yes_check.svg.png] Y [(what is this?)](https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Chemicals/Chembox_validation) [(verify)](https://en.wikipedia.org/w/index.php?title=Special:ComparePages&rev1=461124228&page2=Guanfacine) *Guanfacine*, sold under the brand name *Tenex* among others, is an oral medication used to treat [attention deficit hyperactivity disorder](https://en.wikipedia.org/wiki/Attention_deficit_hyperactivity_disorder) (ADHD) and [high blood pressure](https://en.wikipedia.org/wiki/High_blood_pressure).[❲5❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AHFS2019-5) It is not considered a first-line treatment for either indication.[❲5❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AHFS2019-5) Common side effects include sleepiness, constipation, dry mouth, sexual problems, and headaches.[❲5❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AHFS2019-5) Other side effects may include [anxiety](https://en.wikipedia.org/wiki/Anxiety), [low blood pressure](https://en.wikipedia.org/wiki/Low_blood_pressure), [depression](https://en.wikipedia.org/wiki/Depression_%28mood%29), and urinary problems.[❲6❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-BNF76-6) Use is not recommended during [pregnancy](https://en.wikipedia.org/wiki/Pregnancy) or [breastfeeding](https://en.wikipedia.org/wiki/Breastfeeding).[❲6❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-BNF76-6) It appears to work by activating the [α2A receptors](https://en.wikipedia.org/wiki/Alpha-2A_adrenergic_receptor) in the brain thereby decreasing [sympathetic nervous system](https://en.wikipedia.org/wiki/Sympathetic_nervous_system) activity.[❲5❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AHFS2019-5) Guanfacine was approved for medical use in the United States in 1986.[❲5❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AHFS2019-5) It is available as a [generic medication](https://en.wikipedia.org/wiki/Generic_medication).[❲5❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AHFS2019-5) In 2019, it was the 140th most commonly prescribed medication in the United States, with more than 4 million prescriptions.[❲7❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-7) [❲8❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-8) ## Medical uses [image:8C28DEDC-3810-43CB-B31A-81DF3485E1B4-4579-0000005F9D18627B/220px-Guanfacine_tablets.jpg] 1 mg guanfacine tablets. Guanfacine is used alone or with stimulants to treat people with [attention deficit hyperactivity disorder](https://en.wikipedia.org/wiki/Attention_deficit_hyperactivity_disorder).[❲9❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Effects-9) [❲10❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-10) It is also used to treat [high blood pressure](https://en.wikipedia.org/wiki/Hypertension).[❲2❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-MSR-2) It is a less preferred treatment for ADHD (after more established treatments such as [methylphenidate](https://en.wikipedia.org/wiki/Methylphenidate) and [amphetamines](https://en.wikipedia.org/wiki/Amphetamine) ) and for high blood pressure.[❲5❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AHFS2019-5) ## Adverse effects Side effects of guanfacine are dose-dependent.[❲11❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Jerie-11) Very common (>10% incidence) adverse effects include sleepiness, tiredness, headache, and stomach ache.[❲12❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-UKlabel2017-12) Common (1-10% incidence) adverse effects include decreased appetite, depressed mood, anxiety, irritability, mood changes, insomnia, nightmares, dizziness, lack of energy, slowed heart beat, low blood pressure, feeling faint when standing quickly, vomiting, nausea, diarrhea, constipation, dry mouth, urinary incontinence, and rashes.[❲12❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-UKlabel2017-12) Typical side effects such as fatigue, irritability and stomach upset can take a week or two to subside. Increases in dosage can have the same adjustment period. ## Interactions Guanfacine availability is significantly affected by the [CYP3A4](https://en.wikipedia.org/wiki/CYP3A4) and [CYP3A5](https://en.wikipedia.org/wiki/CYP3A5) enzymes. Medications that inhibit or induce those enzymes change the amount of guanfacine in circulation and thus its efficacy and rate of adverse effects. Because of its impact on the heart, it should be used with caution with other cardioactive drugs. Similar concern is appropriate when it is used with sedating medications.[❲12❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-UKlabel2017-12) Guanfacine is known to lower the user's tolerance for [alcohol](https://en.wikipedia.org/wiki/Alcohol_%28drug%29), heightening its effect, and alcohol use may prolong the effects of the medication.[❲13❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-13) ## Pharmacology Guanfacine is a highly selective [agonist](https://en.wikipedia.org/wiki/Agonist) of the [α2A adrenergic receptor](https://en.wikipedia.org/wiki/Alpha-2A_adrenergic_receptor), with low affinity for other receptors.[❲14❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-PDSP-14) However it may also be a potent [5-HT2B receptor](https://en.wikipedia.org/wiki/5-HT2B_receptor) agonist, potentially contributing to [valvulopathy](https://en.wikipedia.org/wiki/Valvular_heart_disease).[❲15❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-AJMP-15) ### Mechanism of action Guanfacine works by activating α2A adrenoceptors within the [central nervous system](https://en.wikipedia.org/wiki/Central_nervous_system). This leads to reduced [peripheral](https://en.wikipedia.org/wiki/Peripheral_nervous_system) sympathetic outflow and thus a reduction in peripheral [sympathetic tone](https://en.wikipedia.org/wiki/Sympathetic_tone), which lowers both [systolic](https://en.wikipedia.org/wiki/Systole_%28medicine%29) and [diastolic](https://en.wikipedia.org/wiki/Diastolic) [blood pressure](https://en.wikipedia.org/wiki/Blood_pressure).[❲16❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-VanZwieten-16) In ADHD, guanfacine works by strengthening regulation of attention and behavior by the [prefrontal cortex](https://en.wikipedia.org/wiki/Prefrontal_cortex).[❲17❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Arnsten-17) These enhancing effects on prefrontal cortical functions are believed to be due to drug stimulation of post-synaptic α2A adrenoceptors on dendritic spines. cAMP-mediated opening of HCN and KCNQ channels is inhibited, which enhances prefrontal cortical synaptic connectivity and neuronal firing.[❲17❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Arnsten-17) [❲18❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-18) The use of guanfacine for treating prefrontal disorders was developed by the Arnsten Lab at Yale University.[❲17❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Arnsten-17) [❲19❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-19) ### Pharmacokinetics Guanfacine has an oral [bioavailability](https://en.wikipedia.org/wiki/Bioavailability) of 80%. There is no clear evidence of any [first-pass metabolism](https://en.wikipedia.org/wiki/First-pass_metabolism). [Elimination half-life](https://en.wikipedia.org/wiki/Elimination_half-life) is 17 hours with the major elimination route being [renal](https://en.wikipedia.org/wiki/Renal). The principal [metabolite](https://en.wikipedia.org/wiki/Metabolite) is the 3-hydroxy-derivative, with evidence of moderate [biotransformation](https://en.wikipedia.org/wiki/Biotransformation), and the key intermediate is an [epoxide](https://en.wikipedia.org/wiki/Epoxide).[❲20❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Kiechel-20) Elimination is not impacted with impaired renal function. As such, metabolism by liver is the assumption for those with impaired renal function, as supported by increased frequency of known side effects of orthostatic hypotension and sedation.[❲21❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-21) ## History In 1986, guanfacine was approved by the FDA for the treatment of [hypertension](https://en.wikipedia.org/wiki/Hypertension) under the brand name Tenex ( [Drugs@FDA](https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=019032) ). In 2010, guanfacine was approved by the FDA for the treatment of [attention deficit hyperactivity disorder](https://en.wikipedia.org/wiki/Attention_deficit_hyperactivity_disorder) for people 6–17 years old.[❲9❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Effects-9) It was approved for ADHD by the [European Medicines Agency](https://en.wikipedia.org/wiki/European_Medicines_Agency) under the name Intuniv in 2015.[❲22❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-22) It was added to the Australian [Pharmaceutical Benefits Scheme](https://en.wikipedia.org/wiki/Pharmaceutical_Benefits_Scheme) for the treatment of ADHD in 2018.[❲23❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-23) ## Brand names Brand names include Tenex, Afken, Estulic, and Intuniv (an [extended release](https://en.wikipedia.org/wiki/Extended_release) formulation). ## Research Guanfacine has been studied as a treatment for [post-traumatic stress disorder](https://en.wikipedia.org/wiki/Post-traumatic_stress_disorder) (PTSD). Evidence of efficacy in adults is limited, but one study found positive results in children with comorbid ADHD.[❲24❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-24) It may be also useful in adult PTSD patients who do not respond to [SSRIs](https://en.wikipedia.org/wiki/Selective_serotonin_reuptake_inhibitor).[❲25❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-Belkin2015-25) Results of studies using guanfacine to treat [Tourette's](https://en.wikipedia.org/wiki/Tourette%27s) have been mixed.[❲26❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-26) Guanfacine has been investigated for treatment of withdrawal for [opioids](https://en.wikipedia.org/wiki/Opioid), [ethanol](https://en.wikipedia.org/wiki/Ethanol), and [nicotine](https://en.wikipedia.org/wiki/Nicotine).[❲27❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-27) Guanfacine has been shown to help reduce stress-induced craving of nicotine in smokers trying to quit, which may involve strengthening of prefrontal cortex meditated self-control.[❲28❳](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_note-28) ## See also * [Clonidine](https://en.wikipedia.org/wiki/Clonidine) * [Yohimbine](https://en.wikipedia.org/wiki/Yohimbine) ## References 1. ^ [a](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-DM_1-0) [b](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-DM_1-1) [c](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-DM_1-2) [d](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-DM_1-3) [e](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-DM_1-4) `["Guanfacine (guanfacine) Tablet ❲Genpharm Inc.❳"](http://dailymed.nlm.nih.gov/dailymed/lookup.cfm?setid=9fc0bdc2-5ba2-48dd-aa87-7b0050a2d6ce). /DailyMed/. Genpharm Inc. March 2007. Retrieved 9 November 2013.` 2. ^ [a](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-MSR_2-0) [b](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-MSR_2-1) [c](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-MSR_2-2) [d](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-MSR_2-3) [e](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-MSR_2-4) [f](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-MSR_2-5) `["guanfacine (Rx) - Intuniv, Tenex"](http://reference.medscape.com/drug/intuniv-tenex-guanfacine-342384). /Medscape Reference/. WebMD. Retrieved 9 November 2013.` 3. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-3)* `Hofer, Kristi N.; Buck, Marcia L. (2008). ["New Treatment Options for Attention-Deficit/Hyperactivity Disorder (ADHD): Part II. Guanfacine"](http://medscape.com/viewarticle/578747_4). /Pediatric Pharmacotherapy/(14): 4.` 4. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-4)* `Cruz, MP (Aug 2010). ["Guanfacine Extended-Release Tablets (Intuniv), a Nonstimulant Selective Alpha(2A)-Adrenergic Receptor Agonist For Attention-Deficit/Hyperactivity Disorder"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2935643). /Pharmacy and Therapeutics/. *35* (8): 448–51. [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [2935643](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2935643). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [20844694](https://pubmed.ncbi.nlm.nih.gov/20844694).` 5. ^ [a](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AHFS2019_5-0) [b](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AHFS2019_5-1) [c](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AHFS2019_5-2) [d](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AHFS2019_5-3) [e](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AHFS2019_5-4) [f](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AHFS2019_5-5) [g](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AHFS2019_5-6) `["Guanfacine Monograph for Professionals"](https://web.archive.org/web/20180115071707/https://www.drugs.com/monograph/guanfacine.html). /Drugs.com/. American Society of Health-System Pharmacists. Archived from [the original](https://www.drugs.com/monograph/guanfacine.html)on 4 January 2018. Retrieved 18 March 2019.` 6. ^ [a](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-BNF76_6-0) [b](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-BNF76_6-1) `/British national formulary : BNF 76/ (76 ed.). Pharmaceutical Press. 2018. pp. 349–350. [ISBN](https://en.wikipedia.org/wiki/ISBN_%28identifier%29) [9780857113382](https://en.wikipedia.org/wiki/Special:BookSources/9780857113382).` 7. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-7)* `["The Top 300 of 2019"](https://clincalc.com/DrugStats/Top300Drugs.aspx). /ClinCalc/. Retrieved 16 October 2021.` 8. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-8)* `["Guanfacine - Drug Usage Statistics"](https://clincalc.com/DrugStats/Drugs/Guanfacine). /ClinCalc/. Retrieved 16 October 2021.` 9. ^ [a](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Effects_9-0) [b](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Effects_9-1) `Kornfield R, Watson S, Higashi A, Dusetzina S, Conti R, Garfield R, Dorsey ER, Huskamp HA, Alexander GC (April 2013). ["Impact of FDA Advisories on Pharmacologic Treatment of Attention Deficit Hyperactivity Disorder"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4023684). /Psychiatric Services/. *64* (4): 339–46. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1176/appi.ps.201200147](https://doi.org/10.1176%2Fappi.ps.201200147). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [4023684](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4023684). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [23318985](https://pubmed.ncbi.nlm.nih.gov/23318985).` 10. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-10)* `Zito, Julie M.; Derivan, Albert T.; Kratochvil, Christopher J.; Safer, Daniel J.; Fegert, Joerg M.; Greenhill, Laurence L. (15 September 2008). ["Off-label psychopharmacologic prescribing for children: History supports close clinical monitoring"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2566553). /Child and Adolescent Psychiatry and Mental Health/. *2* (1): 24. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1186/1753-2000-2-24](https://doi.org/10.1186%2F1753-2000-2-24). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [2566553](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2566553). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [18793403](https://pubmed.ncbi.nlm.nih.gov/18793403).` [image:8BDE3394-2E61-4D96-935A-48309D2535A4-4579-0000005F9D165C02/9px-Open_Access_logo_PLoS_transparent.svg.png] 10. 11. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Jerie_11-0)* `Jerie, P. (1980). ["Clinical experience with guanfacine in long-term treatment of hypertension: Part II: adverse reactions to guanfacine"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1430125). /British Journal of Clinical Pharmacology/. *10* (Suppl 1): 157S–164S. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1111/j.1365-2125.1980.tb04924.x](https://doi.org/10.1111%2Fj.1365-2125.1980.tb04924.x). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [1430125](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1430125). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [6994770](https://pubmed.ncbi.nlm.nih.gov/6994770).` 12. ^ [a](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-UKlabel2017_12-0) [b](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-UKlabel2017_12-1) [c](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-UKlabel2017_12-2) `["Intuniv 1 mg, 2 mg, 3 mg, 4 mg prolonged-release tablets - Summary of Product Characteristics"](https://www.medicines.org.uk/emc/medicine/31294). UK Electronic Medicines Compendium. June 2017.` 13. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-13)* `["Guanfacine | Side Effects, Dosage, Uses, and More"](https://www.healthline.com/health/guanfacine-oral-tablet#important-warnings). 11 November 2017.` 14. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-PDSP_14-0)* `[Roth, BL](https://en.wikipedia.org/wiki/Bryan_Roth); Driscol, J (12 January 2011), ["PDSP Ki Database"](https://web.archive.org/web/20131108013656/http://pdsp.med.unc.edu/pdsp.php), /Psychoactive Drug Screening Program (PDSP)/, University of North Carolina at Chapel Hill and the United States National Institute of Mental Health, archived from [the original](http://pdsp.med.unc.edu/pdsp.php)on 8 November 2013, retrieved 15 November 2013` 15. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-AJMP_15-0)* `Huang, Xi-Ping; Setola, Vincent; Yadav, Prem N.; Allen, John A.; Rogan, Sarah C.; Hanson, Bonnie J.; Revankar, Chetana; Robers, Matt; Doucette, Chris; Roth, Bryan L. (2009). ["Parallel Functional Activity Profiling Reveals Valvulopathogens Are Potent 5-Hydroxytryptamine2B Receptor Agonists: Implications for Drug Safety Assessment"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2769050). /Molecular Pharmacology/. *76* (4): 710–22. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1124/mol.109.058057](https://doi.org/10.1124%2Fmol.109.058057). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [2769050](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2769050). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [19570945](https://pubmed.ncbi.nlm.nih.gov/19570945).` 16. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-VanZwieten_16-0)* `Van Zwieten, P.; Thoolen, M. & Timmermans, P. (1983). ["The pharmacology of centrally acting antihypertensive drugs"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1427667). /British Journal of Clinical Pharmacology/. *15* (Suppl 4): 455S–462S. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1111/j.1365-2125.1983.tb00311.x](https://doi.org/10.1111%2Fj.1365-2125.1983.tb00311.x). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [1427667](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1427667).` 17. ^ [a](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Arnsten_17-0) [b](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Arnsten_17-1) [c](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Arnsten_17-2) `Arnsten AF (October 2010), "The use of α2A adrenergic agonists for the treatment of attention-deficit/hyperactivity disorder", /Expert Review of Neurotherapeutics/, *10* (10): 1595–605, [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1586/ern.10.133](https://doi.org/10.1586%2Fern.10.133), [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [3143019](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3143019), [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [20925474](https://pubmed.ncbi.nlm.nih.gov/20925474)` 18. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-18)* `Wang, m; et al. (2007). ["Alpha2A-adrenoceptors strengthen working memory networks by inhibiting cAMP-HCN channel signaling in prefrontal cortex"](https://doi.org/10.1016%2Fj.cell.2007.03.015). /Cell/. *129* (2): 397–410. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1016/j.cell.2007.03.015](https://doi.org/10.1016%2Fj.cell.2007.03.015). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [17448997](https://pubmed.ncbi.nlm.nih.gov/17448997). [S2CID](https://en.wikipedia.org/wiki/S2CID_%28identifier%29) [741677](https://api.semanticscholar.org/CorpusID:741677).` 19. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-19)* `Arnsten&Jin (2012). ["Guanfacine for the treatment of cognitive disorders: a century of discoveries at Yale"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3313539). /Yale J Biol Med/. *85* (1): 45–58. [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [3313539](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3313539). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [22461743](https://pubmed.ncbi.nlm.nih.gov/22461743).` 20. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Kiechel_20-0)* `Kiechel, J. (1980). ["Pharmacokinetics and metabolism of guanfacine in man: A review"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1430131). /British Journal of Clinical Pharmacology/. *10* (Suppl 1): 25S–32S. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1111/j.1365-2125.1980.tb04901.x](https://doi.org/10.1111%2Fj.1365-2125.1980.tb04901.x). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [1430131](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1430131). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [6994775](https://pubmed.ncbi.nlm.nih.gov/6994775).` 21. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-21)* `Kirch, W.; Kohler, H. & Braun, W. (1980). ["Elimination of guanfacine in patients with normal and impaired renal function"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1430110). /British Journal of Clinical Pharmacology/. *10* (Suppl 1): 33S–35S. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1111/j.1365-2125.1980.tb04902.x](https://doi.org/10.1111%2Fj.1365-2125.1980.tb04902.x). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [1430110](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1430110). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [6994776](https://pubmed.ncbi.nlm.nih.gov/6994776).` 22. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-22)* `["European Medicines Agency: Intuniv"](http://www.ema.europa.eu/ema/index.jsp?curl=pages/medicines/human/medicines/003759/human_med_001910.jsp&mid=WC0b01ac058001d124). /ema.europa.eu/. October 2015.` 23. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-23)* `["New drugs listed on the PBS for rheumatoid arthritis, cystic fibrosis and ADHD"](https://www.racgp.org.au/newsGP/Clinical/New-drugs-listed-on-the-PBS-for-rheumatoid-arthrit). Royal Australian College of General Practitioners. Retrieved 11 September 2018.` 24. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-24)* `Connor, Daniel F.; Grasso, Damion J.; Slivinsky, Michelle D.; Pearson, Geraldine S.; Banga, Alok (May 2013). ["An Open-Label Study of Guanfacine Extended Release for Traumatic Stress Related Symptoms in Children and Adolescents"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3657282). /Journal of Child and Adolescent Psychopharmacology/. *23* (4): 244–251. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1089/cap.2012.0119](https://doi.org/10.1089%2Fcap.2012.0119). [ISSN](https://en.wikipedia.org/wiki/ISSN_%28identifier%29) [1044-5463](https://www.worldcat.org/issn/1044-5463). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [3657282](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3657282). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [23683139](https://pubmed.ncbi.nlm.nih.gov/23683139).` 25. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-Belkin2015_25-0)* `Belkin, MR; Schwartz, TL (2015). ["Alpha-2 receptor agonists for the treatment of posttraumatic stress disorder"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4544272). /Drugs in Context/. *4*: 212286. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.7573/dic.212286](https://doi.org/10.7573%2Fdic.212286). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [4544272](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4544272). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [26322115](https://pubmed.ncbi.nlm.nih.gov/26322115).` 26. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-26)* `Srour M, Lespérance P, Richer F, Chouinard S (2008). ["Psychopharmacology of Tic Disorders"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2527768). /J Can Acad Child Adolesc Psychiatry/. *17* (3): 150–159. [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [2527768](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2527768). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [18769586](https://pubmed.ncbi.nlm.nih.gov/18769586).` 27. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-27)* `Sofuogul, M. & Sewell, A. (2009), "Norepinephrine and Stimulant Addiction", /[Addiction Biology](https://en.wikipedia.org/wiki/Addiction_Biology)/, *14* (2): 119–129, [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1111/j.1369-1600.2008.00138.x](https://doi.org/10.1111%2Fj.1369-1600.2008.00138.x), [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [2657197](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2657197), [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [18811678](https://pubmed.ncbi.nlm.nih.gov/18811678)` 28. *[^](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1#cite_ref-28)* `McKee, SA; Potenza, MN; Kober, H; Sofuoglu, M; Arnsten, AF; Picciotto, MR; Weinberger, AH; Ashare, R; Sinha, R (Mar 2015). ["A translational investigation targeting stress-reactivity and prefrontal cognitive control with guanfacine for smoking cessation"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4376109). /J. Psychopharmacol/. *29* (3): 300–311. [doi](https://en.wikipedia.org/wiki/Doi_%28identifier%29):[10.1177/0269881114562091](https://doi.org/10.1177%2F0269881114562091). [PMC](https://en.wikipedia.org/wiki/PMC_%28identifier%29) [4376109](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4376109). [PMID](https://en.wikipedia.org/wiki/PMID_%28identifier%29) [25516371](https://pubmed.ncbi.nlm.nih.gov/25516371).` ## External links * `["Guanfacine"](https://druginfo.nlm.nih.gov/drugportal/name/guanfacine). /Drug Information Portal/. U.S. National Library of Medicine.` Retrieved from "[https://en.wikipedia.org/w/index.php?title=Guanfacine&oldid=1078753706](https://en.wikipedia.org/w/index.php?title=Guanfacine&oldid=1078753706)" [Guanfacine](https://en.wikipedia.org/wiki/Guanfacine?wprov=sfti1) # Drafts Directory: On My Mind [image:D636C1BF-9C42-4C9F-A347-868F9A5787B7-4342-0000006A5B279540/drafts-ogimage-action-d9c60102fd45e0cb516e1b49ed50a81e3c3a2b90f81f55df8f43d0feb0512978.png] Posted by FlohGro, Last update 4 days ago /created by [@FlohGro](https://twitter.com/FlohGro) / more on my [Blog](http://www.flohgro.com/)/ ## On My Mind Action Group This Action Group was inspired by [Federico Viticci](https://twitter.com/viticci) from [MacStories](https://actions.getdrafts.com/g/macstories.net). The purpose is to quickly get your thoughts, ideas or references into a single Draft named `On My Mind` and process them later. You can process the `On My Mind` with an Action to sort each thought (..) into the tools you want to further elaborate on them or delete them again. In this short documentation the content added to the On My Mind Draft is called “chunk” since you could configure it to e.g. be a bullet list or each chunk shall be divided by e.g. two new lines. The Action Group is divided into two sections: * `[omm] Helper Actions`: contains helper actions for the OMM Action Group * `[omm] Actions`: contains the actual Actions for this action groups which you can use in your workflows ### [omm] Helper Actions The Actions in this section are used by the actual On My Mind Actions. They provide configuration possibilities or can perform actions on chunks in the On My Mind Draft. You can move them to different Action Groups to hide them - but make sure to not delete them. * *[omm] configuration*: this is a special action which offers configuration possibilities for you. Its used by all the actual [omm] Actions to read your preferred configuration. To read more about the configuration options - jump to the “[Configuration]” section. * *[omm] new Draft*: this action is used by the *process On My Mind* Action and will create a new Draft from the passed chunk of the On My Mind Draft ### [omm] Actions The Actions in this section are the actual Actions you can use in your daily work to get content into or out of the On My Mind Draft. * *open On My Mind*: this action will open your “On My Mind” draft (or create it if it doesn’t exist) * *add Draft to On My Mind*: this action will add the content of the current draft to your `On My Mind` Draft * *add to On My Mind*: this action will display a prompt with a Text Input. The provided text input will be added to your `On My Mind` Draft after you pressed the “ADD” button. If you press “Cancel” nothing will be added * *process On My Mind*: this action will process the chunks in your `On My Mind` Draft. It will present a prompt for each (non-empty) chunk in that Draft and you can choose what to do with it (e.g. add it to your todo list) by selecting one of the configured actions. The processed chunks will be removed from the `On My Mind` Draft and just lines where you selected the “skip” option will be kept in it. * /note:/ in the background this will create a draft for each processed line and delete it when the selected action was executed * *On My Mind […]*: this action displays a prompt to ask which action of the Action Group you want to run and runs the selected one afterwards (it won’t display the „add draft to On My Mind“). It’s intended to be used e.g. in a Widget on the homescreen so you can quickly run this single action and select in the prompt what you want to do ### [omm] Shortcuts I also created a shortcut which enables you to quickly share a link from safari to your `On My Mind` Draft as a markdown url. You can download and install it here: [add Link 2 On My Mind Shortcut](https://www.icloud.com/shortcuts/ce14d977772a409c90ca2a319b74c9c2) To add a link to your `On My Mind` Draft just open the share sheet in Safari and select this shortcut - it will grab the title and url and add it to Drafts. ## [Configuration] ### [omm] configuration The first action in this group enables you to do a few basic configurations to adapt the behavior to fit your workflow personal choices For each option the action contains a “Define Template Tag” step. When you want to change a setting make sure to *NOT* change the /TEMPLATE TAG/ at the top. Only make modifications to the /TEMPLATE/ field. Otherwise it can result in weird behaviors. * /ommDraftName/: the template tag /ommDraftName/ sets the title for your `On My Mind` Draft. By default its set to “On My Mind”. * /ommContentDivider/: the template tag /ommContentDivider/ sets the divider between the chunks of text in your `On My Mind` Draft. By default its set to a new line character (that’s why the /TEMPLATE/ seems to be empty) which results in chunks divided by an empty line in between. You can also change this to e.g. “- ” which will result in a bullet list of your chunks. The content divider *must not be empty*. Also make sure to don’t use that divider in the content you add to your `On My Mind` Draft since this could impact the *process On My Mind* Action. ### Actions to process On My Mind * you need to configure the actions you want to perform on chunks of text in the *process On My Mind* Action. * to do this you have to edit the `actionArray` in the script. By default this array looks like this: ``` let actionArray = [ ['✅ Todoist inbox', 'INBOX line’s'], ['🗂 Bookmark to DEVONthink', 'bookmark to DEVONthink'], ['⌨️ Markdown to Craft', 'Craft Note'], ['⬇️ Append to Craft Note', 'Append to Craft Note'], ['⬆️ Prepend to Craft Note', 'Prepend to Craft Note'], ['📋 add to list', 'Add to list'], ['🆕 Draft','[omm] new Draft'], ['🗑 trash', 'trashLine'], ['⏭ skip', 'skipLine'] // ['', ''], ]; ``` * Every element in the array (e.g. „ `['🆕 Draft','[omm] new Draft']` ) contains two strings. the first string e.g. `🆕 Draft` defines how the action is displayed in the prompt. The second string e.g. `[omm] new Draft` contains the actual name of the action which shall be run. * To insert your own actions you can choose a name - how they should be displayed in the prompt and insert the action name in the second string. You can replace the existing ones by your own action or use the templates which are commented out `['', ''],` by removing the slashes in front of them and insert your own name and the action name between the quotation marks. * I highly recommend to keep `['🗑 trash', 'trashLine'],` and `['⏭ skip', 'skipLine']` lines inside array since they enable you to quickly delete or skip a chunk of text in your `On My Mind` Draft. /If you find this useful and want to support me you can/ [image:3D9B5AA6-C38B-416D-8CE4-D00759291F7F-4342-0000006A5B255DE4/default-blue.png] * [omm] Helper Actions * [omm] configuration * [omm] new Draft * [omm] Actions * open On My Mind * add Draft to On My Mind * add to On My Mind * process On My Mind * On My Mind […] Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use. [Drafts Directory: On My Mind](https://actions.getdrafts.com/g/1yM) # internetarchive CLI Docs [Internet Archive item APIs](https://archive.org/services/docs/api/index.html) The `ia` command-line tool is installed with `internetarchive`, or [available as a binary](https://archive.org/services/docs/api/internetarchive/installation.html#binaries). `ia` allows you to interact with various archive.org services from the command-line. The easiest way to start using `ia` is downloading a binary. The only requirements of the binary are a Unix-like environment with Python installed. To download the latest binary, and make it executable simply: ``` $ curl -LOs https://archive.org/download/ia-pex/ia $ chmod +x ia $ ./ia help A command line interface to archive.org. usage: ia [--help | --version] ia [--config-file FILE] [--log | --debug] [--insecure] []... options: -h, --help -v, --version -c, --config-file FILE Use FILE as config file. -l, --log Turn on logging [default: False]. -d, --debug Turn on verbose logging [default: False]. -i, --insecure Use HTTP for all requests instead of HTTPS [default: false] commands: help Retrieve help for subcommands. configure Configure `ia`. metadata Retrieve and modify metadata for items on archive.org. upload Upload items to archive.org. download Download files from archive.org. delete Delete files from archive.org. search Search archive.org. tasks Retrieve information about your archive.org catalog tasks. list List files in a given item. See 'ia help ' for more information on a specific command. ``` You can use `ia` to read and write metadata from archive.org. To retrieve all of an item’s metadata in JSON, simply: ``` $ ia metadata TripDown1905 ``` A particularly useful tool to use alongside `ia` is [jq](https://stedolan.github.io/jq/). `jq` is a command-line tool for parsing JSON. For example: ``` $ ia metadata TripDown1905 | jq '.metadata.date' "1906" ``` Once `ia` has been [configured](https://archive.org/services/docs/api/internetarchive/quickstart.html#configuring), you can modify [metadata](https://archive.org/services/docs/api/metadata-schema): ``` $ ia metadata --modify="foo:bar" --modify="baz:foooo" ``` You can remove a metadata field by setting the value of the given field to `REMOVE_TAG`. For example, to remove the metadata field `foo` from the item ``: ``` $ ia metadata --modify="foo:REMOVE_TAG" ``` Note that some metadata fields (e.g. `mediatype` ) cannot be modified, and must instead be set initially on upload. The default target to write to is `metadata`. If you would like to write to another target, such as `files`, you can specify so using the `--target` parameter. For example, if we had an item whose identifier was `my_identifier` and we wanted to add a metadata field to a file within the item called `foo.txt`: ``` $ ia metadata my_identifier --target="files/foo.txt" --modify="title:My File" ``` You can also create new targets if they don’t exist: ``` $ ia metadata --target="extra_metadata" --modify="foo:bar" ``` There is also an `--append` option which allows you to append a string to an existing metadata strings (Note: use `--append-list` for appending elements to a list). For example, if your item’s title was `Foo` and you wanted it to be `Foo Bar`, you could simply do: ``` $ ia metadata --append="title: Bar" ``` If you would like to add a new value to an existing field that is an array (like `subject` or `collection` ), you can use the `--append-list` option: ``` $ ia metadata --append-list="subject:another subject" ``` This command would append `another subject` to the items list of subjects, if it doesn’t already exist (i.e. no duplicate elements are added). Metadata fields or elements can be removed with the `--remove` option: ``` $ ia metadata --remove="subject:another subject" ``` This would remove `another subject` from the items subject field, regardless of whether or not the field is a single or multi-value field. Refer to [Internet Archive Metadata](https://archive.org/services/docs/api/metadata-schema/index.html) for more specific details regarding metadata and archive.org. If you have a lot of metadata changes to submit, you can use a CSV spreadsheet to submit many changes with a single command. Your CSV must contain an `identifier` column, with one item per row. Any other column added will be treated as a metadata field to modify. If no value is provided in a given row for a column, no changes will be submitted. If you would like to specify multiple values for certain fields, an index can be provided: `subject[0]`, `subject[1]`. Your CSV file should be UTF-8 encoded. See [metadata.csv](https://archive.org/download/ia-pex/metadata.csv) for an example CSV file. Once you’re ready to submit your changes, you can submit them like so: ``` $ ia metadata --spreadsheet=metadata.csv ``` See `ia help metadata` for more details. `ia` can also be used to upload items to archive.org. After [configuring ia](https://archive.org/services/docs/api/internetarchive/quickstart.html#configuring), you can upload files like so: ``` $ ia upload file1 file2 --metadata="mediatype:texts" --metadata="blah:arg" ``` Warning Please note that, unless specified otherwise, items will be uploaded with a `data` mediatype. *This cannot be changed afterwards.* Therefore, you should specify a mediatype when uploading, eg. `--metadata="mediatype:movies"`. Similarly, if you want your upload to end up somewhere else than the default collection (currently [community texts](https://archive.org/details/opensource) ), you should also specify a collection with `--metadata="collection:foo"`. See [metadata documentation](https://archive.org/services/docs/api/metadata-schema) for more information. You can upload files from `stdin`: ``` $ curl http://dumps.wikimedia.org/kywiki/20130927/kywiki-20130927-pages-logging.xml.gz \ | ia upload - --remote-name=kywiki-20130927-pages-logging.xml.gz --metadata="title:Uploaded from stdin." ``` You can use the `--retries` parameter to retry on errors (i.e. if IA-S3 is overloaded): ``` $ ia upload file1 --retries 10 ``` Note that `ia upload` makes a backup of any files that are clobbered. They are saved to a directory in the item named `history/files/`. The files are named in the format `$key.~N~`. These files can be deleted like normal files. You can also prevent the backup from happening on clobbers by adding `-H x-archive-keep-old-version:0` to your command. Refer to [archive.org Identifiers](https://archive.org/services/docs/api/metadata-schema/index.html#archive-org-identifiers) for more information on creating valid archive.org identifiers. Please also read the [Internet Archive Items](https://archive.org/services/docs/api/items.html) page before getting started. Uploading in bulk can be done similarly to [Modifying Metadata in Bulk](https://archive.org/services/docs/api/internetarchive/cli.html#modifying-metadata-in-bulk). The only difference is that you must provide a `file` column which contains a relative or absolute path to your file. Please see [uploading.csv](https://archive.org/download/ia-pex/uploading.csv) for an example. Once you are ready to start your upload, simply run: ``` $ ia upload --spreadsheet=uploading.csv ``` You can set a remote filename that differs from your local filename by specifying a remote filename in a column named `REMOTE_NAME` (Added to `ia` in `v2.0.0` ). See `ia help upload` for more details. You can set file-level metadata at time of upload via a JSON/JSONL file. The JSON or JSONL must have a dict for each file, with the local path to the file stored under the key, `name`. For example, you could upload two files named `foo.txt` and `bar.txt` with a file-level `title` with the following JSONL file (named `file_md.jsonl` ): ``` {"name": "foo.txt", "title": "my foo file"} {"name": "bar.txt", "title": "my foo file"} ``` And the following command: ``` $ ia upload --file-metadata file_md.jsonl ``` Download an entire item: ``` $ ia download TripDown1905 ``` Download specific files from an item: ``` $ ia download TripDown1905 TripDown1905_512kb.mp4 TripDown1905.ogv ``` Download specific files matching a glob pattern: ``` $ ia download TripDown1905 --glob="*.mp4" ``` Note that you may have to escape the `*` differently depending on your shell (e.g. `\*.mp4`, `'*.mp4'`, etc.). Download only files of a specific format: ``` $ ia download TripDown1905 --format='512Kb MPEG4' ``` Note that `--format` cannot be used with `--glob`. You can get a list of the formats of a given item like so: ``` $ ia metadata --formats TripDown1905 ``` Download an entire collection: ``` $ ia download --search 'collection:glasgowschoolofart' ``` Download from an itemlist: ``` $ ia download --itemlist itemlist.txt ``` See `ia help download` for more details. Some files on archive.org are generated on-the-fly as requested. This currently includes non-original files of the formats EPUB, MOBI, DAISY, and archive.org’s own MARCXML. These files can be downloaded using the `--on-the-fly` parameter: ``` $ ia download goodytwoshoes00newyiala --on-the-fly ``` You can use `ia` to delete files from archive.org items: ``` $ ia delete ``` Delete all files associated with the specified file, including upstream derivatives and the original: ``` $ ia delete --cascade ``` Delete all files in an item: ``` $ ia delete --all ``` Note that `ia delete` makes a backup of any files that are deleted. They are saved to a directory in the item named `history/files/`. The files are named in the format `$key.~N~`. These files can be deleted like normal files. You can also prevent the backup from happening on deletes by adding `-H x-archive-keep-old-version:0` to your command. See `ia help delete` for more details. `ia` can also be used for retrieving archive.org search results in JSON: ``` $ ia search 'subject:"market street" collection:prelinger' ``` By default, `ia search` attempts to return all items meeting the search criteria, and the results are sorted by item identifier. If you want to just select the top `n` items, you can specify a `page` and `rows` parameter. For example, to get the top 20 items matching the search ‘dogs’: ``` $ ia search --parameters="page=1&rows=20" "dogs" ``` You can use `ia search` to create an itemlist: ``` $ ia search 'collection:glasgowschoolofart' --itemlist > itemlist.txt ``` You can pipe your itemlist into a GNU Parallel command to download items concurrently: ``` $ ia search 'collection:glasgowschoolofart' --itemlist | parallel 'ia download {}' ``` See `ia help search` for more details. You can also use `ia` to retrieve information about your catalog tasks, after [configuring ia](https://github.com/jjjake/internetarchive#configuring). To retrieve the task history for an item, simply run: View all of your queued and running archive.org tasks: See `ia help tasks` for more details. You can list files in an item like so: ``` $ ia list goodytwoshoes00newyiala ``` See `ia help list` for more details. You can copy files in archive.org items like so: ``` $ ia copy / / ``` If you’re copying your file to a new item, you can provide metadata as well: ``` $ ia copy / / --metadata 'title:My New Item' --metadata collection:test_collection ``` Note that `ia copy` makes a backup of any files that are clobbered. They are saved to a directory in the item named `history/files/`. The files are named in the format `$key.~N~`. These files can be deleted like normal files. You can also prevent the backup from happening on clobbers by adding `-H x-archive-keep-old-version:0` to your command. `ia move` works just like `ia copy` except the source file is deleted after the file has been successfully copied. Note that `ia move` makes a backup of any files that are clobbered or deleted. They are saved to a directory in the item named `history/files/`. The files are named in the format `$key.~N~`. These files can be deleted like normal files. You can also prevent the backup from happening on clobbers or deletes by adding `-H x-archive-keep-old-version:0` to your command. Built with [Sphinx](https://www.sphinx-doc.org/) using a [theme](https://github.com/readthedocs/sphinx_rtd_theme) provided by [Read the Docs](https://readthedocs.org). [Command-Line Interface¶](https://archive.org/services/docs/api/internetarchive/cli.html) # Feebles in Night, Second Edition [image:E38FC22C-1CE3-4E37-91D4-EEC406CE7A1F-51717-0000CEDF5046BCB8/Feebles2Cover.png] A word arrangement by [David Blue](https://davidblue.wtf/db.vcf). Copyright 2022, Extratone Media No rights reserved. Cover designed by Catherine Trehy and Kaleb Martin. **Second Edition** ISBN: `0-692-66135-2` ## Author’s Note - Feebles When one finds oneself with a warranting quantity of recognizable talent in word arrangement, but lacking in the discipline required for a respectable profession, I think a collection of this kind is a sort of inevitability. *Feebles in Night* is the aftermath of some five years of wholly irregular and nocturnal thought spillage and nostalgic memory fragments, but I have made my most valiant attempt to compile it in the definitively optimal manner for reader enjoyment, reflection, or inspiration. You’ll note my tendency to play with wordage - sometimes violently - but such is the privilege allowed me by this medium. From my perspective, it is perhaps the most essential quality to my works’ originality. It is my sincere hope that some soul-derived insight and value will be manifest for yours. David Blue Columbia, Missouri, USA December, 2015 --- ## Lifetime Membership Belt-driven attic fan, curious Hearing punctual freight trains in the heavens already willing it to rub off Hard at work, building waiting excepting the chamber pot, inhaling cracking leather on the relic Schwinn over Main’s embossed crossing past absentee-doted bushes over the driveway’s entry jagged canyon two creaking screendoors ...(leaves, leaked) pat the mouldsteps to the twineswing by the naked bulb’s pullchain with the best view of the forgotten sandbox where one could excavate clump’d plastic Shermans and creased Army men under the baby-powdered bathroom’s drain and remember *The Bomb* and smell death *It’s not good for it* Always, Susan Suzanne, at least? I tried to cycle a gritty cap gun but cowboys bore me It’s just candid cadence so his pacemaker’s ok, right? *How tiring* Tear a whole day from Kiwanis’ year Examining up and down, an auger under load ...than Ghandi, superior lucidity Asked politely to soften on the organ (pot-luckers absentmindedly exchange recipes and are es vee peas) Granola flakes on colored paper but Slim was always with me from Peoria, thru-front flaring nibbling on a ham sandwich with a splintry broom entombed by the fireplace under die-casts and lanyards and taboos Bite me, Cold I’ll stop at the y-lot *No isn’t always no* Blacksheep from the secret tower rooms since forgotten stage wiring is infinitely more enchanting than distant cousins’ water balloons Mesh-umbrella’d cheap labor born around her open switches and chandelier moods I leave my body for the knobbly ceiling note the Lutheran taffy wrapper in my pocket --- ## Sieve The swath of energy, constant swivels over chaff and stalk, alike I come down from the great pinging creature through the rainbow’d pockets of heat it’s already released I’m always thinking about the loyalty of gauges like simple friends or the starchiest click’d acquaintance, they point as best they can to the truest truth of the moment Communication is never tangible but it can be aspired to through it you can tame voids or in haste, consume the fawn bedded neathe the stalks or ignore the odor until the flames lick out the hopper *Tell me* how the brigade goes earnestly chaining so we’ll visit at the bar later Even hacking up black dust, I am grateful for my hours of seeing it through the panoramic window of the county bathysphere === I spin with my feet my right hand outstretched if I go fast enough I feel the air on the pads of my fingers A cool counter top summoned in any time or orientation I desire If I could eat it, it would taste like sherbet It’s too bad there wasn’t ever any mystery in the marble smoothness of my own little atmospheric disturbance even when I was too little for my hand to make an audible whistle --- ## To My Little Tractor I heard that you'd found a new family recently and I wondered how strange it would be for anyone to do with you the things we did once without knowing my name I think about the condition of your fame as you approach your centennial and what people will say and what they haven't I remember the day we met and an old white display covered in ashes I was military marching through a muddy field full of tired old implements Some had rusted beyond identification Others were clinging to the better side of the line between usefulness and nostalgia It was so wet, the ground didn't seem itself It absorbed my cold rubber boots They made sucking noises in tune with their smacking against my calves You sat with your ridiculous face Your fading orange paint That big black cylinder with the flush pulley I couldn't stop staring at it Some bolts were missing Your wide bus steering wheel that left black grit and an old smell on my hands I laughed at the placement of your pedals and the deckplating noise they made when depressed I looked right and left and saw your cracked tires peeking above those old gray fenders like shoulders in perfect symmetry The inside of your wheels attached to orange drum brakes with a mechanical rod I pushed and pulled your shifter through old gears (without synchromesh) and watched the stale boot as it bent and split, its lips forming some personified embarrassing function Even your cooling fan was orange, with the belt that drove it Your throttle looked like an orange thermometer When I pulled it down through the notches, your fan sounded exactly like the great night fans on the grain bins (They could blow me over and hurt my ears) I laughed, bouncing on your seat, enjoying the beauty in every angle You were still a snotty little bully among larger equipment seventy years later Front tires so thin, they appeared useless I loved watching them so much, I once lied to dad and said I didn't notice their sodding of the pasture grass as they tilted and turned You must've seemed ahead of your time ten years after you were built A cute accessory to the returning soldier's ten acre paradise The crowd moved about the field, following a red-striped auctioneer like old donkeys A mass of faded hats with bankrupt seed company logos, denim shirts, cigarettes, and Dickies coats I'm guessing they smoked and laughed at crude jokes But honestly, I never bothered to notice Though it was a little embarrassing when the mob surrounded us and the auctioneer used the word cute a few times Oddly enough, we did make a pair, you and I A seven-year-old kid on a tractor ten times that We weren't worth much to anyone, together or apart You'd seen as much as my grandpa and you expected to sink down in that mud with dignity, holding eye contact with the old house as it shed shingles, both of you giggling at fate Appear in some old farmer's field of vision every once in a while In his thoughts, even less The picture we made humored the murder members who'd had enough coffee, and I grew angry The red-striped auctioneer yelled for someone to start you I used a whir of little hands to convince your starter wewopwewopwopwewopwop I pulled out your choke You spat black black smoke that smelled of old lubricant remedies with exclamations on the can The whine of your orange fan As your blades turned to a solid translucent pancake I carefully modulated your controls before looking up with pride But all we did was stop the smiling I hadn't redeemed you much I felt like crying Somebody told me to stop your engine and the bidding began Nobody was thrilled, the process reeked of obligation I tried to figure out where your ears were so I could cover them But then dad raised his hand and it didn't seem like much of a surprise We'd already been matched, you and I All the others sensed it too, and went about their business of concealing wisdom And so, we came to be together Dad's attempts at getting you on a trailer with a slipping clutch bore the first time I laughed at him I laughed again when we drained your oil It smelled as if it had soured and looked like soupy cottage cheese I laughed at your darting travel method Dad called you *squirrelly* I'm sure whoever made you was very confused about what you should be Not that it ever bothered me We mowed a lot of grass I did a lot of sneezing The heads hit your grill and I wondered if you were allergic like me Maybe you wanted some antihistamines? We didn't always mow straight or fast, but we'd get the job done Our pace and reliability equally frustrating for dad Remember that evening we mowed the acre patch West of your shed? On top of the hill, we could see the red sun as it began to hide in the neighbors' beans and you crawled through yellow fescue heads, humming in reliable intent I know you were observing the moment like I was Maybe you thought, too of how we'd always be together Twenty or thirty years from then we would live the same scene Except it would be somewhere a little colder where I wouldn't sneeze and the mower's discharge would smell of tea Dad wouldn't be there to be frustrated with us I'd have my own money for gas to pour under your flying cap I could drive you to school if I wanted to and show you to all my friends We'd participate in those stupid parades, milling around town, throwing candy at children, looking our best I'm sorry to say now I have no place to keep you where I'm living I'd get ticketed if I took you to school (I don't have any friends there anyway) I have no grass to mow and I'm not much fun anymore So, I guess I shouldn't regret not coming to get you, or my lack of time spent with you there I know what we had is something I'll be trying to get back for a very long time Be glad you've aged so slowly I leave you dotingly with fondness and well wishes I hope you dirty another conspirator's hands and that they will become a friend who will do with you all the things little boys and little tractors should do === Pain is a disease Pick one tree, plant straight beans breathe ...steady ......squeeze --- ## Leaking creaking plastic camcorder tape the noise it makes red light catch up it drops up the sidewalk the sky is blue under haphazardly-scattered white veins wrapping around the entirety of everything a little less organized than the ones wiggling toward my hands (they weren’t visible, then) everything had some bright label on it the plastic seams itch my bug bites when I slip wobble wheel wing nut chlorined urine on the seat === Everdrear peacing edge between missed streetlamp frontier treeline-plotted arithmetic --- ## On Fear of Death It’s the smallness of wanton regiment that reminds one of the ever-approaching nothingness and the proximal moments stacked ahead to bar their dusk The sound of the voice that should fill a last hour and the logistical implications of *what if* have come to weigh upon me as the leaves turn as the crawling things go, and leave me with peace enough to hear such silence and reflect upon the crowding teeth in my skull and permanence === Eager, on the Milo with his gun hear ‘em waiting for fun for the dust obscuring the dark passing the Lord’s time on a VCR I saved my voice for Revelation on the terrace --- ## Visit We gave another bushel of apples to the sunroom yesterday, waiting for company to show Windows are walls, late-rectifier in the country The old house with comparative vulnerability but never stagnancy moving more, always enough for the self to be grape ‘n’ blueberry-speckled ...cushion .........traveling ......have to drone, clench .........ration attention supper slave, .........nodding attempting to contain escape-seeking Conserve tot lorde of constriction .........time-hung, the vicious ......wiggled ears ‘en virulent miracles belt-bred --- ## Botany Live and step lightly, young lovers Live and step lightly, old friend The bounty deceives and the sea is too deep Seeds newly, unevenly, recently deposited in the soil black Walk with your old boots v’d, joined at the back cover them === Searching for value in tiny towns Touching everything, Cheaply .........but I breathe in every whisper of audacity so that I can fill myself up and become something --- ## Summer House The world is my ashtray dare I seek the sight of the spider-laden sages or the dour children, falling or the new money-filled lake and its endless coves of desperate happening Perpetually breathless, accelerating in a fish tank === You’re the smell of the dusk heat escaping the city and the sound of fresh wind in my ears I am learning --- ## Virginia’s Place Browning Locust leaves begin to blanket the little lagoon Tendral-stumps ratchet the bank in place The ticks have gone away and the corn’s tasseling steadily cozies the world Overgrown chicken coop rubble surrounds the shed, sterilized by desolate decades The spaceship’s on the dirt behind the six-row The old Oliver is my favorite friend Reunion is always occasion and always as I’d left it === Headed-out sneezing honing noble posture --- ## Black Venice Observing imagined gondolas on canals through my bluegreen memory along with my own movements in reflection, unnecessary The rats are real, at least The romance of far-off water cities is lost on me, and the intricacy of companionship is mentioned far too little when the robin’s egg walls berode cigarette smoke and coffee Rifles on the stoop Nature in the shag between sleeping and waking, the viscerally pleasant scent of washing denim for working Give the rain purpose and rut the soil for a season Broken week of fever’d bedsickness with a drink of the brittled well’s tenacity Riddling with clay turns bounty to impressionably fickle reality Earth curves away too soon the tilled horizon and the ill-grated gravel upon which so many have tried to outrun death’s Sunday morning apparition A little of everything e v e r y t h i n g l i t t l e Happiness is a full tank of gasoline a new pack of cigarettes a roof for your history where it’s admirable to compartmentalize and discipline one’s identity (maybe it is) --- ## On Infatuation Mothers on stilts above an energetic boil compressing the stream to break the universe as wholly as I can manage to fathom the distance to mind the gap that is, by clarity, widening I should’ve tried harder to capture the essence of you but the few notes I knew couldn’t contain your ambition Only you do I allow myself to wonder under everything, knee-to-chin My song, though, is ever-growing as you were absently reminding where to reach ever further, still --- ## Escape Velocity Metronomal knoll-combed clouds approach, suspending persistent exhaust wretch of absent infecting staying assured dystopic .........post-ing tick-teetering defaulted ritual ...martyring ......Croaking up flights .........muttering downwind their stumbles through life *She believed what was easier to believe* === Shy’s notice I gave as much as could be allowed in winter’s warm our qualm notwithstanding nigh adrenaline’s nudge Emptying the vacuum --- ## Soul Water Movement in bitter vibrations about weighted clique in the sooted pit Selling whatever and approaching some place to be saved, surreal or left or dead but included There’s a love of the upset condition of leaving the bitterness in the bathroom Fool me, but it’s expensive seeking and gluttoning the spirit medicine The muse of a thousand obstructions frighten amassed pulled anatomy of cowards to the drudged rhythm Open something unwanted for wilting wanters tonight Take it and you’ll thank everything give it all away *What is it, now?* === Instinctual attachment to your beauty means I didn’t want to leave the moment I saw you, whirling But you are just a face But maybe you saw me --- ## Savage Grace Accompany me with your night to our hideaway from *pleasant surprise* Glide me through what trees you give move’d about striding cruel stream I am yours to reflect and bear with noble assumptions to reciprocally know across our existential divide to divulge few precious cross-corridor smiles to know with only a rhythmic zest a favorite name Such designed convergence! Such intentful patience! My escape in heavy air accepting as last heir to your sanctuary of apathy or so it seems in our newborn night lit by nearly-familiar intermittent tower lights to reveal a way devoid of purposeless reciprocation remind me occasionally, but not this night To hum the music and dance in your beautiful retreat with the voice of a coincidence of a comfort of a pinnacle seen in sunlight one more time over the hedge by old plotting eyes that wonder’d in dignified legacy It was a shame The voice of my dancer sustains necessary function to indulge our wary dark dabbling Too occupied to sound off for warmth in kind that is appropriately distanced in disgust without fail, instinctually instantaneously Briskly striding through the blackness without complaint or its language, paced by ancient intuition Ye sure-footed sage Ye lethal lunar predator Killing as serenity obscured by silence’s sleepy wool Stitched and bound by effort’s promise Visible only as correct form to voluntarily carry noble titles through nostalgic undulations === O ’ l i t t l e c i t y o f q u i r k a n d c a l m W h o m o n l y I k n o w t r u l y , a l o n e === Love yourself and go away Tenses meander and play through a churning human sea The taxation of diligence for a reserve that could never be objectively respectable (nor profane) It smooths habitual language to their most dependably honed state --- ## Underbluff I drove my truck to the valley with a forty I found a little peace I found a little respite, as had many before me And it’s in such an affection that I lay And I thanked, habitually In particular, nobody And I remember the family in a similar state speaking old words of past lovers that had *let themselves go* Perhaps, only in that moment, I wished them well === Stirred sparrow storm Where are your keenest words? Where is your golden drum? Could there be a man less burdened that I, with my unscrupulous song? --- ## Denim Deacon Barreled playing reminiscent of original daydreams but retarded by bigger desires and obligations If you could choose to return to the place where everything could be wanted, would you? From the position of some limited fulfillment? Risk. I never arrived at the horizon but *saw* of it plenty, in passing In me, the *need* to work it to handle it to pull it to yank it around the yard Even test, or give it a go, at least Lich of the heading the shedding behind troughs and supremely forgotten instruments Child of the least-though-of places still a bit insistent upon them upon his own illumination --- ## Regular By ill luminate the suspect and spectacle of a crowd under that duck blanket the one on the couch the essence of affection is, in fact, with the oldest of us Every distraction falls away eventually for all of us Caught always after in cracks, slipping like the futile cup you attempt to hold well water with Respect and fear play together as they have for ages as peoples of each Holy book, respectively Where are we really living? and is it in years? Can it be held or kept with enough cash? Do you nullify sacrifice with time? Leave it on the porch for the sun to fade --- ## On Collateral We are magnetic fission Elastic & wishing for the tide to come back Geologically, I am as unstable as the summer sea Wisdom & I at odds with mediocrity I cannot ask you to stabilize me It takes bravery to kiss a ghost, but we have little else, pressing === Vivacious blue kicking up dust making loud crystals Aimless abuse, spoiling in gloom Lively living, rarely reaching My wildest places, all in timing --- ## Southing The opulent dance on warming current, rising The anomalous pair through the little city, haunting Livid lightning in the gray gloom erratic stings hovered decorum on my sleepy peace Default equations writ the heart-turned-machine prosthetic in jest; hourglass emptying Draw of static sans companionship of loyal light Competent senses, an ultimate sentence when the clouds have so far descended Relentless .........endless Mist of all time, misremembered === Yonder tumultuous blanket of suspended gasses will give us a moment of privacy from the eyes of the universe so that we may languish on the deals we’ve perpetuated with ourselves --- ## Home Pedestrian solidity is ......past when the grain of the street is swept in my hour My hour, when the city’s too cold for the lonely and sure and the contrast of the contact you won’t have owns one for a moment of serenity amongst splinted trees and resting doors === Flailing through my second Earth over and over, into you --- ## On Serenity My silence is cosmic and my peace is the morning I am the mountain and its road I am the unseen envy of the unseen man My breath is rare and my hands are poets You could imagine the Holy night and its shedding When all the energy has gone and the streets are swept, I am life and death and home === I was told I’m not at peace of all things me, not co-existing with the sleeping streets every night while you were resting and seeking them in dreams which you chase away Not at peace with the trenches I cross every day that I helped dig or the burrowing into the embraceless black like a wandering wraith The bowl of pause I volitiously jumped in --- ## The Other Woman Delicate whisper notes Fragile crystalline jewels in freefalling tumble down to my lips They hang there in a minor wail The surface of the pool l rippled into hills Each crest in time with the soft balsa hammers striking my cheeks Light linen kisses === Night is sanctuary and observatory of Ends Day is just the means to them Tick in arc away the rations and moderate considerations I like big claims because I make them I don’t like winding down I prefer to run-leap and tumble --- ## River Queen An allergy to conviction swells in the bleak face of beauty, cupped in my hands over the fading red-checkered fruitile carpet flooring the hotel lobby I wonder if I’ll be allowed to slip for a moment and lapse some cognitive energy or if the cultists spy me for a cheap bust of pounding feet Even so far away, I recompile while the strange metropolis sleeps, curious for the form of conformity manifesting before me like dwelling in the dreary aftermath of arranged comically diverse endeavors === The expanse could be barren or filled with trapped cascading ripples of you Molding the sky to a diaphragm, upsetting my poise I’d like to play my part, thanks --- ## Mint Monk For me, only? I remember our pilgrimage fondly Our starry Spring sabbatical With the swayful white lady and her leather hugs Evermore we knew for every silent home sauntered by Only best friends can impart such generosity, wordlessly A piece of fatherhood, mutually First-hand American grace, originally elegant Artifactual sage of pure indulgences, lost Neverboring partner in a time-traveling bubble of (sometimes contentious) rhetoric but inevitably adored by onlooking admirers Easy-over the highways under ancient sky Our chance to ask divine questions and count upon sureful answers --- ## 346 Cryptobotanical detergent odors stripe the city Luna has just hidden away, but I still see Polaris clearly I’m engaged in my shadowgrave, cresting mist in duality, paved The weary and their cars reviving ......idling I, as them with dew’d shoulders silk-enclosured As horizons bezel gradients, startlers find no more entertainment in the beat and return with the owls to roost until the city goes back to sleep === There was a different smell that Spring We departed the country, but never left Mutual youthful surreality, kisses in the back seat --- ## The Landing Nodding off with the river nomads, waking them before twilight with down-come discoursing on Muddy’s simmering thrash Inexplicable stirring opposite outline’d bank as she savagely deepens Intermittently-corporeal, Bitter-ramp postulate, Ever-tumbling vertigate, Degenerate with a fountain pen and I catch a whiff of past Twain-toddling academic Mark-fetishing (Polishing half-desks with shaving cream) and I give a little tug on the knot that’s tethered me to the quaint little village; The outpost of lamplight on a bend of the widening Missouri === Graceful pressure elliptically to my lips My hand smalled behind you to fit, us as if --- ## Over Ozark Faith .........the virus that topples ............hourly wages They’ve bandaged the road with black toothpaste We’ve come back dreary doom impending My skull bounces against the window .........overtime Why couldn’t his skin to the glass be given? They’ve reduced wing-walking, strut-hammocking, and free-loving to bags of salted peanuts and vomit You could scoop the gray from the sky with a fish net I ’ l l p r a y f o r y o u My bare feet lose heat from the passing wet wind before gaining it back through the light of Sol ascending above yonder steeple My book’s pages require a defense from ranks of lonely morning spiders though they decrease from all-nighter sleepiness My thumb rests unintentionally on the transmit button Our jokes are heard but not listened to Methods methods methods glued together; Communal confrontation I break too many things that aren’t mine I’m too often forgiven The clock on the ashen kitchen wall whistles on the third bird waves of sound carrying the soap smell It floats, Purpose-driven ⓖⓞⓞⓓ ⓜⓞⓡⓝⓘⓝⓖ ∆ # About - Extratone [image:2AE3A2F6-C5ED-4B64-AA2A-24B4037D1B6B-19714-000001CD13C50F72/cropped-Extratonelogo960.png] /Extratone/ is sustained in the supposition that /the new/ exists, and by the conclusion that it is dangerously ill-exposed and ill-pondered by easily-accessible institutions. We acknowledge that we cannot as yet articulate any pertinent statistics or boundaries to define it; we also acknowledge that its definition is urgently required. The former /Drywall Media/ and all of its associated content shall be recompiled under this name. Etymologically, it originated by way of speedcore culture and its bountiful infatuation with tedious compositional jokes. I have done my best to conjure a history of the /Drywall/ name below. Drywall Media was established as a legal entity in late-2015 for the publication of /[Feebles in Night](https://web.archive.org/web/20160630125426/http://bit.ly/Feebles)/ – [David Blue](https://web.archive.org/web/20160630125426/http://www.drywall.ws/extratone/author/admin/) ‘s nostalgic collection of poems, and will continue to serve as an all-encompassing umbrella for associated content for the foreseeable future. The origin of “Drywall” as a cultural movement (and now, thought experiment) can be reliably traced to the release of the first [videos](https://web.archive.org/web/20160630125426/https://youtu.be/2NsArMy_0OU) of /[Hamura](https://web.archive.org/web/20160630125426/http://www.drywall.ws/extratone/hamura)/ ‘s recording process. For as long as I can remember, I have been stricken with a primal need to “create” content of infinitely many sorts. In Kindergarten, I professed my love for my first crush in a “mixtape” recorded on a My First Sony. I can’t imagine it possessed much musical value in the objective sense, but it was probably quite Dry, as we say in the movement. /Elizabeth, hit me up if you’ve somehow retained the cassette. I would pay a hefty sum for it./ In Elementary school, I spent a fair amount of time surrounding myself in a mass of cassettes and microcassettes sourced from garage sales and my mother’s collegiate surplus. As Brent can attest, I often left a trail of them behind me whenever I traveled. I also wrote a 60-something page novella inspired by /The Boxcar Children/ in third or fourth grade, and it was quite terrible, as you’d expect. My first videos on YouTube were awful firearm reviews as per my irreverence for Nutnfancy. (He’s still the best tactical obsessive on the web.) And my brief obsession with the exploding personal technology industry spawned a terribly-named “tech review” channel that I shall spend the rest of my days trying to forget. When I began my foray as a student pilot, I maintained a “vlog” for every lesson, including tremendously-tedious in-cockpit audio recordings. Though I’ve done my best to remove all traces of the product, the side-effectual experience I gained with audio and video came along with me to high-school, where its magnitude was – to my surprise – quite unusual. Luckily, by my Junior year, I had found a group of friends that nurtured my lacking self-awareness, gradually propelling me into a state of all-consuming embarrassment with my portfolio as it stood. This began a sort of reactionary period to the ideals I’d held in my youth, which I’ve just recently determined with confidence as the origin of Drywall as an ideological system. I had put significant effort into everything I’d done. My tendency to obsess over revision was exploited by the capabilities of modern video editing software, particularly. Though it was always my own, there was always a standard of quality to crawl toward. All that effort, though, had gone toward work which was simply not lucrative, despite my own particular polish. Exposure – as it does – had drastically evolved my perspective, and left me with a worthless body of work spread over a plethora of identities due to my dabbling nature. In conjunction with the daily conversations with my friends, I decided the solution was to consolidate every new work under one banner, which would operate entirely absent of any consideration for audience whatsoever. I knew that removing as completely as possible any filters from my “creative process” would exponentially increase my output volume, at least. It was in those school lunch discussions that Brent and I discovered our mutual adoration of clippng, a classification of distortion unique to digital audio. All the while, I was learning the essential mechanics of electronic hardware under Jim Kyd’s /Electronics I & II/ courses. Though it wasn’t a part of the curriculum, Mr. Kyd indulged those who would listen in little wisdoms he’d accrued throughout his various careers. I learned some finer points and foundational formulas in audio engineering, which I would put to use in our early productions. The first was /The Tinnitus Ep/, for my friends’ punk/noise band, /Apathetic Cake Gluttons/. It was a live recording on 5 simultaneous channels from 4 separate improvised sources. The final product could be considered impressive, I suppose, considering it is most certainly my first attempt at multitrack mixing. The band’s Twitter account has survived the years, astoundingly, and still proclaims “we make music that you download.” I think the audio track for the /What the Fuck?/ video got something like 80,000 listens on Brent’s SoundCloud, but by most measures, the ancient web presence lies. After that year, enough began happening in my day-to-day life that it’s difficult to be definite about much. From what hard data remains intact, we can infer that the year (almost to the day) that passed between the death of the /Gluttons/ and the first official Drywall release was spent honing my ability to consistently molest Garageband 2008, despite its restrictions as a wholly-pedestrian [DAW](https://web.archive.org/web/20160630125426/https://en.wikipedia.org/wiki/Digital_audio_workstation). That Christmas (2010,) I asked for a Samson C01-U condenser mic (a gift which has astoundingly survived 6 years of semi-regular use,) which allowed me to bypass the need for a digital audio interface by simply outputting directly to USB 2.0. Considering the breadth of environmental horrors we’ve subjected it to since (including /Miata Music 2/, the mixtape recorded, edited, “mastered,” produced, and uploaded without leaving the open cloth seats of my NB MX-5,) I can proclaim it to be – without hesitation – the highest-value piece of equipment I’ve ever had the fortune to own. Though I was afraid to abuse it, at first, as all the microphones I’d used were dynamic, cheap, and tolerant. But by late summer, I was willing to position it just above a treadmill to capture an integral sound to Hamura, the first and debatably-Dryest of my entire discography. I recorded the first track, /[The Deep Wound My Parents Left Me Because You Are Gone And I Have Too Many Won’t Help Come To Me Tonight](https://web.archive.org/web/20160630125426/http://ihadtopee.bandcamp.com/track/the-deep-wound-my-parents-left-me-because-you-are-gone-and-i-have-too-many-wont-help-come-to-me-tonight)/, having yet to decide whether or not to call it “Drywall” or “Hamura,” with zero intention of monitoring each successive track as they were laid down. It is a ridiculous mess, by design. While my friends played period-specific v [About - Extratone](https://web.archive.org/web/20160630125426/http://www.extratone.com/iowa/) [file:9BDD2A16-361A-4806-9D80-B26625D297DC-14086-0000015E71A2B9FF/README.rst] https://raw.githubusercontent.com/mattduck/gh2md/master/README.rst # You should know: rand() may call malloc() [image:1BBDAF73-B6AF-4A8B-A5E7-FEE9EE827B6F-11131-00000127F44840CB/picture.jpg] We recently discovered a weird bug deep inside the [latest version](https://www.thingsquare.com/blog/articles/release-4.9/) of the [Thingsquare IoT platform](https://www.thingsquare.com/iot-platform/) that took us by surprise. The root cause turned out to be that the `rand()` function called the `malloc()` function. We were surprised by this. And now we want to spread the word, so that everyone knows: `rand()` may – under certain conditions – call `malloc()`. What does this mean to the average person? To most people, not much. In fact, not even most software developers will be affected by this. But it affected us. What we are talking about here is very low-level. Very bare-metal. Way more bare-metal than most software developers will ever be. But let’s dive into it. > The Thingsquare IoT platform runs on devices that have ridiculously small amounts of memory. ## Memory allocation is a challenge The Thingsquare IoT platform runs on devices that have small amounts of memory. Very small. Sometimes as small as 10 kilobytes. And sometimes we can splurge with as much as 32 kilobytes. For most modern purposes, this is ridiculously small. We therefore have to be very clever in how we [manage this memory](https://en.wikipedia.org/wiki/Memory_management). In the Thingsquare system, we have three different types of memory allocation mechanisms: * *memb*: the memory block allocator. Fixed-size blocks from static pools of blocks. * *mmem*: the managed memory allocator. Dynamic-sized blocks, that may be rearranged to avoid fragmentation, from a static chunk of memory. * *bmem*: the block memory heap allocator. Dynamic-sized blocks from a static chunk of memory. And, because the system is written in the C programming language, we also use [stack memory](https://en.wikipedia.org/wiki/Call_stack). All of the above are based on one principle: Always pre-allocate everything at compile-time. This means that we know, beforehand, how much memory is being used. If we use too much, we won’t even be able to compile the code. Much less run it. What we end up with is a memory structure that looks like this: The stack starts at the top of the memory and grows downwards. But we have to be careful – more about this below. The stack is followed by a bunch of memb, mmem, and bmem blocks. As well as other data that the code uses. Because the memory is so tight, there is not much air in that memory layout. In most cases, it is almost 100% used. ## malloc() might kill you Note that there is one memory allocation mechanism that is *not* in the list above: the C language standard `malloc()` / `free()` mechanism. Why? Because with `malloc()` / `free()`, we don’t know beforehand how much memory that will be used. We may end up with using more than we would expect, at runtime. And then, it might be too late. The device might already be dead. Our devices are deployed in difficult-to-reach places. They need to be always available. We can’t afford them to run out of memory when we least expect it. In fact, we go to great lengths to avoid any surprises. We have a [thorough test setup](https://www.thingsquare.com/blog/articles/wireless-mesh-regression-testing/), which we run on every code change. This involves running the system in a set of network simulators, so that we can know for sure that the system works as expected. And during manufacturing, we do [production testing](https://www.thingsquare.com/blog/articles/iot-production-testing/) to make sure that the hardware works. So we can’t use `malloc()/free()`. And we don’t. ## The stack doesn’t play nice In the memory layout, the stack is a large chunk. How do we know how much to allocate to the stack? The stack memory is somewhat tricky to allocate, because its maximum size is determined at runtime. There is no silver bullet: we can’t predict it. So we need to measure it. The way we do it is straightforward: at boot, we fill the stack memory with a known byte pattern. We then run the system. The system will use the stack. This will overwrite that byte pattern. After we have run the system for some time, we check how much of that byte pattern is left. That gives us an idea of how much stack the system uses. We then allocate a little more stack memory than what we think we need. To be on the safe side. But we have one trick left: we can keep measuring that byte pattern, even when devices are deployed. ## That bug So all that leads up to that surprising bug that we stumbled across. We found that some devices, in the field, were using more stack than we had assumed. And that was strange. Because we had made really sure that the stack size was good. This made the device behave strangely. Unpredictably. So what was going on? We took a deeper look at one of the devices, in the lab. We added more places in the code where we measured the stack usage. To try to hone in on the part of the code that caused the overflow. And we found it: ``` rand(); ``` Huh? Yes, the standard C library function that produces pseudo-random numbers. This caused the stack to overflow. We use `rand()` in a few places in the code, where we need a quick pseudo-random number that doesn’t have to be cryptographically safe. It is a simple function that should not use much stack. So why was it overflowing the stack? ## The culprit: rand() The Thingsquare system use the [newlib](https://en.wikipedia.org/wiki/Newlib) standard C library. This is open source, so we can look at the code. This is [the code](https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/stdlib/rand_r.c;h=0670285a0490230336b71e84d1fc5deedbf1037f;hb=HEAD) of the `rand()` function, which [looks familiar](https://en.wikipedia.org/wiki/Lehmer_random_number_generator): ``` int rand_r (unsigned int *seed) { long k; long s = (long)(*seed); if (s == 0) s = 0x12345987; k = s / 127773; s = 16807 * (s - k * 127773) - 2836 * k; if (s < 0) s += 2147483647; (*seed) = (unsigned int)s; return (int)(s & RAND_MAX); } ``` Why would this code use so much stack that it blew through its bounds? There is no large arrays or structs allocated on the stack. There is no recursion. But wait! That’s `rand_r()`, not `rand()`. We’re looking at the wrong code. Because we were looking for something that looked familiar. So the problem is not in this code. Let’s dig deeper. The newlib library has a [reentrancy layer](https://en.wikipedia.org/wiki/Reentrancy_%28computing%29) that makes it possible to call functions multiple times, simultaneously. And this reentrancy code is implemented with C macros. It is difficult to understand from a first glance. This is how [the actual](https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/stdlib/rand.c;h=209cb32ffd114239a6a3256248898f88d26fbd9f;hb=HEAD) `rand()` function looks: ``` int rand (void) { struct _reent *reent = _REENT; /* This multiplier was obtained from Knuth, D.E., "The Art of Computer Programming," Vol 2, Seminumerical Algorithms, Third Edition, Addison-Wesley, 1998, p. 106 (line 26) & p. 108 */ _REENT_CHECK_RAND48(reent); _REENT_RAND_NEXT(reent) = _REENT_RAND_NEXT(reent) * __extension__ 6364136223846793005LL + 1; return (int)((_REENT_RAND_NEXT(reent) >> 32) & RAND_MAX); } ``` Maybe these calls are the problem? And, yes, as it turns out, they are. Deep inside that `_REENT_CHECK_RAND48()` macro, [we find](https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/include/sys/reent.h;h=f8ecf85866a7af11156ce315b03e1d2990e4d670;hb=HEAD): ``` /* Generic _REENT check macro. */ #define _REENT_CHECK(var, what, type, size, init) do { \ struct _reent *_r = (var); \ if (_r->what == NULL) { \ _r->what = (type)malloc(size); \ __reent_assert(_r->what); \ init; \ } \ } while (0) ``` Oooops – a `malloc()`! That one killer function that we wanted to avoid. But is it really used? Yes, looking at the compiled code, we see that `malloc()` being called: ``` 0001ff80 : 1ff80: 4b16 ldr r3, [pc, #88] ; (1ffdc ) 1ff82: b510 push {r4, lr} 1ff84: 681c ldr r4, [r3, #0] 1ff86: 6ba3 ldr r3, [r4, #56] ; 0x38 1ff88: b9b3 cbnz r3, 1ffb8 1ff8a: 2018 movs r0, #24 1ff8c: f7ff fee4 bl 1fd58 1ff90: 4602 mov r2, r0 1ff92: 63a0 str r0, [r4, #56] ; 0x38 1ff94: b920 cbnz r0, 1ffa0 1ff96: 4b12 ldr r3, [pc, #72] ; (1ffe0 ) 1ff98: 4812 ldr r0, [pc, #72] ; (1ffe4 ) 1ff9a: 214e movs r1, #78 ; 0x4e 1ff9c: f000 f952 bl 20244 <__assert_func> 1ffa0: 4911 ldr r1, [pc, #68] ; (1ffe8 ) 1ffa2: 4b12 ldr r3, [pc, #72] ; (1ffec ) 1ffa4: e9c0 1300 strd r1, r3, [r0] 1ffa8: 4b11 ldr r3, [pc, #68] ; (1fff0 ) 1ffaa: 6083 str r3, [r0, #8] 1ffac: 230b movs r3, #11 1ffae: 8183 strh r3, [r0, #12] 1ffb0: 2100 movs r1, #0 1ffb2: 2001 movs r0, #1 1ffb4: e9c2 0104 strd r0, r1, [r2, #16] 1ffb8: 6ba4 ldr r4, [r4, #56] ; 0x38 1ffba: 4a0e ldr r2, [pc, #56] ; (1fff4 ) 1ffbc: 6920 ldr r0, [r4, #16] 1ffbe: 6963 ldr r3, [r4, #20] 1ffc0: 490d ldr r1, [pc, #52] ; (1fff8 ) 1ffc2: 4342 muls r2, r0 1ffc4: fb01 2203 mla r2, r1, r3, r2 1ffc8: fba0 0101 umull r0, r1, r0, r1 1ffcc: 1c43 adds r3, r0, #1 1ffce: eb42 0001 adc.w r0, r2, r1 1ffd2: e9c4 3004 strd r3, r0, [r4, #16] 1ffd6: f020 4000 bic.w r0, r0, #2147483648 ; 0x80000000 1ffda: bd10 pop {r4, pc} 1ffdc: 20000770 .word 0x20000770 1ffe0: 00027bfc .word 0x00027bfc 1ffe4: 00027c13 .word 0x00027c13 1ffe8: abcd330e .word 0xabcd330e 1ffec: e66d1234 .word 0xe66d1234 1fff0: 0005deec .word 0x0005deec 1fff4: 5851f42d .word 0x5851f42d 1fff8: 4c957f2d .word 0x4c957f2d ``` To achieve reentrancy, the newlib code uses `malloc()` to allocate state for its randomness, so that it can be called multiple times. Just what we wanted to avoid. But why does `malloc()` result in the stack being blown? Because `malloc()`, in its default implementation, uses memory between the highest allocated byte, and the stack. In most cases, for large systems, this is fine. Because there is plenty of free memory between the highest allocated byte and the stack. But not in our case. We don’t have much free memory. So that call to `malloc()` will interfere with the stack, immediately. And fortunately we were able to find this by keeping a check on the stack. But why did this happen now? We have been running this code for years on end with no problems. As it turns out, the reason is that we [recently upgraded](https://www.thingsquare.com/blog/articles/release-4.9/) the arm-gcc version. And this version has its newlib built with reentrancy support, which the previous versions did not have. ## The solution? Fortunately, the solution is simple. We just stop using `rand()`. Instead, we provide our own pseudo-random function. For example, the [PCG random number generator](https://www.pcg-random.org/). Also, we added another regression test that explicitcly checks for occurences of the `malloc()` code in generated binaries. [You should know: rand() may call malloc()](https://www.thingsquare.com/blog/articles/rand-may-call-malloc/) # Sub-zero smartphones: which devices can bear the cold? [Infographic] Some smart phone manufacturers don’t allow their devices to be used in cold weather while others guarantee smooth functioning even in -20 degrees Celsius (-3 degrees Fahrenheit). According to Apple, its iPhones can be used only in temperatures between 0 and 35 degrees Celsius (32 to 95 F). In other words, an iPhone user taking his device outside in typical Canadian winter conditions will do so at his own risk. If the phone breaks down, Apple claims they will not be responsible and it is not covered by the phone’s warranty. HTC and Nokia have not given out operating temperature guidelines in user manuals or on their websites. Samsung, on the other hand guarantees its phones to function in temperatures between -20 and 50 degrees Celsius (-4 to -122 F). [image:A2C0B3C5-9623-4C2A-92D0-2779B8CB84CC-2659-00000042FEFF1BAC/IMG_4747.jpeg] *Bring On the Freeze!* MikroPC (PCWorld Finland) decided to test if the manufacturers can back up their claims in real life. We picked up the 15 most-sold mobile phones in Finland and three others for comparison, and took them into the Technical Research Centre of Finland and their “Weather Room”, a specialized research lab where the temperature can be adjusted to a fraction of a degree. The initial temperature was set to 0 degrees Celsius (32 F). From there, we kept lowering it by steps of five degrees Celsius (9 F) until even the most persistent devices gave up and stopped working. *Failing First: iPhone 4S* At 0 degrees Celsius / 32 F, it was business as usual. At -5 C/23 F, [iPhone 4S](http://www.itbusiness.ca/it/client/en/home/news.asp?id=64545) and Nokia N9 started showing symptoms: the iPhone reported a sim card error and the N9 claimed its battery was nearly empty. Lowering the temperature even further to -10 degrees Celsius / 14 F was more than the iPhone could handle. The Apple device suddenly announced a dead battery and shut down. All phones with LCD displays experienced difficulties when the temperature dropped below this. Amoled displays proved to stand cold much better and kept on going. In addition to displays, the dropping temperature also affects the device’s connections. *The Cheaper, the Better?* The majority of smart phones couldn’t handle temperatures colder than -15 or -20 degrees Celsius / 5 F to -4 F. Even if they managed to stay on, most died when put to actual use. Feature phones did better. Apart from slowness in the display, they showed no symptoms until the temperature dropped to -25 C / -13 F. By this time most smart phones were completely useless. Against all odds, South Korean Samsung smart phones outlasted Finnish Nokia’s touch-screen devices. Only one of the smart phones we tested kept running smoothly when the temperature reached -30 C / -22 F, and it was a Samsung. Even if Korean engineers don’t face such temperatures as often as their Finnish colleagues, they’ve managed to design a better phone for such conditions. Galaxy S II doesn’t shut down until it is -35 degrees outside. And until that point, there’s not even a sign of slowness in its display. *The Ultimate Limit: -40 Degrees* -35 degrees Celsius / -31 F proved to be the ultimate limit for smart phones. Even the most persistent one, Samsung Galaxy S II, shut down when we tried to use the phone. None of the tested touchscreen smartphones could stand such extreme conditions. But, perhaps surprisingly, some feature phones did work, even though their LCD displays showed serious slowness. But when the temperature dropped to -40 C / -40 F, none survived. Even the toughest ones shut down. Out of the 18 phones we tested, only two feature phones could survive until these temperatures: a very cheap Nokia C1-01 and a five-year-old Nokia E65, which was one of the devices chosen for comparison. In the end, the Finnish engineers did design the best mobile phones for sub-zero environments. They may not be equipped with high-end touch-screens, but they work! And it’s probably not a surprise: the coldest temperature in Finland peaks at -40 degrees almost every winter. *Blame the Battery* When the temperature drops enough, a cell phone thinks that its battery is empty — even if it’s fully recharged — and shuts down. A chemical reaction takes place inside the battery. The product of the reaction is electrons, and the flow of electrons creates an electric current which the cell phone uses as its source of power. The speed of this reaction depends on the temperature: the colder it gets, the slower the reaction, and the smaller the current that the battery can provide. The voltage of the battery isn’t stable, either. The nominal voltage of a lithium-ion battery is typically 3.7 volts, but in reality the voltage is between 2.7 V (empty battery) and 4.2 V (fully charged battery). In cold temperatures the internal resistance of the battery grows, causing the output voltage to drop. When the voltage drops too low, below a threshold voltage, the cell phone thinks the battery is empty — even it is fully recharged — and shuts down. *How the Cold Affects Different Displays* An LCD display consists of layers. The actual liquid crystals are positioned between the polarizing filters and electrodes. A TFT layer (thin film transistor) is positioned behind the screen to control the pixels of the screen. When the temperature drops, the viscosity of the liquid crystal material grows exponentially. Depending on the material used in the liquid crystals, the viscosity grows 2-3 times larger when the temperature drops 10 degrees Celsius (18 degrees Fahrenheit). This means the pixel changes its color slower in the cold. When it’s cold enough, the pixel acts so slow that it can’t change its color fully before the next frame is already drawn on the screen. This is when the display seems to work slowly and ghosting or image blur appears on the screen. In AMOLED displays the colors are produced with a layer covered in organic material, organic light emitting diodes. This lack of liquid crystals explains why AMOLED displays work better in the cold. [Sub-zero smartphones: which devices can bear the cold? ❲Infographic❳](https://www.itbusiness.ca/news/sub-zero-smartphones-which-devices-can-bear-the-cold-infographic/16913) # iPad Air 5 review: It’s time to make iPads water-resistant [image:0AD7445A-DD8B-4DDE-9159-AA5BD196FE0B-520-0000000329C4919C/0737acef-6658-4995-9a66-6fbfb71ca484-ipad-air-5-review-top.jpg] Two weeks ago, I took Apple's latest [fifth-generation iPad Air 5](https://www.inputmag.com/tech/apple-ipad-air-5-groovy-purple-blue-starlight-color) (or iPad Air 2022 if you prefer that) for a [week-long vacation](https://twitter.com/raywongy/status/1506508349793218561?s=20&t=ELKSxHEcO5v6ulf1upCsIg) in Hawaii. I used the iPad Air 5 for everything. I checked /some/ email (I'm a monster for doing this on vacation), navigated Oahu for all the best food spots and hiking trails, read a few e-books, allowed myself to get back into /Asphalt 9/, and caught up on my queue of Netflix shows. I even sketched out a few ideas for a side project I'm working on (though my doodles still suck). Not once did I wish I had my [iPad mini 5](https://www.inputmag.com/tech/apples-redesigned-ipad-mini-looks-like-the-ipad-air-pro) (smaller size) or my [12.9-inch M1 iPad Pro](https://www.inputmag.com/reviews/m1-ipad-pro-review-the-last-tablet-you-will-ever-need-to-buy) (mini-LED display) instead — the iPad Air 5 was the right balance of display size with its 10.9-inch display and performance from the M1 chip. Starting at $599, the iPad Air 5 is, as my colleague Ian Carlos Campbell put it following the announcement: [Apple's best iPad deal](https://www.inputmag.com/tech/m1-ipad-air-5-best-ipad-deal). There are only two things I want improved: double the paltry 64GB storage to 128GB and make it water/liquid/splash-resistant. If a week of "me time" in paradise taught me anything, it's that iPad Air 5's storage is simply not enough for offline TV/movies and games. And the iPad Air 5 can't be used in a hotel tub/jacuzzi/pool or anywhere near water like a beach. The iPhone has had IP-rated water resistance since the iPhone 7 (we're now on the [iPhone 13](https://www.inputmag.com/reviews/iphone-13-mini-review-so-ordinary-its-extraordinary)!). Why can’t I use an iPad without fear of liquid damaging it? In my spiffy Hyatt hotel, I settled for using my [iPhone 13 Pro](https://www.inputmag.com/reviews/iphone-13-pro-max-review-a-mighty-upgrade-thats-just-shy-of-perfect) to rewatch /Terrace House: Aloha State/ and read Min Jin Lee's /Free Food for Millionaires/ in my room's tub, and the on-premise jacuzzi, and pool (and Waikiki Beach where showers would start and stop without notice). What I really wanted most was to use was the iPad Air 5 for its larger display and superior speakers. It's time, Apple — make iPads water-resistant. /Input may receive a portion of sales if you purchase a product through a link in this article. We only include products that have been independently selected by Input's editorial team./ ## Air vs. Pro There are measurable differences between the iPad Air 5 and the M1 iPad Pros (11- and 12.9-inch), but I wouldn't obsess over the [comparison chart](https://www.apple.com/ipad/compare/?afid=p238%7CszuZbAhk3-dc_mtid_2092592t39165_pcrid_586515161434_pgrid_135433186218_&cid=wwa-us-kwgo-ipad-slid---brand-ipadcompare-announce-). The differences are minor in my opinion and some of the features like Touch ID instead of Face ID might even be preferred. Let's start with pricing because this is where the iPad Air 5's value shines. It starts at $599 for the Wi-Fi model versus $799 for the 11-inch M1 iPad Pro. What more do you get for $200? The M1 iPad Pro has a slightly larger screen (11 inches) compared to 10.9 inches on the iPad Air 5 and a faster 120Hz ProMotion refresh rate. Neither iPad has a mini-LED display and I didn't miss it from my 12.9-inch M1 iPad Pro at all; the black text on websites and e-books look no better with mini-LED and not having "pure" blacks for video simply doesn't bother me. (I watched /Dune/ on my flight's garbage in-flight entertainment display with its near non-existent contrast and terrible brightness. The iPad Air 5's black levels are a million times better so unless you're a creator using an M1 iPad Pro for the best color accuracy, a few lighter shades of black isn’t a dealbreaker.) The iPad Air 5 has virtually the same dimensions as the 11-inch iPad Pro.`Raymond Wong / Input` That said, the dimensions of the two iPads are nearly identical save for a 0.2mm thicker aluminum body and five grams of extra weight on the iPad Air 5. Not that I noticed this; the iPad Air 5 works perfectly with the 11-inch [Magic Keyboard](https://www.inputmag.com/reviews/ipads-mid-life-crisis-two-weeks-with-the-magic-keyboard). The iPad Air 5 front camera is the same 12-megapixel resolution as on the M1 iPad Pro. Lacking the TrueDepth camera sensor package, the iPad Air 5 doesn't support Face ID or Animoji/Memoji FaceTimes. It does support Center Stage, a feature I initially didn’t care for but came to appreciate whenever I had the iPad in landscape orientation; Center Stage zooms in on your face so that the camera doesn’t look like it’s aimed at your cheek. On the rear of the iPad Air 5, there's only one 12-megapixel wide camera as opposed to the M1 iPad Pro's 12-megapixel wide, 10-megapixel ultrawide, and LiDAR sensor. On an iPad, a single rear camera is sufficient — serviceable for photos and scanning documents, but nowhere near as impressive as the cameras on an iPhone. The display on the iPad Air 5 is just marginally smaller than on the 11-inch iPad Pro.`Raymond Wong / Input` The Magic Keyboard for the 11-inch iPad Pro is compatible with the iPad Air 5.`Raymond Wong / Input` Other differences between the iPad Air 5 and M1 iPad Pro include two speakers versus four, mid-band (sub-6 GHz) 5G versus mid-band /and/ mmWave, a regular USB-C port instead of a USB-C port that supports Thunderbolt/USB 4 speeds, and multiple anodized aluminum colors (five versus two). And, of course, the iPad Air 5 comes with only two storage capacities (64GB and 256GB) compared to the M1 iPad Pro's storage which starts at 128GB and goes up to 2TB. It reads like the iPad Air 5 is missing a lot of features found on the M1 iPad Pro. As an iPad fanatic (yes, I know [iPadOS is still largely limiting](https://www.inputmag.com/reviews/m1-ipad-pro-review-why-apple-will-never-put-macos-on-ipad), but a [Magic Keyboard](https://www.inputmag.com/reviews/ipads-mid-life-crisis-two-weeks-with-the-magic-keyboard) and [Universal Control](https://www.inputmag.com/tech/the-5-biggest-features-in-macos-monterey) have made it more usable as a "real" computer), I can tell you the iPad Air 5 still smokes any similarly priced Android tablet or even some that cost more. The 64GB of storage is really the only major downside. ## iPad core Almost everything that makes the iPad Air 5 such an excellent tablet can be attributed to the similarities it shares with the M1 iPad Pro: M1 chip performance, 10 hours of battery life, and Apple Pencil 2 and Magic Keyboard support. These iPad tentpoles are not compromised on the iPad Air 5. Instead of Face ID, you get Touch ID.`Raymond Wong / Input` The 12-megapixel camera on the back is fine... for a tablet.`Raymond Wong / Input` The dual stereo speakers get pretty loud. `Raymond Wong / Input` Everything I normally do on my 12.9-inch M1 iPad Pro, the iPad Air 5 handled just as well. There's no drop in performance playing 3D games like /[Genshin Impact](https://www.inputmag.com/gaming/why-genshin-impact-is-so-insanely-popular)/ or /Pokémon Unite/ on an iPad Air 5 compared to an M1 iPad Pro. Upscaling an image with the "Super Resolution" feature in Pixelmator Pro took the exact same amount of time to process. The responsiveness of the Apple Pencil from its tip to the screen didn't feel perceptively slower; any reduction in latency from the M1 iPad Pro's higher 120Hz refresh rate is lost on stick-figure artists like me. That Apple could put an M1 chip into the iPad Air 5 and there's no dip in performance showcases not only what a triumph its custom silicon is in performance and efficiency, but its scalability across the 13-inch MacBook Air/MacBook Pro, [24-inch M1 iMac](https://www.inputmag.com/tech/m1-imac-comes-in-7-colors-but-does-not-have-sd-card-slot) /Mac Mini, and iPads. For better or worse, the story of iPadOS has not changed. There’s a wealth of really good iPad apps for everything from drawing, writing, streaming, to games; way more than for Android tablets. Widgets on the home screen and the App Library are great. But, why does Apple still not have its own weather app like on iPhone? The weather widget kicks you over to the ad-infested Weather.com website. [I’m not asking for macOS on an iPad](https://www.inputmag.com/reviews/m1-ipad-pro-review-why-apple-will-never-put-macos-on-ipad) like everyone is — just know what you can and can’t do with iPadOS. Get a laptop if you want a laptop; Apple sells a [whole family of MacBooks](https://www.inputmag.com/tech/apples-new-macbook-pros-just-gave-everyone-a-nerdgasm) with good keyboards and [M1 performance now](https://www.inputmag.com/reviews/macbook-air-m1-review-windows-laptops-are-so-screwed). Widgets on the home screen has made iPadOS 15 more like a laptop.`Raymond Wong / Input` Multitasking on iPad Air 5 is as smooth as it is on an iPad Pro as far as I can tell.`Raymond Wong / Input` Even if Apple had used an A15 Bionic — the same chip in the [iPad mini 6](https://www.inputmag.com/tech/apples-redesigned-ipad-mini-looks-like-the-ipad-air-pro), [iPhone 13/13 Pro](https://www.inputmag.com/reviews/we-got-the-green-iphone-13-pro-iphone-13-mini-early/amp), and [iPhone SE 2022](https://www.inputmag.com/reviews/iphone-se-3-review-half-iphone-8-half-iphone-13) — the iPad Air 5 would still be far ahead of any Snapdragon-powered Android tablet. And the battery life: It's just as good as ever. Since the original iPad, Apple has maintained 10 hours of battery life for its tablets. While I think it's time Apple pushed the hours from a single charge upward, 10 hours of battery is still nothing to sneeze at. I used the iPad Air 5 during almost the entirety of my 11.5-hour flight to watch downloaded Netflix episodes and TV, read e-books, play games, and there was still around 15 percent leftover by the time I landed. And that’s all while listening to downloaded music from Spotify using [AirPods Pro](https://www.inputmag.com/reviews/airpods-pro-review-apple-may-have-built-the-perfect-wireless-earbuds). As with my M1 iPad Pro, I did notice that using the Magic Keyboard with the iPad Air 5 drained the battery faster. Your mileage will vary, but 10 hours of typical iPad workload is right on the money. ## All iPads are great The blue iPad Air 5 is definitely a looker. The other colors look good, too.`Raymond Wong / Input` Does Apple sell a bad iPad? Not as far as I can tell. Even the [entry-level iPad 9](https://www.inputmag.com/tech/the-ipad-9-is-here-and-its-more-evolution-than-revolution), with its old design that dates back to the original iPad Air and Touch ID home button and Apple Pencil 1 support, is a damn good deal for $329. I'm always reminding people that the basic iPad’s 10.2-inch display is larger and sharper, and the price is $70 less than the first few years of iPads which started at $499. iPads back then didn't even support Apple Pencil! The iPad Air 5 continues Apple's tradition of iPad excellence and dominance by bringing key technologies like the groundbreaking M1 chip down to a more affordable price. As much as I lean towards the premium end of the gadget spectrum with the best features packed inside, I was more than satisfied with using the iPad Air 5 and its features during my Hawaii trip. I found it lacking in only two areas (storage and lack of water resistance); everything else is as good as it gets for the price. > The iPad Air 5 is a *terrific deal* any way you look at it. Unless you absolutely /must/ have all of the bells and whistles of the M1 iPad Pros, the iPad Air 5 is more than capable. I don’t mean that in the sense that it’s a little better than the competition; the iPad Air has a very long life ahead of it. The M1 chip alone means the iPad Air 5 has tons of headroom for years of iPadOS updates to come — something Apple is very good at. Just look at how the iPhone 6S runs iOS 15 or the iPad or the iPad Air 2, released in 2014, supports the latest [iPadOS 15.4](https://www.inputmag.com/tech/ios-15-4-macos-12-3-release-universal-control-emoji-face-id-unlock). The iPad Air 5 is not a difficult iPad to understand: It's an 11-inch M1 iPad Pro stripped of all non-essentials. Don't let that fool you into thinking it's a vastly inferior iPad. It's not. The M1 chip is just as much of a beast in the iPad Air 5 as it is in the M1 iPad Pro. Use the $200 saved to get yourself an Apple Pencil 2 and you still have money left over for a case (or apps). Or knock $200 off the $299 Magic Keyboard. The iPad Air 5 is a terrific deal any way you look at it. [iPad Air 5 review: It’s time to make iPads water-resistant](https://www.inputmag.com/reviews/ipad-air-2022-review-time-to-make-ipads-water-resistant) # My Favorite Obsidian Plugins for Automating the Management of Notes * [image:26E1933A-0E7A-485A-A907-B291597D4D7E-84605-00000E5A06C7EA24/5a1475dcd87638ed2f250b6213881115.jpeg] * [John](https://club.macstories.net/authors/john) Undoubtedly, the greatest strength of [Obsidian](https://obsidian.md) is the extensive number of plugins available that extend the app’s functionality. The community of developers creating and actively maintaining plugins is huge, and with new plugins being released every week, there’s always something new to try. By far, the plugins that I use most are those that remove the friction of setting my writing environment up the way I want it, formatting my documents, organizing my notes, and dealing with form documents. I’ve got a lot of plugins installed and have tried even more, but today, I want to share several that have withstood months of experimentation and remain the ones that I use most frequently. [My Favorite Obsidian Plugins for Automating the Management of Notes](https://club.macstories.net/posts/my-favorite-obsidian-plugins-for-automating-the-management-of-notes) # Automation April: 10 Shortcuts for Apple Translate, Live Text, Finder Images, Pixelmator Pro, and More [image:405C3ECB-A1EB-4D5D-A995-95E31CEC4553-83317-00000E4383E596DA/tuesday-05-apr-2022-15-06-21-1649163996393.png] Shortcuts I’ve prepared for Automation April. It’s Week 1 of [Automation April](http://automationapril.com/), and as [I announced last week](https://www.macstories.net/stories/introducing-automation-april/), alongside the several initiatives we’ve prepared for this month-long automation event, I’ve been working on *30 shortcuts* to share with everyone for free on MacStories this month. Today, I’m pleased to share the first group of 10 shortcuts that will join the other 250 on the [MacStories Shortcuts Archive](https://www.macstories.net/shortcuts/). These shortcuts are a diverse collection of utilities that have been specifically optimized for the latest versions of iOS, iPadOS, and macOS Monterey. Below, you’ll find shortcuts that take advantage of new actions for Translate and Live Text; there are Mac-only shortcuts that integrate with Finder and AppleScript; there’s even a shortcut that helps you speed up multitasking and window control on macOS. As always, all the shortcuts I’m sharing as part of [Automation April](https://www.macstories.net/tag/automation-april/) have been tested across all Apple devices and you can install them via the iCloud download links in this story. So grab a good cup of espresso, take a break from the [Automation April contest](https://shortcuts.macstories.net/), and let’s have a look. [image:A6DF8010-3356-4347-9F41-AF60FEB365BE-83317-00000E4383E4E4F5/kolide-logo-square-1648574900679.png] *[Kolide](https://l.kolide.co/3qDZCdN)*: Endpoint Security Powered by People; Try for Free! ## Photo Translator This shortcut is based on Apple’s new actions for the Translate app added with [iOS 15.4](https://www.macstories.net/stories/ios-and-ipados-15-4-hands-on-with-universal-control-face-id-with-a-mask-and-more/) and macOS 12.3, and it lets you quickly translate any text recognized inside an image to a language of your choice. Thanks to the Neural Engine, Live Text can extract text from images and Translate can process it in a second, removing the need to open an image, manually select text, and paste it into the Translate app (which is also absent from the Mac). [image:FA3CD4F8-4297-4733-86AE-A5A3629CE1D7-83317-00000E4383E43FF1/tuesday-05-apr-2022-15-12-13-1649164354571.png] How Photo Translator works. Once the text has been translated, you’ll be presented with a variety of actions you can perform: you can show the translation in a popup window; you can copy it to the clipboard or share it with other apps; you can also choose to save the original text and its translation to a plain text document anywhere in the Files app or Finder. [image:F0897FE4-6608-4993-9EF1-1ACB17D421B6-83317-00000E4383E39CD3/cleanshot-2022-04-05-at-3-12-10-2x-1649164342268.png] Translate actions in Shortcuts. There are a few nice touches worth pointing out in this shortcut. For starters, Photo Translator can receive an image from the share sheet on iPhone or iPad or, alternatively, an image you’ve selected in the Mac’s Finder as a quick action. [image:A9AB9E8C-62CD-4039-AD2A-402DBB7E0085-83317-00000E4383E2E28E/cleanshot-2022-04-05-at-1-01-22-2x-1649156576456.png] Text recognized in any image from Finder can be translated with this shortcut. [image:0DC02B3D-FB13-447B-84F5-E5C51931EC05-83317-00000E4383E23F03/cleanshot-2022-04-05-at-1-02-02-2x-1649156579963.png] Running the shortcut as a quick action. [image:FDA2C0F0-FF93-4CED-8D8C-1626F345774C-83317-00000E4383E1760E/cleanshot-2022-04-05-at-1-02-37-2x-1649156578197.png] Translated results aren’t always perfect, but they get the job done. In case you haven’t shared any image with the shortcut, you’ll be prompted to manually pick an image from the Photos library or take a picture with the Camera while the shortcut is running. The latter is a great option to have if you want to translate something in a hurry just by pointing your iPhone’s camera at it. Additionally, you can configure the shortcut by telling it what your native language is. This way, if you select an image that already contains text in your own language, the shortcut will skip translation. You can, of course, change the ‘Translate To’ language at any time from the parameter in the ‘Translate Text’ action. ## Live Text Extractor This shortcut is a simplified version of Photo Translator that simply extracts text found inside an image thanks to [Live Text](https://www.macstories.net/stories/ios-and-ipados-15-the-macstories-review/19/#camera) and immediately copies it to the system clipboard. Based on the ‘Extract Text from Image’ action, Live Text Extractor can even process large images containing lots of text incredibly fast. It’s the ideal utility for people who find themselves dealing with OCR workflows and extracting text from images on a daily basis. [image:1E014445-0E07-4EA5-8907-83F356CB6C85-83317-00000E4383E0BA81/tuesday-05-apr-2022-15-16-43-1649164619717.png] Extracting text from images with Shortcuts. Like the shortcut above, Live Text Extractor supports receiving images from the share sheet and quick actions in Finder, and it also lets you manually pick an image from Photos. I find the quick action integration especially impressive since you can go from an image on your desktop to copied text in your clipboard with, literally, just two clicks. ## Convert Selected Text to Rich Text This shortcut does something [you may have seen](https://brettterpstra.com/projects/markdown-service-tools/) dozens of times on macOS as a ‘Service’: given some Markdown text selected in any text editor, the shortcut runs and replaces the selection with converted rich text. Write some Markdown in Notes, for instance, invoke this shortcut, and a second later the text will be replaced by its formatted equivalent. [image:E1677227-7192-4C88-AAE9-6E70E21D7AE6-83317-00000E4383DFF126/cleanshot-2022-04-05-at-1-08-20-2x-1649156944909.png] Write Markdown in Notes… [image:EF68E288-9D62-44E4-AA07-86DE2F29A7F7-83317-00000E4383DF3005/cleanshot-2022-04-05-at-1-08-32-2x-1649156946619.png] …and convert it to rich text. How is this possible? The trick lies in a new, largely undocumented feature of Shortcuts for Mac that was added last month called ‘Provide Output’. Available only on macOS for now, this option can be found in the Details screen of an individual shortcut under the ‘Use as Quick Action’ menu. Click the ‘?’ button next to it, and you’ll see Apple’s explanation for how this works: [image:DC310CD7-15CF-4F71-87F1-1F47B5CAFCC9-83317-00000E4383DE66DD/cleanshot-2022-04-05-at-1-10-02-2x-1649157012685.png] The new Provide Output option in Shortcuts for Mac. Essentially, providing an output means that a shortcut can pass its results to /something else/ depending on the context in which it is running. For instance, if a shortcut is running as a quick action in Finder and produces a file object as output, this option ensures the file is saved to the Finder alongside other files you may have selected; alternatively, if the shortcut is running as a service for text selected in a text editor, the output will replace the selected text. You get the idea. With this option, Apple has dramatically simplified the process of retrieving items from Finder, modifying them, and saving new versions from Shortcuts, and they’ve enabled new capabilities altogether with support for text selections. I’d love to have this feature on iPadOS at some point; in the meantime, I’m happy I can start using it on macOS. This first shortcut designed for Provide Output is a simple proof-of-concept that gets the job done. As you can see, to convert Markdown to rich text and insert it in an active text field all we need is one action; the ‘Stop and Output’ step is automatically inserted by Shortcuts when Provide Output is enabled, and there’s nothing else to do. [image:FE6A887D-12EC-423F-AF74-961EDDDB1968-83317-00000E4383DDBEEB/cleanshot-2022-04-05-at-1-10-51-2x-1649157060490.png] I’ll cover some other details of Provide Output later today in our [Discord workshop for Club members](https://discord.com/events/836622115435184162/960585629446594591). In the meantime, you can download Convert Selected Text to Rich Text below. ## Convert to JPEG Speaking of the Finder and quick actions, I built this shortcut to automate something I was finding too tedious to perform manually: converting photos AirDropped from my iPhone to the Mac from the HEIC format to standard JPEG. With the Convert to JPEG shortcut, all I have to do now is select files in Finder, select the shortcut in the Quick Actions menu, and that’s it. The shortcut creates JPEG versions of each selected .heic file in the same folder I’m in; the original images stay selected in Finder so I can confirm that all JPEGs were successfully created and hit ⌘-Backspace to delete the .heic ones. [image:EE191460-8BCB-4130-87B6-7447681BE002-83317-00000E4383DD09BF/cleanshot-2022-04-05-at-3-25-19-2x-1649165161940.png] Converting .heic images from Finder via a shortcut. [image:84F1E92C-B7DF-4745-A5DD-80841C7C6976-83317-00000E4383DC4745/cleanshot-2022-04-05-at-3-25-34-2x-1649165158874.png] The converted files. This shortcut is made possible by a few Mac-specific additions to Shortcuts: running shortcuts as quick actions in Finder is obviously only available on macOS [1](https://www.macstories.net/stories/10-shortcuts-for-automation-april-week-1/#fn-69382-1), and so is the ‘Get Selected Files in Finder’ action, which returns a list of files currently selected in the foremost Finder view. This shortcut also uses the Provide Output technique to save modified files alongside the original ones selected in Finder. [image:E2DBA4F9-4D97-426E-B0BD-1FA4170BABB6-83317-00000E4383DB7D76/cleanshot-2022-04-05-at-3-28-48-2x-1649165338771.png] How to convert files selected in Finder and save output with Shortcuts. I’ve used this shortcut hundreds of times over the past few weeks; I hope you’ll find it as convenient as I did. ## Super ML Based on the same technique as the Convert to JPEG shortcut I described above, Super ML doesn’t convert images to a different format: rather, it increases the resolution of selected images using Pixelmator Pro’s ‘Increase Resolution of Image’ action powered by the app’s [ML Super Resolution algorithm](https://www.macstories.net/news/pixelmator-photo-adds-ml-super-resolution-powered-by-apples-neural-engine-and-split-screen-preview-slider/). The shortcut couldn’t be easier to use: all you have to do is select images in Finder, run the quick action from the contextual menu, and wait as an upscaled (larger) version of each selected image overwrites the original one. /That’s it./ [image:C9FB99DF-9168-473E-9A35-329B1B64E2FE-83317-00000E4383DAD6F2/cleanshot-2022-04-05-at-1-11-52-2x-1649157128648.png] Run this shortcut as a quick action in Finder and it’ll upscale images for you. I built this shortcut to speed up another task that quickly became tedious to perform manually. A few months ago, Silvia and I were putting together a photo book for our two best friends, who are getting married this year. In doing so, we ended up with a collection of old photos of them dating back to over a decade ago. As you can imagine, pictures taken on an iPhone 3GS haven’t exactly aged well, and the website we used to design and print the photo book kept telling us that our images were too low-res. I had the idea of turning to ML Super Resolution for this, but when I realized that I had to upscale each image manually in the Pixelmator Pro app and save it back to Finder, I knew I had to figure out a system to automate the process for batch upscaling. This shortcut does that, and I’ve been using it for all kinds of images I want to upscale on my Mac. This shortcut does one thing: it gets the most recent photo from the Photos app and copies it to the clipboard. I built this shortcut because I often find myself opening the Photos app to copy the most recent picture or screenshot I’ve taken, and that’s no fun. [image:CD2DD7DB-3438-4F30-AE14-C007C543FD19-83317-00000E4383DA18B4/tuesday-05-apr-2022-15-31-34-1649165501798.png] With this shortcut, you can copy the most recent image from Photos with a single tap and paste it elsewhere. With Copy Last Photo, you can instantly copy the latest item from your Photos library from the widget, via Siri, or even by tapping the back of your iPhone if you’ve enabled [Back Tap in Accessibility](https://support.apple.com/en-us/HT211781). I built this shortcut one night when I realized I wanted a faster way to get the details for a song selected in the Music app for Mac. I was assembling a list of songs in a text document, and having to type each song’s title and artist got annoying quickly. So, obviously, I turned to Shortcuts and good old AppleScript. Despite its many rewrites and redesigns, the Music app for macOS Monterey is still compatible with the AppleScript dictionary for the discontinued iTunes app. You can take any existing [iTunes AppleScript you can find on the Internet](https://dougscripts.com/itunes/index.php), replace “iTunes” with “Music” in the script, and it’ll likely work. That’s precisely what I did for a script that returns the title and artist of the song selected in Music: when the shortcut executes the ‘Run AppleScript’ action, it checks for my selection in the Music app, then copies the selected song’s title and artist name as a string of text to the clipboard. [image:B5CD18EE-769E-4EFA-9200-174FDC93B3F7-83317-00000E4383D955CE/cleanshot-2022-04-05-at-1-14-19-2x-1649157318039.png] Select a song from Music, then run the shortcut… [image:A770B6D4-D12B-4A50-9D09-A31530CEAD1D-83317-00000E4383D8830F/cleanshot-2022-04-05-at-1-14-58-2x-1649157353084.png] …and this is what it’ll copy to the clipboard for you. There is one caveat worth keeping in mind here: AppleScript only supports retrieving details for selected songs that are /also/ in your library. If you select a ‘cloud item’ from Apple Music that is not in your library as well, the shortcut won’t work. There is a bigger conversation to be had here about whether [Apple should build real Music integration in Shortcuts](https://www.macstories.net/stories/the-curious-case-of-apples-missing-app-integrations-for-shortcuts/) that doesn’t involve AppleScript, but I digress. The shortcut works well given its limitations, and I like to trigger it either from the menu bar or via a hotkey from [Raycast](https://www.raycast.com/). [image:961AC0F7-7D28-4054-946B-77A288B6A13E-83317-00000E4383D7B3D4/cleanshot-2022-04-05-at-1-16-24-2x-1649157393819.png] The shortcut uses AppleScript to get details for the selected song in Music. There are also some interesting techniques I’ve used in this shortcut for AppleScript integration in Shortcuts, which I will explain later today in the [first Town Hall Workshop for Automation April](https://twitter.com/viticci/status/1511028647343407118) in our Discord. ## Crop to Rounded Rectangle and Save This is a great example of a very simple utility shortcut that does one thing well: the shortcut lets me pick a photo from my library, masks it with a shape of a rounded rectangle, and saves the resulting image with alpha transparency back to Photos. [image:3C0A95F9-7451-40CB-8452-9DE7258BE436-83317-00000E4383D6D59D/tuesday-05-apr-2022-15-36-08-1649165775650.png] I created this shortcut because I was tired of manually cropping pictures with rounded corners in image editors; now, Shortcuts does it for me and I can run this as an extension of the share sheet in Photos or from a widget on the Home Screen. ## Pick Windows and Create Pairs This is another Mac-specific shortcut I’ve created to simplify something I found myself doing over and over: putting two apps side-by-side in an iPad-like ‘Split View’ without actually entering macOS’ full-screen mode, which I don’t like. Instead, this shortcut does what I want: it lets me choose from a list of currently open windows, and it puts one on the left half of the screen, and the other on the right half. [image:EE0F7D12-1ABF-4386-A9C2-C0474E7F078B-83317-00000E4383D610EA/cleanshot-2022-04-05-at-1-18-26-2x-1649157534851.png] Picking open windows from Shortcuts. [image:BED96BB0-1EAA-4686-B48E-949F9DBA40DF-83317-00000E4383D55B6A/cleanshot-2022-04-05-at-1-18-33-2x-1649157537317.png] Pick two windows, and a pair is created onscreen. The shortcut revolves around the ‘Find Windows’ action, which is connected to a ‘Choose from List’ one. This action returns a list of all the open and visible windows on your system (unfortunately, if you hide a window, it won’t show up in this list). Once you’ve chosen two windows from the list, the shortcut will then take advantage of another Monterey exclusive: the ‘Resize Window’ action, which comes with built-in parameters to resize windows to specific quadrants of the screen, Windows-style. In my case, I wanted to use the Left Half and Right Half options, which allow me to easily split the screen between two apps. [image:12565D28-9CAB-4C5A-9D4C-91F669CF7CA1-83317-00000E4383D48FB1/cleanshot-2022-04-05-at-1-20-27-2x-1649157638619.png] Resizing windows with Shortcuts. Alas, the ‘Resize Window’ action does not take into account the macOS dock: if you keep it visible at all times – say, on the right side of the screen – windows will /not/ resize until they reach the edge of the dock, which is something utilities such as Raycast and [BetterTouchTool](https://folivora.ai/) can do when you “fill the screen”. This doesn’t bother me personally since I keep the dock hidden, and it’s not an issue if you keep the dock at the bottom either, but I hope Apple adds an option for it in the future. If you want to split the screen with more apps, you can modify this shortcut to do so; however, you’ll probably want to tune into our Discord workshop to understand the technique I used to associate each window with a specific corner of the screen. ## New Text File As the name suggests, this shortcut makes it easy to create a new text file /anywhere/ in the Files app or Finder. It’s incredibly fast: run the shortcut, jot down whatever it is you don’t want to forget, and hit Return. A new .md plain text file will be immediately saved in the folder you specified upon installing the shortcut, which you can change at any time. [image:524153BA-F430-4301-857F-B7EAD7FE8487-83317-00000E4383D36E4C/tuesday-05-apr-2022-15-33-29-1649165617994.png] You only have to grant Shortcuts permissions to access the folder once. Text files are saved with a timestamp in their name, which is made possible by the ‘Format Date’ action in Shortcuts. You can use this shortcut in combination with apps such as [Obsidian](https://obsidian.md/) or [iA Writer](https://ia.net/writer), or perhaps as a way to save quick ‘scratchpad’ notes for later on your Desktop. The choice is up to you. /You can also follow MacStories’ Automation April coverage through our [dedicated hub](https://www.macstories.net/tag/automation-april/), or [subscribe to its RSS feed.](https://www.macstories.net/tag/automation-april/feed/)./ [Automation April: 10 Shortcuts for Apple Translate, Live Text, Finder Images, Pixelmator Pro, and More](https://www.macstories.net/stories/10-shortcuts-for-automation-april-week-1/) # My Obsidian Setup, Part 9: Saving Articles and Music Albums for Later with Shortcuts and Dataview Get help and suggestions for your iOS shortcuts and productivity apps. ## Shortcuts Essentials * [image:34EEF6BA-3982-4059-92CC-31EDABE9BAC9-83317-00000E40E0DD05A7/94a9aa7c70dbeb9440c6759bd2cebc2a.jpeg] * [Federico](https://club.macstories.net/authors/federico) [image:B14FB694-4520-467F-A2DC-17BE7984D546-83317-00000E40E0DAA409/friday-08-apr-2022-13-19-01-1649416756624.png] In Parts 6 and 7 of my Obsidian Setup series, I explained how I created a system to save [Safari webpages](https://club.macstories.net/posts/my-obsidian-setup-part-6-dataview-and-cards-for-recent-notes-and-rich-links) and [YouTube videos](https://club.macstories.net/posts/obsidian-setup-part-7) as ‘rich links’ in Obsidian thanks to a combination of [Dataview](https://github.com/blacksmithgu/obsidian-dataview) and Shortcuts. For this first week of [Automation April](https://www.macstories.net/stories/introducing-automation-april/), I thought I’d add two more examples of content I’ve been tracking in Obsidian via cards in a grid powered by Dataview with interactive buttons: *articles* and *Apple Music albums* saved for later. Both flavors of this workflow are largely based on the same techniques and structure I [first shared in January](https://club.macstories.net/posts/my-obsidian-setup-part-6-dataview-and-cards-for-recent-notes-and-rich-links); however, the shortcuts that make the creation of these ‘cards’ (i.e. notes in Obsidian) have some unique aspects to them, and I’ve also created additional helper shortcuts to retrieve these items from the Home Screen, so let’s take a look. [My Obsidian Setup, Part 9: Saving Articles and Music Albums for Later with Shortcuts and Dataview](https://club.macstories.net/posts/my-obsidian-setup-part-9-saving-articles-and-music-albums-for-later-with-shortcuts-and-dataview) # Write.as API Documentation Welcome to API documentation for [Write.as](https://write.as) and [WriteFreely](https://writefreely.org)! Our API gives you full read access and publishing abilities, enabling you to build your own full-featured applications or utilities. This documentation represents the officially-supported, latest API. Any properties or endpoints you discover in the API that aren't documented here should be considered experimental or beta functionality, and subject to change without any notice. ## Write.as *Write.as is our hosted WriteFreely service.* It's also where we develop and test cutting-edge functionality that will eventually make its way into WriteFreely — sometimes many months after it's first available on our hosted platform. Due to this, there will be some differences between our hosted Write.as API and the API on a self-hosted WriteFreely instance. We indicate that in the documentation, where necessary. Our API is accessible on the web at *https://write.as/api/* and via our Tor onion service at *writeasw4b635r4o3vec6mu45s47ohfyro5vayzx2zjwod4pjswyovyd.onion/api/*. ## WriteFreely *WriteFreely is self-hosted, open source software.* It powers our hosted platform, Write.as, plus hundreds of independent blogs and writing communities around the web. Updates are pushed out via official releases at regular intervals, and as [mentioned above](https://developers.write.as/docs/api/#write-as), it may lag behind certain features in Write.as. Where necessary, we'll note differences between the two platforms' APIs in this documentation. ## Developers For developers building general-use libraries for our API, such as those found [in the next section](https://developers.write.as/docs/api/#libraries), we recommend that you build against features in the *WriteFreely API only*, so your library will be useful to the widest possible audience. ### Branding and Use In this case, we also recommend using the "WriteFreely" name instead of "Write.as" for your library — without, as always, implying that your library is officially developed and supported by the Write.as team. ## Libraries These are our official API libraries: These libraries were created by the community — [let us know](https://write.as/contact) if you create one, too! ## Getting Started Here are some basic concepts to understand before getting started with the WriteFreely / Write.as API. Going forward, we'll refer to the API as the *WriteFreely API*, unless something applies only to Write.as. ## Design Our API tries to follow standard RESTful patterns. Backwards compatibility is important to us since we have a large set of [Write.as apps](https://write.as/apps) and [WriteFreely apps](https://writefreely.org/apps) in the wild. As we add new features, we usually add endpoints and properties alongside existing ones, but don't remove or change finalized ones that are documented here. If a breaking API change is required in the future, we'll version new endpoints and update these docs. ## Terminology This is the internal terminology we use for certain concepts in WriteFreely. We recommend adopting it for similar concepts in your apps and libraries. * *Post*: A Markdown-based article, with metadata. * *Collection*: Known as a "blog" to users, though that's not necessarily its only use. It holds one or more Posts. * *User*: A registered account representing an individual, with a password, email, and access to Posts and Collections. ## Errors > Failed requests return with an error `code` and `error_msg`, like below. ``` { "code": "400", "error_msg": "Bad request." } ``` The WriteFreely API uses conventional HTTP response codes to indicate the status of an API request. Codes in the `2xx` range indicate success or that more information is available in the returned data, in the case of bulk actions. Codes in the `4xx` range indicate that the request failed with the information provided. Codes in the `5xx` range indicate an error with the WriteFreely server (you shouldn't see many of these). Error Code Meaning 400 Bad Request -- The request didn't provide the correct parameters, or JSON / form data was improperly formatted. 401 Unauthorized -- No valid user token was given. 403 Forbidden -- You attempted an action that you're not allowed to perform. 404 Not Found -- The requested resource doesn't exist. 405 Method Not Allowed -- The attempted method isn't supported. 410 Gone -- The entity was unpublished, but may be back. 429 Too Many Requests -- You're making too many requests, especially to the same resource. 500, 502, 503 Server errors -- Something went wrong on our end. ## Responses > Successful requests return with a `code` in the `2xx` range and a `data` object or array, depending on the request. ``` { "code": "200", "data": { } } ``` All responses are returned in a JSON object containing two fields: Field Type Description `code` integer An HTTP status code in the `2xx` range. `data` object or array A single object for most requests; an array for bulk requests. This wrapper will never contain an `error_msg` property at the top level. Most endpoints /accept/ both form data or JSON, assuming form data by default unless a `Content-Type: application/json` header is sent. ## Authentication The API doesn't require any authentication, either for the client or end user. However, if you want to perform actions on behalf of a user, you'll need to pass a user access token with any requests: `Authorization: Token 00000000-0000-0000-0000-000000000000` See the [Authenticate a User](https://developers.write.as/docs/api/#authenticate-a-user) section for information on logging in. Replace `00000000-0000-0000-0000-000000000000` with a user's access token. ## Formatting The bulk of formatting on WriteFreely is done with Markdown, a plain-text formatting syntax that converts to HTML. ## Render Markdown ``` curl "https://write.as/api/markdown" \ -H "Content-Type: application/json" \ -X POST \ -d '{"raw_body": "This is *formatted* in __Markdown__."}' ``` > Example Response ``` { "code": 200, "data": { "body": "

This is the formated in Markdown.

", } } ``` This takes raw Markdown and renders it into usable HTML. ### Definition `POST /api/markdown` ### Arguments Parameter Type Required Description *raw_body* string yes The raw Markdown string. *collection_url* string no If given, hashtags in the supplied Markdown will automatically be linked to the correct page on the given collection (blog). ### Returns A `200` at the top level for all valid, authenticated requests. `data` contains *body*, the rendered HTML from the given Markdown. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 400, "error_msg": "Expected valid JSON object." } ``` Error Code Meaning 400 JSON parsing failed. ## Posts Posts are the most basic entities on WriteFreely. Each can have its own appearance, and isn't connected to any other WriteFreely entity by default. On *Write.as*, Posts can exist without an owner (User), or with an owner but no Collection, or with both an owner and Collection. When posts are published with no owner, it's up to the client to remember the posts a user has published. By keeping this information on the client, users can write anonymously -- both according to Write.as and to anyone who reads any given post. Users can choose between different appearances for each post, usually passed to and from the API as a `font` property: Argument Appearance (Typeface) Word Wrap? Also on `sans` Sans-serif (Open Sans) Yes /N/A/ `serif` / `norm` Serif (Lora) Yes /N/A/ `wrap` Monospace Yes /N/A/ `mono` Monospace No paste.as `code` Syntax-highlighted monospace No paste.as ## Publish a Post ``` c := writeas.NewClient() p, err := c.CreatePost(&writeas.PostParams{ Title: "My First Post", Content: "This is a post.", }) ``` ``` curl "https://write.as/api/posts" \ -H "Content-Type: application/json" \ -X POST \ -d '{"body": "This is a post.", "title": "My First Post"}' ``` ``` let client = WFClient(for: "https://write.as") let post = WFPost(body: "This is a post.", title: "My First Post") client.createPost(post: post) { result in switch result { case .success(let post): // Do something with the returned WFPost case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 201, "data": { "id": "rf3t35fkax0aw", "slug": null, "token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M", "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T01:43:46Z", "title": "My First Post", "body": "This is a post.", "tags": [ ] } } ``` This creates a new post, associating it with a user account if authenticated. If the request is successful, the post will be available all of these locations: * write.as/ `{id}` * writeasw4b635r4o3vec6mu45s47ohfyro5vayzx2zjwod4pjswyovyd.onion/ `{id}` * paste.as/ `{id}` -- if `font` was /code/ or /mono/ ### Authentication This can be done anonymously or while [authenticated](https://developers.write.as/docs/api/#authentication). When the request is unauthenticated, the client should store the `token` returned from this request so users can modify their post later. Otherwise it isn't necessary. ### Definition `POST /api/posts` ### Arguments Parameter Type Required Description *body* string yes The content of the post. *title* string no An optional title for the post. If none is given, WriteFreely will try to extract one for the browser's title bar, but not change any appearance in the post itself. *font* string no One of any post appearance types [listed above](https://developers.write.as/docs/api/#posts). If invalid, defaults to `serif`. *lang* string no ISO 639-1 language code, e.g. /en/ or /de/. *rtl* boolean no Whether or not the content should be display right-to-left, for example if written in Arabic or Hebrew. *created* date no An optional /published/ date for the post, formatted `2006-01-02T15:04:05Z`. *crosspost* array no *Must be authenticated*. An array of integrations and associated usernames to post to. See [Crossposting](https://developers.write.as/docs/api/#crossposting). ### Returns The newly created post. ## Retrieve a Post ``` c := writeas.NewClient() p, err := c.GetPost("rf3t35fkax0aw") ``` ``` curl https://write.as/api/posts/rf3t35fkax0aw ``` ``` let client = WFClient(for: "https://write.as") client.getPost(byID: "rf3t35fkax0aw") { result in switch result { case .success(let post): // Do something with the returned WFPost case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": { "id": "rf3t35fkax0aw", "slug": null, "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T01:43:05Z", "title": "My First Post", "body": "This is a post.", "tags": [ ], "views": 0 } } ``` This retrieves a post entity. It includes extra WriteFreely data, such as page views and extracted hashtags. ### Definition `GET /api/posts/{POST_ID}` ## Update a Post ``` c := writeas.NewClient() p, err := c.UpdatePost("rf3t35fkax0aw", "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M", &writeas.PostParams{ Content: "My post is updated.", }) ``` ``` curl "https://write.as/api/posts/rf3t35fkax0aw" \ -H "Content-Type: application/json" \ -X POST \ -d '{"token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M", "body": "My post is updated."}' ``` ``` let client = WFClient(for "https://write.as") let updatedPost = WFPost(body: "My post is updated.") client.updatePost(postId: "", updatedPost: updatedPost) { result in switch result { case .success(let post): // Do something with the returned WFPost case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": { "id": "rf3t35fkax0aw", "slug": null, "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T01:43:05Z", "title": "My First Post", "body": "My post is updated.", "tags": [ ], "views": 0 } } ``` This updates an existing post. ### Authentication This can be done anonymously or while [authenticated](https://developers.write.as/docs/api/#authentication). If done anonymously, it requires past knowledge of the existing post's `token`. ### Definition `POST /api/posts/{POST_ID}` ### Arguments Parameter Type Required Description *token* string maybe* The post's modify token. *Required if not authenticated. *body* string yes The content of the post. *title* string no An optional title for the post. Supplying a parameter but leaving it blank will remove any title currently on the post. *font* string no One of any post appearance types [listed above](https://developers.write.as/docs/api/#posts). If invalid, it doesn't change. *lang* string no ISO 639-1 language code, e.g. /en/ or /de/. *rtl* boolean no Whether or not the content should be display right-to-left, for example if written in Arabic. ### Returns The entire post as it stands after the update. ## Unpublish a Post ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl "https://write.as/api/posts/rf3t35fkax0aw" \ -H "Content-Type: application/json" \ -X POST \ -d '{"token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M", "body": ""}' ``` ``` // Not yet implemented in the Swift package. Contribute at: // https://github.com/writefreely/writefreely-swift ``` > Response ``` { "code": 410, "error_msg": "Post unpublished by author." } ``` *Unfinalized design*. This unpublishes an existing post. Simply pass an empty `body` to an existing post you're authorized to update, and in the future that post will return a `410 Gone` status. The client will likely want to maintain what was in the body before the post was unpublished so it can be restored later. ### Definition `POST /api/posts/{POST_ID}` ### Arguments Parameter Type Required Description *body* string yes Should be an empty string ( `""` ). ### Returns An error `410` with a message: /Post unpublished by author./ ## Delete a Post ``` c := writeas.NewClient() err := c.DeletePost("rf3t35fkax0aw", "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M") ``` ``` curl "https://write.as/api/posts/rf3t35fkax0aw?token=ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M" \ -X DELETE ``` ``` let client = WFClient(for: "https://write.as") // Deleting a post that doesn't belong to the requesting user is currently unsupported. client.deletePost(postId: "rf3t35fkax0aw") { result in switch result { case .success(): // Notify the user that the post was deleted successfully case .failure(let error): // Do something with the returned WFError } } ``` > A successful deletion returns a `204` with no content in the body. This deletes a post. ### Definition `DELETE /api/posts/{POST_ID}` ### Arguments Parameter Type Required Description *token* string /if unauth'd/ The post's modify token. ### Returns A `204` status code and no content in the body. ## Claim Posts ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") err := c.ClaimPosts(&[]OwnedPostParams{ { ID: "rf3t35fkax0aw", Token: "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M", }, }) ``` ``` curl "https://write.as/api/posts/claim" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X POST \ -d '[{"id": "rf3t35fkax0aw", "token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M"}]' ``` ``` // Not yet implemented in the Swift package. Contribute at: // https://github.com/writefreely/writefreely-swift ``` > Always returns a `200` This adds unowned posts to a WriteFreely user / account. ### Definition `POST /api/posts/claim` ### Arguments The body should contain an array of objects with these parameters: Parameter Type Required Description *id* string yes ID of the post to claim *token* string yes Modify token of the post ### Returns A `200`. Since this performs an action on multiple posts, the success/failure code are contained in each resulting post returned. ## Collections Collections are referred to as *blogs* on most of WriteFreely. Each gets its own shareable URL. Each user has one collection matching their username, but can also have more collections connected to their account as a [Casual or Pro](https://write.as/subscribe) user. All collection requests must be [authenticated](https://developers.write.as/docs/api/#authentication), except for retrieval when a collection is *not* private. ## Create a Collection ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") coll, err := c.CreateCollection(&CollectionParams{ Alias: "new-blog", Title: "The Best Blog Ever", }) ``` ``` curl "https://write.as/api/collections" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X POST \ -d '{"alias": "new-blog", "title": "The Best Blog Ever"}' ``` ``` let client = WFClient(for: "https://write.as") client.createCollection(token: "00000000-0000-0000-0000-000000000000", withTitle: "The Best Blog Ever", alias: "new-blog") { result in switch result { case .success(let collection): // Do something with the returned WFCollection case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 201, "data": { "alias": "new-blog", "title": "The Best Blog Ever", "description": "", "style_sheet": "", "email": "new-blog-wjn6epspzjqankz41mlfvz@writeas.com", "views": 0, "total_posts": 0 } } ``` This creates a new collection. *Casual or Pro user required*. ### Definition `POST /api/collections` ### Arguments Clients must supply either a `title` or `alias` (or both). If only a `title` is given, the `alias` will be generated from it. Parameter Type Required Description *alias* string no A valid collection slug / alias, containing only alphanumerics and hyphens. If none given, WriteFreely will generate a valid alias from the `title` value. *title* string no An optional title for the collection. If none given, WriteFreely will use the `alias` value. ### Returns The newly created collection. Clients should store the returned `alias` for future operations. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 403, "error_msg": "You must be a Pro user to do that." } ``` Error Code Meaning 400 Request is missing required information, or has bad form data / JSON. 401 Incorrect information given. 403 You're not a Pro user. 409 Alias is taken. 412 You've reached the maximum number of collections allowed. ## Retrieve a Collection ``` c := writeas.NewClient() coll, err := c.GetCollection("new-blog") ``` ``` curl https://write.as/api/collections/new-blog ``` ``` let client = WFClient(for: "https://write.as") client.getCollection(withAlias: "new-blog") { result in switch result { case .success(let collection): // Do something with the returned WFCollection case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": { "alias": "new-blog", "title": "The Best Blog Ever", "description": "", "style_sheet": "", "public": true, "views": 9, "total_posts": 0 } } ``` This retrieves a collection and its metadata. ### Authentication Collections can be retrieved without authentication. However, [authentication](https://developers.write.as/docs/api/#authentication) is required for retrieving a private collection or one with scheduled posts. ### Definition `GET /api/collections/{COLLECTION_ALIAS}` ### Returns The requested collection. ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl "https://write.as/api/collections/new-blog" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X POST \ -d '{"description": "A great blog.", "style_sheet": "body { color: blue; }"}' ``` ``` // Not yet implemented in the Swift package. Contribute at: // https://github.com/writefreely/writefreely-swift ``` > Example Response ``` { "code": 200, "data": { "alias": "new-blog", "title": "The Best Blog Ever", "description": "A great blog.", "style_sheet": "body { color: blue; }", "script": "", "email": "new-blog-wjn6epspzjqankz41mlfvz@writeas.com", "views": 0 } } ``` This updates attributes of an existing collection. ### Definition `POST /api/collections/{COLLECTION_ALIAS}` ### Arguments Supply only the fields you would like to update. Any fields left out will remain unchanged. Parameter Type Required Description *title* string no The title of the collection. *description* string no The collection description. *style_sheet* string no The full custom CSS to apply to the collection. *WriteFreely or Write.as Pro* *script* string no The full custom Javascript to apply to the collection. *Supported only on Write.as* *visibility* integer no The collection Publicity setting. Must be one of the valid options listed below. *WriteFreely or Write.as Pro* *pass* string no The password required to view a password-protected blog ( `visibility = 4` ). *mathjax* boolean no Whether or not to enable MathJax rendering on the collection. ### Valid `visibility` values Valid options for the `visibility` field: * `0` = Unlisted * `1` = Public * `2` = Private * `4` = Password-protected; requires `pass` value ### Returns The newly created collection. ### Errors This endpoint will attempt to update all possible fields. It will silently skip values it cannot update, such as premium attributes on Write.as, or the Public visibility option when a WriteFreely instance isn't configured for this. Error Code Meaning 400 Request is missing required information, or has bad form data / JSON. 401 Incorrect information given. 403 You're not a Pro user. ## Delete a Collection ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl https://write.as/api/collections/new-blog \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X DELETE ``` ``` let client = WFClient(for: "https://write.as") client.deleteCollection(token: "00000000-0000-0000-0000-000000000000", withAlias: "new-blog") { result in switch result { case .success(): // Notify the user that the collection was deleted successfully case .failure(let error): // Do something with the returned WFError } } ``` > A successful deletion returns a `204` with no content in the body. This permanently deletes a collection and makes any posts on it anonymous. ### Definition `DELETE /api/collections/{COLLECTION_ALIAS}` ### Returns A `204` status code and no content in the body. ## Retrieve a Collection Post ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl https://write.as/api/collections/new-blog/posts/my-first-post ``` ``` let client = WFClient(for: "https://write.as") client.getPost(bySlug: "my-first-post", from: "new-blog") { result in switch result { case .success(let post): // Do something with the returned WFPost case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": { "id": "hjb7cvwaevy9eayp", "slug": "my-first-post", "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T14:29:33Z", "title": "My First Post", "body": "This is a blog post.", "tags": [ ], "views": 0 } } ``` This retrieves a single post from a collection by the post's slug. ### Authentication Collection posts can be retrieved without authentication. However, [authentication](https://developers.write.as/docs/api/#authentication) is required for retrieving a post from a private collection. ### Definition `GET /api/collections/{COLLECTION_ALIAS}/posts/{SLUG}` ### Returns The requested collection post. ## Publish a Collection Post ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") p, err := c.CreatePost(&writeas.PostParams{ Title: "My First Post", Content: "This is a post.", Collection: "new-blog", }) ``` ``` curl "https://write.as/api/collections/new-blog/posts" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X POST \ -d '{"body": "This is a blog post.", "title": "My First Post"}' ``` ``` let client = WFClient(for: "https://write.as") let post = WFPost(token: "00000000-0000-0000-0000-000000000000", body: "This is a post.", title: "My First Post") client.createPost(post: post, in: "new-blog") { result in switch result { case .success(let post): // Do something with the returned WFPost case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 201, "data": { "id": "rf3t35fkax0aw", "slug": "my-first-post", "token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M", "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T01:43:46Z", "title": "My First Post", "body": "This is a post.", "tags": [ ], "collection": { "alias": "new-blog", "title": "The Best Blog Ever", "description": "", "style_sheet": "", "public": true, "url": "https://write.as/new-blog/" } } } ``` This creates a new post and adds it to the given collection. User must be authenticated. ### Definition `POST /api/collections/{COLLECTION_ALIAS}/posts` ### Arguments This accepts the same arguments as [anonymous posts](https://developers.write.as/docs/api/#publish-a-post), plus an optional `crosspost` parameter. Parameter Type Required Description *body* string yes The content of the post. *title* string no An optional title for the post. If none given, WriteFreely will try to extract one for the browser's title bar, but not change any appearance in the post itself. *slug* string no An optional slug for the post. If none given, WriteFreely will automatically generate one from the given title, or from the post body if no title given. *font* string no One of any post appearance types [listed above](https://developers.write.as/docs/api/#posts). If invalid, defaults to `serif`. *lang* string no ISO 639-1 language code, e.g. /en/ or /de/. *rtl* boolean no Whether or not the content should be display right-to-left, for example if written in Arabic or Hebrew. *created* date no An optional /published/ date for the post, formatted `2006-01-02T15:04:05Z`. *crosspost* array no An array of integrations and associated usernames to post to. See [Crossposting](https://developers.write.as/docs/api/#crossposting). ### Returns The newly created post. ## Retrieve Collection Posts ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl https://write.as/api/collections/new-blog/posts ``` ``` let client = WFClient(for: "https://write.as") client.getPosts(in: "new-blog") { result in switch result { case .success(let posts): // Do something with the returned WFPost array case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": { "alias": "new-blog", "title": "The Best Blog Ever", "description": "", "style_sheet": "", "private": false, "total_posts": 1, "posts": [ { "id": "hjb7cvwaevy9eayp", "slug": "my-first-post", "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T14:29:33Z", "title": "My First Post", "body": "This is a blog post.", "tags": [ ], "views": 0 } ] } } ``` This retrieves a collection's posts along with the collection's data. ### Authentication Collection posts can be retrieved without authentication. However, [authentication](https://developers.write.as/docs/api/#authentication) is required for retrieving a private collection or one with scheduled posts. ### Definition `GET /api/collections/{COLLECTION_ALIAS}/posts` ### Arguments Query string parameters can be passed to affect post presentation. Parameter Type Required Description *body* string no Desired post body format. Can be left blank for raw text, or `html` to get back HTML generated from Markdown. ### Returns The requested collection and its posts in a `posts` array. ## Move a Post to a Collection ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl "https://write.as/api/collections/new-blog/collect" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X POST \ -d '[{"id": "rf3t35fkax0aw", "token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M"}]' ``` ``` let client = WFClient(for: "https://write.as") client.movePost(token: "00000000-0000-0000-0000-000000000000", postId: "rf3t35fkax0aw", to: "new-blog") { result in switch result { case .success(): // Notify the user that the post was moved successfully case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": [ { "code": 200, "post": { "id": "rf3t35fkax0aw", "slug": "my-first-post", "token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M", "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T01:43:46Z", "title": "My First Post", "body": "This is a post.", } } ] } ``` This adds a group of posts to a collection. This works for either posts that were created anonymously (i.e. don't belong to the user account) or posts already owned by the user account. ### Definition `POST /api/collections/{COLLECTION_ALIAS}/collect` ### Arguments Pass an array of objects, each containing the following parameters: Parameter Type Required Description *id* string yes The ID of the post to add to the collection *token* string maybe* The post's modify token. *Required if the post doesn't belong to the requesting user. ### Returns A `200` at the top level for all valid, authenticated requests. `data` contains an array of response envelopes: each with `code` and `post` (with full post data) on success, or `code` and `error_msg` on failure for any given post. ## Pin a Post to a Collection ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") err := c.PinPost(&writeas.PinnedPostParams{ ID: "rf3t35fkax0aw", Position: 1, }) ``` ``` curl "https://write.as/api/collections/new-blog/pin" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X POST \ -d '[{"id": "rf3t35fkax0aw", "position": 1}]' ``` ``` let client = WFClient(for: "https://write.as") client.pinPost(token: "00000000-0000-0000-0000-000000000000", postId: "rf3t35fkax0aw", at: 1, in: "new-blog") { result in switch result { case .success(): // Notify the user that the post was pinned successfully case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": [ { "id": "rf3t35fkax0aw", "code": 200 } ] } ``` This pins a blog post to a collection. It'll show up as a navigation item in the collection/blog home page header, instead of on the blog itself. ### Definition `POST /api/collections/{COLLECTION_ALIAS}/pin` ### Arguments Pass an array of objects, each containing the following parameters: Parameter Type Required Description *id* string yes The ID of the post to pin to the collection *position* integer no The numeric position in which to pin the post. Will pin at end of list if no parameter is given. ### Returns A `200` at the top level for all valid, authenticated requests. `data` contains an array of response envelopes: each with `code` and `id`, plus `error_msg` on failure for any given post. ## Unpin a Post from a Collection ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") err := c.UnpinPost(&writeas.PinnedPostParams{ ID: "rf3t35fkax0aw", }) ``` ``` curl "https://write.as/api/collections/new-blog/unpin" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X POST \ -d '[{"id": "rf3t35fkax0aw"}]' ``` ``` let client = WFClient(for: "https://write.as") client.unpinPost(token: "00000000-0000-0000-0000-000000000000", postId: "rf3t35fkax0aw", from: "new-blog") { result in switch result { case .success(): // Notify the user that the post was unpinned successfully case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": [ { "id": "rf3t35fkax0aw", "code": 200 } ] } ``` This unpins a blog post from a collection. It'll remove the navigation item from the collection/blog home page header and put the post back on the blog itself. ### Definition `POST /api/collections/{COLLECTION_ALIAS}/unpin` ### Arguments Pass an array of objects, each containing the following parameters: Parameter Type Required Description *id* string yes The ID of the post to unpin from the collection ### Returns A `200` at the top level for all valid, authenticated requests. `data` contains an array of response envelopes: each with `code` and `id`, plus `error_msg` on failure for any given post. ## Users Users have posts and collections associated with them that can be accessed across devices and browsers. *WriteFreely* use always requires a registered account. *Write.as* doesn't require an account to interact with it. Here, accounts provide useful functionality impossible or difficult to implement client-side. It does come with the trade-off of anonymity for pseudonymity. However, Write.as is also set up to work well pseudo- and anonymously at the same time. If your client performs actions on behalf of a user, simply send the `Authorization` header for user actions and leave it off for anonymous requests, saving any published posts' `token` like normal. Posts published anonymously can still be synced at any time, or never synced to ensure an account isn't associated with posts a user doesn't want to be associated with. ## Authenticate a User ``` c := writeas.NewClient() u, err := c.LogIn("matt", "12345") ``` ``` curl "https://write.as/api/auth/login" \ -H "Content-Type: application/json" \ -X POST \ -d '{"alias": "matt", "pass": "12345"}' ``` ``` let client = WFClient(for: "https://write.as") client.login(username: "matt", password: "12345") { result in switch result { case .success(): // Do something with the returned WFUser case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": { "access_token": "00000000-0000-0000-0000-000000000000", "user": { "username": "matt", "email": "matt@example.com", "created": "2015-02-03T02:41:19Z" } } } ``` Authenticates a user with WriteFreely, creating an access token for future authenticated requests. Users can only authenticate with their primary account, i.e. the first collection/blog they created, which may or may not have multiple collections associated with it. ### Definition `POST /api/auth/login` ### Arguments Parameter Type Required Description *alias* string yes The user's username / alias. *pass* string yes The user's password. ### Returns A user access token and the authenticated user's full data. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 401, "error_msg": "Incorrect password." } ``` Error Code Meaning 400 Request is missing required information, or has bad form data / JSON. 401 Incorrect information given. 404 User doesn't exist. 429 You're trying to log in too many times too quickly. You shouldn't see this unless you're doing something bad (in which case, please stop that). ## Log User Out ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") err := c.LogOut() ``` ``` curl "https://write.as/api/auth/me" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -X DELETE ``` ``` let client = WFClient(for: "https://write.as") client.logout(token: "00000000-0000-0000-0000-000000000000") { result in switch result { case .success(): // Notify the user that they were logged out successfully case .failure(let error): // Do something with the returned WFError } } ``` > A successful deletion returns a `204` with no content in the body. Un-authenticates a user with WriteFreely, permanently invalidating the access token used with the request. This is important for keeping accounts secure, so that users keep access to their account limited to as few devices as possible. /Always/ consider building this functionality into your WriteFreely clients. ### Definition `DELETE /api/auth/me` ### Returns A `204` status code and no content in the body. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 404, "error_msg": "Token is invalid." } ``` Error Code Meaning 400 Request is missing an access token / Authorization header 404 Token is invalid. ## Retrieve Authenticated User ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl "https://write.as/api/me" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X GET ``` ``` let client = WFClient(for: "https://write.as") client.getUserData(token: "00000000-0000-0000-0000-000000000000") { result in switch result { case .success(): // Do something with the returned WFUser case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": { "username": "matt" } } ``` ### Definition `GET /api/me` ### Arguments None. ### Returns An authenticated user's basic data. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 401, "error_msg": "Invalid access token." } ``` Error Code Meaning 401 Access token is invalid or expired. ## Retrieve User's Posts ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") p, err := c.GetUserPosts() ``` ``` curl "https://write.as/api/me/posts" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X GET ``` ``` let client = WFClient(for: "https://write.as") client.getPosts(token: "00000000-0000-0000-0000-000000000000") { result in switch result { case .success(let posts): // Do something with the returned WFPost array case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": [ { "id": "7xe2dbojynjs1dkk", "slug": "cool-post", "appearance": "norm", "language": "en", "rtl": false, "created": "2017-11-12T03:49:36Z", "updated": "2017-11-12T03:49:36Z", "title": "", "body": "Cool post!", "tags": [], "views": 0, "collection": { "alias": "matt", "title": "Matt", "description": "My great blog!", "style_sheet": "", "public": true, "views": 46 } }, { "id": "rf3t35fkax0aw", "slug": null, "appearance": "norm", "language": "", "rtl": false, "created": "2016-07-09T01:43:46Z", "updated": "2016-07-09T01:43:46Z", "title": "My First Post", "body": "This is a post.", "tags": [], "views": 0 } ] } ``` ### Definition `GET /api/me/posts` ### Arguments None. ### Returns An array of the authenticated user's posts, including anonymous and collection posts. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 401, "error_msg": "Invalid access token." } ``` Error Code Meaning 401 Access token is invalid or expired. ## Retrieve User's Collections ``` c := writeas.NewClient() c.SetToken("00000000-0000-0000-0000-000000000000") colls, err := c.GetUserCollections() ``` ``` curl "https://write.as/api/me/collections" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X GET ``` ``` let client = WFClient(for: "https://write.as") client.getUserCollections(token: "00000000-0000-0000-0000-000000000000") { result in switch result { case .success(let collections): // Do something with the returned WFCollection array case .failure(let error): // Do something with the returned WFError } } ``` > Example Response ``` { "code": 200, "data": [ { "alias": "matt", "title": "Matt", "description": "My great blog!", "style_sheet": "", "public": true, "views": 46, "email": "matt-7e7euebput9t5jr3v4csgferutf@writeas.com", "url": "https://write.as/matt/" } ] } ``` ### Definition `GET /api/me/collections` ### Arguments None. ### Returns All of an authenticated user's owned collections. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 401, "error_msg": "Invalid access token." } ``` Error Code Meaning 401 Access token is invalid or expired. ## Retrieve User's Channels ``` // Currently unsupported in the Go client. // Use curl command or contribute at: // https://github.com/writeas/writeas-go ``` ``` curl "https://write.as/api/me/channels" \ -H "Authorization: Token 00000000-0000-0000-0000-000000000000" \ -H "Content-Type: application/json" \ -X GET ``` ``` // Not yet implemented in the Swift package. Contribute at: // https://github.com/writefreely/writefreely-swift ``` > Example Response ``` { "code": 200, "data": [ { "id":"twitter", "name":"Twitter", "username":"ilikebeans" }, { "id":"mastodon", "url":"writing.exchange", "name":"writing.exchange", "username":"matt" } ] } ``` ### Definition `GET /api/me/channels` ### Arguments None. ### Returns An array of the authenticated user's connected channels, or /integrations/. For channels that aren't a centralized service, like Mastodon, you'll also see a `url` property of the specific instance or host that the user has connected to. ### Errors Errors are returned with a user-friendly error message. ``` { "code": 401, "error_msg": "Invalid access token." } ``` Error Code Meaning 401 Access token is invalid or expired. ## Integrations *Supported only on Write.as* Write.as integrates with other services on the web to provide features like crossposting upon publishing a Write.as post. On the web, these are known as *channels*, and if you're logged in, they can be added [here](https://write.as/me/c/). ## Crossposting > Example `crosspost` Parameter ``` "crosspost": [ { "twitter": "writeas__" }, { "twitter": "ilikebeans" }, { "medium": "someone" }, { "tumblr": "example" } ] ``` *Supported only on Write.as* Crossposting is easy to do when publishing a new post. It requires authentication and at least one connected integration / channel on the web. Soon you'll be able to retrieve a user's connected accounts, so this may only be relevant to users posting from their own account for now. For the `crosspost` parameter on a new post, pass a JSON array of single-property objects. The object's sole property should be the ID of the integration you want to crosspost to (see below), and its value should be the user's connected username /on that service/. ID Integration twitter Twitter tumblr Tumblr medium Medium Missing something? Questions? Find us on [Slack](http://slack.write.as), [IRC](irc://irc.freenode.net/writeas), or [other places](https://write.as/contact) and ask us. [Write.as API Documentation](https://developers.write.as/docs/api/#retrieve-user-39-s-posts) # Mastodon 3.5 [image:B3A6C842-4DCE-4132-9DF4-28172BF3C02D-33186-000005377B406AAC/hero_hu5c6c89788d328afb36f34004c9648ac5_1614667_1200x0_resize_box_2.png] [image:40B264FD-C828-433C-84C5-8F83FF9F126D-33186-000005377B3EFB93/hero.png] Work on multiple features in this release has been kindly sponsored by the German Federal Ministry of Education and Research through the [Prototype Fund](https://prototypefund.de). We’ve added one of the most requested functions among our competitors, the ability to *edit posts*. Since older Mastodon versions would not understand the edits, the function is disabled in the web app until more Mastodon servers upgrade to 3.5, but all parts are already included in the release. The original and previous versions of the posts are saved and remain accessible through a history view. And people who have previously shared the post get notified about any edits, so they can un-share if there’s foul play. Coincidentally, the order of media attachments in a post is no longer dependent on the order in which they were uploaded. Discoverability has always been a hot topic on Mastodon. Discoverability makes or breaks a platform, as there is nothing more important to retain a new user than to let them find something interesting to stay for, as soon as possible. In 3.5, we bring a new *explore page* which features currently popular posts, news stories that people share a lot, trending hashtags and follow recommendations. Furthermore, for the first time, we attempt to bring people content in their own language. As we value safety, these new features come with their own moderation tools–nothing will show up in trends unless reviewed by one of the server’s moderators first. A *new, multi-step report flow* improves the quality of information for moderators and highlights available self-help tools in Mastodon to the user. On the topic of moderation, any action taken by a server moderator against a user’s account, such as deleting their posts or suspending the account, will now *be viewable through account settings*, by default accompanied by an e-mail notification, and permit the user to *submit an appeal*. Since actions such as deleting posts or marking posts as sensitive did not use to generate any kind of notification, this should make them more viable precursors to harsher punishments like suspensions; and being able to handle appeals within Mastodon should reduce the burden of out-of-band e-mail communication for moderators and increase user trust in Mastodon. There is a brand new *moderation dashboard* that shows the development of various key metrics over time and shines some light on where new users come from, which languages they speak, and how many of them stay active months later. A completely *new look for the report screen* reduces the time and effort required to handle reports, and multiple selections on the accounts page offer a way to *clean up spam and bot accounts in large batches*. ### Conclusion The 3.5 release consists of *887 commits* by *23 contributors* between June 3, 2021 and March 30, 2022. For line-by-line attributions, you can peruse the [changelog file](https://github.com/mastodon/mastodon/blob/v3.5.0/CHANGELOG.md), and for a historically complete list of contributors and translators, you can refer to the [authors file](https://github.com/mastodon/mastodon/blob/v3.5.0/AUTHORS.md), both included in the release. *Contributors to this release*: Gargron, ClearlyClaire, tribela, noiob, mayaeh, mashirozx, noellabo, baby-gnu, MitarashiDango, chandrn7, Brawaru, aquarla, zunda, rgroothuijsen, ykzts, HolgerHuo, helloworldstack, r0hanSH, kgtkr, heguro, matildepark, weex, truongnmt *Translators for this release*: Kristaps_M, Cyax, Sveinn í Felli, Kimmo Kujansuu, Jeong Arm, xatier, Thai Localization, spla, NCAA, Emanuel Pina, GunChleoc, Xosé M., Hồ Nhất Duy, T. E. Kalaycı, ケインツロ space_invader, e, Jeff Huang, Besnik_b, Nurul Azeera Hidayah @ Muhammad Nur Hidayat Yasuyoshi, koyu, Ramdziana F Y, calypsoopenmail, Alessandro Levati, Bran_Ruz, Tigran, Allen Zhong, Daniele Lira Mereb, Zoltán Gera, Martin, Gearguy, Marek Ľach, Eshagh, Asier Iturralde Sarasola, Takeçi, Roboron, Ihor Hordiichuk, xpil, Tagomago, Rojdayek, Ondřej Pokorný, Kristoffer Grundström, Alexander Sorokin, Joene, ButterflyOfFire, Balázs Meskó, Catalina, Manuel Viens, LNDDYL, Danial Behzadi, Vik, GCardo, enolp, NadieAishi, Just Spanish, bilfri, VaiTon, Frontier Translation Ltd., Mastodon 中文译者, rondnunes, Edward Navarro, ClearlyClaire, Kahina Mess, GiorgioHerbie, ManeraKai, හෙළබස, retiolus, stan ionut, Filbert Salim, ahangarha, Rex_sa, Sokratis Alichanidis, axi, Delta, Ali Demirtaş, Michael Zeevi, SarfarazAhmed, Mo_der Steven, Remito, Maya Minatsuki, Врабац, Dženan, FreddyG, Alix Rossi, cruz2020, Adrián Graña, vpei, Ryo, AlexKoala, 1Alino, Michał Sidor, Vedran Serbu, Yi-Jyun Pan, Y.Yamashiro, al_._, Matthías Páll Gissurarson, KcKcZi, xsml, cybergene, mynameismonkey, Rikard Linde, strubbl, 北䑓如法, Hexandcube, abidin toumi, serapolis, Diluns, 游荡, megaleo, arielcostas3, sanser, Imre Kristoffer Eilertsen, Yamagishi Kazutoshi, MODcraft, Marcus Myge, Yuval Nehemia, Amir Reza, Percy, Marek Ľach, Nemuj, revarioba, Oymate, Ifnuth, 森の子リスのミーコの大冒険, Algustionesa Yoshi, Artem Mikhalitsin, gnu-ewm, Tatsuto “Laminne” Yamamoto, filippodb, Maciej Błędkowski, tunisiano187, Timur Seber, Mélanie Chauvel, Jona, Ka2n, atriix, eorn, Lagash, Chine Sebastien, Exbu, A A, Goudarz Jafari, Cirelli, ギャラ, siamano, Siddharastro Doraku, asnomgtu, Saederup92, damascene, dbeaver, Overflow Cat, rikrise, zordsdavini, ThonyVezbe, Slimane Selyan AMIRI, coxde, Maxine B. Vågnes, tzium, Umi, Youngeon Lee, Nikita Epifanov, DAI JIE, X.M, ZQYD, v4vachan, boni777, Rhys Harrison, Stanisław Jelnicki, iVampireSP, nua_kr, SteinarK, Paula SIMON, CloudSet, Adam Sapiński, Zlr-, papayaisnotafood, Linnéa, Parodper, César Daniel Cavanzo Quintero, Artem, EzigboOmenana, Mt Front, mkljczk, Lalo Tafolla, Yassine Aït-El-Mouden, frumble, ronee, lokalisoija, Jason Gibson, María José Vera, codl, Tangcuyu, Lilian Nabati, Kaede, mawoka-myblock, Mohd Bilal, Ragnars Eggerts, thisdudeisvegan, liffon, Holger Huo, Pukima, HSD Channel, pullopen, hud5634j, Patrice Boivin, Jill H., maksutheam, majorblazr, 江尚寒, Balázs Meskó, soheilkhanalipur, Vanege *Thank you* to everyone who contributed to this release, to [everyone who sponsors the project](https://joinmastodon.org/sponsors) through [Patreon](https://patreon.com/mastodon) or through [our new sponsors portal](https://sponsor.joinmastodon.org), and to everyone who uses the network! 🐘 [image:BCE3269C-1801-4017-9BFC-A22D76EC4F1B-33186-000005377B3D29AE/ios.png] Mastodon for iOS *P.S.* We just released a new version of our [official iOS app](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974), adding iPad support and many visual improvements, and just started [beta-testing our official Android app](https://www.patreon.com/posts/mastodon-for-64413994) with our Patreon supporters. — Eugen Rochko , Mar 30, 2022 [Mastodon 3.5](https://blog.joinmastodon.org/2022/03/mastodon-3.5/) # Introducing Automation April: A Month-Long Community Event About Automation, Featuring Shortcuts, Interviews, Discord Workshops, and a Shortcut Contest [image:A16975A7-96A8-48D5-814B-C686B2D3C9FA-32495-0000052A3E1AB86C/banner-1648761121075.png] Welcome to Automation April. Over the past decade, MacStories has become the hub for all kinds of user automation. Starting with [URL schemes](https://www.macstories.net/tag/url-scheme/), then [Workflow](https://www.macstories.net/tag/workflow/), and eventually [Shortcuts](https://www.macstories.net/tag/shortcuts/), we’ve created hundreds of shortcuts for MacStories readers and [Club members](https://club.macstories.net/plans) and published stories about automation that have been read by millions of people around the world. With the [MacStories Shortcuts Archive](https://www.macstories.net/shortcuts/), launched [three years ago](https://www.macstories.net/news/introducing-the-macstories-shortcuts-archive-a-collection-of-150-custom-shortcuts-for-apples-shortcuts-app/), we unified our catalog of free shortcuts in a single gallery; with the [arrival of Shortcuts on macOS](https://www.macstories.net/news/shortcuts-for-mac-the-future-is-now/), we’ve expanded our Mac coverage for Club members and launched [a new column](https://club.macstories.net/filter/v1-31) and [Discord channel](https://club.macstories.net/faq/discord) all about automation. I love automation because of what it stands for: giving users – the people – the power to fully control their computer and make it more efficient. To make it truly their own. This is why I’ve been writing about the Shortcuts app for years and why I’ve always believed in it as the future of automation on Apple platforms: it’s the [software equivalent of a bicycle for the mind](https://www.macstories.net/stories/ios-12-the-macstories-review/16/). For this reason, I’m absolutely thrilled to introduce *Automation April*, a month-long showcase of automation on Apple platforms by us, developers, and MacStories readers – with a focus on Shortcuts. For the entire month of April, we will cover automation and Shortcuts – even more than we normally do – on every property of the extended MacStories universe. There will be shortcuts and articles on MacStories; we will post Automation April-themed episodes of [AppStories](https://appstories.net/); there will be special content in [MacStories Weekly](https://club.macstories.net/) and [AppStories+](https://appstories.net/plans) for Club members; we will host special ‘Town Hall Workshops’ and a dedicated Automation April channel in our [Discord community](https://club.macstories.net/faq/discord). But there’s more: In /addition/ to all of the above, *we are launching a contest* to pick the best shortcuts submitted by MacStories readers for Automation April. [image:D314F0BD-696D-41DE-9DB8-DB462DDE7132-32495-0000052A3E1989F5/kolide-logo-square-1648574900679.png] *[Kolide](https://l.kolide.co/3IRZLQW)*: Endpoint Security Powered by People; Try for Free! Starting Monday, April 4th, until Wednesday, April 20th, we will be accepting *up to two shortcut entries per user* via a dedicated Automation April website. The contest will be open to everyone with a *free* MacStories account (more on this below). We’ve also assembled a panel of Shortcuts experts who, alongside the MacStories team, will judge shortcuts submitted by people. Oh, and we’re giving away an Elgato [Stream Deck XL](https://www.elgato.com/en/stream-deck-xl) and an [Analogue Pocket](https://www.analogue.co/pocket) for the Best Overall Shortcut prize. Yep, you read that right. April has always been a special month for MacStories: the site turns 13 (!) on April 20th, and this isn’t the first time we’ve organized a special event to celebrate our community. But with Automation April, we’ve prepared the biggest event we’ve ever done that will encompass every single aspect of the MacStories family – from the articles you know and love to Discord, the Weekly newsletter, and a brand new community contest. The next four weeks are going to be fun. So let’s dive in and let me give you an overview of what you can expect from the first edition of Automation April. ## The Contest Thanks to Club MacStories, AppStories listeners, and MacStories readers, over the years we’ve been able to witness the creativity and ingenuity of incredibly passionate Shortcuts users. There is a thriving community of Shortcuts creators out there – folks with different backgrounds who are constantly coming up with new ideas to automate, speed up, and customize Apple devices through Shortcuts. With the Automation April Shortcuts Contest, we want to put the spotlight on the creator community by celebrating the most impressive shortcuts we’ll receive via *free and open submissions*. We will post the full set of rules and instructions when the contest kicks off on Monday, April 4th. But here’s what you can expect: This year, we’ll be evaluating shortcuts across four different categories: * Best productivity shortcut * Best media shortcut * Best HomeKit shortcut * Best Mac-specific shortcut There will be prizes specific to winners of individual categories, which we’ll reveal on Monday. Additionally, we’ll pick a Best Overall Shortcut winner – the one shortcut that will impress us the most. The winner of the best shortcut, in addition to glory and some other perks, will take home a brand new Elgato Stream Deck XL and Analogue Pocket console. [image:DD6F26F7-AE99-4405-962C-BDE6B81E54DD-32495-0000052A3E188C01/img_7856-1648810193804.jpeg] The sealed Analogue Pocket portable console we’ll send to the winner of the Best Overall Shortcut. So how will we evaluate shortcuts submitted by people? We’ve assembled a team of Shortcuts experts (including the three of us at MacStories) to help us curate, test, and judge submitted shortcuts. I’m /very/ excited about the group of people who have agreed to help us, especially since each of them has their own area of expertise when it comes to Shortcuts and automation. The judges of the Automation April Shortcuts Contest are: I’m also very happy about the system we’ve put in place for submitting shortcuts. On Monday, we’ll launch a dedicated web app to submit and edit your entries, which will be powered by [our Calliope technology](https://www.macstories.net/news/deeper-on-calliope-our-new-web-app-for-club-macstories-and-appstories/) [1](https://www.macstories.net/stories/introducing-automation-april/#fn-69347-1). Since Calliope also powers both the Club and AppStories websites, existing members will be able to seamlessly sign into the new web app with their existing accounts. And because Automation April is for /all/ MacStories readers, we’re also *launching a new type of free MacStories account* so anyone can submit shortcuts to the new web app. Free accounts can be upgraded to paid Club MacStories accounts at any time, instantly granting access to everything we do. Look for instructions on all of this on Monday. [image:2271ED50-3C64-4513-9053-423B72836F8B-32495-0000052A3E1775EF/friday-01-apr-2022-00-34-01-1648766046304.png] A preview of our upcoming web app to submit entries for the Automation April Shortcuts Contest. To reiterate: whether you have an existing paid Club MacStories account /or/ want to sign up for free, everyone will be able to participate in the Automation April Shortcuts Contest. The contest is likely going to be the most popular and fun aspect of Automation April; it’s something we’ve never done before, and we can’t wait to see what Shortcuts creators will come up with. So, if you’re interested in participating, start thinking about one or two shortcuts you’d like to submit (they don’t have to be new ones exclusive to this event). The Automation April Shortcuts Contest kicks off on Monday. ## New and Original Content on MacStories [image:4F3A5495-A98C-4189-9758-DFC336EA6982-32495-0000052A3E165122/cleanshot-2022-04-01-at-12-43-01-2x-1648766591614.png] Some of the shortcuts I’ll be sharing on MacStories during Automation April. It wouldn’t be a MacStories event about Shortcuts and automation without fresh content to go along with it. And I’m happy to say that, since we started working on Automation April last November, we’ve prepared a great lineup of articles and shortcuts to share with everyone on MacStories throughout the month of April. Obviously, I don’t want to spoil the entire slate of MacStories content we’ve prepared in advance. So I’ll just share two things you’ll find on MacStories as part of Automation April. I will be releasing *30 shortcuts* for free on MacStories across three weeks. These shortcuts span all kinds of categories and levels of complexity: there will be shortcuts that take advantage of [new features in iOS 15.4](https://www.macstories.net/stories/ios-and-ipados-15-4-hands-on-with-universal-control-face-id-with-a-mask-and-more/) for Translate and Live Text; there will be Mac-specific shortcuts; there will be shortcuts comprised of just a few actions that do one thing well and others that will be a bit more complex. All of them will be released for free on the [MacStories Shortcuts Archive](https://www.macstories.net/shortcuts/); look for the first installment with 10 shortcuts early next week. John also has quite a few shortcuts and stories planned for MacStories. The one I’m most intrigued to see out in the wild is his custom Watch Later system – a Shortcuts and [Hazel](https://www.noodlesoft.com/) -based automation for creating a virtual music video channel on Apple TV. I know he’s been working on this for months, and I can’t wait to see it in action. This is just a small taste of what you can expect for Automation April on MacStories. Plus, you know us and how we operate: we’ll be saving some surprises for later in the month. ## MacStories Weekly and Other Club Perks [image:17EF899C-8477-467D-B692-2E812DF469E2-32495-0000052A3E154802/cleanshot-2022-04-01-at-12-50-19-2x-1648767030188.png] Look for plenty of Shortcuts coverage in MacStories Weekly for Automation April. Naturally, free shortcuts and articles on MacStories will be complemented by exclusive premium shortcuts, stories, and app giveaways for our Club members. Starting with next week’s issue of MacStories Weekly, Club members will get access to a series of Automation April-themed shortcuts and columns. For instance, I’ll be sharing a shortcut that has allowed me to build a read-later system in Obsidian; then, both John and I will share the details of our Shortcuts setups and how we’ve configured the Shortcuts widget on our devices. We’ll share more details around Club content for Automation April later on. Furthermore, in addition to exclusive shortcuts and stories, we’ll also feature a series of giveaways in MacStories Weekly thanks to indie developers who teamed up with us for Automation April. ## Special AppStories Episodes and AppStories+ [image:D3AA5380-433E-4D47-B102-CE60F63DA27F-32495-0000052A3E14208F/friday-01-apr-2022-00-47-05-1648766831707.png] The AppStories website and AppStories+ in Overcast. But what about the podcast? We’ve got that covered, too. For the month of April, we’ll be releasing special [AppStories](https://appstories.net/) episodes with a focus on specific Shortcuts topics and interviews with developers of apps that integrate with Shortcuts and fellow Shortcuts creators. Our goal, as always, is to rely on AppStories to expand the conversation around articles on MacStories as well as highlight different voices in our community. Automation April will also be the focus of the exclusive pre-show segments of AppStories+. In case you’re not familiar with it, AppStories+ is [a premium version of AppStories](https://appstories.net/plans) that is ad-free, comes with an additional segment, and is released in high-bitrate audio one day early for members. You can subscribe to it standalone or get it as part of the all-access pass that is a [Club Premier subscription](https://appstories.net/plans/premier). ## Discord Community: Dedicated Channel and Workshops [image:5184A0F7-19DA-4497-B2A6-4131F0A7AF9D-32495-0000052A3E12610B/cleanshot-2022-03-31-at-11-57-42-2x-1648763872798.png] The Club MacStories Discord server. The place where all of the above comes together is our [Discord](https://club.macstories.net/faq/discord) community for Club MacStories+ and Premier subscribers. We have big plans when it comes to integrating our Discord community with Automation April’s festivities, and I’m excited to kick things off in Discord /today/. For starters, we’re launching a dedicated channel on Discord where members will be able to share tips, discuss Shortcuts techniques, help out others (if they’re up for it!), and talk about their submitted contest entries. I’ll also be spending time in the channel to chat with members and provide guidance along the way, whenever possible. My personal goal is to turn this contest into a healthy competition that is openly discussed and that can serve as a learning opportunity for others, which is in the spirit of user automation and Shortcuts. Along those lines, we will be hosting *two special Town Hall Workshops* on Discord where I’ll talk about advanced Shortcuts techniques, answer questions from the audience live, and explain how I come up with ideas for my shortcuts. We see these workshops as a way for Discord members to learn how to design shortcuts for others and, hopefully, get some inspiration for shortcuts they’d like to submit as part of the contest. Lastly, our Discord server is also where weekly raffles will take place. We’ll share more details on these raffles later, but, suffice to say, you can expect a variety of giveaways exclusive to Discord members that will include app promo codes, extensions of Club accounts, and more. I can’t wait to see contest participants and readers interested in Automation April on our Discord. To get started and join our server, you can sign up for or upgrade your existing Club MacStories account to Plus or Premier [here](https://club.macstories.net/plans). ## Welcome to Automation April So that’s *Automation April*: a month-long celebration of automation on Apple platforms with a focus on Shortcuts, encompassing everything we do at MacStories, and with a brand-new community and contest to go along with it. Our goal is to turn Automation April into a new annual tradition in our community of people who work on Apple devices and want to get more out of them. We want April to become “automation month”, which is why we’re already saving ideas for what we want to achieve in Automation April /2023/. But one step at a time. Welcome to Automation April. I’ll see you on Monday to kick off the contest and our other initiatives. Happy automating! [Introducing Automation April: A Month-Long Community Event About Automation, Featuring Shortcuts, Interviews, Discord Workshops, and a Shortcut Contest](https://www.macstories.net/stories/introducing-automation-april/) # Re: screaming From: r w To: davidblue@extratone.com Date: Apr 2, 2022 Subject: Re: screaming Lately it’s been difficult to find adequate distraction, I’ve actually become disenchanted with the internet in particular which is part of why I was so enthusiastic about your site. I had been a bit worried about the inclusion of that sentiment- the not-caring- because that kind of casual negativity can make for a good repellant. Anyway yes! I love your site! Both the content and the.. “features” (that word makes me want to gag). I haven’t had enough time to go through it as much as I’d like but I’m looking forward to doing so. Hypothesis is so cool, people are missing out. ~Apology Interlude~ I feel like I’m either loquacious or laconic and never the proper amount in between and if you are finding that to be the case I am sorry, my communication skills have really eroded. I enjoyed reading that interview, a lot of what you said resonated with me, especially the issue of consolidating interests. RegEx is fun!! You can do it!! I really want to make a syntax that’s similar to markdown in that it’s a kind of shorthand that gets compiled into something else, just for fun. I just realised that before I even had much of an idea of what markdown was I was already using it, in a way. I was heavily involved in an IRC server a few years ago and a component of that server is a custom syntax which one can use to publish webpages, for example a pipe preceding an image url creates markup upon publication. That’s the sort of thing I want to try. I have at least three tabs from Tim’s webpage open on my computer, I really like his journaling related actions. Ah thank you, that’s kind of you to say. What would you say your medium is, then? I haven’t shot 110, no, I was actually under the impression it had been discontinued but I see now that I was wrong, which is great. I’d love to take the cameras off of your hands, but only if you’re certain. They could be good motivation to take pictures again, I’m always toying with the idea while simultaneously lamenting that it is “too late.” My main gripe with photography is that I think photos of people are usually more interesting that photos of other subjects but, for a variety of factors, I’ve only ever had myself to use as a model (apart from a few rare occasions) which is frustrating and feels limiting. My address is: Rebecca Williams 409 W. 38th St Apt 305 Austin, TX 78705-1348 As an aside, I accidentally imported your vcf and noticed that it immediately makes your address known. I’ve had mine [here](http://jollo.org/LNT/home/thorns/trash/mail.html) for ages and have not known anyone else (but I’m sure they’re out there!) as casual about it.. until now. Sorrythiswassolongandsentwithoutanykindofproofreading. On Saturday, April 2, 2022, davidblue@extratone.com wrote: > That last sentence! Oof! I feel it. I’ve been unable to care about things like I used to for 7 years now and have definitely constructed an elaborate series of distractions (including configuration, no doubt) to keep myself occupied. I have to say - your reply is the sort one fantasizes about getting in reaction to something like The Psalms, but doesn’t expect. *Nobody* has every said anything about Hypothesis. You have delighted me very much. > > As far as syntaxes go, I, too discovered Markdown pretty late in life. These days, I usually [tell people it saved my life](https://write.as/community/chat-with-david-blue). In Drafts, I stay in MultiMarkdown - though I have all the syntaxes in the Directory (my install is basically a mirror of the Directory at this point lol) - mostly because of the way fonts are rendered. It’s hard to explain but if you try the others, you’ll see it. I have wanted to [develop my own Drafts Syntax](https://docs.getdrafts.com/docs/extending/development/syntax-format) for a long time, but it remains the one bit of Drafts development completely out of my grasp, largely because I do not understand Regex in the slightest lol. Tim Nahumck - who you should definitely [read](https://nahumck.me/?s=drafts) on your Drafts Journey - made [Draftsdown](https://actions.getdrafts.com/s/1hm), which is the most apt candidate to replace MultiMarkdown imo. > > I explored your photography! You have reminded me in a big way how capture can be expressive, and how much more intimate such expression is, fundamentally, than that within the medium I’m relegated to. I can’t remember the last time poking around a website of photosets got me to stop everything and actually *see* instead of just looking. It was stirring. That said, I have a question. Have you ever had the opportunity to shoot in 110? Somewhere in my stuff I have two quite pristine Minolta 110 cameras - one of which I managed to find in *actually new* condition and have never used. It’s the same model as the camera in [this Instagram post](https://www.instagram.com/p/BbVvUc0lxAv). Minolta did this line of cameras in the late 70s-80s under the marque “Weathermatic.” They’re bright yellow and water/shock resistant. When I lived in Portland, I briefly indulged the idea of becoming the world’s foremost Weathermatic collector but it didn’t last long lol. I also have the 35mm, which isn’t quite as cute, but [makes for a pretty great point-and-shoot](https://www.flickr.com/gp/davidblue/86gn6Y). > > Anyway, I was just thinking: assuming I can find them, I would very much like to send you these cameras, if you’d be interested. You’d be doing me a favor - their remaining function in my life is only to make me feel guilty for not using them. It’s been like 3 years, now. > > David Blue+1 (573) 823-4380 bilge.world > On Apr 1, 2022, 11:52 -0500, r w , wrote: > > i've actually found myself moving away from Spark back to web-based clients because seeing all of the emails from all of my accounts aggregated in one place like that is, quite frankly, terrifying! i am in the early stages of Drafts Addiction and loving every minute of it. i find myself sneaking away to the bathroom at work so i can lock myself in a stall and work on actions and such.. there are few greater joys in life than c o n f i g u r i n g if you ask me. what is your Drafts syntax of choice? once upon a time i scoffed at markdown but now i've realised the error of my ways and delight in the pleasures of multimarkdown. > > > > thank you! not to be obsequious but your website is a dream. i highlighted something on the page and was stunned to see a hypothesis popover. "Apple Rag" is so amusingly apt; your posts remind me of the things i used to be interested in before i stopped being interested in everything, it's real nice. > > > > > On Thu, Mar 31, 2022 at 2:38 PM davidblue@extratone.com wrote: > > > > lmao hey! thank you for reaching out - I’m pleased I actually caught your email (I switched from Outlook to Spark almost a year ago and still feel lost in it most of the time.) also actively in need of folks to talk about Drafts with so ya know… please do hmu any time. I’ve spent too much time c o n f i g u r i n g this year and basically don’t know what else to do, now, beyond talking/writing about what I’ve configured lol. > > > > > > > > that’s a top-10 email address btw. :) > > > > > > > > David Blue+1 (573) 823-4380 bilge.world > > > > On Mar 31, 2022, 12:27 -0500, r w , wrote: > > > > > hi, > > > > > > > > > > i stumbled upon your github while browsing the net for drafts actions and wanted to say that i too have (often) found myself using "screaming" as my git commit message. :) > > > > > > > > > > > > > > > -- > > > > > tangled-thorns . net [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOkNBSnhHZ25lbU95K0RKPVNy%0D%0AUTJpcD1mUG40dzhKdVU3MnJpVmoycWdpQk1nUEZaRGlIUUBtYWlsLmdtYWlsLmNv%0D%0AbTs0MzI2NDIxNjQ%3D) # MacStories Weekly: Issue 314 *In this issue:* Typewriter, a tip from Federico about rescheduling reminders to a specific day using GoodTask, an interview with Mario Guzman about Music Widget and other projects, Robb Knight’s videogame setup, a MenuBar Stats giveaway, an all-new episode of MacStories Unplugged, plus the usual Links, App Debuts, the latest happenings in the Club MacStories+ Discord community, a recap of MacStories articles, and a preview of upcoming MacStories podcast episodes. [MacStories Weekly: Issue 314](https://club.macstories.net/posts/macstories-weekly-issue-314) # Re: screaming From: r w To: davidblue@extratone.com Date: Apr 1, 2022 Subject: Re: screaming i've actually found myself moving away from Spark back to web-based clients because seeing all of the emails from all of my accounts aggregated in one place like that is, quite frankly, terrifying! i am in the early stages of Drafts Addiction and loving every minute of it. i find myself sneaking away to the bathroom at work so i can lock myself in a stall and work on actions and such.. there are few greater joys in life than c o n f i g u r i n g if you ask me. what is your Drafts syntax of choice? once upon a time i scoffed at markdown but now i've realised the error of my ways and delight in the pleasures of multimarkdown. thank you! not to be obsequious but your website is a dream. i highlighted something on the page and was stunned to see a hypothesis popover. "Apple Rag" is so amusingly apt; your posts remind me of the things i used to be interested in before i stopped being interested in everything, it's real nice. > On Thu, Mar 31, 2022 at 2:38 PM davidblue@extratone.com wrote: > > lmao hey! thank you for reaching out - I’m pleased I actually caught your email (I switched from Outlook to Spark almost a year ago and still feel lost in it most of the time.) also actively in need of folks to talk about Drafts with so ya know… please do hmu any time. I’ve spent too much time c o n f i g u r i n g this year and basically don’t know what else to do, now, beyond talking/writing about what I’ve configured lol. > > > > that’s a top-10 email address btw. :) > > > > David Blue+1 (573) 823-4380 bilge.world > > On Mar 31, 2022, 12:27 -0500, r w , wrote: > > > hi, > > > > > > i stumbled upon your github while browsing the net for drafts actions and wanted to say that i too have (often) found myself using "screaming" as my git commit message. :) > > > > > > > > > -- > > > tangled-thorns . net [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOkNBSnhHZ25mVnNQYThtS3h0%0D%0AYmpkVEtKN1VBd25yNXMteW55WnFPTzFaaVFBcmNnWjFZUUBtYWlsLmdtYWlsLmNv%0D%0AbTsxOTUxNDQwMjky) # Transferring Files with SSH [image:64285B7F-8E4A-4B58-80DF-9E53DBB3C956-4249-0000018FC64FFEAC/cropped-NewShebang-2.png] So far in this series of posts on `ssh` on macOS: > Please consider supporting Scripting OS X [by buying one of my books!](https://scriptingosx.com/books) In the previous posts we looked how to connect with `ssh` to a remote computer (host) and how to setup the keys necessary for a secure connection. Despite the name `ssh` does not actually provide a shell or command line interface to the host itself. it ‘merely’ provides a secure connection to connect to the default shell on the host itself. Even this basic use of `ssh` is already very useful and powerful. It allows to open one or more full command line sessions to remote computers as if we sat at their keyboard. You can also send individual commands and receive and process the results. However, `ssh` has a few more powerful tools available. ## Copy Files Remotely You can also use the `ssh` connection to copy files to and from a remote host. The command you use for this is `scp` (secure copy) and it use the same basic syntax as the `cp` command ``` $ scp source destination ``` But, since `scp` can copy from the local computer to a remote host or vice versa, you usually add a bit more information: ``` $ scp [[user@]host1:]source [[user@]host2:]destination ``` (The examples will use a file name `hello.txt`. To create one quickly, simply type `echo "Hello SSH" > hello.txt` in Terminal.) To simplify this, a few examples: ``` $ scp hello.txt mac.example.com:"~/Documents/" hello.txt 100% 10 10.8KB/s 00:00 ``` This will copy the local file `sample.txt` from the current working directory to the remote host’s `~/Documents/` directory. `scp` will show an ascii progress bar for every file copied. (though with these small files, you will not see much of it) You can suppress the progress display with the `-q` (quite) option. For the destination, the colon `:` separates the hostname (DNS) from the file path. This command will prompt for the user’s password on the remote host, unless you have added your public key to the remote host’s `authorized_keys` file. Since no user name is given before the hostname (separated with an `@` ) `scp` uses the username that you are logged in with on the local computer. If the remote user has a different name, use: ``` $ scp hello.txt user@mac.example.com:"~/Documents/" ``` We do /not/ want the local shell to evaluate the `~` to the /local/ home directory, but want the remote computer to evaluate `~` to the remote user’s home directory, so we have to quote the remote path. Like `cp`, when the source is a file and the destination is a directory, then the file will be placed into the destination directory. If the remote path does not exist, then `scp` will present an error: ``` $ scp hello.txt mac.example.com:"~/DoesNotExist/" scp: /Users/armin/DoesNotExist/: No such file or directory ``` You can also rename the file while copying: ``` $ scp hello.txt mac.example.com:"~/Documents/ssh_test.txt" ``` You can copy files from the remote host to your local machine: ``` $ scp mac.example.com:"~/Documents/ssh_test.txt" . ``` In this case we passed `.` or the current working directory as the destination. You can also pass a local path: ``` $ scp mac.example.com:"~/Documents/ssh_test.txt" ~/Downloads ``` Use the `-r` option to copy all the contents of a directory: ``` $ scp -r ~/Projects/greatproject/ mac.example.com:"~/Documents/" ``` ## Remote-to-remote Copies You can copy from one remote host to another. There are two solutions for this. The first will copy the file to the local computer and then back up to the other remote host. You invoke this version of remote-to-remote with the `-3` option. ``` $ scp -3 primus:"~/Documents/ssh_test.txt" secundus:"~/Documents/" ``` (I am shortening the full domain names from `primus.example.com` and `secundus.example.com` to `primus` and `secundus` for simplicity.) Under most circumstances copying a file down to your Mac and then back up to the other remote host is less than ideal. Imagine you are working from home with your laptop and want to copy a large file from one server at work to another. The other option is to tell the source remote host to `scp` the to the other remote host. You could achieve this by `ssh` ing to the remote machine and running `scp` from there. Thankfully, `scp` is smart enough to attempt exactly that when you type ``` $ scp primus:"~/Documents/ssh_test.txt" secundus:"~/Documents/" ``` This command will probably fail right now. It requires a few things to be set up to work: * either: client key authentication to be setup from `primus` to `secundus` * or: client key authentication from your local computer to `primus` and `secundus` with agent forwarding enabled The first option is fairly easy to understand. `scp` will connect to `primus` and authenticate with your local client key. Then it will tell `primus` to connect to `secundus`, authenticating using `primus` ’ client key and the copy the file. It basically works as if you `ssh` ed in to `primus` and ran `scp` without the extra typing. There are drawbacks to this. If `ssh-agent` is not running on `primus` and does not have the passphrase stored yet, then `primus` cannot unlock its private key and authenticate to `secundus`. Also you basically need to prepare all remote hosts to have keys exchanged between each other, which can be painful, if not impossible to manage. ## Agent Forwarding The second option, called ‘Agent Forwarding’, circumvents these problems. This will tell the first remote host ( `primus` ) to ask your local `ssh-agent` for a key to authenticate to `secundus`. The system does not actually transfer the private key, but asks `ssh-agent` on your local computer to encode the authentication challenge for `primus`. That way you only need to manage the keys for all remote hosts on your local computer. You can also use agent forwarding with normal `ssh` connections. It is not enabled by default, but you can enable it for an `ssh` session with the `-o ForwardAgent=yes` option: ``` $ ssh -o ForwardAgent=yes primus ``` Since this is hard to type, there is a shortcut: ``` $ ssh -A primus ``` When you are logged in to the remote host with agent forwarding enabled, you can then ssh from there to another remote host ( `secundus` ) and it will try to use the keys from your local computer’s `ssh-agent` to authenticate. ``` $ ssh -A primus Last login: ... primus$ ssh secundus Last login: ... secundus$ ``` This can be a useful strategy if direct access to the second remote host ( `other.mac.com` ) is blocked with firewalls. You can also use this for the `scp` remote-to-remote copy. Unfortunately, `scp` does not have a convenient `-A` option, so you have to use the long parameter form: ``` $ scp -o ForwardAgent=yes mac.example.com:"~/Documents/ssh_test.txt" other.example.com:"~/Documents/" ``` When you need agent forwarding regularly for a specific host, you can enable it by default for this particular host in your `~/.ssh/config` file. Add the following lines: ``` Host primus.example.com ForwardAgent yes ``` > Note: There [are some security concerns with agent forwarding](http://unixwiz.net/techtips/ssh-agent-forwarding.html#sec). A user with root access on the intermediate system can gain access to the connection to your local ssh-agent, thus gaining the ability to encrypt with your private keys. Be aware of this in security sensitive environments. ## SFTP If you have many files in a complex file structure , `scp` can be a little cumbersome. There is a special interactive mode that you can invoke with the `sftp` command (secure file transfer program). ``` $ sftp mac.example.com ``` Note: `sftp` (according to its man page) is ‘similar’ to `ftp` but not identical. It also should not be confused with `ftps` which is `ftp` over SSL. Obviously, if you have key authentication setup, `sftp` will use that. There are many interactive commands to navigate the local and remote file system and upload ( `put` ) and download ( `get` ) files. You can look at the details in the `sftp` man page. However, if you need to use `sftp` frequently, then you should use a graphical `sftp` application. There are a large number of SFTP client for macOS and iOS. Here is a list of some popular clients: (AppStore links are affiliate links.) All of these tools connect to many other server protocols other than `sftp`. However, the advantage of `sftp` is not just the built-in security, but that you don’t need other software than `sshd` running on the server. ## Summary Previous Post: [Client Verification](https://scriptingosx.com/2017/07/ssh-keys-part-2-client-verification/) * you can use `scp [[user@]host:]source [[user@]host:]destination` to copy files from or to a remote host over `ssh` * you can use agent forwarding to simplify key management in triangle setups * `sftp` help managing/transferring multiple files over `ssh`, there are many UI applications Next Post: [SSH Tunnels](https://scriptingosx.com/2017/07/ssh-tunnels/) [Transferring Files with SSH](https://scriptingosx.com/2017/07/transferring-files-with-ssh/) # A Lot Can Happen in a Decade • The Breakroom Whether you’re a developer who’s working on mobile apps, or just someone enjoying the millions of apps available for your phone, today is a very special day. It’s the ten year anniversary of the original iPhone SDK. I don’t think it’s an understatement to say that this release changed a lot of people’s lives. I know it changed mine and had a fundamental impact on this company’s business. So let’s take a moment and look back on what happened a decade ago. There are *a lot* of links in this piece, many of which were difficult to resurrect on today’s web. Make sure you take the time to explore! I’ve also tried to avoid technical jargon, so even if you don’t know your Swift from a hole in the ground, you can still follow along. ### Touching the Future For many of us, holding that first iPhone at the end of June 2007 was a glimpse of the future. We all wanted to know what was inside the glass and metal sitting in our pockets. Apple had told us [what the device could do](https://www.youtube.com/watch?v=TPL9L6bOCr0), but said [very little](https://www.youtube.com/watch?v=P-a_R6ewrmM&t=33m2s) about how it was done. We didn’t know anything about the processor or its speed, how much memory was available, or how you built apps. In many ways, this new device was a black, and silver, box. As developers, we wanted to understand [this device’s capabilities](https://furbo.org/2007/08/21/what-the-iphone-specs-dont-tell-you/). We wanted to understand [how our software design was about to change](https://furbo.org/2007/07/02/beyond-sweet/). We were curious and there was much to learn. And learn we did. We called it Jailbreaking. ### Breaking Out of Jail Discoveries happened quickly. It took just a matter of weeks before [the filesystem was exposed](https://www.engadget.com/2007/07/10/iphone-hackers-we-have-owned-the-filesystem/). A couple of months later, the entire native app experience was unlocked. Development [toolchains were available](http://landonf.bikemonkey.org/code/iphone/Toolchain_In_MacPorts.20070812.html) and folks were writing [installers for native apps](https://arstechnica.com/gadgets/2007/08/iphone-installer-and-new-guides-make-iphone-hacking-easier-than-ever/). [image:E1CA4B08-B238-4291-8A4A-0C2B53408F08-520-0000000539867AF4/Hello.jpg] The first iPhone app created outside of Apple. This rapid progress was made possible thanks to the tools used to build the original iPhone. Apple relied on the same infrastructure as Mac OS. They chose a familiar environment to expedite their own development, but that same familiarity allowed those of us outside Cupertino to figure things out quickly. [Hello world.](https://web.archive.org/web/20070911035418/http://iphone.fiveforty.net:80/wiki/index.php/UIKit_Hello_World) For example, much of the software on the iPhone was created using Objective-C. Mac developers had long used a tool called `[class-dump](http://stevenygard.com/projects/class-dump/)` to show the various pieces of an app and learn how things communicated with each other. After getting access to the first iPhone’s apps and frameworks, this software gave great insight into what Apple had written. The most important piece was a new thing called `UIKit`. It contained all the user interface components, like buttons and table views. Since they were similar to the ones we’d used on the Mac, it took little effort to make items for taps and scrolling. Another important piece of the puzzle was the operating system: [Unix](https://en.wikipedia.org/wiki/Mach_%28kernel%29). This choice by Apple meant that a lot of open source software was immediately available on our iPhones. We could use it to [build our apps](https://clang.llvm.org/docs/CrossCompilation.html), then [copy them](https://matt.ucc.asn.au/dropbear/dropbear.html) over to the phone, and, most likely, [view the content](https://web.archive.org/web/20071022031855/http://phonedev.tumblr.com:80/post/11480920) of LatestCrash.plist in /var/logs/CrashReporter :-) I distinctly remember the first time I got a shell prompt on my iPhone and used `[uname](https://en.wikipedia.org/wiki/Uname)` to see the system information. [I was home](https://twitter.com/chockenberry/status/206255882). ### Early App Development I was not alone. Thousands of other developers were finding that the inside of this new device was just as magical as the outside. It shouldn’t come as a surprise to hear that there was an explosion of iPhone app development. One of the pivotal moments for the burgeoning community came at an [independent developer conference called C4❲1❳](https://arstechnica.com/gadgets/2007/08/c41-indie-developer-conference-in-full-swing/). Held in August of 2007, many of the attendees had the new device and were discovering its capabilities. Most of us were also experienced Mac developers. We had just been to WWDC and heard [Apple’s pitch for a “sweet solution”](https://daringfireball.net/2007/06/wwdc_2007_keynote). Amid this perfect storm, there was an [“Iron Coder”](https://web.archive.org/web/20070907182327/http://ironcoder.org/blog/about/) competition for the “iPhone API”. The conference organizer, Jonathan “Wolf” Rentzsch, asked us to [“be creative”](https://web.archive.org/web/20090615231214/http://rentzsch.com:80/c4/ironCoderLive). We /were/. My own submission was a web app that implemented [a graphing calculator in JavaScript](http://furbo.org/stuff/conspiracy.html). It epitomized what we all disliked about Apple’s proposal a few months earlier: a clunky user interface that ran slowly. [Not the sandwich](http://furbo.org/2007/08/15/benchmarking-in-your-pants/) most of us were hoping for… [image:0CFCDAE2-A21F-476E-87D8-303600DF89D6-520-00000005398541FC/Glen_and_Ken.jpg] Video conferencing without a front-facing video camera. On the other hand, the native apps blew us away. The winner of the contest was a video conferencing app written by [Glen and Ken Aspeslagh](http://www.ecamm.com/about/). They built their own [front-facing camera hardware and wrote something akin to FaceTime](https://web.archive.org/web/20071011193817/http://macdaddyworld.com/?p=38) three years before Apple. [An amazing achievement](https://www.youtube.com/watch?v=iew4rXsorTw) considering the first iPhone didn’t even have a video camera. But for me, the app that came in second place was the shining example of what was to come. First, it was a game, and well, that’s worked out pretty well on mobile. But more importantly, it showed how great design and programming could take [something from the physical world](https://www.youtube.com/watch?v=rkLyDeygOYc), make it work seamlessly on a touch screen, and significantly improve the overall experience. [Lucas Newman](https://www.linkedin.com/in/newmanlucas) and [Adam Betts](http://www.artofadambetts.com/weblog/) created the [Lights Off](http://www.artofadambetts.com/weblog/2007/08/lights-off-first-native-iphone-game/) app a few days before C4. Afterwards, Lucas helped get me started with the Jailbreak tools, and at some point he gave me the source code so I could see how it worked. Luckily, I’m good at keeping backups *and* maintaining software: [your iPhone X can still run that same code](https://www.youtube.com/watch?v=Ec-LwLAbIXQ) we all admired 10 years ago! [image:4B74138B-7D1A-47AF-8A50-30D4E720299F-520-0000000539844001/Lucas.jpg] Lucas Newman presenting Lights Off at C4[1]. Photo: [John Gruber](https://twitter.com/gruber) If you’re a developer who uses Xcode, get the [project that’s available on GitHub](https://github.com/chockenberry/LightsOffTouch). The project’s Jailbreak folder contains everything Lucas sent me. The Xcode project adapts that code so it can be built and run – no changes were made unless necessary. It’s much easier to get running than [the original](https://web.archive.org/web/20070827004217/http://www.deliciousmonster.org:80/), but please don’t complain about the [resolution not being 1-to-1](https://github.com/chockenberry/LightsOffTouch/blob/master/Lights%20Off%20-%20iPhone%20X%20Edition.png) :-) In the code you’ll see things like a root view controller that’s also an application delegate: remember that we were all learning how to write apps without /any/ documentation. There’s also a complete lack of properties, storyboards, asset catalogs, and many other things we take for granted in our modern tools. If you don’t have Xcode, you’re still in luck. Long-time [“iPhone enthusiast”](https://duckduckgo.com/?q=site%3Adaringfireball.net+Troughton-Smith) Steve Troughton-Smith sells an improved version [on the App Store](https://itunes.apple.com/us/app/lights-off/id292025150?mt=8&at=10l4G7&ct=ICONFACTORY_BLOG). I still love this game and play it frequently: its induction into iMore’s [Hall of Fame](https://www.imore.com/hall-fame-lucas-newman-adam-betts-and-lights) is well deserved. Now I was armed with tools *and* inspiration. What came next? ### The Iconfactory’s First Apps In June 2007, we had just released [version 2.1](https://iconfactory.com/software/twitterrific_history) of our wildly popular Mac app for Twitter. It should have be pretty easy to move some Cocoa code from one platform to another, right? [image:D9CD92D0-77BA-4A01-85E0-1602721C59DB-520-00000005398317CA/MobileTwitterrific.jpg] The first version of Twitterrific on the iPhone. And [pens](https://www.jetpens.com/Pilot-G-3-Gel-Ink-Pen-0.38-mm-Black/pd/272). And [slerp](https://web.archive.org/web/20071021023336/https://phonedev.tumblr.com/). [Not really](https://furbo.org/2007/08/19/mobiletwitterrific/). But I was learning a lot and having a blast! The iPhone attracted coders of all kinds, including our own [Sean Heber](https://twitter.com/BigZaphod). In 2007, Sean was doing web development and didn’t know anything about Objective-C or programming for the Mac. But that didn’t stop him from poking around in the `class-dump` headers with the rest of us and writing his first app. But he took it a step further with a goal to write an app for every day of November 2007 (inspired by his wife doing [NaNoWriMo](https://nanowrimo.org/).) He called it [iApp-a-Day](http://www.appleiphoneschool.com/iapp-a-day/) and it was a hit in the Jailbreak community. The attention eventually landed him a position at [Tapulous](https://web.archive.org/web/20080718210727/http://www.tapulous.com:80/about/), alongside the talented folks responsible for the iPhone’s first hit franchise: [Tap Tap Revenge](https://en.wikipedia.org/wiki/Tap_Tap_Revenge). Over the course of the month, Sean showed that the iPhone could be whatever the developer wanted it to be. Sure, it could play games, but it could also [keep track of your budget](http://www.appleiphoneschool.com/leftover/), [play a tune](http://www.appleiphoneschool.com/piano/), or help you [hang a painting](http://www.appleiphoneschool.com/level/). [image:E1A9507F-FA83-483D-82DA-C618916588E7-520-000000053981FDFA/iAppADay.jpg] Screenshots from Sean Heber’s iApp-a-Day. Both [Sean](https://github.com/BigZaphod/iappaday) and [I](https://github.com/chockenberry/mobile-twitterrific) have archives of the apps we produced during this period. The code is admittedly terrible, but for us it represents something much greater. Reading it brings back fond memories of the halcyon days where we were experimenting with the future. There were a lot of surprises in that early version of UIKit. It took forever to find the XML parser because it was buried in the OfficeImport framework. And some important stuff was completely missing: there was no way to return a floating point value with Objective-C. There were also strange engineering decisions. You could put arbitrary HTML into a text view, which worked fine with simple tags like ``, but crashed with more complex ones. Views also used `LKLayer` for compositing, which was kinda like the new [Core Animation in Mac OS Leopard](https://en.wikipedia.org/wiki/Mac_OS_X_Leopard), but not the same. Tables also introduced a new concept called “cell reuse” which allowed for fast scrolling, but it was complex and unwieldy. And it would have been awesome to have view controllers like the ones [just released for AppKit](https://developer.apple.com/documentation/appkit/nsviewcontroller). But that didn’t stop us from experimenting and learning what we /could/ do. And then something happened: [we stopped](https://furbo.org/2007/09/11/silence-is-golden/). ### A Real SDK Apple had worked their butts off to [get the iPhone out the door](http://www.nytimes.com/2013/10/06/magazine/and-then-steve-said-let-there-be-an-iphone.html?pagewanted=all). Those of us who were writing Jailbreak apps saw some warts in that first product, but they didn’t matter at all. [Real artists ship](https://www.folklore.org/StoryView.py?story=Real_Artists_Ship.txt). Only [fools](https://web.archive.org/web/20061205211900/http://www.mercurynews.com/mld/mercurynews/news/columnists/16057579.htm) thought it sucked. Everyone who’s shipped a product knows that the “Whew, we did it!” is quickly followed by a “What’s next?” Maybe the answer to that question was influenced by all the Jailbreaking, or maybe the managers in Cupertino knew what they wanted before the launch. Either way, we were all thrilled when an [official SDK was announced by Steve Jobs](http://appleinsider.com/articles/07/10/17/steve_jobs_confirms_native_iphone_sdk_by_february), a mere five months after release of the phone itself. The iPhone SDK was promised for February of 2008, and given the size of the task, no one was disappointed when it slipped by just a few days. The release was accompanied by [an event](https://www.macworld.com/article/1132400/iphonesdk.html) at the Town Hall theater. Ten years ago today was the first time we learned about the Simulator and other changes in Xcode, new and exciting frameworks like Core Location and OpenGL, and a brand new App Store that would get our products into the hands of customers. Jason Snell [transcribed the event](https://www.macworld.com/article/1132376/liveupdate.html) for Macworld. There’s also [a video](https://youtu.be/HfMvym5SxHU?t=19m32s). ### Our Turn to Be Real Artists [image:D66D0217-262D-4347-BBD0-FC365E1BD867-520-000000053980DF7E/Twitterrific.jpg] Twitterrific’s design at the App Store launch. After recovering from all the great news, developers everywhere started thinking about shipping. We didn’t know exactly how long we would have, but we knew we had to hustle. In the end, we had about four months to get our apps ready. Thanks to what The Iconfactory learned during the Jailbreak era, we had a head start understanding design and development issues. But we still worked our butts off to build [the first iPhone’s Twitter app](https://iconfactory.com/twitterrific_touch/). [image:86435F6F-AC2C-4471-B7C6-3B1A475C6F3F-520-00000005397F812D/ADA.jpg] Winning an Apple Design Award. [Thank you](http://furbo.org/2008/06/12/thank-you/). Photo: [Steve Weller](https://twitter.com/bagelturf) Just before the launch of the App Store, Apple added new categories during its annual design awards ceremony. [We were thrilled to win an ADA](https://blog.iconfactory.com/2008/06/iconfactory-honored-with-apple-design-award/) for our work on the iPhone. How thrilled? The exclamation I used [while downloading the new SDK](https://twitter.com/chockenberry/status/767688189) was the same as [getting to hold that silver cube](https://twitter.com/chockenberry/status/832709404). After that, we were among the [first apps to be featured in the App Store](https://techcrunch.com/2008/07/10/app-store-launches-upgrade-itunes-now/) and [ranked high](https://techcrunch.com/2008/07/10/iphone-app-store-the-early-list-of-top-downloads/) in the early charts. We knew we were a part of something big. Just not how big. ### The Journey Continues [image:758D2C5C-FAC4-4AEC-9209-C36E532DF4B6-520-00000005397D96D3/Phil.jpg] The second version of Twitterrific and [some guy](https://youtu.be/rW5Amx3_L9E?t=32m). The Iconfactory’s [first mobile app](https://twitterrific.com/ios/) entered a store where there were hundreds of products. There are now over two million. We now sell mobile apps for [consumers](https://iconfactoryapps.com/) and tools for the [designers](https://linea-app.com/) & [developers](https://xscopeapp.com) who make them. We now do design work for mobile apps at companies [large](https://design.iconfactory.com/facebook-messenger-emoji/), [medium](https://design.iconfactory.com/suunto-7r-for-ios/), and [small](https://design.iconfactory.com/pushtracker/). We now develop mobile apps [for a select group of clients](https://dev.iconfactory.com/). ( [Get in touch](https://iconfactory.com/contact) if you’d like to be one of them.) A lot can happen in a decade. But one thing hasn’t changed. Our entire team is still proud to be a part of this vibrant ecosystem and of the contributions we make to it. Here’s to another decade! [A Lot Can Happen in a Decade • The Breakroom](https://blog.iconfactory.com/2018/03/a-lot-can-happen-in-a-decade/) # iOS 15 now includes every feature first announced at WWDC 2021, just in time for iOS 16 [image:D4EE3098-5E57-43F7-872B-5C7ADAE99952-22624-000002E4D534863B/The-top-iOS-15-sleeper-features-9to5mac.jpg] iOS 15 was first previewed in June during the WWDC21. Released in September, several features were missing with the first public availability of the iPhone’s latest operating system. Today, after six months and four major updates within this iOS cycle, Apple finally released every feature previewed during its 2021 Worldwide Developers Conference. iOS 15 promised refinements and changes, including a revamped Focus mode, new Safari design, and more functions to FaceTime. Apple was also able to bring with the first version of iOS 15 the ability to track iPhones even when powered off, but lots of other features were still missing. A month after its original release, the [company seeded iOS 15.1](https://9to5mac.com/2021/10/26/ios-15-1-now-available-heres-why-you-should-update/). One of the most anticipated functions, SharePlay, was finally available. With it, you could connect with a dozen friends or family members and make watch parties, listen to songs, or exercise together using FaceTime. With iOS 15.2, which arrived five weeks after 15.1, Apple brought two other lacking features from the original iOS 15 release: [App Privacy Report and Legacy Contacts](https://9to5mac.com/2021/12/13/ios-15-2-now-available-heres-why-you-should-update/). With App Privacy Report, users could see how often apps have accessed their location, photos, camera, microphone, and contacts during the last seven days. Legacy Contacts would allow you to designate people as Legacy Contacts so they can access your account and personal information in the event of your death. [image:0D020FE1-8485-4742-B602-DA928086A1BA-22624-000002E4D53279ED/apple-wallet-digital-ids-now-available.jpg] Even with two major updates, a few features were still lacking, more notably Universal Control for iPadOS and macOS users and digital IDs for US users. Surprisingly, iOS 15.3 [only polished the iOS experience without bringing any new features](https://9to5mac.com/2022/01/26/ios-15-3-now-available-whats-new/). Then, [with iOS 15.4 just released last week](https://9to5mac.com/2022/03/15/ios-15-4-now-available-heres-why-you-should-update/), Apple brought Universal Control feature, and today the company announced [the first US state to add digital IDs: Arizona](https://9to5mac.com/2022/03/23/apple-officially-launches-digital-ids/). That said, all features first previewed in June during the WWDC21 keynote are finally available. It’s important to note that two features are still in beta: Universal Control and Private Relay, but both work as reliably as they can and are available to all users. iOS 15 also brought the ability to share a FaceTime link so [Android](https://amzn.to/3LqfxV9) and PC users can join a video call. Not only that, but it also brought the ability to store home and hotel keys and work badges within the Wallet app. With iOS 15 coming to a full circle, what are you looking forward to the most with iOS 16? Share your thoughts in the comment section below. [iOS 15 now includes every feature first announced at WWDC 2021, just in time for iOS 16](https://9to5mac.com/2022/03/23/ios-15-now-includes-every-feature-announced-wwdc-2021/) # Tot Doesn’t Work for Me [March 3, 2020](https://bicycleforyourmind.com/tot_doesn't_work_for_me) [image:A384DFC9-754B-4A97-901A-D2247558808F-21477-000002C264D5DAB1/50002b44-99e8-42e5-ab57-f98676b99353.png] Tot Icon *Product*: [Tot • Your tiny text companion](https://tot.rocks/) *Price*: Free on macOS; $19.99 on iOS Tot is a scratchpad with seven pages. It is marketed as “Your tiny text companion.” In Tot you can collect and enter the pieces of text which are important, but ephemeral in nature. Task lists, phone numbers, reminders and pieces of code are all little things which you can hold in Tot. Not going to be useful for long but meaningful in the near future is what Tot is best suited for. [image:5206D85B-DDDD-46EE-991F-67C507171FD4-21477-000002C264D4B556/6996033e-6934-4b8c-b129-e51b45d1922a.png] Tot Window It supports the basic Markdown syntax. I mean basic. Bold. Italic. Links. Nothing else. Numbered lists don’t autocomplete. Lists don’t autocomplete. No footnotes, no endnotes, no tables, none of the advanced Markdown additions. It is meant to be quick, minimal and pretty and it lives up to that claim. [image:6963B49B-A51C-4897-97E5-359AFBB86031-21477-000002C264D34842/2ee45c80-e1da-4b37-bbce-1c3c22077802.png] Tot Share It has a word count attached to the sheet that you are writing. You have the ability to use the macOS share menu to send the text to the destination that you want. It syncs the seven sheets with iCloud. So, you can access the data between your macOS and iOS devices. Yes. The app has an iOS version. I am going to come to that later in the article. It is pretty. The seven sheets have different colors and when you are in one of the colors, the icon changes to that color. The developer wrote about it, [Dy-nam-ic! • The Breakroom](https://blog.iconfactory.com/2020/02/dy-nam-ic/). Tot supports light and dark mode in Catalina and it is beautiful. [image:F5035D20-9C90-4B87-8E72-C31F86B44AB4-21477-000002C264D14D3F/8d1b5644-8e1d-4025-b166-38f43ff6d849.png] Tot Font change You can change the font of both the rich text view and the plain text view in Tot. However the commands are situated in a non-standard location. Highlight the text, control click, and you get a drop-down menu. The change font, and font sizes options are in that drop-down menu. Tot does a great job with handling links. Just drag a link into it, and Tot formats it as a markdown inline link with the page title and URL formatted right. Lots of mainstream Markdown based editors struggle with this. Tot does this great. It is pretty. Or did I already say that. ## For macOS Users If sync to iOS devices is not important to you, Tot is free. Go grab it. If sync to iOS is important to you, then you might want to read on. ## For iOS users I am hesitant to talk about the price of a product. The reaction to the price is dependent on your conception of value. Our individual conceptions of value are different and thus I shy away from this discussion. If you like [Iconfactory Apps](https://iconfactoryapps.com/), and want to support them, pay the $19.99 for the iOS version and feel happy about it. I will point out the following: 1. [Drafts](https://getdrafts.com/) is a more capable application which will cost you $19.99/year. That subscription price will let you use Drafts on iOS and macOS and have access to the same documents. 2. [‎iA Writer](https://apps.apple.com/app/id775737172?ign-mpt=uo%3D4) is available on iOS for $8.99. You can edit your text documents in any text editor you want on the macOS and have them accessible to you on the iOS devices. iA Writer is a more capable MultiMarkdown based editor available on both iOS and macOS($29.99). You don’t have to use the macOS version of iA Writer if you don’t want to pay the price. Use any text editor on macOS. There are a plethora of free options available, including, [BBEdit 13](http://www.barebones.com/products/bbedit/) & [CotEditor](https://coteditor.com/). 3. [Kodex](https://kodex.app/) is a free code editor on iOS which can access files on Dropbox. It is free but you can tip the developer $4.99 for good karma. 4. [1Writer](http://1writerapp.com/) is also able to deal with your Dropbox files and provides you a great environment to write notes in Markdown. The need is for a quick note-taker. There are a ton of programs on the iOS which will let you take quick notes and have them synced to your other devices through iCloud or Dropbox. Those files are available and editable on macOS through any text editor you choose. I struggle to see the value proposition for Tot. ## Conclusion Tot is well designed and pretty. It is free on macOS. If you see the value proposition, you can adopt the iOS version too. For me, there are better and cheaper alternatives available on iOS. Considering my reluctance to adopt the iOS version, Tot is a no-go for me. Tot is not recommended. macosxguru at the gmail thingie. ## Reviews Which Are Much More Favorable [Tot Review: Collect and Edit Bits of Text - MacStories](https://www.macstories.net/reviews/tot-review-collect-and-edit-bits-of-text/) [Daring Fireball: Tot](https://daringfireball.net/2020/02/tot) [The Iconfactory Tot/Tot Pocket review | Macworld](https://www.macworld.com/article/3531388/tot-pocket-review.html#tk.rss_all) [text editor](https://bicycleforyourmind.com/tagged/text-editor) [macOS](https://bicycleforyourmind.com/tagged/macos) [iOS](https://bicycleforyourmind.com/tagged/ios) [Links of Note 2020-01-17 Holi Front and Center is an app by John Siracusa. If you miss the old macOS behavior in Catalina, buy the app. And read about it at, Hypercritical:](https://bicycleforyourmind.com/links_of_note_2020-01-17) [WordCounter Keeps Me on Track Product: WordCounter for macOS Price: $19.99 (Educational discounts are available) WordCounter is an application for people who write in different](https://bicycleforyourmind.com/wordcounter_keeps_me_on_track) [Tot Doesn’t Work for Me](https://bicycleforyourmind.com/tot_doesn't_work_for_me) # My Obsidian Setup, Part 8: Simplifying Thought Capture with 'On My Mind' Exploring topics beyond our day-to-day coverage. * [image:D0F485DD-AC93-42AE-B35C-E19EEA7C169C-19667-0000029480F172F5/94a9aa7c70dbeb9440c6759bd2cebc2a.jpeg] * [Federico](https://club.macstories.net/authors/federico) The last time [I wrote about appending text](https://club.macstories.net/posts/shortcuts-essentials) to my Dashboard note in Obsidian in November 2021, I shared two distinct methods to do so, both based on shortcuts. The first one relied on the [QuickAdd plugin](https://github.com/chhoumann/quickadd) and its ability to insert text into specific sections of notes in Obsidian; QuickAdd doesn’t support passing text to its input field from Shortcuts via, say, a URL scheme, so my shortcut worked by asking you to type some text first, which it then copied to the clipboard so you could paste it into QuickAdd’s UI. An ingenious workaround, but not an elegant one. The second method was based on [Shortcuts’ native Files actions in iOS 15](https://club.macstories.net/posts/automation-academy-diving-deeper-into-shortcuts-files-actions-for-ios-and-ipados-15), and it worked by directly inserting text into the Dashboard.md document stored in the Files app (I keep my Obsidian vault in local storage and use the Obsidian Sync service). Over time, I’ve grown to prefer this method of appending text to my Dashboard: it’s faster, I don’t see the QuickAdd interface when Obsidian launches, and, more importantly, I don’t have to tap ‘Paste’ in the QuickAdd input UI. [My Obsidian Setup, Part 8: Simplifying Thought Capture with 'On My Mind'](https://club.macstories.net/posts/my-obsidian-setup-part-8-simplifying-thought-capture-with-on-my-mind) # MacStories Weekly: Issue 313 From: Club MacStories To: davidblue@extratone.com Date: Mar 25, 2022 Subject: MacStories Weekly: Issue 313 Great apps, reads, and more, curated by the MacStories team and delivered every Friday. Read MacStories Weekly in your browser Issue 313 - Friday, March 25 In this issue: Federico shares the latest installment of his Obsidian setup series, featuring On My Mind, a shortcut for capturing ideas in multiple contexts, John shares his studio setup, plus the usual Links, App Debuts, the latest happenings in the Club MacStories+ Discord community, a recap of MacStories articles, and a preview of upcoming MacStories podcast episodes. THE EXTENSION Exploring topics beyond our day-to-day coverage. My Obsidian Setup, Part 8: Simplifying Thought Capture with 'On My Mind' Federico: The last time I wrote about appending text to my Dashboard note in Obsidian in November 2021, I shared two distinct methods to do so, both based on shortcuts. The first one relied on the QuickAdd plugin and its ability to insert text into specific sections of notes in Obsidian; QuickAdd doesn't support passing text to its input field from Shortcuts via, say, a URL scheme, so my shortcut worked by asking you to type some text first, which it then copied to the clipboard so you could paste it into QuickAdd's UI. An ingenious workaround, but not an elegant one. The second method was based on Shortcuts' native Files actions in iOS 15, and it worked by directly inserting text into the Dashboard.md document stored in the Files app (I keep my Obsidian vault in local storage and use the Obsidian Sync service). Over time, I've grown to prefer this method of appending text to my Dashboard: it's faster, I don't see the QuickAdd interface when Obsidian launches, and, more importantly, I don't have to tap 'Paste' in the QuickAdd input UI. Over the past few months, however, I've also realized that I wanted to simplify my workflow for capturing ideas and make it more flexible. So today, I'm sharing a spin-off of my original Append to Dashboard shortcut called On My Mind, which is based on the same technique but specifically optimized for fast idea capture on multiple Apple devices. The shortcut is largely similar to the one I shared last year, but there are some key differences regarding user interaction and text-entering methods I'm going to describe below. First, the simplification occurred because I realized I don't need multiple sections in my Dashboard note to save thoughts. I found that I was always dropping thoughts and ideas into the 'On My Mind' section of the note, but the original Append to Dashboard shortcut would always prompt me to pick a specific section from the note every time. I wanted to drop that extra section-picking step and default to always prepending new thoughts at the top of the On My Mind section. Prepending instead of appending is a new thing for me, but I've discovered that it works better for my brain since it means most recent ideas are also the most recent lines of text at the top of the section. So, for On My Mind to work, you'll have to enter the Markdown syntax of the specific section of your Dashboard note where you always want to save your thoughts. You'll be asked to complete this step at setup, but you can also tweak this in the 'Text' action near the beginning of the shortcut, as pictured below: You can define a specific section of the Dashboard where you want to prepend text. Prepending text at the top of a section is also much easier to do in Shortcuts than appending, which required regular expressions to determine where a section ended and another began. When we're prepending text, all we need to do is replace the Markdown heading of the section with the heading plus the text we're appending. This is what it looks like in the shortcut: Prepending text to a section of a note in Obsidian. You can see how the original text is modified and re-saved as the same document in the same folder. With this new system, saving random ideas and thoughts in my Dashboard note in Obsidian couldn't be easier. From the Home Screen widget on my iPhone and iPad, I can type some text and it gets immediately inserted at the top of the On My Mind section: Saving thoughts from the Home Screen via On My Mind. The process is even faster on the Mac, where I can trigger the shortcut with a system-wide hotkey (⌘⌥⌃O for me) and capture ideas from anywhere on my computer. I've been doing this with Raycast, and I love it. On macOS, I can trigger On My Mind's manual text input from anywhere. All this has been great for me, but there was a missing piece: dictation. I often find myself in two similar, but different, scenarios in which I'd prefer to save ideas by dictating them without any manual interaction whatsoever: when I'm in the car, and when I'm wearing AirPods and doing things around the house. How could I extend On My Mind so it would fall back to dictation input only in those scenarios? As it turns out, Apple doesn't provide users with a way to check the audio playback destination of the device where a shortcut is running. Fortunately, third-party developers have thought about this problem and there are a couple of options to add audio-checking capabilities to Shortcuts. My favorite, and the one I'm now using in On My Mind, is the 'Get Audio Playback Destination' action offered by the free Actions app, a MacStories team favorite. This action works on iPhone and iPad only, and it does not detect AirPlay devices, but it can correctly identify whether audio is playing through your device's speakers, AirPods, or a connected Bluetooth device. Thanks to the Actions app, my shortcut can now quickly check where audio is playing; the action runs in a fraction of a second and works entirely in the background; the only requirement is that you download the Actions app from the App Store before trying dictation with On My Mind. When the action from Actions (I know, I know) runs, it first checks if the Audio Playback Destination variable contains the word 'AirPods'. If it does, the shortcut will bring up the native dictation UI instead of keyboard input so you can dictate your text. Dictation parameters (language, pause, etc.) can be configured as always in the Shortcuts editor, and text is immediately transcribed as-you-speak thanks to Apple's fast on-device processing. The dictated text is turned into actual text and prepended to a section of a note in Obsidian, just like I described above. Dictating text when AirPods are connected. I took a slightly different approach for connected devices that are not AirPods. I did this because of an issue that is very specific to me; if you also have this problem, this is likely going to apply to you as well; if it doesn't, feel free to delete the entire block of actions I'm going to describe below. I don't have a CarPlay-enabled car, which means my iPhone automatically connects to it using a standard Bluetooth connection. That has been mostly okay for music playback (although I don't see album artwork for music on the car's display), but the system has been absolutely horrible for Siri and any kind of voice input. There are multiple issues here: if I try to activate Siri, dictate a message, or send an audio message via WhatsApp, there's a 5-second delay between pressing the button and voice input actually activating; second, I don't know why, but the voice quality of Siri in this mode is terrible, making it sound like a robot stuck in a tin can; third, and perhaps worst of all, if I do decide to dictate messages this way, the car's microphone also makes me sound like that robot. And it's very strange, because this only applies to voice input for Siri and dictation; people say that I sound crystal-clear on phone calls I take from the car. I have no idea why this is the case, and I can't wait to get a CarPlay-enabled car, but I wanted to find a solution to this problem for my On My Mind shortcut in the meantime. The solution I came up with may be a little unconventional, but it works: if the shortcut detects that it's connected to a Bluetooth output device that isn't AirPods, Bluetooth is temporarily turned off, text can be dictated via the iPhone's built-in microphone, then Bluetooth is immediately re-activated so my iPhone can reconnect to my car's Bluetooth system. Here's what this flow of actions looks like in the shortcut: How the shortcut turns off Bluetooth and instantly re-enables it. With this method, I've been able to save the occasional idea I have while driving without a) distractions and b) having to deal with whatever is going on between my iPhone and the car's terrible Bluetooth voice input. The result of this optimization process is the fastest, most versatile idea-capturing workflow I've ever had with Obsidian or with any note-taking app, really. Now, no matter the device I'm using and no matter how I'm triggering the shortcut, I know I can invoke On My Mind and I'll be able to quickly capture a thought in seconds and send it to a section of my Obsidian dashboard right away, with no further interactions. This shortcut has genuinely helped me forget fewer things and use Obsidian even more, and I hope you'll find it useful as well. You can download On My Mind here. INTERESTING LINKS Great reads and links from around the web. Federico previously covered Floh Gro's Craftcuts extension for Craft a couple of weeks ago, and the developer has now released a YouTube video that shows how you can use Craftcuts to add different types of text to a note in Craft via Shortcuts. (Link) Floh Gro has also released Craftist, a Craft extension that lets you integrate the app with Todoist. (Link) The Verge covers Nothing's ambitious Android-based smartphone plans that are setting their sights on the iPhone. (Link) Netflix continues to move into mobile gaming, offering standalone downloads on iOS instead of taking the streaming route like Microsoft. (Link) Brett Terpstra has updated Bunch, his Mac automation tool that uses plain text files to launch apps and execute commands, to work with Focus modes via Shortcuts' command line interface. (Link) Dead Cells, the popular rogue-like game from Playdigious that is available on multiple platforms, is bringing its 'The Queen and the Sea’ DLC to the iPhone on April 7th, according to TouchArcade. (Link) Due to a dispute over commissions, it is no longer possible to purchase or rent movies and TV shows on the Apple TV app from Android or Google TV. (Link) This week we learned from MacRumors that Apple's Studio Display contains the guts of a base model iPad: an A13 chip as well as 64 GB of storage. (Link) Sam Byford of The Verge reviewed the AYA NEO Next portable Windows videogame device, which features some impressive specs for a handheld device and a high price to match. (Link) Ars Technica reports on the Fido alliance's efforts to move the tech industry beyond passwords. (Link) APP DEBUTS Noteworthy new app releases and updates, handpicked by the MacStories team. Parrot Federico: Developed by Sandro Pennisi, the creator of the excellent Widgeridoo, Parrot is a new utility to create good-looking textshots from text selected on Safari webpages that you can share on social media. Once you've selected text in Safari, tap the Parrot action extension and you'll be presented with an overlay to tweak the format and style of the image that contains the quoted text. While there are other apps that do what Parrot does, I like the innovations that Parrot is bringing to this space: you can choose include a QR code in the textshot that makes it easy for people to open the associated link, and Parrot tries to automatically extract the key color of the website you're on and use it as a the primary color of the image. I really like the idea behind Parrot, and I hope Pennisi will add more options to change fonts and save custom color presets in the future. Tot Federico: I will have more to say about this update in the near future, but I wanted to immediately share in MacStories Weekly that Tot, my favorite scratchpad to store random bits of text temporarily, has received full Shortcuts integration in version 1.3, released today on the App Store. Tot now comes with actions to set the text of a specific "dot" (i.e. page) in the app, retrieve the text of a specific note, and even get metadata out of a note such as modification date and word count. While these may sound like obvious actions, they open up some fascinating possibilities when it comes to integrating Tot with other note-taking apps: for instance, I've been playing around with a system that uses personal automations to continuously mirror "dots" from Tot into Obsidian, which I plan to write about soon. Play John: Marcos Tanaka continues to provide excellent updates to Play, the app for saving YouTube links for later that we reviewed recently. In the latest release, users can batch-remove tags from video links, choose between Safari, Google Chrome, and Firefox for playback, and search videos by notes they've added to them. The app also supports opening multiple videos at once in browser tabs. Craft John: Close on the heels of Craft's update that added a set of pre-built templates, the app has added user-created templates. Just add a document to your My Templates folder to make it a template. Clicking on a template gives you the choice of creating a new document based on the template or editing the template itself. There's also a new slash command for adding template text into an existing document. Craft has also added Daily Notes to the All Documents view. Previously, Daily Notes were only available from the calendar view. The share menu has added a button to quickly copy the secret URL for a document and a custom QR code that opens a document's secret link too. VLC John: Media playback app VLC got a long list of updates this week, including a redesign of its video interface. There are lots of other changes worth revisiting if you haven't used the app in a while, including: • The ability to view NFS and SFTP shares • Download from SMB servers • Support for file providers • A true-black theme for OLED devices VLC may not be the best-looking media player available on iOS, but it's one that I keep around because it can handle so many edge cases and supports obscure features that few other players do. Due John: Reminder and timer app Due added trackpad support for marking reminders as done, postponing them, and deleting them. There are three settings options for Quick Access Times, the feature that lets you postpone a reminder by long-pressing on it. You can choose between Auto, which postpones a reminder from its due date and time unless it's overdue, in which case it uses the time you postpone the reminder, From Now, or From Due Date. The app's search functionality searches the text of URLs for the first time too. iRobot Home John: iRobot Home, the iOS app for controlling Roomba vacuums, has added Shortcuts support. The app already had the ability to set up automated vacuuming schedules, but the app's shortcuts actions open up the ability to incorporate your Roomba into more complex automations. For instance, you could set up a home automation that turns on your lights at night (which Roombas need to navigate) and starts your Roomba, so it vacuums while you sleep. Unfortunately, iRobot's Shortcuts actions don't include parameters, limiting you to routines that vacuum everywhere at once. For more fine-grained control, you're better off using the app's built-in scheduling tools. Hydra 2 John: Hydra 2 is a camera app from Creaceed, the maker of apps like Prizmo, is an AI-powered camera app. The app features both manual and automatic modes of shooting photos and a photo editor. Controls for adjusting exposure, ISO, lenses, and more are easily accessible at the bottom of the camera UI. Under the hood, Hydra 2 executes a long list of image enhancements using machine learning to create great-looking results. Hydra can also smartly upscale images without distorting the original image. Finally, all of the app's edits are non-destructive, allowing you to experiment without ruining your original photo. READER SETUPS Members of Club MacStories share their computing setups. John Voorhees Twitter: @johnvoorhees. MacStories' Managing Editor and co-host of AppStories, MacStories Unwind, and Club MacStories podcasts. After a lot of waffling, I've ordered a Studio Display and Mac Studio, but my indecision means the display won't arrive until late April and the Mac won't show up until mid-June. When my new hardware comes, my studio setup will change, so I thought I'd cover my current setup here and explain how I hope the new hardware will change improve it. The iMac setup I used last summer. My current setup is a byproduct of last summer when I moved my studio from our basement to a room on the first floor of our house that was underutilized. When I switched locations, I had a 24" iMac review unit that I was using to test macOS Monterey. I immediately fell in love with the way it allowed me to work with very few cables snaking across and under my desk. The Mac mini that I had been using before testing the iMac went in the closet behind my desk as my backup machine that wasn't on the Monterey beta and to handle Plex and home server functions. I grew so accustomed to the quiet operation of the M1 iMac on my desk that when it was time to return it to Apple, I decided to leave the Mac mini in the closet and switch to my M1 MacBook Air as my primary desktop Mac. It sits out of the way on the left side of my desk, connected to a dock and hub on a nearby bookshelf. The desk is a simple IKEA table on locking wheels that used to be my photography and projects table in the basement. I enjoy the flexibility of the wheels, which let me push the desk up against one wall to make room for exercising. I've got a TV in the corner of the room connected to an Apple TV HD that I use primarily to do Fitness+ classes. I also have an OLED Nintendo Switch connected to the TV for taking a break to play a game now and then. A Steelcase promo shot of my chair. Mine doesn't include the headrest. My chair is a Steelcase Gesture chair that I love. I got it right before COVID hit, and it has greatly improved the ergonomics of my setup. It was an expensive purchase, and I have a harder time pulling the trigger on big non-tech purchases for some reason, but I'm glad I did and expect I'll be using this chair for a long time to come. The Nanoleaf light strip in the corner of my studio lights the room nicely. All of the lighting in the room is controlled via HomeKit using Nanoleaf bulbs, a Nanoleaf light strip in the corner, and a string of LED lights controlled with an Eve Energy Smart Plug. I've also got an Eve Weather that tracks the temperature and humidity. As I explained in my Macintosh Desktop Experience column this week, the lights are all controlled from my iPad Pro using my Universal Control setup. This bookcase keeps most of the wires and clutter off my desk. The bookshelf to the left of my desk is where I've offloaded what would otherwise clutter my desk. The MacBook Air is connected to an OWC Thunderbolt Hub that gives me four Thunderbolt ports plus a USB-A port that I use for my MX Master 3 mouse's wireless dongle. The dock is connected to a Twelve South StayGo hub for additional USB-A ports and Ethernet. Ideally, I'd have just one hub for all of this, but I had these on hand, so that's what I've decided to keep using until the Mac Studio arrives and eliminates the need to use a hub completely. The OWC hub also connects the MacBook Air to my 4K LG 27" display and a 5 TB portable Western Digital hard drive that I use for Time Machine backups. It isn't the speediest drive, but it's pretty quiet and fast enough for Time Machine. The display is a basic model that supports DisplayPort and two HDMI inputs, but doesn't have any USB or Thunderbolt connectors. It's also dim by today's standards, outputting just 350 nits of brightness compared to the Studio Display's 550 nits. I wouldn't be surprised if the Studio Display makes a bigger difference in my setup than the Mac Studio between its Thunderbolt 3 ports and brighter display. The other device connected to the MacBook Air via my OWC hub is an Elgato Stream Deck XL that sits directly beneath my display where the buttons are easy to reach. I'm looking forward to connecting the Stream Deck to the Studio Display instead of having a long cable dangling off the back of my desk to the bookshelf. Between the MacBook Air and LG display are my 12.9" iPad Pro that sits in a Twelve South HoverBar Duo stand. I've been using this stand regularly since I reviewed it last year, and even though the plastic parts feel a little cheap, I love how high it can hold the iPad above the desk's surface. As I explained in The Macintosh Desktop Experience, I charge the iPad continuously to keep the battery from being depleted when it's connected to my Mac via Universal Control. The Sound Devices MixPre-3 II is my audio interface and backup recording device. I have a Sound Devices MixPre-3 II directly beneath my iPad for recording podcasts. I love this little device. The MixPre-3 II is small, it supports connecting 3 XLR microphones, which is more than I ever need, and it can record to SD cards. That last feature is one of the ways I back up recordings. The MixPre-3 II saves multi-track WAV files for a total of 5 tracks in one file. I don't have to resort to backups often, but it's nice to know I have them on a device that's independent of my Mac. Each month I reformat the SD card to make sure it doesn't run out of space, and then every January, I buy a new SD card to avoid corrupting the card's storage through frequent reformatting. It's a simple, inexpensive way that buys me some peace of mind. The MixPre-3 sits on a Manfrotto Pixi tripod because I like to have the buttons elevated off the desk where they are easy to reach. The whole setup is powered over USB-C, which eliminates a wire in the setup too. The Elgato Wave Mic Arm is chunky but works really well to keep my microphone where I want it. Clamped to the left side of my desk is an Elgato Wave Mic Arm. I used an inexpensive boom arm for years that did the trick, but I bought the Elgato because it's more maneuverable and stays in place once positioned. The microphone is a Shure Beta 87A, which I've been using since we started AppStories in 2017. It's fairly expensive but has been worth the investment given how often I use it. I've already mentioned the bookshelf to the left of my desk, which holds my Mac's hubs, and backup drive. The same shelf is where I keep a couple of USB-C cables available for charging devices. This is also the home base for any handheld game devices I'm currently using. Right now, the big GameBoy-style case houses my Analogue Pocket, which sits alongside my 3DS games, the 2nd generation AirPods that I use with my Nintendo Switch, and an Apple TV remote for when I fire up the Apple TV to use Fitness+. The UPS that powers my devices if the electricity goes out. The shelf below that is reserved for a heavy UPS that keeps my Mac up and running in a power outage. It's the CyberPower CP1500PFCLCD PFC Sinewave UPS System, which is quite a mouthful, but it delivers a total of 1,000W of power across 12 outlets. I have a smaller 450W UPS in the basement connected to my fiber router and Wi-Fi base station to keep me online for at least a while if the power goes out. My headphones hook. The top shelf includes a Belkin 3-in-1 MagSafe stand where my iPhone 13 Pro Max, Apple Watch Series 6, and AirPods Pro all charge each morning. I also installed an inexpensive headphone hook that clamps to the top shelf to hold my AirPods Max and the Beyerdynamic DT 770 Pro headphones I use for podcasting. The Harmon Kardon SoundSticks sound great but cause a tangle of wires. There's a second bookshelf in my studio, which mostly stores books, but that's where my HomePod mini, which I use with the MacBook Air most of the time, a Fujitsu i300 ScanSnap that I've been testing, and my Nintendo Switch Pro Controller are stored. Finally, on each corner of my desk are Harmon Kardon SoundSticks. The woofer sits on the floor near my bookcase. The speakers are Bluetooth and connected to my iPad Pro and sound great, but I may eliminate them from the setup once my Studio Display arrives. Despite being Bluetooth, there are wires between the three speakers and a power cord, which would be nice to eliminate if the Studio Display speakers are good enough. What you don't want to see is the closet behind my desk where my 2018 Mac mini is acting as a Plex and home server. I've got bins of charging cables, photography equipment, videogames, an inkjet printer, and other miscellaneous items that I only need occasionally stored there. I've also carefully avoided showing most of the cable clutter under my desk and around the bookcase in the shots above. I was in the process of cleaning up the cable mess when I injured my knee and then ordered a Studio Display and Mac Studio, which will take care of most of the clutter by eliminating the dock, hub, and speaker wires. So, for now, it's a little messy, but hopefully, that will change as I upgrade my gear. I'm pretty happy with my current setup. It's functional and makes good use of fairly limited space. Although it lacks the seclusion of my former basement office, that's made up for by having a view outside and being closer to the rest of my family when they're home. When the Mac Studio and Studio Display arrive, I'll probably set the Mac Studio up where the MacBook Air currently sits or put it on the bookcase where the dock, hub, and backup drive currently sit. I'll probably also get rid of the Harmon Kardon SoundSticks to cut down on the clutter even further. Submit your own setup SPOTLIGHT ON CLUB MACSTORIES+ Highlights of the latest Club MacStories+ happenings. RSS Tips, Spotify and Shortcuts, Plus Apps and Music Federico: Here are the highlights from the Club MacStories Discord this week: A member asked other Discord members about how they use RSS these days, and a very interesting conversation ensued with tons of solid tips and recommendations. Member Jonathan shared a few tips on how you can make Spotify actions appear in the Shortcuts app via specific Siri commands. As a general tip, I also want to point out the and channels on our Discord. The Apps one is a constant source of discoveries and suggestions from members who, like us, are very much into "app culture" and trying new things. The Music channel brings me a lot of joy and value since it lights up every Friday morning when new music comes out. On Fridays like today with new albums from Placebo, Kavinsky (it's been 10 years!), and Machine Gun Kelly, it's absolutely stellar. Want to join the Club MacStories+ Discord? Upgrade to Club MacStories+ or Club Premier, then visit the Account page. PREVIOUSLY, ON MACSTORIES Our top stories from the past week. Stories Overcast Redesign Enhances Podcast Navigation with an Emphasis on Playlists and Recent Episodes Alto’s Adventure: Spirit of the Mountain Released on Apple Arcade Apple Expands Analytics and Other Features Available to Podcasters Last Week, on Club MacStories: Calliope 1.2.0, the M1’s New Computing Baseline, and an Upcoming A.V. Club Town Hall ComicTrack: A Beautifully-Designed, Flexible Way to Organize Your Comic Book Reading Podcasts AppStories, Episode 266 – iOS, iPadOS, and macOS Updates In-Depth MacStories Unwind: Federico’s Surprise UP NEXT ON MACSTORIES' PODCASTS A preview of upcoming MacStories podcast episodes. Next week on AppStories, Federico and John are joined by a special guest to talk about Universal Control, Shortcuts, Live Text, and more. This week on MacStories Unwind, Federico Federico explains the advantages of being able to take PC games on the go with Valve's Steam Deck, while John recommends a weekend double-feature: Spider-Man: No Way Home and Dune. WEEKLY ARCHIVE Previous emails that were sent to Club MacStories members. To view this issue of MacStories Weekly in your browser, click here. Thanks for your support, we'll see you next week! THE SMALL PRINT It's OK to share this email with a friend or family member occasionally, but please don't share as a habit – this email is for Club MacStories members who financially support Federico and the rest of the MacStories team. If you are interested in a team subscription to Club MacStories for teams of 5 or more people, please contact Federico directly. Authored by Federico Viticci, John Voorhees, and Alex Guyot. Email Feedback Copyright © 2022 MacStories, All rights reserved. You're receiving this email as a member of Club MacStories. unsubscribe from this list    update subscription preferences [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjlmNGI4MGEzNTcyOGY3Mjcx%0D%0AZmUzZWE2ZmYuMTIxMTc3NDI3My4yMDIyMDMyNTE2NTA0Ni5kNTAxNWViMjJmLjdk%0D%0AMWNkZmJjQG1haWwxMjguYXRsMTIxLm1jc3YubmV0OzMxNDY2MDIyMzk%3D) # Extract Archive Arbitrary Write bug Works on iOS 13, 14, and (at the time of writing) 15. Well, somewhat iOS 15. Found by me, Zachary Keffaber (zachary7829) ### iOS 15 / macOS Monterey Mitigation The bug is still technically there in iOS 15, but much more limited. Thanks to iOS 15 changes: Built-in shortcut actions may have different privileges than the shortcuts app itself now, so even though Shortcuts has write access to directories like `/var/mobile/Library/WebClips`, the actions do not and can only write to iCloud~is~workflow~my~workflows (tmk). Creating a symlink to a directory shortcuts has access to from iCloud~is~workflow~my~workflows does not work either. With this restriction in mind, there is still one bad thing you can do with this: write to iCloud~is~workflow~my~workflows without needing the Save File permission. However you can only do inital write, not overwrite, and even then it's limited to only initial write folders. ### The bug Extract archive allows you to do dot notation in the name of the archive. You can create a zip, use set name to `../../../../../../../../../../private/var/mobile/Library/WebClips/testingzip.zip`, use extract archive and create a folder named "testingzip" to the WebClips directory. This will be auto-deleted upon shortcut ending execution, however if the shortcut doesn't end execution normally (ex crash bug or user closes app before shortcut finishes) it will stay. The Make GIF from Video action has a similar bug, but unlike Extract Archive deletes the files upon finishing the GIF. While you can't use this to overwrite or write files themselves rather than folders that contain files, since .webclip is basically just a folder anyway it works. Example: [https://www.icloud.com/shortcuts/6df21b1b953747cda16752f838377bd9](https://www.icloud.com/shortcuts/6df21b1b953747cda16752f838377bd9) ### Special Thanks Special thanks to the Shortcuts Hacking discord. [Extract Archive Arbitrary Write bug](https://zachary7829.github.io/blog/shortcuts/ExtractArchiveArbitraryWrite.html) # Shortcuts File Format Documentation Credits: Thanks to: * u/Shoculad (Learned about iCloud API from them) * Various people from r/Shortcuts and RoutineHub discord * sebj for [https://github.com/sebj/iOS-Shortcuts-Reference](https://github.com/sebj/iOS-Shortcuts-Reference) * ActuallyZach (Magic Variables) * marcusrbrown (Re-enabling shorcut importing on iOS 13/14) (This guide is mainly intended for iOS 13/14, however there is still some stuff here that applies to iOS 15 and iOS 12-) ### How shortcuts are stored On iOS 13, shortcuts are stored in /var/mobile/Library/Shortcuts/Shortcuts.realm. However, iOS 14 changes this to be in Shortcuts.sqlite. You don't need to worry about this at the moment though - what you do need to understand however is the .shortcut format. On iOS 12/13/14 devices, a shortcut that's stored on a device can be exported as an unsigned .shortcut file by using the Get My Shortcuts action (You can use a Save File action to save the output). iOS 15 is slightly different, however: you can't export shortcuts on device as unsigned shortcuts using Get My Shortcuts, only signed. You can, however, get a unsigned .shortcut from the iCloud API. Let's upload a shortcut to iCloud, and imagine our link is [https://www.icloud.com/shortcuts/77dfe31578ac4f6fb084ebb418b34a49](https://www.icloud.com/shortcuts/77dfe31578ac4f6fb084ebb418b34a49). Change /shortcuts/ to /shortcuts/api/records/ ( [https://www.icloud.com/shortcuts/api/records/77dfe31578ac4f6fb084ebb418b34a49](https://www.icloud.com/shortcuts/api/records/77dfe31578ac4f6fb084ebb418b34a49) ). The value for fields.shortcut.value.downloadURL should be the URL for the unsigned .shortcut (Note: If you opened in Safari, change \/ to / in the URL). After getting the unsigned .shortcut, rename this to a plist and you should be able to easily open this in Xcode (or, use set name to rename to something.plist with Do Not Include File Extension on, and Get Text from that). So, now lets go over the keys: * WFWorkflowClientVersion - This is the number that represents the client version that the shortcut was shared on. * WFWorkflowImportQuestions - The import questions for the shortcut * WFWorkflowName - Name of the shortcut * WFWorkflowMinimumClientVersion - The minimum client version the shortcut can be imported in. * WFWorkflowMinimumClientVersionString - Same thing as WFWorkflowMinimumClientVersion but a string. * WFWorkflowIcon - The Icon * WFWorkflowInputContentItemClasses - What the shortcut accepts as input * WFWorkflowTypes - Hard to explain, use sebj's documentation instead if you want this explained, but you likely won't touch this anyway * WFWorkflowActions - this is the big one that matters. It's an array of the different shortcut actions. ### Actions We're going to have a shortcut with a comment action that contains "Chocolate". Let’s take a look at a simple comment action: ``` WFWorkflowActionIdentifier is.workflow.actions.comment WFWorkflowActionParameters WFCommentActionText Chocolate ``` The value “is.workflow.actions.comment” in the WFWorkflowActionIdentifier indicates that it’s a comment action, and the Chocolate value in the WFCommentActionText key indicates that the Comment action contains the text "Chocolate". Just a warning for magic variables: these contain an invisible character. Be careful not to accidentally remove it. Here’s an example of what it looks like, with the invisible character replaced with "(INVISIBLE CHARACTER)" (Thanks to ActuallyZach for sending me this and helping me figure out where it was!): ``` WFWorkflowActionIdentifier is.workflow.actions.gettext WFWorkflowActionParameters WFTextActionText Value attachmentsByRange {15, 1} Aggrandizements Type ExtensionInput string Shortcut Input (INVISIBLE CHARACTER) WFSerializationType WFTextTokenString ``` ### Importing On iOS 12, you could just import .shortcuts from files no issue. However, this was disabled on iOS 13. It's still fairly easy to work around this though - you could have a shortcut that passes a .shortcut file into the Get Link to File action, and it should generate an iCloud link to this .shortcut in which you can import. Similar behavior on iOS 14. (Fun fact: While this is disabled, the code for it is still there: you can actually make a backup, edit a boolean in a plist, restore from said backup and you can import .shortcuts again. Apple actually accidentally enabled it again in iOS 14b1, though quickly realized their mistake and disabled it again.) On iOS 15, however, Apple introduced shortcuts signing, as well as removed the special treatment for Get Link to File regarding .shortcut/.wflow files. This means that you need to sign a shortcut file if you want to import it on an iOS 15 device - and no, you can't do it on device. (Note: There was a way to bypass signing and import unsigned shortcuts files on iOS 15b1, but it was quickly patched.) You need either a Mac or an iOS 12/13/14 device to sign said shortcut file. (To sign on macOS - use the shortcuts CLI tool. To sign on an iOS 12/13/14 device, have a shortcut get the iOS 15 shortcut you want to sign, and use the Get Link to File action to upload to iCloud and sign it. The link to the signed shortcut file should be in fields.signedShortcut.value.downloadURL. However, you /could/ set up a shortcuts signing server if you have a Mac if you really want to - but be aware that if someone uploads a malicious shortcut, Apple could ban it. ### iOS 15b1 shortcuts signing bypass On iOS 15b1, Apple forgot to enforce signing to *.wflow files (the old file extension that Workflow used before it became shortcuts, basically the same as the unsigned .shortcut file format) This means you could easily rename a .shortcut to .wflow and import it. Apple patched this in 15b2. ### Re-enabling shortcut importing on iOS 13/14: As I mentioned earlier, while shortcut importing is disabled in iOS 13/14, the code for it is still there. By changing the WFShortcutsFileSharingEnabled boolean to true in Shortcut's Preferences plist, you can re-enable file importing. It's /private/var/mobile/Library/Preferences/com.apple.siri.shortcuts.plist if you want to edit it on a jailbroken device, or you could modify /HomeDomain/Library/Preferences/com.apple.siri.shortcuts.plist in a backup. [Shortcuts File Format Documentation](https://zachary7829.github.io/blog/shortcuts/fileformat.html) # 1Password CLI Secret Reference Syntax | 1Password Developer Documentation [image:C6D736A7-0A25-4DF3-8EF6-175808780EB2-14063-00001287E54EF5A5/meta-og-image.png] [1Password CLI Secret Reference Syntax | 1Password Developer Documentation](https://developer.1password.com/docs/cli/secrets-reference-syntax/) /Learn how to create secret references that you can use to refer to secrets stored in 1Password./ With 1Password CLI, you can use secret references to inject secrets without editing the environment file or commands that you usually use to deploy your application. At runtime, secret references are replaced by the contents of the field that they reference in your 1Password account. To reference a secret, use this syntax: op://vault-name/item-name/[section-name/]field-name If any of the names include an unsupported character, you can refer to it using its ID instead. ## Secret reference examples ### A field inside a section To create a secret reference that refers to the PagerDuty email field, which is within the Admin section, use: op://Management/PagerDuty/Admin/email * Management refers to the vault where the item is saved * PagerDuty refers to the item * Admin refers to the section where the field is a part of * email refers to the field where the secret you want to reference is located [image:84AEC110-4E90-42C8-9C89-3A7BFFFC2BCE-14063-0000128D08EB7F85/secret-reference-pager-duty.png] ### A field without a section To create a secret reference for the Stripe publishable-key field, which is not part of a section, use: op://dev/Stripe/publishable-key * dev refers to the vault where the item is saved * Stripe refers to the item * publishable-key refers to the field where the secret you want to reference is located [image:EFEC8B9D-EEB3-4F13-8C83-09D404957FC5-14063-0000128D08B35F98/secret-reference-stripe.png] ## Syntax rules The following characters are allowed in secret references: * alphanumeric characters (a-z, A-Z, 0-9) * -, _, /, . and the whitespace character Currently, secret references can’t be used to reference Document items. ## Learn more * [Load secrets into config files](https://developer.1password.com/docs/cli/secrets-config-files) * [Load secrets into the environment](https://developer.1password.com/docs/cli/secrets-environment-variables) * [Template syntax](https://developer.1password.com/docs/cli/secrets-template-syntax) # Workflow Review: Integrated Automation for iOS 8 [image:FCC7A7EF-A511-44AB-8543-F062AD25243C-14838-00002533BE507D04/Workflow-main.jpeg] In the years I’ve spent covering [iOS automation](http://www.macstories.net/tag/automation+ios/), I’ve often [asked](http://www.macstories.net/stories/ios-7-wishes/) for a mobile version of Automator. [Workflow](https://workflow.is/), released today, tries to bring the deep system integration of Apple’s OS X utility to the iPhone and iPad, taking advantage of extensions in iOS 8 to make its automation features ubiquitous and compatible with any app. Readers of MacStories and iOS power users may be familiar with [Drafts](http://agiletortoise.com/drafts/) and [Launch Center Pro](http://contrast.co/launch-center-pro/), the apps that kickstarted iOS’ small revolution with shortcuts and automated chains of actions that let apps communicate in ways the system didn’t provide out of the box. In late 2012, [Ole Zorn showed](http://www.macstories.net/stories/automating-ios-how-pythonista-changed-my-workflow/) how native iOS functionality could be scripted with Python – a concept that he [expanded](http://www.macstories.net/stories/editorial-for-ipad-review/) in 2013 with Editorial. Zorn’s text editor (which became [even more powerful with version 1.1](http://www.macstories.net/reviews/editorial-1-1/) ) went beyond the typical feature set of a Markdown app, offering a comprehensive set of visual actions that could be combined in workflows highly reminiscent of Apple’s Automator. In spite of the community’s best efforts to bring iOS automation to a broader audience, however, all those apps were ultimately limited to text, URL schemes, or third-party services (like IFTTT) that automated data /outside/ of traditional iOS features. Workflow – [first teased by Ari Weinstein and team](https://www.youtube.com/watch?v=fSh6Q0F4d9Q) in January 2014 – takes another approach: instead of relying heavily on a specific functionality (such as text editing) or third-party apps and services (like IFTTT and Dropbox), Workflow is primarily aimed at automating native iOS apps and features. Workflow can automate Calendar events and Reminders, it can parse and extract data from webpages in Safari, and it has full support for Photos and sharing services. It even works with iCloud Drive and extensions. Workflow’s first version lacks some obvious features like backup and sync, but what it does today is an extremely powerful proposition – from both practical and conceptual standpoints. ## The Content Graph Workflow lets you create automated workflows based on actions in an interface that’s inspired by Apple’s Automator and Ole Zorn’s work on Editorial. Actions take input and generate output, and they’re connected in a vertical flow that is run from top to bottom to execute multiple tasks in rapid succession. Workflow can show native UIs such as alerts and lists, it lets you enter manual input with the keyboard, and, like Editorial, is based on a variable system to use different pieces of data across actions in a workflow. Workflow comes with over 150 built-in actions [1](https://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/#fn1) organized in: * Calendar * Contacts * Documents * Maps * Music * Photos & Video * Scripting * Sharing * Text * Web Upon first launching the app, you’ll be presented with an interactive onboarding process aimed at explaining the basics of workflow creation by letting you create a workflow to generate and share a GIF. The core ideas behind Workflow are immediately showcased here: actions are arranged with drag & drop and you need to grant Workflow permission to system features such as the camera or your photo library. When a workflow is created, hit the Play button and the app will run it until it stops. If you’re familiar with Automator and Editorial, the learning curve won’t be steep: Workflow is a very visual app that wants to simplify automation and make it understandable on iOS. But to give new users a chance to play around with Workflow before creating their own commands, the developers built a gallery with pre-made workflows available for download. These workflows give a good idea of the app’s capabilities and they’re organized in sections: you will find Great Action Extensions for workflows to create new note in Evernote and share it with one tap or to turn anything into a PDF and add it to iBooks; a Sharing category that features a workflow to tweet the song you’re currently listening to; and, of course, document-related workflows for iCloud Drive, GIF creation, Dropbox, and more. I like the design of the gallery and the included examples. The demos featured by the Workflow team provided excellent building blocks for some of my most used workflows, such as the ability to append text to Evernote from Safari, or a workflow to display busy times from my Calendar. You can download examples with one tap, look at their actions, and modify them to suit your needs. The Gallery is a good starting point, but the full breadth and depth of Workflow is only revealed when assembling new workflows from scratch and playing around with the app’s intelligent input conversion system. And to understand why Workflow is a powerful new player in the iOS automation space, it’s important to explain how its Content Graph works. In the past two years, most apps that tried to automate iOS were limited to textual input and output as they primarily dealt with URL schemes, which can only carry encoded text across apps. Pythonista and Editorial are [capable of working with images](http://omz-software.com/pythonista/docs/ios/PIL.html) from the Camera Roll, but they require knowledge of Python scripting; Launch Center Pro has integrations with various types of images, but they’re mostly built for connections to third-party services such as IFTTT, Giphy, and Dropbox. For Workflow, Weinstein and team created ContentKit, a custom iOS framework that is capable of taking a collection of content items and intelligently coerce them into another format. The ContentKit framework powers the Content Graph, which is a “map” of how input from iOS features and apps is translated throughout workflow actions on the fly. The content transformations that Workflow does and that puts in the user’s control are based on a complex technology that allows Workflow to integrate apps and services that are seemingly unrelated, such as Maps and iBooks or Music and Twitter. In the app, you can create a workflow to get your current location and turn it into an image you can share or continue to convert to PDF. You can see the song that’s currently playing and easily fetch its album artwork as an image, but if the receiving action doesn’t support images, use the song’s title (as text) instead. You can parse some text as a valid address and open it in Maps. Or, you can find your upcoming Calendar events, pick one, and turn it into an item shareable with AirDrop. To perform these content transformations, the app uses an intelligent system that is able to determine how actions and apps can deal with input without errors and in useful ways. In the case of locations and images, Workflow converts a location to a map item and, last, to an image in a second, giving you an image file that you can share, save, or convert again. In technical terms, this is what happens in the Content Graph for the location example: CLPlacemark -> WFLocationContentItem -> MKMapItem -> WFMKMapItemContentItem -> UIImage -> WFImageContentItem Workflow’s Content Graph extends to every input type supported by the app – whether it’s a web link, plain text, a webpage, a song, a PDF, or a video. In theory, any action output can be turned into a compatible input for a subsequent action, creating combinations such as “turn webpage to PDF” or “choose photo, upload to Dropbox, get a public link, and share it”. The best part is that you don’t have to understand any of these technical complications. The system is built to perform transformations automatically, abstracting technicalities from the experience. I talked to Ari Weinstein about the Content Graph, and he noted that it’s “an important technology” for the app. “In addition to the unique coercion abilities, the Content Graph is very powerful for connecting different apps together”, he told me, adding that the Content Graph also supports the system clipboard and [NSItemProvider](https://developer.apple.com/library/prerelease/ios/documentation/Foundation/Reference/NSItemProvider_Class/index.html), the class Apple built to handle communication between apps and extensions. ## Connecting iOS As a heavy Launch Center Pro and Editorial user, it took me a while to fully figure out Workflow and the new kind of automation it brings to iOS. Besides the Content Graph, in fact, a key aspect to understanding Workflow is the way workflows can be launched from action extensions and how they can seamlessly blend in with other apps through the share sheet. Due to Apple’s unwritten rules, Workflow can’t have a Today widget, but its action extension (and the ability to pin workflows to the Home screen or open them from Launch Center Pro) has been more than enough to speed up many of my daily tasks. When I saw the first teaser video of Workflow in January, my first thought was that an Automator-style app that forced you to open its main interface to launch actions wouldn’t be very useful. I have several Automator workflows on my Mac, but I never open Automator to run them: I use launchers like [Keyboard Maestro](http://www.keyboardmaestro.com/main/) or [Alfred](http://www.alfredapp.com/) to execute them – and I don’t even have to open those apps because they can be activated with a system-wide keyboard shortcut. Fortunately, the Workflow team came up with a way to integrate workflows with extensions in iOS 8 – specifically, action extensions. Each workflow can have a custom name and icon and it can be added to the Home screen as a webclip or to Launch Center Pro. If you add a workflow to the action extension, you can specify the input types for which it’ll come up as an action extension, which are: * Contacts * Dates * Email addresses * Files * Images * Locations * Maps links * Media * PDFs * Phone numbers * Rich text * Text * URLs Control over these input types lets you choose where and when a workflow should appear in the action extension: maybe you want a workflow for web links from Safari and Twitter, but you don’t need to use it when you’re dealing with a document or a contact. The first action of a workflow always takes the input that’s passed from the action extension: in apps like Twitterrific and Tweetbot, a workflow launched as an extension will receive a tweet’s link or text; in Safari, it’ll get the URLs of the current webpage; in a text editor, it’d typically receive text from a document. If you’re unsure about the input type given to a workflow, the app lets you use a debug action to view the Content Graph and how it’s processed from the input – it’s a neat visualization and useful to understand how actions work. To better explain the possibilities opened by Workflow, I evaluated areas of my iOS setup that were ripe for automation and put together workflows that are now helping me on a daily basis for MacStories and Relay-related tasks. I have two workflows for opening and saving files. [The first one](https://workflow.is/workflows/b690e5f36ebf431e99f8153915590e23) is simple but handy, and a good idea of Workflow’s deep integration with iOS 8: with two actions, I can pick a file from iCloud Drive (or any other document storage extension) and choose to open it in another app on my device. On iOS 8, there isn’t a native app to browse every folder in iCloud Drive; Workflow, with its customizable actions, lets me bring up the full iCloud Drive browsing interface whenever I want and choose what to do with a file I select.[2](https://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/#fn2) The upside of this implementation is that Workflow can switch to any other external storage location from the share sheet, such as Dropbox or Transmit. This means that I can integrate files from other services and file managers like Documents 5 into Workflow, creating chains of actions that wouldn’t be supported by apps or even [approved by Apple](http://www.macstories.net/ios/apple-asks-panic-to-remove-icloud-drive-export-feature-from-transmit-for-ios/).[3](https://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/#fn3) [Here’s another workflow](https://workflow.is/workflows/e1655a7bea8d4e1b85a104c83bcb2bd5) I use all the time: a file downloader that can save files to iCloud Drive. Given a direct download link to a file in the clipboard, Workflow can download the file (showing a progress bar) and then save it to any installed document storage extension. I use this workflow often to download files from the web, but the fact that it requires a link to be copied first highlights a limitation of the extension framework on iOS 8. This workflow would be much better if it could be activated from the copy & paste menu by tapping & holding any link, but that’s currently not an extension point available to developers.[4](https://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/#fn4) The two workflows above make up for something that iOS still lacks, and they encapsulate the kind of system enhancements that you can craft with enough imagination. Sometimes, I want to quickly upload images to Dropbox and share a link with other people. [My Share Dropbox Photo workflow](https://workflow.is/workflows/d9e68593b2a44bdf8cd086afbaa6c862) takes a specific functionality of the Dropbox app and it abstracts it in a way that enables me to connect it with other iOS services and UIs. With just four actions, I can select a photo (or multiple ones) from a standard photo library sheet and save them to Dropbox, optionally specifying a folder where I want the files to be saved to. Once the upload is done, I can use a Get Dropbox Link action to automatically fetch the public link (or short URL) of the file that was just uploaded and copy it to the clipboard. If I want, I can show a native alert with the link in it to confirm that I just uploaded and shared a photo. Again, this would be possible without an automated workflow; it’s just faster this way, and better than the iOS 7 days because it relies on native extensions and document pickers. Workflow’s action extension is an impressive feat. Available from the share sheet of any app that supports extensions, the Workflow extension consists of a panel containing workflows that you’ve enabled to work as action extensions (quite a mouthful). These workflows can accept all the possible values available in their settings, and Workflow will try its best to understand how the extension has been activated, what kind of input has been passed from the share sheet, and how content can be transformed across actions. Workflow’s action extension essentially enables you to create a fully customizable menu with your own commands that include actions Apple itself may not support yet – but which can be created from scratch with actions and Workflow’s magic glue. Take this [Make PDF workflow](https://workflow.is/workflows/bfaa6b2078534706b7ad7d65b6d250b2) as an example: In seven years of iOS, Apple still hasn’t offered a “Print to PDF” functionality to turn webpages or email messages into PDF documents. That’s not an issue with Workflow, which comes with a “Make PDF” action that can turn anything into a PDF thanks to the Content Graph. This works for webpages, where the webpage you’re seeing will be “printed” to PDF, but also images, map views, song artworks, and more. If you want, Workflow can automatically send a newly generated PDF to iBooks, or you can bring up a document extension and save it elsewhere. Each action in Workflow can be tapped to view a description, the input type that it supports, and the results that it will return; in this case, Make PDF supports any input and returns a PDF file. In Safari, Workflow is smart enough to understand that Make PDF is preceded by the input of an extension activated from the browser. When I run the workflow from a Pinboard client for iOS 8, the app also knows that I want to turn a web view into a document. In practice, it can take a few trials and errors to understand how the input system of iOS 8 extensions works (frankly, it’s taking a while for a lot of third-party developers too), so expect some inconsistencies until apps figure out the best ways to communicate with each other. Once you’ve learned how Workflow transforms content across services and the different categories of actions available in the app, you’ll start grasping the potential for completely personalized workflows that can automate and speed up routine tasks you perform every day. Perhaps you often need to check the locations of upcoming calendar events and look up directions in Google Maps. With Workflow, you can chain actions to do that with interactivity and a visual preview of the location before loading directions in the Google Maps app. In the [workflow I put together](https://workflow.is/workflows/c63c644eadc14fc6ad07af560f42a08c), this will happen: 1. A popup displays a list of your upcoming calendar events; 2. The one you pick is converted to an address; 3. The address is loaded with Google Street View; 4. Street View is previewed with the native Quick Look panel; 5. Directions to the address are loaded in Google Maps. Or maybe you want a quick way to save any kind of content (including images) to Evernote with predefined tags and notebook, but a title that you type manually every time. [This workflow](https://workflow.is/workflows/04d5d094643848a5b090127be0559e12) can create a new note and share it immediately, putting its public link in your clipboard; it can be run from any share sheet, and it’s especially handy to save /and/ share photos to Evernote from Apple’s Photos app. These workflows should give you an idea of the kind of automation and user interaction that is possible with Workflow. You can display native alerts and popups, play sound effects and speak text, insert conditional blocks, and even get the current network name or make your device vibrate . Like Automator, the possibilities are virtually endless, and a built-in sharing feature will let you share workflows with other people and submit them to the app’s online gallery. It’s easy to spend hours just playing around with Workflow and see what you can come up with and where the app can break. I went through that phase, but decided to focus my efforts on workflows I would actually use on a daily basis, such as one to [search for the lyrics of a song on Google](https://workflow.is/workflows/fd8dea9506e44ba4a181986f2ede1263). Workflow’s Music integration can return the song that’s currently playing on the device, and I mix that information with the word “lyrics” in a text field. Note how Workflow automatically assumes I want the name of the song as text rather than other output types. Opening a Google search is then as easy as launching Safari with the input. The same Get Current Song action, if combined with a Get Images from Input action, will let you [tweet the artwork of the song](https://workflow.is/workflows/7cc0d5f95cb642a3b91ad76aa44a282a) you’re currently listening to. I also enjoy Workflow’s integration with Safari through the share sheet very much. Given a URL, Workflow can download the contents of its webpage as rich text, which opens various possibilities for further content automation. One of them is the ability to extract images from rich text, which I use to [count the number of images found in a webpage](https://workflow.is/workflows/0d0a618e86c440ec9be9e5b852ce87b9) directly from Safari. Alas, due to memory constraints of iOS 8, this workflow will crash with articles like [this one](http://www.macstories.net/stories/twitter-clients-in-2014/). The workflow that I use the most every day, though, is a rather straightforward one. I co-host two podcasts, and I assemble a weekly newsletter; for both tasks, I often need to collect links I want to cover. To speed up the process, I created a [workflow](https://workflow.is/workflows/905b25f5348c4c75b8344727cc25ace2) that gets a link from the extension and appends it to a note in Evernote. This saves me several minutes each week as I don’t have to open the Evernote app and links are appended directly from an action extension. There are some nice touches in it: if the extension hasn’t passed a link, Workflow will save the clipboard to Evernote. For URLs, it’ll try to save them alongside the title of their webpage. Below, you can find a quick video of some of my favorite workflows in action. ## Next Level iOS Automation [Workflow](https://workflow.is/) wants to do something big: combine the interface of Automator and its deep system integration with iOS 8 features and extensions, native apps [5](https://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/#fn5), and an engine capable of transforming content intelligently. There are hundreds of actions that I haven’t covered in this review. You can parse RSS feeds, edit and delete photos, compress files and AirDrop them (seriously), control music, and that’s not to mention the scripting part with variables, conditional and repeat blocks, and custom menus. For a 1.0, Workflow has an astounding depth. Workflow could use some fixes: workflows can sometimes get “stuck” (forcing you to restart the app); some combinations of actions feel a bit rough and unfinished, such as the ability to preview Markdown in RTF; the search feature in the sidebar is buggy; and, workflows can’t sync across the iPhone and iPad. Weinstein and his team are aware of these problems, and, according to them, they will be fixed with upcoming updates. Because Workflow relies on native iOS 8 features so much, many of the bugs that I encountered in my tests weren’t bugs of the app itself – they had been left by Apple. What I wanted to test before the final release was the Content Graph: when I got the first demo of Workflow this summer, it sounded too good to be true. Not only does the Content Graph work – it shows incredible potential for future improvements and I can’t wait to see what Workflow users will come up with. The Content Graph is a blank canvas with strong ties to native iOS frameworks, and it’s exactly the kind of versatile automation engine that someone needed to create for iOS. iOS automation has mostly been limited to plain text and scripts so far. If Apple ever makes an iOS version of Automator, I bet it would be similar to Workflow, which I believe has a bright future ahead. Workflow’s biggest strength is in how it hides complexity to let anyone create their own automated chains of actions easily and quickly. There’s plenty of power under the hood, and the developers showed remarkable restraint in not making technical details the focus of this debut. Workflow sits somewhere in between a magical sandbox and insane power user tool, and I still can’t believe that this is possible on iOS now. Workflow is [available at $2.99 on the App Store](https://itunes.apple.com/us/app/workflow-powerful-automation/id915249334?mt=8&uo=4&at=10l6nh&ct=ms_inline). ### Download the Workflows [Workflow Review: Integrated Automation for iOS 8](https://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/) # Apple has acquired Workflow, a powerful automation tool for iPad and iPhone – TechCrunch [image:B4751F89-1E7F-4FEE-B4F4-C428519A3404-13721-000022B232285D88/image-3-21-17-at-9-44-am.jpg] Apple has finalized a deal to acquire [Workflow](https://itunes.apple.com/us/app/workflow-powerful-automation/id915249334?mt=8&ign-mpt=uo%3D4) today — a tool that lets you hook together apps and functions within apps in strings of commands to automate tasks. We’ve been tracking this one for a while but were able to confirm just now that the ink on the deal is drying as we speak. I haven’t been able to get financial details for the deal, but if I come up with them I’ll update. As far as I know it was a solid payday for the team and small upside for investors. Workflow had raised an unannounced seed round of what we’re hearing was in the range of a couple million from Lowercase, Eniac and General Catalyst. The app was made by a small team that includes Ari Weinstein, a former iPhone jailbreaker. I’ve been following his efforts since the iPod Linux days and [covered his very useful DeskConnect app](https://beta.techcrunch.com/2013/09/04/from-jailbreaks-to-app-store-awards-developers-grow-up-iphone/) a few years back. Workflow has been [around for a couple of years](https://beta.techcrunch.com/2014/12/11/workflow-lets-you-automate-the-stuff-you-do-all-the-time-on-your-iphone/) and we’ve covered it and its [updates](https://beta.techcrunch.com/2015/08/27/workflow-lets-you-put-shortcuts-to-frequent-actions-right-in-ioss-notification-center/). It shares some similarity with the service IFTTT, in that it allows people to group together a bunch of actions that can allow them to perform complicated tasks with one tap. It had built up a sizeable number of users and downloads over the past few years. Workflow the app is being acquired, along with the team of [Weinstein](https://twitter.com/AriX), [Conrad Kramer](https://twitter.com/conradev), [Ayaka Nonaka](https://twitter.com/ayanonagon) and [Nick Frey](https://twitter.com/nickfrey). In a somewhat uncommon move for Apple, the app will continue to be made available on the App Store and will be made free later today. [image:DDC60A14-A9DD-4805-B7CF-A79A78CDBFBA-13721-000022B231E6852E/screen-shot-2014-09-16-at-8-48-51-pm.png] “We are thrilled to be joining Apple,” said Weinstein in a statement. “We’ve worked closely with Apple from the very beginning, from kickstarting our company as students attending WWDC to developing and launching Workflow and seeing its amazing success on the App Store. We can’t wait to take our work to the next level at Apple and contribute to products that touch people across the world.” This is not a “pure acqui-hire” in that Workflow — not just the talent — is being purchased in this deal. This makes sense, and I’m glad to see it because Workflow itself was a prime meat example of how to find a need in the iOS ecosystem, tackle it in an interesting way and execute it with cleverness and attention to honoring the platform. Simply put, it’s super smart, really well designed and works very well. [image:2CCA1FE4-3088-4413-9CD6-DA20B44E289F-13721-000022B231A071F0/screen-shot-2017-03-22-at-4-26-07-pm.png] Workflow won an Apple Design Award in 2015; Apple Accessibility engineer Dean Hudson [waxed ecstatic](https://developer.apple.com/videos/play/wwdc2015/103/) about the way that it handled accessibility. “When I first saw the app, I was just like man, this accessibility is cray-cray. This is off the charts!” Apple confirmed the deal, and has said the following about Workflow: “The Workflow app was selected for an Apple Design Award in 2015 because of its outstanding use of iOS accessibility features, in particular an outstanding implementation for VoiceOver with clearly labeled items, thoughtful hints, and drag/drop announcements, making the app usable and quickly accessible to those who are blind or low-vision.” The accessibility features of Workflow are super impressive, especially for an app that is a tool for building complicated macros. It would have been much easier to say hey, this is for heavy users, maybe we don’t need to make sure it’s 100 percent accessible — but they didn’t, and they won a bunch of awards (and an exit) for their trouble. Workflow’s existing integrations with apps are extensive and will continue to be updated. You can see some of the pretty intense capabilities of the app in [this post from Federico Viticci](https://www.macstories.net/ios/workflow-1-7-introduces-magic-variables-for-easier-more-powerful-visual-automation/), a workflow maniac. For you super nerds, this news could be a nice treat given the [recent-ish departure of legend Sal Saghoian](https://twitter.com/Ihnatko/status/798989619245133825), Apple’s automation Czar, and the elimination of his position. Some folks had taken this as a signal that Apple was no longer interested in the automation category. The special sauce of Workflow is that it enables users to dip into specific “deep linked” functions of individual apps and connect those actions together into a string of seamless, invisible commands. If that sounds familiar, you might be thinking of the budding Siri API — which will only be getting more beefy as time goes on. If you spool out the thread here it’s not hard to see Workflow being integrated heavily with Siri, allowing even more seamless activation and composition of actions now that the team has access to Apple’s private APIs, which are more robust than the tiny bit of Siri that’s public so far. There are also great opportunities here to offer value-add “power user” capabilities to the iPad ecosystem. Apple’s efforts to get people to see the iPhone, iPad and even Apple Watch ecosystem as something that can be used for many light-to-medium tasks could be bolstered here. The Workflow app for Apple Watch is especially clever and a nice organic fit — I’ve long been a proponent of the “ [1.5 seconds or bust](https://beta.techcrunch.com/2015/09/21/the-apple-watch-and-the-smartphones-second-act/) ” interaction model with Apple Watch. Workflow’s “endpoint” is a single tap or automated action that can “hide” a complex system of commands or interactions underneath it — ideal for Apple Watch. Workflow’s acquisition is a fairly crisp example of the kinds of app successes that have become a bit more muddied in this age of services. A small, clever team (that were [one-time WWDC student scholarship](https://twitter.com/StephenNellis/status/844707161187995648) recipients) built a tool so useful on iOS that Apple itself essentially copped that they couldn’t do it better and bought it. It will be interesting to see where it goes from here. [Apple has acquired Workflow, a powerful automation tool for iPad and iPhone – TechCrunch](https://techcrunch.com/2017/03/22/apple-has-acquired-workflow-a-powerful-automation-tool-for-ipad-and-iphone/) # The Future of Workflow [image:72DCBA8B-0E8A-4CC3-8DB9-785C1D82DE28-11154-00001A4DDA8F765F/2017-03-30-14-06-43.jpeg] I’ve loved [Workflow](https://itunes.apple.com/us/app/workflow-powerful-automation-made-simple/id915249334?mt=8&uo=4&at=10l6nh&ct=ms_inline) since the first beta I was sent in August 2014. Workflow is my [most-used iOS app of all time](https://www.macstories.net/tag/workflow/), and, in many ways, it is the reason my iPad Pro can be [my primary computer](https://www.macstories.net/stories/one-year-of-ipad-pro/). I’ve written thousands of words on the app and have created hundreds of workflows for myself and [others](https://club.macstories.net/) over the course of two years. I referred to Workflow as [Minecraft for iOS productivity](http://www.imore.com/how-use-workflow-ios-when-you-dont-know-where-start) and the [modern bicycle for the mind](https://www.macstories.net/news/apple-acquires-workflow/) in the past. I stand by those analogies. There’s nothing else on iOS like Workflow, which deftly walked the fine line between absurd innovation and Apple rejections with a bold vision and technical prowess. Workflow embraced the limitations of iOS and turned them into strengths, resulting in a power-user app with no competition. After two years, no app gets remotely close to the automation features shipped by the Workflow team. And now Workflow and its creators are going to be part of Apple and the company’s bigger (and more secretive) plans. Somewhere in the back of my mind, I had always kept the possibility that Workflow could eventually be discontinued or acquired. In a somewhat prescient move, Stephen quizzed me on this problem [a few weeks ago on Connected](https://www.relay.fm/connected/133). My “worst-case scenario” of Workflow going away became the new reality of iOS automation last week. Workflow as an app is an incredibly good acquisition for Apple, but there’s a deeper subtext here. Workflow represents a movement from a large number of users who enjoy working from iOS devices so much, they want to optimize the experience as much as possible. Workflow’s goal wasn’t to merely provide a capable alternative to the Mac’s AppleScript and [Automator](https://developer.apple.com/library/content/documentation/AppleApplications/Conceptual/AutomatorConcepts/Automator.html); Workflow wanted to eclipse legacy scripting environments and usher iOS users into a new era of mobile automation. There’s the Workflow app and team – technically impressive and absolutely talented – and there’s the bigger theme behind Workflow. But what has Apple acquired, exactly? Under Apple’s control, can Workflow continue on its mission to make automation accessible for everyone? If Apple sees a future in iOS automation powered by Workflow, what else can be done with a virtually infinite budget and stronger ties to the platform? And what does this acquisition mean for Apple’s commitment to pro users on iOS? I’ve been mulling over these questions for the past week. I don’t have any absolute answers at this point, but, after building workflows and following the app’s development for two years, I have some ideas on where Workflow can go next. Below, you’ll find two possible scenarios for Workflow as an Apple app, as well as some considerations on how Apple could evolve Workflow into a native /feature/ of iOS devices and a new developer platform. ## Worst Option: Workflow Is Abandoned Without a Replacement If you follow tech startup news, you’d be hard-pressed to get excited about your favorite app shutting down because its founders are going to work for a bigger company. Most of these announcements follow the same playbook: * TechCrunch/other publication breaks the acquisition news; * Bigger company confirms the deal; * Startup confirms the acquisition in a Medium post, says the team is “excited to join *Company* ” and “continue on their vision” for *Product*; * [Casey Newton](http://www.theverge.com/users/CaseyNewton) [writes](http://www.theverge.com/2016/10/28/13456208/why-vine-died-twitter-shutdown) a [fantastic](http://www.theverge.com/2015/12/8/9873268/why-dropbox-mailbox-shutdown) “behind the scenes” [obituary](http://www.theverge.com/2013/11/5/5039216/everpix-life-and-death-inside-the-worlds-best-photo-startup); * *Product* receives no updates for 6-12 months. /If/ it is updated, changes focus on removal of existing features or basic bug fixes; * *Product* is unceremoniously discontinued. A shorter, less inspired Medium post mentions the team’s “bigger mission that now goes beyond *Product* ”. In startup lingo, these acquisitions are referred to as “acqui-hires”: a bigger company hires a startup’s talent by buying their *Product*, but the purchase is only skin-deep. This is an over-simplification, but, in most cases, the corporation is only interested in the people who built *Product* and have no motivation whatsoever in continuing to invest in it, its customers, and legacy tech. If *Product* stays around for a few months, it’s because the startup managed to convince the new owners to enable a grace period out of respect for existing users. Both parties are acting in their best interests, but *Company* has the upper hand. The only constant is customers losing access to the original service sooner or later. I don’t know if Workflow will follow the same path of most startups acquired by Apple and other large companies, but initial signs are already there. The latest version of Workflow has removed some actions (which might be due to [legal reasons](http://daringfireball.net/linked/2017/03/28/workflow-lawyers) ) and the curated Workflow Gallery no longer highlights user profiles. The app has been made free, Apple has promised to keep it on the App Store for now (grace period), and the core engineering team has joined Apple. It’s easy then to imagine the following scenario: Apple has acqui-hired the Workflow team for their talent, but they have no intention of operating Workflow in its current form going forward. The app will live on the App Store for 6-12 months while the team begins working on something else unrelated to a standalone automation product. Sometime later this year or in mid-2018, Apple will remove Workflow from the App Store and links to public workflows shared by users will redirect to a ‘Goodbye’ webpage. Following outrage by the community, Apple will issue a statement citing the “great new technologies” in iOS 11 that obviate the need for Workflow and provide a better solution for everyone. Finally, changes in a build of iOS 11 will introduce compatibility issues in the last, abandoned version of Workflow that will prevent normal usage of the app. With no actual replacement, millions of users will forever lose access to the best automation app ever created for iOS, and new features in iOS 11 won’t be able to compensate for the demise of Workflow. Following Apple’s acquisition, this is my new worst case scenario for Workflow. While I don’t personally believe in such a dark timeline, it is plausible and it has precedents with hundreds of startup acquisitions and discontinued products that came before Workflow. I should also mention how Apple’s spotty performance in automation and recent tumult within the organization lend credence to the common belief that Apple doesn’t care about Workflow as a dedicated iOS automation app. On the Mac side, Automator (the app that inspired Workflow in the first place) has been languishing without major updates for years, while scripting technologies such as [AppleScript](https://developer.apple.com/library/content/documentation/AppleScript/Conceptual/AppleScriptX/AppleScriptX.html) and [JXA](https://developer.apple.com/library/content/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/Introduction.html) have hardly received any attention. Sal Soghoian, former head of Automation Technologies at Apple, [left last year](https://www.macstories.net/linked/sal-soghoian-leaves-apple/) and later urged users to be vocal about [the need for scripting and automation features](https://www.macstories.net/stories/app-extensions-are-not-a-replacement-for-user-automation/). Apple’s recent approach to automation and other pro software features epitomize a company that is focused on consumer products. And automation, sadly, has never been a tentpole feature that could appeal to millions of consumers. From Apple’s perspective, it would arguably make sense to kill off a product that doesn’t directly contribute to the bottom line of the company, despite the quality of the software and affection from the community. ## Best Option: Apple Turns Workflow into a More Powerful, Native iOS Feature When it comes to high-profile acquisitions of popular iOS apps and services, the modern Apple has a fairly solid track record. The three examples I can think of – [Siri](https://techcrunch.com/2010/04/28/apple-siri-200-million/), [TestFlight](https://www.macstories.net/news/apple-acquires-testflight-owner-burstly/), and [Beats Music](https://www.macstories.net/news/apple-acquires-beats-news-recap/) – all blossomed into native successful services that are much better as Apple products today than they could have ever been as third-party additions to the iOS ecosystem. The evolution of Siri is particularly impressive, as it went from [a third-party assistant app](https://youtu.be/MpjpVAB06O4) to [an integral part](http://www.apple.com/ios/siri/) of the entire iOS experience. Just like abandoning those three services would have destroyed goodwill among existing customers and put Apple at a competitive disadvantage, letting Workflow wither away without a proper replacement would be a deep setback for iOS productivity and send the wrong message to a community of committed users who are embracing iOS devices as post-PC computers. In a more optimistic outlook, Apple has seen the unparalleled functionality and unique potential of Workflow and convinced the team that the only way to reach the next level of system integration was to have Workflow become part of iOS itself. Similarly to Siri and Beats Music, the vision behind Workflow is ripe for unlimited resources with no restrictions on access to private APIs and system features. Under Apple’s guidance, Workflow could grow into a safer, more integrated, extensible automation service and developer platform unlike anything that has ever been attempted on the Mac before. Workflow was already reshaping iOS automation; as an Apple app, Workflow could lay the foundation for the future of iOS productivity. I’ve been thinking about the future of Workflow for a while – ever since [I started imagining](https://www.macstories.net/reviews/workflow-1-5-app-store-automation-trello-and-ulysses-actions-audio-metadata-safari-view-controller-and-more/#to-the-future) what “Workflow 2.0” could have been. Apple has a lot of work ahead and I don’t think we’ll see the results of their automation efforts in iOS 11 this year. With no knowledge of the Workflow team’s (or Apple’s) actual plans, I’ve compiled a list of smaller additions and major changes that we could expect from an Apple-made Workflow in the next few years. ### Short-Term and Other Obvious Improvements Bearing in mind that Apple is likely going to rewrite Workflow from scratch, these are some of the less visionary improvements I expect the company to bring to the app. #### *Workflow Folders and iCloud Sync* Workflow needs better organization for user-created workflows. While the team has done a remarkable job with the ability to easily [reference workflows and a larger collection](https://www.macstories.net/ios/workflow-1-7-1-brings-new-icon-glyphs-run-workflow-action/) of icon glyphs, there should be a way to create folders for workflows and control their appearance (with folder icons) and sorting settings. Folder navigation would introduce new challenges [1](https://www.macstories.net/stories/the-future-of-workflow/#fn-48267-1), but the current single-view model doesn’t scale anymore. Furthermore, I expect Apple to replace Workflow’s proprietary Workflow Sync service with their own iCloud-based [2](https://www.macstories.net/stories/the-future-of-workflow/#fn-48267-2) solution with support for versions and public sharing. While [App Store guidelines](https://developer.apple.com/app-store/review/guidelines/) prohibit third-party apps from syncing executable code between devices [3](https://www.macstories.net/stories/the-future-of-workflow/#fn-48267-3), I suspect Apple’s future Workflow app will eschew such limitations and securely sync your workflows between devices. #### *A More Flexible Action Extension* Workflow’s customizable action extension is one of the strongest arguments in favor of opening up user automation on iOS. By integrating with any app or system feature that supports the share sheet, Workflow’s extension enables users to create their own (safe) improvements for iOS apps and make their devices work better for them. There’s a lot more to done with the extension, though. [image:0F1D3D45-A648-48F6-A986-8925086A091C-11154-00001A4DDA712816/2017-03-29-23-14-02.jpeg] Workflow’s current action extension has limited filtering options. Most notably, Workflow’s extension needs more filters to specify where and when a workflow should be available as an extension. Currently, Workflow supports basic type filters for items passed to the share sheet such as “Safari webpages” or “Files”. In a future version of Workflow, I would like to see filtering capabilities to control, for instance, workflows that should appear as extensions only at a specific website (filter by domain), with a specific file type shared from an app (“any JPEG shared from Photos”), or for email messages that come from a certain sender or that contain a keyword in their subject. Some of these ideas can be implemented with a series of manual workarounds in the current Workflow app, while others would require direct access to restricted parts of iOS. As an Apple app, Workflow should make it easier to pick workflows for the extension, and it should also allow users to choose from more options previously not available to a third-party app. #### *New Privileges* Speaking of limitations in the old Workflow, becoming a first-party app gives Apple the opportunity to grant Workflow new exclusive privileges in terms of performance, iCloud Drive integration, and private API usage. If the company is committed to Workflow, I fully expect them to take advantage of technologies that aren’t available to third-party apps. There are dozens of areas Apple could consider for new Workflow-only integrations. iPad users could gain an option to assign system-wide keyboard shortcuts to workflows and run actions from any app at any time – like they can with [scripts on the Mac](https://red-sweater.com/fastscripts/). Workflow could access device settings such as WiFi, Bluetooth, AirPlay, location, or Accessibility options, and provide contextual actions to modify the behavior of a device depending on the user’s preference, network condition, and other criteria.[4](https://www.macstories.net/stories/the-future-of-workflow/#fn-48267-4) Apple could consider giving Workflow full access to iCloud Drive and let the app read files from and write them to any folder from any app – not just the sandboxed `/Workflow` folder. [image:55A4D00D-C67E-4F04-AED1-7917CFDA1C1E-11154-00001A4DDA4FC61E/2017-03-29-23-11-53.jpeg] Currently, Workflow’s iCloud Drive actions can’t be as flexible as the Dropbox ones. Apple could even make special exceptions for increasing the memory allocation to the Workflow widget and extension, enabling users to perform more power-intensive tasks and for longer periods of time in multiple parts of the OS. Combined with extended background execution times, these advantages could allow Workflow’s automation engine to become more pervasive and integrated throughout iOS. My favorite idea, however, is attempting to imagine new “real-time workflows” that would intelligently react to device conditions/environmental triggers and adapt their interface and actions accordingly. Imagine, for instance, a workflow capable of accessing HomeKit controls, Apple Music, and HealthKit workouts at runtime. A user who goes running every morning could easily assemble a multi-step routine which locks their front door and brings up a collection of music playlists before the run starts. While the user is running, an underlying Workflow engine would put workout-optimized music controls and run details front and center on the Apple Watch or iPhone. Finally, the same routine that “prepares” a new run could automatically unlock the front door, continue playing music on a wireless speaker, and display summary stats for the completed workout on a big screen via the Apple TV as soon as the user gets back home. This automation wouldn’t be a standalone “workflow” that is manually executed as much as it’d be an invisible, integrated, and secure automation engine connected to every piece of the Apple ecosystem. It may sound too futuristic, but many of the key elements required for these ideas are already in place, both in Workflow and in Apple’s own frameworks. Workflow can already integrate with Apple Music and control music playback; it doesn’t have any HomeKit actions, but it fully supports HealthKit. With iOS 10, Apple added a [basic routine-building UI](https://www.macstories.net/stories/ios-10-the-macstories-review/19/#home) for HomeKit automation, which would greatly benefit from Workflow’s more intuitive interface. Once these two worlds collide, it’s reasonable to envision a deeply integrated Workflow that supports Apple technologies such as HomeKit, CloudKit sharing, CarPlay, Siri, and iMessage; it also makes sense to see Apple embrace new home and lifestyle automation features to foster more powerful (and yet secure) connections between all of their services. As iOS continues to [split system apps and features into atomic units](https://www.macstories.net/stories/ios-10-the-macstories-review/30/#10) available as extensions and widgets across the OS, and as services evolve into a new pillar for the company, Apple’s Workflow could be the connective tissue between them all, going far beyond the rudimentary app automations we’ve seen so far. Rewriting Workflow with exclusive access to iOS features and services would be an obvious first step. ### A Bigger Idea: WorkflowKit One of the unique traits of iOS devices – particularly the iPad – is how they’ve redefined the concept of modern productivity. As portable screens that can transform into anything, iPhones and iPads are enablers of new jobs to be done that supersede the association of “work” with spreadsheets and meetings. Once the computer is [not on every desk](http://money.cnn.com/2015/04/05/technology/bill-gates-email-microsoft-40-anniversary/) but in every hand, the possibilities for productivity and work communications become endless. Apple has played an essential role in the redefinition of modern productivity with the App Store, but we’re reaching the point where Apple and app developers can’t make one-size-fits-all solutions for millions of users with ever-changing needs and priorities. Apple can’t possibly develop all the productivity features for all the creative professionals, small business owners, educators, and enterprise customers who are adopting iOS. With Workflow, Apple could lead us into a second generation of iOS productivity apps by turning automation and inter-app communication into an extensible, integrated platform. In my mind, the next logical move for Workflow is to open up to apps with a new framework that does not require users to edit URL schemes. With a *WorkflowKit* (my own imaginary name), apps could offer some of their functions and data as discrete modules. These actions would allow users to build more complex and yet easier, faster, and safer workflows that let multiple apps collaborate on the same task in a visually automated fashion. One of Apple’s goals with iOS 8 was to remove the need for URL scheme-based automation by offering extensions to invoke certain app functionalities anywhere on iOS. However, by relegating extensions to the share sheet and preventing developers from referencing individual third-party app extensions, Apple’s strategy partially missed the point. Developers who wanted to call a specific extension still couldn’t, and remained stuck with the extra step of the share sheet (see: how the [1Password extension](https://support.1password.com/ios-extension/) has to be embedded in apps). Meanwhile, those developers who wanted to ship third-party app integrations and automation features still had to rely on URL schemes – usually, the popular [x-callback-url](http://x-callback-url.com/) spec (there are [plenty](https://agiletortoise.zendesk.com/hc/en-us/articles/202771400-Drafts-URL-Schemes) of [examples](https://workingcopyapp.com/url-schemes.html) around, [including ADA winners](https://ulyssesapp.com/kb/x-callback-url/) and [Workflow itself](https://workflow.is/developer) ). As a result, extensions [were a fantastic addition](https://www.macstories.net/stories/ios-8-changed-how-i-work-on-my-iphone-and-ipad/), but they didn’t address the lack of true inter-app communication and automation on iOS.[5](https://www.macstories.net/stories/the-future-of-workflow/#fn-48267-5) WorkflowKit could help Apple move past URL schemes for good and offer a robust automation framework for developers. The system could be built on iOS’ current extensibility model, where a container app offers sandboxed access to extensions that users can invoke outside of the main app experience. Behind the scenes, Workflow’s Content Graph engine would take care of connecting any input to any app action, creating a safe automation environment where everything “just works”. This way, rather than exchanging plain text data with a URL scheme (which forces users to jump back and forth between Workflow and apps), an app could offer multiple WorkflowKit extensions (called “actions”) to *display content and perform rich tasks in Workflow*. Permission to use such actions could be granted by users on a case-by-case basis, and actions could be grouped in categories that include running functions from external apps with or without an interface, managing documents, displaying specific app content in a custom QuickLook preview, and more. Consider the current version of Workflow. The app is effectively split in two macro categories: native actions and third-party app ones. Native actions can be executed inside Workflow and offer features such as displaying menus and lists, opening webpages with Safari View Controller, formatting text and numbers, and more. Third-party app actions /try/ to abstract the complexity of URL schemes with a pretty UI, but, in the end, they’re still based on launching URLs and leaving Workflow to open another app. [image:7D49A747-66C9-4785-817D-5A9B578DEFB4-11154-00001A4DDA27BE53/2017-03-29-23-15-33.jpeg] Despite the native appearance, Workflow’s current app actions are based on URL schemes. WorkflowKit could dramatically improve the second category of actions and make any app action a native one. Without leaving Workflow, an app like [Pixelmator](https://itunes.apple.com/us/app/pixelmator/id924695435?mt=8&uo=4&at=10l6nh&ct=ms_inline) could provide a ‘Resize and Crop’ action to perform an image editing task inline. A note-taking app like [Bear](https://itunes.apple.com/us/app/bear-beautiful-writing-app-for-notes-and-prose/id1016366447?mt=8&uo=4&at=10l6nh&ct=ms_inline) could have an ‘Append to Note’ action to save some text at the bottom of a note. A task manager could offer an action that presents you with a list of active todos to share with someone in your contacts. None of these actions would ever leave Workflow – they’d always run in-place and they’d come bundled with an app just like extensions and widgets currently do. Users would always grant permission to read, write, and delete third-party app data for WorkflowKit actions, and developers would have to support both visual and [headless](https://en.m.wikipedia.org/wiki/Headless_software) modes for every action they offer, with mandatory Accessibility integration. The entire system would be heavily influenced by Apple’s [NSExtension framework](https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionCreation.html) and the Workflow team’s [Content Graph engine](https://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/#the-content-graph). This isn’t an easy task for Apple, though. To achieve such integration between iOS and apps, the company must first build a framework that enables apps to communicate directly with each other in a non-destructive manner. This implies a new set of privacy controls and permissions to avoid the problems inherent to URL schemes, as well as a fundamental rethinking of the iOS sandboxing structure. That system would then provide a new foundation for Workflow 2.0, which would leverage new inter-app communication APIs to deprecate URL scheme automation and allow users to mix and match functions from multiple apps. The Workflow Gallery, now limited to discovering workflows from other users, would also showcase apps that come with Workflow actions, providing a new discovery avenue for developers and, for users, a way to add more powerful functionality to their workflows simply by downloading new apps. Everyone wins. [image:3B679E46-AA50-4682-AFFE-C901A8D0D29E-11154-00001A4DD9FEFFCC/2017-03-29-23-16-52.jpeg] Workflow already offers limited discovery options for third-party apps. The true potential for WorkflowKit lies, I believe, in going beyond workflows inside the Workflow app. WorkflowKit would give users a way to turn /any action/ into a system-wide extension or widget. For example, workflows wouldn’t have to be grouped under a single ‘Run Workflow’ extension – instead, users could pin workflows as *native extensions* in the share sheet or other app toolbars. And if we follow this idea – that automation could trickle down into multiple parts of iOS – it’s easy to imagine workflow macros made specifically for Pages, sets of custom actions for Safari, or workflows that are designed as routines for Siri and HomeKit. Thus, more than a rebranded Automator, an Apple-made Workflow 2.0 could be a comprehensive set of user automation tools that span an app and customizable extension points, all capable of integrating natively and securely with any iOS technology, app, and interface. A new inter-app communication framework and the subsequent WorkflowKit would be the core of this system. App developers (including Apple) would offer actions; users would ultimately remix them and connect them to anything they want. [image:EB4F2FDA-5F65-420F-8AE7-03F0A86DC9C2-11154-00001A4DD9CB9898/2017-03-30-03-17-10.jpeg] WorkflowKit would be the framework powering the Workflow app and actions from developers. At a fundamental level, I strongly believe that Apple doesn’t like the URL scheme-based app actions in the current version of Workflow they just acquired. Using URL schemes for app automation is an unreliable and unsafe workaround. I don’t see an Apple-owned Workflow introducing new features based on visible URL schemes.[6](https://www.macstories.net/stories/the-future-of-workflow/#fn-48267-6) Therefore, if we buy into the theory that Apple wants to invest in the Workflow app without crippling it, it’s only natural to assume that the company is planning new inter-app communication features with an automation component. That would be WorkflowKit. If done right, WorkflowKit could reimagine iOS productivity by letting us completely personalize our work experience and favorite apps. We’re on the cusp of a new beginning for automation on Apple’s platforms. With Workflow, Apple has acquired more than an app; they have gained a foothold in a new kind of user automation that is friendly, visual, accessible, and deeply integrated with iOS hardware and software unlike any scripting language before. In this article, I have outlined the worst and best scenarios for Workflow going forward. Realistically, here’s what I expect: I think Apple acquired Workflow with the intention of building their own automation platform on iOS. Like Siri, TestFlight, and Beats Music, I don’t think Apple bought Workflow just to abandon it. I believe both Apple and Workflow saw this as the best possible solution to continue growing the app into a more powerful tool for iOS users. Whatever Apple is planning, however, it won’t be ready for iOS 11 in June. I’d expect the Workflow app to remain (mostly untouched) on the App Store until Apple offers a replacement – possibly in Spring 2018 or in iOS 12. If and when that replacement becomes available, I expect it to be a complete rewrite of the app with little to no support for legacy workflows.[7](https://www.macstories.net/stories/the-future-of-workflow/#fn-48267-7) I also assume that Apple wants their take on iOS automation to be tightly controlled by clear user permissions, and that URL scheme callbacks won’t be part of Workflow’s future. Unless Apple wants to outright remove third-party app support from Workflow, I suspect the company is building “Workflow as a feature” inside iOS with a framework that developers will be able to integrate with. That “WorkflowKit” framework will enable third-party developers to offer discrete app actions that can be embedded in Workflow and other extension points. WorkflowKit will be based on groundwork laid with iOS 11 this year, and it’ll tell a bigger story for Workflow 2.0 as the glue between every iOS app, service, or system feature. I’m guessing, but I’d say that all of this is /at least/ a year away. Apple acquiring Workflow could be a pivotal moment for iOS automation and productivity apps. Two years after the release of Workflow 1.0, we’re at a crossroads: Workflow has shown us a future where automation means an intuitive GUI, native integrations with iOS, and none of the baggage of desktop scripting. There’s a special beauty in Workflow’s underlying message: anyone, whether they consider themselves “programmers” or not, can make a computer their own. The software we use every day doesn’t have to be a static experience; with automation and creativity, any app can be remixed, extended, and personalized to our needs. Workflow gives power back to the users. Now only Apple can turn Workflow’s promise into a reality, ushering us into a new era of automation for everyone, on every device, in every app. I want to believe. [The Future of Workflow](https://www.macstories.net/stories/the-future-of-workflow/) # Inspecting JSON Files on iOS with Jayson [image:222339DB-7FB9-405D-9FE2-31A57D02CCD9-12586-000021EA8C692E9F/2019-01-30-15-46-56.png] In writing about Workflow ( [then](https://www.macstories.net/tag/workflow/) ) and Shortcuts ( [now](https://www.macstories.net/tag/shortcuts/) ) for a living, at some point I realized that if I wanted to build more complex shortcuts to either [deal with web APIs](https://www.macstories.net/ios/workflow-update-brings-ability-to-interact-with-any-web-api/) or store data in iCloud Drive, I had to learn the basics of parsing and writing valid [JSON](https://www.json.org/). The format is behind most of the web API-based Shortcuts I have shared here on MacStories [1](https://www.macstories.net/reviews/inspecting-json-files-on-ios-with-jayson/#fn-58018-rest) and is one of the techniques I recently explained on [Club MacStories](https://club.macstories.net/) when I built a shortcut to save highlights from Safari Reading List. The beauty of JSON is that, unlike XML, it’s cleaner and more readable – provided you have a dedicated viewer that supports syntax highlighting and/or options to navigate between objects and inspect values. There’s no shortage of such utilities on macOS, but this is the kind of niche that still hasn’t been fully explored on iOS by developers of pro apps. That changes today with the launch of [Jayson](https://jayson.app/), created by Simon Støvring. Readers of MacStories may be familiar with Støvring’s name – he’s the developer behind one of the [most powerful and innovative pro apps of 2018](https://www.macstories.net/stories/introducing-macstories-selects-the-best-new-apps-app-updates-and-ios-games-of-2018/#scriptable), the excellent [Scriptable for iOS](https://itunes.apple.com/us/app/id1405459188?at=10l6nh&ct=ms_inline). For this reason, it shouldn’t come as a surprise that Jayson, a project that was born out of Støvring’s personal frustration with the lack of a modern JSON viewer for iOS, has that same spark of innovation and integration with native iOS functionalities that set Scriptable apart last year. If you do any kind of work with JSON on your iPhone or iPad, you need Jayson in your life, and here’s why. ## Document Browser and Saving Files From the outset, one of the best decisions Støvring made with Jayson was adopting the native Files document browser instead of a proprietary file picker. When you open Jayson, you’re presented with a classic Files view that lists your recent documents and tagged items under the ‘Jayson Recents’ section; however, the app will filter iCloud Drive to only show you .json files that can be opened and previewed. If you want to navigate to specific folders across multiple locations (including third-party file providers), you can do so from the ‘Browse’ tab. As we’ve frequently noted both on MacStories and [AppStories](https://appstories.net/episodes/93/), the advantage of the document browser is that it retains all of Files’ essential features such as search, tagging, and drag and drop. [image:81C46289-C273-46BF-B5A5-6DF0D78BB86F-12586-000021EA8C3A3474/2019-01-30-15-48-22.png] As someone who works on advanced shortcuts that often save data into JSON files stored in iCloud Drive, I welcome the ability to open those items in Jayson using the same iCloud UI I see in Files. Thankfully, though, this is not the only way to get JSON files into the app. Jayson comes with an action extension and rich notifications that, among other things, can open JSON content directly in the app or copy it into the app as a file. In Jayson’s settings, you can choose how imported files should behave: you can save them into Jayson’s own iCloud Drive folder (this is what I do), save them locally in the ‘On My iPad’ storage space, or not save them at all and always open them with the ‘Don’t Copy’ option. I’m a big proponent of apps adopting Files’ document browser on iOS and sharing the same working set of documents; I think apps like Jayson, [iThoughts](https://itunes.apple.com/us/app/id866786833?at=10l6nh&ct=ms_inline), and [PDF Viewer](https://itunes.apple.com/us/app/id1120099014?at=10l6nh&ct=ms_inline) are examples other developers should follow. ## Tabs and Splits Of course, what makes Jayson special isn’t its approach to file management but how it lets you preview and navigate the contents of JSON files. The short answer is: there’s a lot of flexibility, and it’s clear that this is an app created by someone who needed to scratch his own peculiar JSON itch. The contents of JSON files (objects, arrays, and strings in key:value pairs) can be browsed with a list-based interface that progresses through the JSON’s structure and displays your path with a breadcrumb trail in a toolbar at the top. Think of it as a Finder, but for the contents of the current JSON file only. You can tap on “locations” in the breadcrumb navigation to instantly move back to them and you can see, for instance, how many keys are contained inside an object. Everything is very visual and intuitive; Jayson is, by far, the prettiest and easiest way to parse JSON I ever tested on iOS, but there’s more. [image:066FCFA8-4704-48A0-9730-685F2EC9A327-12586-000021EA8C0817FD/2019-01-30-15-49-53.png] At any point, you can share the file or the current value alone, and, this being a modern iOS app, you can tap URLs, copy text, or drag and drop content out of Jayson. You can also tap & hold items to show buttons to copy a key or value to the clipboard, and – more importantly – you can hit a ‘TXT’ button to instantly switch the presentation in the current view to raw JSON plain text with syntax highlighting. You can even swipe across items to open them with a new split or tab, which brings me to the next major feature of the app. [image:D7C46300-ACEA-4623-B70C-EE0345ACA59F-12586-000021EA8BDCE047/2019-01-30-15-05-41.png] Jayson’s text mode (center) lets you view highlighted source code for JSON files. Tabs are pretty self-explanatory: multiple views from the same JSON file can be opened in separate Safari-like tabs, and you can navigate to a different point of the JSON’s structure in one tab to compare it to another. Tabs can be rearranged with drag and drop; when opening a file you previously explored with Jayson, you can choose to restore the tabs you had open before or create a new tab. Tabs are great if you need to compare different parts of your JSON but don’t need to do so very often. [image:E3BF14A1-763D-4A1C-85DB-432B31014EAE-12586-000021EA8BAFC6B0/2019-01-30-15-52-15.png] Tabbed navigation in Jayson. I prefer splits. A split lets you, well, /split/ the current view in two. Each split then becomes its own view, which can navigate to different points of the JSON or be presented as raw text instead of tables. Splits can be rearranged with drag and drop and, at least on the 12.9” iPad Pro, you can create up to three separate splits per tab to open multiple views simultaneously (you can create up to two splits on iPhone). [image:5A70B0CB-8A13-4880-BAE3-919AD0178AE8-12586-000021EA8B8AC880/2019-01-30-15-55-09.png] Splits on an iPad Pro. [image:B9A9F2F3-F251-440C-9299-93D8FD3C7BC0-12586-000021EA8B5D2FDD/2019-01-30-15-07-11.png] Examples of splits on an iPhone XS Max. Splits are, in my opinion, the absolute best way to understand or debug JSON because of the multiple perspectives they provide. Perhaps you want to have a split of two views – one as a standard table, the other as highlighted source code; or maybe you have an array and you want to keep one split at the root level and the other going deep into nested objects and strings. All of this can be done with splits in Jayson. I have used splits extensively when creating advanced shortcuts for Club MacStories [2](https://www.macstories.net/reviews/inspecting-json-files-on-ios-with-jayson/#fn-58018-timezone), and I can genuinely say they have saved me minutes I would have spent searching or scrolling up and down to look at highlighted JSON in [Kodex](https://itunes.apple.com/us/app/id1038574481?at=10l6nh&ct=ms_inline). Støvring’s split UI immediately made more sense to me than [Kaleidoscope](https://itunes.apple.com/us/app/id1273771160?at=10l6nh&ct=ms_inline) ’s, and I wish he would apply his talents to building a Jayson-like tool for text diffs instead of JSON files. The combination of tabs and view-independent splits makes for a fantastic in-app multitasking experience, and I’d like more apps to consider this approach for browsing different parts of deep file structures or long documents. ## Shortcuts and Rich Notifications But the best feature of Jayson – and one that confirms Støvring’s status as one of the few indie developers pushing the envelope on iOS – isn’t something that you can use in the app itself. Jayson’s best feature is a rich notification that lets you navigate JSON files without opening the Jayson app at all. It is the most impressive implementation of rich notifications I’ve ever seen on iOS, and it has fundamentally changed how I create shortcuts that parse JSON from web APIs. Here’s how it works: Jayson can donate a shortcut to iOS 12 that can display JSON content (fetched from the system clipboard) in a rich notification. Thanks to [improvements in iOS 12](https://www.macstories.net/stories/ios-12-the-macstories-review/5/#other-notification-changes), upon expanding the rich notification you’ll be presented with the same Jayson interface you see in the main app, in which you can freely navigate the JSON structure and select text. It is, effectively, like having an app inside of a notification, and not just a preview of a particular screen of an app (like the notifications from Twitter or [CARROT Weather](https://itunes.apple.com/us/app/id961390574?at=10l6nh&ct=ms_inline) ), but an actual, fully-interactive portion of an app that supports multiple layers of navigation and even text selection. In years I’ve spent covering iOS apps and testing various takes on rich notifications, I’ve never seen anything like this. [image:CF2D32A5-8B8C-4999-9FF7-0C3C6C9AA893-12586-000021EA8B325C96/2019-01-30-16-04-15.png] Jayson’s rich notifications. Because the notification is triggered by a shortcut, it can become part of a longer process that generates the necessary JSON code, copies it to the clipboard, then fires off the Jayson shortcut. I’m referring, obviously, to running a custom shortcut in the Shortcuts app. Now, whenever I’m working on a shortcut that involves JSON returned by an API or my own local JSON files, I can copy the JSON text to the clipboard then drag in the ‘View JSON in Notification’ app shortcut donated by Jayson and place it after the ‘Copy to Clipboard’ step. [image:B1C895D1-56DF-414D-90E8-C8F6C9F5348C-12586-000021EA8B068187/2019-01-30-15-59-06.png] A shortcut can trigger a rich notification that lets you navigate JSON. When the shortcut runs and the Jayson step is triggered, I can drag down the local notification sent by Jayson and inspect the JSON that was just copied to the clipboard in a visual environment. I cannot split the notification in two parts, but everything else is supported with the same UI of the main app; I can also choose to copy the JSON as a file into Jayson or just open it in the app without saving a file. With the ability to preview JSON on the fly without leaving Shortcuts to open a separate text editor (or, worse, previewing JSON in Shortcuts’ own alerts), I’m saving a lot of time because I’m faster at understanding how JSON responses are structured. Going forward, unless Shortcuts adds native debug steps for JSON and other API responses, I see no other way to preview JSON but Jayson’s donated shortcuts. The shortcut that turns the clipboard into a JSON inspector within a notification isn’t the only shortcut offered by Jayson though. By default, in the Shortcuts app you’ll also find Jayson shortcuts to view JSON in the app with and without the option of saving it as a file. I like the one that takes the clipboard and opens it in Jayson without creating a new file. Jayson also takes a page from [PCalc](https://www.macstories.net/reviews/pcalc-3-8-adds-support-for-ios-12s-siri-shortcuts-including-powerful-clipboard-commands/) and [CARROT Weather](https://www.macstories.net/reviews/when-carrot-met-siri-shortcuts-and-siri-watch-face-support-added-to-carrot-weather/) and provides a settings page to configure your own Siri shortcuts with custom parameters. In the ‘Siri Shortcuts’ screen inside the app’s settings, you can create multiple shortcuts that either act on JSON stored in the clipboard or download JSON from a link in the clipboard. You can choose to view the resulting JSON in an interactive notification or send it directly to the app, and you can also select whether the app should create a new file for the JSON content or not. [image:F0CC42A1-ACF8-4FD6-B6EB-765B7E9F7E40-12586-000021EA8AE4DAE4/2019-01-30-16-08-12.png] Jayson’s Siri shortcut creation UI. Shortcuts you create in settings can always be added to Siri as voice shortcuts, but they will show up in the Shortcuts app as donations too. I’m not sure about the practical utility of voice activation for debugging JSON, but I do appreciate the versatility granted by configurable actions I can add to my advanced shortcuts. ## Wrap-Up [Jayson](https://jayson.app/) is a programming utility with a niche appeal. If you regularly work with web APIs on iOS and have been looking for ways to inspect and debug JSON in a visual environment, Jayson is the new best-in-class option and you should go download it right now. The [app is free](https://itunes.apple.com/us/app/jayson/id1447750768) with a $1.99 In-App Purchase to unlock themes, custom icons, accent colors, and the ability to open more than two tabs at once. Jayson is a must-have for any web programmer who wants to work from an iPhone or iPad. It’s also important to note how some of the modern iOS features adopted by Jayson are remarkable technical achievements regardless of the app’s limited audience. Tabs and splits are a fascinating way to allow users to multitask within the same document; the app’s use of rich notifications is the /non plus ultra/ of what can be achieved with this API at the moment. Even if you don’t know what JSON is or don’t need this app in your workflow, Jayson stands as a model for other iOS productivity apps to follow. Jayson is available as a [free download on the App Store](https://itunes.apple.com/us/app/jayson/id1447750768). [Inspecting JSON Files on iOS with Jayson](https://www.macstories.net/reviews/inspecting-json-files-on-ios-with-jayson/) # Tot – A New Kind of Accessibility • The Breakroom [image:293AF4ED-97C1-4257-8A13-D8EC2E25D1D0-4715-0000092859C287C1/Final-Approach-Dark-Mode.png] Today we’re happy to announce the release of Tot 1.0.5 for both [iOS](https://apps.apple.com/us/app/tot-pocket/id1498235191?ls=1&mt=12&uo=4&pt=8934&at=10l4G7&ct=TOT_BLOG) and [macOS](https://apps.apple.com/us/app/tot/id1491071483?ls=1&mt=12&uo=4&pt=8934&at=10l4G7&ct=TOT_BLOG). If your eyes work well, there’s not a lot to get excited about. But folks with vision difficulties will have a wholly different outlook. The initial releases of Tot didn’t have great accessibility. We knew it needed improving, but experience has shown us the folks who need these features have great ideas and happily share their opinions. Over the years, this [feedback](https://blog.iconfactory.com/2016/05/twitterrific-inducted-into-applevis-2016-ios-accessibility-hall-of-fame/) has driven our development with [VoiceOver](https://www.apple.com/accessibility/). This time around, one of those people was our pal [Jason Snell](https://sixcolors.com/about/). Shortly after Tot’s launch, I got a few text messages: > This is going to break your app but one piece of feedback I would give is about accessibility. Well, it won’t break your app, it just hurts the metaphor a bit. > I have “Differentiate between color” turned on in accessibility because I’m color blind. The nice thing about “differentiate without color” is it only affects the UI for those who turn it on. Luckily we have [a tool](https://xscopeapp.com/) that let me approximate what Jason was seeing. xScope’s [vision defect simulator](https://xscopeapp.com/testing#3) confirmed that Tot’s colored circles had serious issues. We had a new kind of accessibility problem and one that went to the heart of the app’s visual design: [image:8C45D2EE-B56F-4034-8DC4-015CECBD0121-4715-000009285998E0CC/xScope-Desktop.png] This began an exploration on how Tot’s colorful rings could change, while keeping the existing “dot” metaphor, a strong visual navigation element. Since we draw Tot’s dots in code, our first approach was to differentiate using shapes, much [like iChat](https://wearecolorblind.com/examples/ichat/) did many years ago. But varying the number of sides on polygons didn’t pan out: it felt impossible to quickly differentiate between a hexagon and pentagon. And the angles of a [heptagon](https://en.wikipedia.org/wiki/Heptagon) are just plain weird. Then a lightbulb went on. We refer to [dots by a numerical index](https://gist.github.com/chockenberry/d33ef5b6e6da4a3e4aa9b07b093d3c23) as often as by hue. Numbers have unique shapes, and like color, are largely immune to localization issues. Ged and I went through several iterations of this design. Initially, we thought that the colors and numbers could coexist, but that quickly led to issues with contrast. [image:BA30CC44-E2D3-4A3C-9C49-0FC93C72B07C-4715-0000092859822A46/First-Attempt-Low-Contrast.png] Eventually we landed on grayscale values as a good way to etch the dots into the app’s titlebar: [image:5B66C56F-EEE4-47C4-A7A7-023D41EC81D9-4715-00000928595EB94C/Final-Approach-High-Contrast.png] Implementing the same color accessibility on iOS was simple: we could reuse all our drawing code. Getting a boolean value for the customer’s setting on [macOS](https://developer.apple.com/documentation/appkit/nsworkspace/1524656-accessibilitydisplayshoulddiffer) and [iOS](https://developer.apple.com/documentation/uikit/3043553-uiaccessibilityshoulddifferentia) isn’t rocket science. It’s also a part of our DNA to make sure these changes make their way to the product’s desktop or home screen. As a result, there are now Grayscale app icon choices available in Tot’s Settings: [image:7FC9A1C5-E242-414D-ADCE-840EED12392F-4715-00000928591F1DB8/Settings-Desktop.png] So while there may be little for the majority of you to appreciate in this latest release of Tot, there is something very important for those who need it. You will also see the benefits of our accessibility work as we continue to make that list of custom app icons [longer](https://twitter.com/gedeon/status/1257005672224473091) :-) We have a full list of the [accessibility and other changes](https://tot.rocks/versions/1.0.5.txt) in the release. If this is the first time you’re hearing about Tot, [take a look](https://tot.rocks/) at its product page. Enjoy! [Tot – A New Kind of Accessibility • The Breakroom](https://blog.iconfactory.com/2020/05/tot-a-new-kind-of-accessibility/) # Working with email URLs on macOS – The Sweet Setup macOS email clients like Mail and Airmail, the latter being our pick for [the best third-party email client on the Mac,](http://thesweetsetup.com/apps/favorite-email-client-os-x/) support the use of URLs to link to individual messages from other applications. The ability to generate links to specific email messages can be a HUGE timesaver from a productivity perspective. Here’s a few example use cases: * Having a link to the original message in the notes of the task in your task manager allows you to quickly jump straight to the message you need to take action on and then check it off. * Having a link to the original message in your reference file (like Evernote) can be very handy when trying to find information quickly and share it with the rest of your team or organization. * Having a link to the original message in a calendar app can help provide more context for the meeting, especially if the other party didn’t provide any additional notes or details. When you use a link to a specific email message, it allows you to go straight to that message and bypass the rest of your email. That means you won’t get distracted by what might have appeared in your inbox since you last looked, and you are free to focus on the thing that you need to take action on. It also means you don’t need to search through your archive or dig through project folders to find the exact message. Most of the time, the link to a specific email message will look something like this: `message:%3C0100015a808a3ce2-973c1a1d-cc5a-44f6-a60b-d0c006e10ba0-000000@email.amazonses.com%3E` Believe it or not, this URL format tells your Mac /exactly/ which message you’re trying to reference. There’s really only two parts to this complicated-looking URL: 1) the “message:” prefix that tells your Mac that this is an email, and 2) the Message ID that tells it exactly which email to pull up. Once you know how to locate these unique Message IDs for the email messages you want to reference, you can create links that allow you to open the messages directly without having to look through your email client to find it. Different email clients have different ways of finding these message-specific URLs, so let’s take a look at Apple Mail first. ## Mail Finding message URLs in Apple Mail can be a little tricky if you don’t know where to look. The absolute easiest way to get the message-specific URL for a specific message is to simply drag the email message into an application like TextEdit, which will create the subject line of the email as a clickable link. But if you want to be able to see the Message ID, you can actually display this in the preferences: 1. In Mail.app, click *Mail → Preferences*. 2. Select the *Viewing* tab in the Preferences window. 3. Choose *Custom* from the *Show header detail* pop-up menu. [image:ED957998-954C-4C44-B458-7751F9E0C233-3597-0000060FA75D6C20/Mail-ShowMessageHeaders.png] 4. Click the plus (+) symbol in the lower-left corner, then enter “Message-ID” in the space provided and click “OK” to save. [image:E87AC18F-7EFB-4E24-B108-92454C4C05A9-3597-0000060FA734D76C/Mail-AddMessageID.png] Now, when you view an email in Apple Mail, you will see the “Message-ID” field. [image:D4974348-F020-4B99-94AB-FA333BFAD962-3597-0000060FA717920F/Mail-MessageID.png] You can copy this Message-ID and use it to create your own message URLs. Just paste the Message-ID after the Message URL prefix: `message:%3Message-ID%3E` You can automate that string creation in something like TextExpander. Alternatively, you can run this AppleScript from TextExpander or Alfred. It retrieves the message URL of the opened, active message in Mail and puts a link to it on the clipboard: `tell application "Mail"` `set selectedMessages to selection` `set theMessage to item 1 of selectedMessages` `set messageid to message id of theMessage` `-- Make URL (must use URL-encoded values for "<" and ">")` `set urlText to "message://" & "%3c" & messageid & "%3e"` `return urlText` `end tell` There are a couple different formats that will work on your Mac. Here’s a [Daring Fireball post](http://daringfireball.net/2007/12/message_urls_leopard_mail) that explains the different message URL formats. With a little tinkering, you’ll be able to easily copy the message ID from Mail for easy reference later. ## Airmail Finding a message-specific URL is much easier in Airmail ( [the third-party email client that we recommend](http://thesweetsetup.com/apps/favorite-email-client-os-x/) ) because it is actually built in to the application: 1. Select the message for which you want the URL. 2. Click *Edit → Copy Message Link*, or hit the keyboard shortcut: `⌃ ⌥ ⌘ C`. 3. Paste the URL where you want the direct message link to appear. For most instances where you’d want a link to the original message, Airmail provides an even simpler way to implement these direct message URLs. Airmail integrates directly with other productivity apps, so if you wanted to include the link in a calendar event or a task in your task manager, all you have to do is right-click the selected message and select the appropriate app from the list. You can also get the link to the message via this contextual menu. [image:DC82D3C4-DDE8-42BE-A20C-2B6E08EA5780-3597-0000060FA6F4AB87/Airmail-Menu.png] If you don’t see your favorite app in the list, you might need to enable it first. Here’s how to set this up: 1. In Airmail, click *Airmail → Preferences*. 2. Select the *Services* tab. 3. Select the services you want to use inside Airmail and make sure they are enabled. [image:B9DDF5F4-F701-49D1-95FE-D0C99B5B2BCF-3597-0000060FA6B4FDA7/Airmail-Services.png] Once you have your favorite productivity apps enabled, you can quickly and easily send email messages directly to them. One thing to be aware of: the links that Airmail uses to direct messages do NOT use the default `message:` prefix. Instead, Airmail uses an `airmail:` prefix, which tells your Mac to open the link in Airmail specifically. This is what a direct message URL looks like in Airmail: `airmail://message?mail=omnifocusmadeeasy%40gmail.com&messageid=587A535B.30006%40gmail.com` This isn’t a big deal if you use Airmail as your default email client, but it’s important to know that it’s not using the Mac’s default message URL scheme. If you’re just kicking the tires on Airmail, you might want to decide whether you want to use it long-term before creating a bunch of direct message URLs that you won’t be able to use if you decide to move away from Airmail in the future. Once you have the process of obtaining message URLs, your options open up significantly for keeping your inbox clean and feeling confident that items aren’t falling through the cracks. [Working with email URLs on macOS – The Sweet Setup](https://thesweetsetup.com/working-email-urls-macos/) # What‘s new in Shortcuts in iOS 15.4 and macOS 12.3 ### Overview * Notifications can now be turned off for Automations (when Ask Before Running is turned off) * Added support for tags in “Add New Reminder”, “Find Reminders”, and “Edit Reminder” * "Get Current Web Page from Safari” now supports retrieving details like name, page contents, and selection on macOS * “Set Playback Destination” now supports adding and removing playback destinations, so you can play to multiple devices at once * “Translate Text” and “Detect Language” are now powered by Apple Translate * “Take Photo” is now supported on macOS * “Extract Text from Image” now supports all languages supported by Live Text * “End If” and “End Repeat” can now be dragged in the Shortcuts editor * “Find” and “Filter” actions have an improved design on macOS * Double-clicking on an item in “Choose From List” now chooses the item and continues running on macOS * On macOS, you can now add a shortcut to the Dock from the right-click menu in My Shortcuts * Text entry dialogs can now be dismissed with the ⌘+return keyboard shortcut on macOS * A “Provide Output” checkbox is now available in Shortcut Details, making it easier to use shortcuts with output * The set of action icons in the Shortcuts editor have a refreshed appearance * Automator Quick Actions can now be converted to shortcuts * Fewer privacy prompts are presented, especially for shortcuts that you author yourself * The Gallery now includes a Share button when viewing a shortcut on macOS ### Editor * Clicking the delete button on actions in the Shortcuts editor works more reliably on macOS * Text entry works more reliably in the Shortcuts editor * Items can now be reliably re-arranged in “Choose from Menu” * Improved Shortcuts editor UI and reliability ### Actions & Running * “Run Shortcut” is now faster and more reliable * “Combine Images” no longer produces empty images on macOS * “Overlay Image” now uses used coordinates anchored to the top-right instead of the bottom-left on macOS, to match iOS behavior * ”Open URL” no longer fails when run from Apple Watch * “Show in Calendar” now supports showing dates on macOS, in addition to calendar events * “Edit Calendar Events” no longer fails to add attachments on macOS * “Show Web Page” now includes Cancel and Done buttons on macOS * “Send Message” can now send photo attachments when run from Siri * “Open App” can now launch CarPlay-capable apps in CarPlay * “Set Volume” now works on macOS when AirPods are connected * “Send Email” now supports the “From” picker on macOS * “Split Screen Apps” no longer fails to run if the apps are not already open * “Eject Disk” no longer fails to eject an external disk drive on macOS * “Delete Files” no longer fails to delete files in Dropbox * “Get the state of My Home” now returns results more reliably * Pinboard actions no longer show an unexpected keychain prompt when run on macOS * The “Wind Down Begins” & “Bedtime Begins” automations now trigger more reliably * The “Device Details” variable’s Screen Width and Screen Height options now return correct values * Converting text to PDFs now works on macOS * Fixed issues where calendar-related actions may fail unexpectedly * Applications now properly re-gain focus when a shortcut dialog finishes on macOS ### Scripting * The list of shortcuts now loads faster in 3rd party apps on macOS, especially for users with many shortcuts * The "Shortcuts Events" app, which provides scripting functionality for Shortcuts on macOS, no longer needs to be opened manually before it can be used from scripts * When retrieving shortcuts via AppleScript, shortcuts are returned in the user’s order instead of in alphabetical order * Other bug fixes and minor additions [What‘s new in Shortcuts in iOS 15.4 and macOS 12.3](https://support.apple.com/kb/DL2092?locale=en_US) # lsregister Reset the Launch Services database. ``` Syntax lsregister: [Options] [path...] [-apps domain[,domain]...] [-libs domain[,domain]...] [-all domain[,domain]...] ``` lsregister is not on the system path so run it using the full path as shown in the examples below. ``` Options -kill Reset the Launch Services database before doing anything else -seed If database isn't seeded, scan default locations for applications and libraries to register -lint Print information about plist errors while registering bundles -convert Register apps found in older LS database files -lazy n Sleep for n seconds before registering/scanning -r Recursive directory scan, do not recurse into packages or invisible directories -R Recursive directory scan, descending into packages and invisible directories -f force-update registration even if mod date is unchanged -u unregister instead of register -v Display progress information -dump Display full database contents after registration -h Display help ``` Valid /domains/ are "system", "local", "network" and "user". Domains can also be specified using only the first letter. Paths are searched for applications to register with the Launch Service database. The Launch Service database controls the Finder's '/Open With/' right click, contextual menu. If you have a large group of files that are opening in the wrong application even after changing the "Open With" setting, then resetting the Launch Services registry database should fix the problem. After running lsregister to rescan the database or create a new UTI, run killall Finder to reload the Finder's “Open With” Menu, or just restart the machine. ## Full Path to lsregister > lsregister is not on the system path so either: > Create an alias 'lsr' for the full path to lsregister:lsr='/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister > or temporarily add the directory to your PATH so that you can run lsregister with just lsregister > PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH" *Examples* Run lsregister and display help ``` lsregister ``` ``` Reset the local & user domains: lsregister -kill -r -domain local -domain user Reset the local, user and system domains:lsregister-kill -r -domain local -domain user -domain system ``` Resetting the system will also reset the first-launch security prompt: the first time you launch an application by opening a document, the system will ask '/are you sure/'. This is equivalent to deleting the Launch services plist: ~/Library/Preferences/com.apple.LaunchServices.plist /“Because the people who are crazy enough to think they can change the world, are the ones who do” ~ Apple Advert/ *Related macOS commands:* [Onyx utility](https://www.titanium-software.fr/en/index.html) - Includes a maintenance script to rebuild the Launch Services. [Article: TA24770](https://support.apple.com/kb/TA24770) - Clear the 10.4 Finder "Open With" contextual menu. [StackExchange](https://apple.stackexchange.com/questions/47319/how-can-i-make-os-x-recognize-new-file-extensions) - How can I make macOS recognize new file extensions? Copyright © 1999-2022 [SS64.com](https://ss64.com/) Some rights reserved [lsregister](https://ss64.com/osx/lsregister.html) # Google Releases Gboard, a Search Keyboard for iOS [image:FFD986D9-64D0-44B2-9ADE-A8311B85675D-16210-00001308E1A93BCF/file-may-12-9-50-14-am1463065099546.png] Despite some shortcomings in the way iOS handles third-party keyboards, they seem to have taken off recently. Just in the last month Microsoft’s Garage project released the [Hub keyboard](https://www.macstories.net/news/microsoft-launches-hub-keyboard-for-ios/) and [Word Flow](https://www.macstories.net/news/microsoft-brings-another-keyboard-to-ios/). Now, Google’s getting into the keyboard game with [Gboard](https://itunes.apple.com/us/app/gboard-search.-gifs.-emojis/id1091700242?mt=8&at=11lbfL&ct=linked), which lets you search Google for all sorts of information. I’ve only been playing around with Gboard for a short time, but the results have been impressive. Gboard solves a common problem on mobile devices – sharing information. Whether you’re using Twitter, email, or a chat client, it’s not uncommon to have to leave the app you are using to find the information you want to share, whether that’s a location, a GIF, a photo, or even something like a stock price or the weather. Gboard has a special button on the far left side of the row above the keyboard. Tapping that button activates a search field, above which are your most recent three searches. Type a search term and when you tap the ‘Search’ button, the keyboard is replaced by search results. Below the search results are three buttons for search, images, and GIFs. Search is the default and returns the kind of things you would expect from a Google search, including the instant answer results for things like the weather, flight information, stock prices, and box office results. The results will also include other Alphabet properties like YouTube and an all-new emoji search. The images button pulls images from Google Images and the GIF button returns GIFs from multiple sites. [image:C2C781FB-0419-4397-81EC-4A9E76D49A49-16210-00001308E184BA7D/file-may-12-9-56-49-am1463065106844.png] Gboard can search images, GIFs, and weather. I tried Gboard with Telegram, iMessage, Slack, and Tweetbot and all worked exceptionally well. One thing that is not touted in Google’s announcement is autocorrect, which worked better in my testing than any other third-party keyboard that I have tried. My enthusiasm for Gboard is only tempered by the inherent limitations of iOS that makes switching keyboards burdensome. Nonetheless, this is one third-party keyboard that I am going to keep installed. *Update*: Gboard is US-only. [Google Releases Gboard, a Search Keyboard for iOS](https://www.macstories.net/news/google-releases-gboard-a-search-keyboard-for-ios/) # Improving Keyboards for iOS [image:CC255498-4460-419D-88A1-18FF6359595A-16210-0000130801F20826/256px.png] [Regy Perlera has some ideas](https://medium.com/@perlerar/5-things-that-would-improve-keyboards-for-ios-d9a8790df0bd) for improving how third-party keyboards are installed on iOS and how users could switch between them. I think we’re not going to see any meaningful improvements to custom keyboards next week, but I’d love to be proven wrong. I also realized that “improving keyboards” is something [I’ve linked quite a bit](https://www.google.com/search?q=improving+keyboards+macstories&ie=UTF-8&oe=UTF-8&hl=en-us&client=safari) on MacStories over the years. [Improving Keyboards for iOS](https://www.macstories.net/linked/improving-keyboards-for-ios/) # Razer Launches Mechanical Switch Keyboard for iPad Pro [image:639DD68A-E809-4643-9901-3EBC774C597C-16210-0000130701D09EC1/gallery_081468525300697.png] [Razer](http://www.razerzone.com/gaming-keyboards-keypads), best known for making mice and keyboards for gamers, [announced a keyboard case for the 12.9” iPad Pro](http://www.razerzone.com/gaming-keyboards-keypads/razer-mechanical-keyboard-case-ipad-pro) that features mechanical backlit keys with twenty levels of brightness and a kickstand that allows for multiple viewing angles. Razer’s keyboard, dubbed the Razer Mechanical Switch Keyboard, connects over Bluetooth and includes what Razer calls an Ultra-Low-Profile Mechanical Switch that it says delivers ’ [the exact same performance and feel as a full-fledged mechanical keyboard](http://www.razerzone.com/gaming-keyboards-keypads/razer-mechanical-keyboard-case-ipad-pro).’ With backlighting enabled, Razer estimates you will get 10 hours of battery life. With backlighting turned off, however, Razer says its keyboard will last a whopping 600 hours. Razer’s keyboard is available for purchase in the US for $169.99 with other countries to follow. [Razer Launches Mechanical Switch Keyboard for iPad Pro](https://www.macstories.net/news/razer-launches-mechanical-switch-keyboard-for-ipad-pro/) # Localized iPad Pro Smart Keyboards Arrive [image:3FAF2DA4-670E-4606-B36B-7945E2DA817A-16210-000013063A693B20/screenshot-2016-08-02-16-14-591470172538777.png] Apple has introduced new Smart Keyboards for the iPad Pro with localized layouts for several languages. [According to 9to5Mac](http://9to5mac.com/2016/08/02/apple-international-smart-keyboard-arabic/), the localized Smart Keyboards include British English, French, Spanish, Italian, Arabic, and others. The keyboards are available to fit both the 9.7 and 12.9 inch models of the iPad Pro and are available from Apple’s websites in the countries where the applicable languages are spoken, along with the existing US English version of the keyboards. [Localized iPad Pro Smart Keyboards Arrive](https://www.macstories.net/linked/localized-ipad-pro-smart-keyboards-arrive/) # Gboard Adds Support for Multiple Languages [image:4D9E92A1-023A-4814-A461-A331972738CF-16210-00001305829B0258/256px.png] [Nice update to Google’s custom keyboard](https://search.googleblog.com/2016/08/ola-gboard-new-languages-personal_4.html) for iOS [released today on the App Store](https://itunes.apple.com/us/app/gboard-search.-gifs.-emojis/id1091700242?mt=8&uo=4&at=10l6nh&ct=ms_inline): > Gboard is already available in English across the U.S., Europe, Canada and Australia. Starting today, Gboard is ready to start sending GIFs, searches, emojis and more for our friends who speak French, German, Italian, Portuguese (Brazil and Portugal) and Spanish (Spain). Gboard’s emoji search is the best way to search for /any/ emoji I’ve tried on iOS. iOS 10’s predictive emoji suggestions aren’t even close to the Gboard’s emoji features. [I was hoping](https://www.macstories.net/stories/ios-10-wishes/) iOS 10 would have proper emoji search – maybe next year. But I’m surprised that Google hasn’t shipped an actual multilingual keyboard to type in two languages simultaneously. You have to switch between international layouts inside Gboard – just like in Apple’s current keyboard for iOS 9. By contrast, iOS 10’s upcoming multilingual keyboard is downright amazing, and I can’t go back to keyboards without multilingual support now. [Gboard Adds Support for Multiple Languages](https://www.macstories.net/linked/gboard-adds-support-for-multiple-languages/) # Gboard Adds 3D Touch Cursor Movement, Contacts Integration [image:7BF56A1E-0078-465D-9216-02C4FC8575CB-16210-00001304F1B2040C/256px.png] Google released a nice update to their iOS keyboard, [Gboard](https://itunes.apple.com/us/app/gboard-new-keyboard-from-google/id1091700242?mt=8&uo=4&at=10l6nh&ct=ms_inline), earlier today. Cursor control can now be activated with 3D Touch, which is consistent with the behavior of Apple’s keyboard. Gboard can’t move the cursor freely on the screen like the system keyboard, though, which makes it more limited when it comes to swiping across multiple lines of text. Also, Google didn’t implement [haptic feedback](https://www.macstories.net/stories/system-haptics-on-the-iphone-7/) when switching between contextual keyboard menus (such as holding down on the dash key), which is another detail that I appreciate in Apple’s keyboard on the iPhone 7. Similarly, Gboard now features Contacts integration to look up a person’s contact card directly from the keyboard – but it’s not as tightly [integrated as QuickType suggestions in iOS 10](https://www.macstories.net/stories/ios-10-the-macstories-review/25/#proactive). However, I prefer the presentation of contact cards in Gboard and I think Google’s is a sweet solution as well. Gboard is shaping up nicely, but I continue to wish Google paid more attention to the iPad layout and built [true multilingual support for international users](https://www.macstories.net/linked/gboard-adds-support-for-multiple-languages/). [Gboard Adds 3D Touch Cursor Movement, Contacts Integration](https://www.macstories.net/linked/gboard-adds-3d-touch-cursor-movement-contacts-integration/) # How the Touch Bar Works [image:FEE37EED-A392-40C8-94F6-B5F833D86BBE-16210-0000130448161C88/256px.png] [Good overview of the Touch Bar and its developer API](https://9to5mac.com/2016/10/28/new-macbook-pro-touch-bar-details-ui-interactions-screen-specs-control-strip-and-how-third-party-apps-can-use-it/) by Benjamin Mayo: > Developers can display pretty much whatever they want whilst their app is in the foreground; this includes swapping out views and buttons depending on the current window of their app (a compose window necessitates different Touch Bar accessory views than the inbox window). However, the Touch Bar does not allow persistent widgets, status items or similar features like always-visible news tickers. These constraints are unlikely to be lifted either; Apple is imposing the restriction so that the UI under the user’s finger isn’t constantly changing due to spurious notifications or text messages. > Apple wants the bar to display peaceful relatively-static UI based on the current task. Major changes to the Bar should only happen when the application state drastically changes, such as opening a new tab or beginning a new modal activity. To repeat: once an app’s window is not active, it loses its control to influence what is shown on the Bar. The system Control Strip sits to the right in a collapsed state by default, but can be disabled entirely in System Preferences if desired. This makes sense to me: the Touch Bar is intended to be an extension of the keyboard that deals with input – it’s not a smaller Dashboard or a widget container. This means that apps like PCalc won’t be able to persistently display their controls in the Touch Bar unless they’re the frontmost (active) app. The more I think about it, the more the Touch Bar feels like the natural evolution of QuickType and the [Shortcut Bar from iOS](https://www.macstories.net/stories/ios-9-review/13/#software-keyboard) – to the point where [I wonder](https://twitter.com/viticci/status/791823308966813696) if we’ll ever get this kind of evolution on the iPad Pro as well (where the current app is always the frontmost one and system controls could use a faster way to be engaged than Control Center). Perhaps with [a new external keyboard](https://twitter.com/gruber/status/792124858641580032) with its own embedded Touch Bar and T1 chip? [How the Touch Bar Works](https://www.macstories.net/linked/how-the-touch-bar-works/) # My New iPad Pro Keyboard: The Razer Mechanical Keyboard Case [image:23A96607-ED82-44AB-A773-703F964C4FF2-16210-000013039474458D/2016-11-08-19-48-56.jpeg] Since [getting a 12.9-inch iPad Pro](https://www.macstories.net/stories/ipad-pro-review/) last year, I’ve had a fairly troubled relationship with external iPad keyboards. [I didn’t like](https://www.macstories.net/stories/ipad-pro-accessories-review/) the original Logitech CREATE keyboard case, so, surprised by the lack of notable Smart Connector-based accessories, I ended up using an [Apple Magic Keyboard](http://amzn.to/2eB9qxh) for the majority of 2016. ## Switching Keyboards As I wrote in my original [review](https://www.macstories.net/stories/ipad-pro-accessories-review/) in November 2015, while I appreciated the CREATE’s easy pairing and backlit keys (both facilitated by the Smart Connector), the quality of the case, its cheap plastic buttons, and the difficulties I had in getting the iPad Pro to fit into the case were enough to drive me away from Logitech’s hardware and consider other options. For a few months, I went back to typing on my iPad /without/ a physical keyboard, using the software keyboard in combination with [TwelveSouth’s ParcSlope](http://amzn.to/2fkMDYd) [1](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/#fn-45733-1). As I started working on my [iOS 10 stories in April](https://www.macstories.net/stories/ios-10-wishes/) and knowing how my priorities would change after WWDC 2016, I realized that the amount of writing ahead couldn’t happen with the iOS software keyboard alone. Thus, after four months of typing on the software keyboard, I caved and bought a Magic Keyboard and used it alongside a (still unreleased) iPad stand for the whole summer. My [iOS 10 review](https://www.macstories.net/stories/ios-10-the-macstories-review/) was entirely written and edited on the Apple Magic Keyboard, which held up well in three months of intense typing every day. The problem with the Magic Keyboard is that, because it’s a desktop accessory, it’s not designed to be carried around and used with an iPad Pro propped up on your lap. Sure, you /can/ do it, and I’ve been doing it often, but it’s uncomfortable at best. The tipping point for me came in September: after more personal schedule changes, I realized that I would have to do more driving and waiting in my car every week, and I knew I had to find a better keyboard setup for my iPad. With a total of six hours to spend every week in my car trying to work while sitting and waiting, neither the software keyboard nor the clumsy Magic Keyboard were going to cut it. After some research and despite its less-than-stellar reviews, I bought a [Razer mechanical keyboard case for the iPad Pro](http://amzn.to/2fkPbWf). I’ve been working with [this keyboard](http://www.razerzone.com/gaming-keyboards-keypads/razer-mechanical-keyboard-case-ipad-pro) for over a month now, and not only am I more efficient because of it – my back doesn’t hurt anymore and I’m typing faster than ever. Every week on Monday and Wednesday, I have to wait three hours (each day) in my car before I drive back home. While that may sound uncomfortable, I actually find my new car (a Kia Sportage 2016) a great place to get work done: the back seats are large, there’s Bluetooth audio, good AC, and, best of all, silence when I need to concentrate.[2](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/#fn-45733-2) I quite enjoy working with no interruptions from my car, but I needed to find a keyboard case that would transform my iPad into something similar to a laptop without the caveats of the Logitech CREATE. Razer’s mechanical keyboard case is made of two distinct parts: the actual Bluetooth keyboard (which is backlit and has low-profile mechanical switches) and a hard plastic case where you insert the iPad Pro. Both can be attached through a magnetic strip that protrudes from the keyboard and connects to the longer side of the case. Unlike the Smart Keyboard, you can detach the iPad and use the keyboard via Bluetooth while the device is farther away from your eyes and hands. The case features a hinge at the bottom where you’ll find the magnet to align and snap the iPad to the keyboard. Because the keyboard’s magnet is attached to a soft strip that ensures the iPad can close on top of the keyboard, the whole magnetic attachment feels a bit flimsy and, to an extent, cheap. The magnet may move and jiggle, and it doesn’t look nice when doing so. I wish Razer had come up with a more elegant solution that combined the docked case/keyboard position in both typing mode as well as cover mode. The current solution feels a little odd. [image:CD874B21-9680-408C-B73F-4416DE39FE88-16210-0000130394449D7D/2016-11-08-19-49-58.jpeg] The core aspect of Razer’s case, however, isn’t how it attaches to the keyboard, but, rather, its adjustable metal kickstand. Unlike keyboard cases or covers that limit you to a fixed viewing angle, Razer’s kickstand can be adjusted, giving you the flexibility to prop up the iPad on different types of surfaces and in different writing contexts. The kickstand yields a larger and longer footprint than other iPad keyboard cases, which can be an issue if your space is constrained (you won’t able to use this on an airplane tray table, for instance). On the other hand, the kickstand’s build quality allows the iPad to sit firmly in place and always maintain the viewing angle you set. [image:F96D9AD1-3251-4364-8BA0-EAE9AE0B4945-16210-0000130394278E03/2016-11-08-19-56-15.jpeg] The kickstand’s base has a notable footprint behind the iPad Pro. This is exactly what I needed to get work done on my iPad Pro from the car. Instead of hunching over the iPad’s screen, I now go sit in the back seat, stretch my legs forward so I’m comfortable, and put the Razer keyboard and case somewhere between my knees and lap. With my back in an upright position, I can rest my wrists on the lower part of the keyboard (imagine where a small trackpad would be; that empty area is another benefit of this laptop-like design) and rotate the hinge until the kickstand gives the iPad’s screen the angle I prefer. The one aspect I don’t like about the kickstand is that it doesn’t sit flush against the iPad’s case if you apply a normal amount of pressure in the middle of the two “arms”. To close the kickstand, you have to press hard on its corners – something that Razer itself recommends on the instruction manual. It feels like you’re going to break it every time. [image:59F336FF-AB78-418A-BC35-C652CD0F968E-16210-00001303940919BC/2016-11-09-15-18-29.jpeg] The back of the Razer case shows how the kickstand doesn’t sit flush on the surface without a good amount of pressure. However, the metal hinge mechanism is durable and it can handle the iPad Pro’s weight at multiple angles, which could explain why you might need some extra pressure to get it to close completely. That’s a trade-off I can live with if it means the kickstand can sustain my iPad Pro reliably over time. Razer’s iPad kickstand is perfect for my needs – with it, those additional hours spent in the car aren’t a burden or a loss of productive time. In fact, given the quality and comfort of my car’s seats, I think the setup is even better than the office chair I have at home (which I need to change; recommendations are welcome). [image:47E5D39C-4D0B-4BB5-B242-F044A31AE993-16210-0000130393EA005C/2016-11-08-19-51-39.jpeg] A good portion of MacStories Weekly is assembled in the hours I spend waiting in my car. In addition to working from my car, I have used the iPad in kickstand mode at my desk, in bed (the case without the keyboard attached is also excellent for watching TV shows), and even with the iPad sitting vertically and detached from the keyboard in portrait mode. The latter isn’t officially recommended by Razer, but it works as a way to view more content when typing; I love that the metal kickstand handles the different orientation without issues. [image:3396B870-E7B3-48DA-94CE-4D23577304F2-16210-0000130393D0EF47/2016-11-08-20-01-38.jpeg] I have done this, and it works. You probably wouldn’t expect a kickstand to be the selling feature of an iPad keyboard case, but it is the primary reason why I bought the Razer keyboard. Together, the keyboard and the kickstand transform the iPad Pro in a laptop that runs iOS and I can use anywhere. The Razer case and kickstand have their caveats, but they’re what I needed to get more out of my iPad Pro. ## Typing: Mechanical, Backlit Keys If you listen to [Connected](https://www.relay.fm/connected), you know I don’t have a particular affection for wires and mechanical keyboards. I have typed on several keyboards over the past seven years, and I always got used to the feel of the keyboard I was using without too much drama. If I were to get some writing done during a flight right now, I’d probably bring a Smart Keyboard with me. The way I see it, my priority is getting words that make sense on the screen – not obsessing over the key travel of a keyboard and being too precious about it. That said, the low-profile switch used by Razer feels nice and makes a pleasant sound when pressed. *I’d still use this keyboard* if it had keys as flat as the Smart Keyboard or the MacBook, but I like what Razer built. [image:872D14A0-D577-41FB-B46A-0072D126DA2E-16210-0000130393B75F6D/2016-11-08-20-02-56.jpeg] There are some oddities. First, the case’s texture is a dust magnet and I wish Razer offered more color options that would better hide dust and help clean the keyboard less frequently. Second, I bought the keyboard from the Italian Razer store, but I got one with an American layout. I was upset initially, but I got used to the differences in about a week and, frankly, I think /not/ having Italian characters and keyboard conventions is better for me at this point given the amount of English writing I do on my iPad.[3](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/#fn-45733-3) Still, that’s something worth considering if you /absolutely/ need a keyboard layout in your native language. Last, and perhaps more perplexingly, Razer has adopted a peculiar placement for the arrow keys. They are full-size, which is nice, but the right arrow key sits next to the keyboard-dismiss key. This is downright infuriating at first because you’ll mistakenly hit ‘Dismiss’ when reaching out for the arrow in the corner of the keyboard, and instead you’ll be presented with the iOS software keyboard appearing on screen. I understand that Razer had to include this key for integration purposes with iOS [4](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/#fn-45733-4), but I would have preferred if the arrow keys extended all the way to the right edge and the software keyboard key was placed on the left side, next to the globe key used to cycle between keyboard layouts. The best feature of Razer’s mechanical keyboard is that it’s backlit. Razer boasts up to 20 levels of illumination, which can degrade battery life to 10 hours on a single charge (down from 600 hours without backlit keys).[5](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/#fn-45733-5) You can tweak backlight illumination with the dedicated function keys on the top row, either by clicking them repeatedly or holding them until you like the illumination level. Alas, the shift-key modifiers printed below the keycaps don’t illuminate, leaving you to guess what each key does if you don’t remember the keyboard’s layout.[6](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/#fn-45733-6) Because of its full-size layout, mechanical switches, and backlight illumination, I’ve noticed that I’ve been typing faster and /more often/ on the Razer keyboard than other keyboards I used in the past. Being able to attach a kickstand and the backlit keys have helped me type from anywhere – whether it was in my car or in bed at night – and I find typing on this keyboard a pleasure compared to the Smart Keyboard and Magic Keyboard. ## The Case There isn’t much to say about the case and the rest of the keyboard. The case and kickstand add a lot of weight to the iPad Pro and they’re definitely not meant to be used as a traditional protective case, or even as a stand to prop up horizontally the iPad and type in software keyboard mode. The iPad Pro alone weighs 723 grams: with the Razer case and keyboard, it goes up to 1710 grams – nearly an extra kilogram. The back of the keyboard has a grippy texture that makes it not slide across tables and desks, but it’s boring to look at when it’s closed, so I covered it in stickers. I think we can all agree it looks much better this way. [image:61E2AEA5-7E2F-42C8-B3C6-EDCBAB833764-16210-0000130393998895/2016-11-08-20-13-52.jpeg] Finally, while there are magnets in the lower edge of the keyboard to align it with the front of the iPad when closed, the whole structure doesn’t feel as tight as the Smart Keyboard. This is largely due to the flexible strip that connects the keyboard and case, but I don’t particularly mind as I’ve been carrying everything in my [Daylight Briefcase bag](https://www.tombihn.com/products/daylight-briefcase?variant=16396821255); the iPad’s case and the keyboard never disconnected from each other. ## iOS 10 and Hardware Keyboards Using the Razer keyboard every day exacerbates iOS’ shortcomings in the external keyboard department. This is nothing new, but I notice the issues more now as the bigger surface makes my hands rest farther away from the screen; every time I have to interact via touch, it is extremely annoying. A few examples of the problems I encountered as I used my iPad with a Bluetooth keyboard: * Keyboards still can’t control Split View and Slide Over multitasking; * Keyboards can’t control action sheets and share sheets, forcing you to touch to activate options or app extensions; * Sometimes, Spotlight doesn’t activate immediately and it requires a second press of Command-Space to be displayed; * The keyboard cheat sheet (the dialog with shortcuts you get by pressing Command in a compatible app) sometimes gets stuck in the middle of the screen without being dismissed; * Keyboards can’t invoke Control Center, requiring you to touch the screen if you want to see what song is playing; * There are no system shortcuts to open Siri or Notification Center; * Many apps still don’t support basic shortcuts such as CMD-F to focus the cursor in their search field, or CMD-N to create a new document. iOS will probably never have the kind of keyboard control possible on macOS because of its multitouch nature, but there’s still a lot Apple can do to improve the current implementation of external keyboards. Working with the Razer keyboard in iOS 10 is dramatically better than what we used to have until a couple of years ago, but I’m hoping to see additional changes in this area with iOS 10.3 and iOS 11 next year. ## Wrap-Up The [Razer mechanical keyboard case for iPad Pro](http://amzn.to/2fkPbWf) is a peculiar product aimed at a specific audience: people who work from an iPad Pro every day to justify the cost, who want a keyboard case with an adjustable kickstand, and who need backlit keys to type in the dark. > As a heavy iPad Pro-only user, this is the keyboard I wanted. I happen to be exactly that kind of iPad user. This keyboard has flaws and questionable design decisions – you could argue that it doesn’t even look /nice/ – and I wouldn’t recommend it to anyone looking for a entry-level iPad keyboard case or standard Bluetooth keyboard. However, despite the things Razer could have done differently, the functionality of the kickstand-keyboard combo is unparalleled. As a heavy iPad Pro-only user, this is the keyboard I wanted to work faster and more comfortably from anywhere. The [Razer mechanical keyboard case](http://www.razerzone.com/gaming-keyboards-keypads/razer-mechanical-keyboard-case-ipad-pro) is my new favorite way to type on the iPad Pro. It’s not for everyone, but it’s just what I was looking for. [My New iPad Pro Keyboard: The Razer Mechanical Keyboard Case](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/) # Canopy Keyboard Cover and iPad Stand Review [image:78885FF6-0B32-43DB-8502-C37F4A6239A3-16210-00001302289F221C/dsc015161482119831459.png] I’ve been carrying [Studio Neat’s](https://www.studioneat.com/) new [Canopy](https://www.studioneat.com/products/canopy), a combination keyboard case and iPad stand, for about a week. It’s the first time Apple’s Smart Keyboard has been off my iPad Pro since I got it, but I haven’t missed it at all. There are still certain situations where I prefer the Smart Keyboard, but I love having the option to work on my iPad with Apple’s Magic Keyboard when it suits my needs. So, while I won’t be switching to a Magic Keyboard/Canopy combination full-time, it’s a choice I’m glad to have and one I will use frequently. I used an Incase Origami keyboard case with the original iPad. Apple’s previous-generation wireless keyboard was propped up at an angle by a barrel that housed the batteries used to power it. With the Origami, you popped the barrel of the keyboard into clips on the case to hold it in place. The case was divided into two panels that wrapped around the keyboard and closed with Velcro. The case’s name derived from the fact that you could fold back the two free corners of the case and attach them to each other with Velcro to form a pyramid-shaped stand. The case worked well, but it was a bulky solution because Apple’s previous-generation wireless keyboard was larger than the current Magic Keyboard. [image:052FBA1E-023A-45F6-B1F4-9A63A1DC5914-16210-0000130228853332/dsc015021482119846553.png] The Incase Origami case (left) and Canopy (right). The Canopy is an evolution of the ideas pioneered by the Oragami case that improves every aspect of it. The case has a three-panel, hinged design. Laid flat on a table, the Magic Keyboard attaches to the bottom third of the Canopy with micro-suction pads, which Studio Neat uses in some of its other products. If you haven’t seen micro-suction pads in action, they have a tacky surface that holds the keyboard in place remarkably well. Better yet, you can remove your keyboard without leaving any residue on it and reattach it without the micro-suction pads losing their stickiness. The exterior of the Canopy is made of what Studio Neat describes as synthetic canvas. It’s a nice material that feels durable and has held up well in the week it’s been banging around inside my bag. The interior is a microfiber fabric that isn’t as soft as the inside of an iPad Smart Cover, but is soft enough to protect the Magic Keyboard. The panels themselves are stiff, but flexible; a little like the panels of Apple’s Smart Cover, but thinner. The case wraps around the keyboard and is held shut by a leather strap with a snap. [image:8B09F639-0D37-40D8-9754-97B748617640-16210-00001302286935A8/dsc015051482119951118.png] The Canopy closed around Apple’s Magic Keyboard. The fit between the Canopy and Magic Keyboard is perfect. The stiff panels surround the keyboard with a small amount of overlap at the edges that helps keep things from hitting the sides of the keyboard. However, the close fit also means that the Canopy only works with Apple’s Magic Keyboard. Converting the Canopy from a case to a stand is easy. Open the case and fold the two top panels backwards into a triangle. The same strap that holds the Canopy closed as a case attaches with the snap to form the base of the two-panel triangle that acts as a stand. The hinge between your keyboard and the middle panel of the Canopy forms a slot into which you can drop any iOS device. [image:77C737ED-CDB1-4E39-8BED-1E4DC262822C-16210-00001302284FA14A/dsc015111482120072314.png] The Canopy features a three-panel design. I’ve been using the Canopy with my iPad Pro, which fits nicely into the Canopy even with a Smart Cover attached, but any iOS device fits, including an iPhone. The snap used to secure the Canopy is strong and holds the configuration together well at a fixed angle that is a pleasure for writing. An unexpected benefit of using the Magic Keyboard with my iPad that the Canopy has enabled is access to the function keys. iOS supports adjusting brightness and volume, controlling media playback, and showing and hiding the software keyboard with the Magic Keyboard’s top row of keys. It’s a small thing, but I especially like using the media playback keys with my iPad because use them frequently on my Macs. [image:E9338711-46ED-44F4-80B1-6DF080E2646D-16210-000013022836D134/dsc015131482120256136.png] The leather strap and snap hold the top two-thirds of the Canopy together forming a stand. I’ve found that the best way to use the Canopy is at a table or desk where the Canopy sits flat and is stable. Sliding the Canopy around on a table works well, but in my lap I’ve run into a couple minor issues. The added friction of sliding the Canopy in my lap sometimes causes the snap to come undone. In addition, when I use the Canopy in my lap, my iPad sits lower in it than it does on a table or in the Smart Keyboard Case, which can make it difficult to swipe up to activate Control Center. The Smart Keyboard doesn’t have the same issue because the iPad sits on top of one of its panels rather than on a flexible hinge. The difference isn’t so large that I don’t use the Canopy in my lap, but the experience is noticeably better on a flat surface. I’m not picky about keyboards as long as they are comfortable. That said, I do prefer the feel of the Magic Keyboard to the Smart Keyboard. Before I started using the Canopy, I hadn’t considered using a Magic Keyboard with my iPad Pro, but the convenience and elegance of the Canopy has changed that. After a week of heavy use, the Canopy has found a permanent place in my writing kit. I won’t use it every day – many days, the Smart Keyboard will be enough – but when I’m doing a lot of writing, I’m going to carry the Canopy. The typing experience is much closer to what you would find on a MacBook or MacBook Pro, which is sufficiently better than the Smart Keyboard that I bought a new Magic Keyboard to dedicate to the Canopy and my iPad. Students, writers, and anyone else who spends a lot of time typing into an iOS device should consider the Canopy. The Canopy [is available from Studio Neat’s website for $40](https://www.studioneat.com/products/canopy). [Canopy Keyboard Cover and iPad Stand Review](https://www.macstories.net/reviews/canopy-keyboard-cover-and-ipad-stand-review/) # Gboard Update Brings YouTube and Maps Integrations [image:D6075ADF-1025-4736-87CE-B5B8E2998F87-16210-00001300C8B93682/2017-07-31-09-29-10.jpeg] One of the best third-party keyboard options on iOS just got better. The latest update for [Gboard](https://itunes.apple.com/us/app/gboard-a-new-keyboard-from-google/id1091700242?mt=8&uo=4&at=10l6nh&ct=ms_ryan) adds special integrations with two Google services: YouTube and Google Maps. When using Gboard, tapping the G button will now present YouTube and Maps tabs alongside the standard Search option. Both new options present an assortment of suggestions when you first open them, along with the expected search function. YouTube’s suggestions appear to be a selection of top trending videos; in my testing Gboard wouldn’t show any videos personalized to me or my watch history, but that may change over time with more use. Maps shows an assortment of nearby locations, as well as your current location if you grant that permission. Making a selection copies a link to the content inside the text box, alongside a brief description of what you’re linking to. The market for third-party keyboards on iOS has largely grown stagnant, but Google continues to show its commitment to Gboard. While adding new features to a keyboard could clutter its interface before long, YouTube and Maps are natural fits for Gboard, integrating well both from a functionality standpoint and in their placement in the interface. [Gboard Update Brings YouTube and Maps Integrations](https://www.macstories.net/news/gboard-update-brings-youtube-and-maps-integrations/) # iOS and macOS Text Replacement Gaining CloudKit Syncing Soon [image:3FD2E48A-02F3-47AC-8ED1-FAE99C23E232-16210-000012FFFF0F4D0D/256px.png] There’s been quite a stir over the last week regarding an area of the Apple cloud ecosystem where syncing has remained unreliable for years. Brian Stucki wrote [a detailed post](https://www.macstadium.com/blog/science-confirmed-text-replacements-do-not-sync/) on the matter, which John Gruber linked to with [echoing sentiments](https://daringfireball.net/linked/2017/09/26/stucki-text-replacements). Today, however, Gruber followed up on his post with [an exciting update](https://daringfireball.net/linked/2017/09/27/text-replacements-moving-to-cloudkit): > Good news related to yesterday’s item regarding the fact that text replacement shortcuts have never synced reliably between Macs or iOS devices: an Apple spokesperson emailed me to say they checked with the team, and an update that moves text replacement syncing to CloudKit should be rolling out to iOS 11 and MacOS 10.13 High Sierra users in the “next month or so”. I use text replacement every day across my iOS devices, and haven’t dealt with syncing issues myself, but it’s great to hear that this long-standing problem should soon be put to rest for everyone else. Recent history shows that once a cloud product moves to CloudKit, syncing issues disappear almost entirely – hopefully that will be the case here as well. [iOS and macOS Text Replacement Gaining CloudKit Syncing Soon](https://www.macstories.net/linked/ios-and-macos-text-replacement-gaining-cloudkit-syncing-soon/) # Gboard Adds Automatic Theme Switching [image:B60D78B7-B244-412E-866F-EF26D32D0205-16210-000012FF24FFEDFB/2017-12-05-00-49-19.jpeg] Gboard in Tweetbot, Bear, and Plex. I’ve [always liked Gboard](https://www.macstories.net/?s=gboard), Google’s alternative keyboard for iOS. [Gboard](https://itunes.apple.com/us/app/gboard/id1091700242?mt=8&uo=4&at=10l6nh&ct=ms_inline) combines Google’s intelligence (with accurate and personalized autocorrect, emoji and GIF suggestions) with handy features such as glide typing. However, as I [mentioned](https://www.macstories.net/linked/gboard-adds-3d-touch-cursor-movement-contacts-integration/) before, I couldn’t use Gboard as my primary keyboard on the iPhone for a variety of reasons: it lacked iOS’ native dictation mode, couldn’t automatically switch light and dark themes depending on the context of the current app, and, worst of all, it didn’t support multi-language typing without manually picking a different keyboard layout. Siri dictation and simultaneous multi-language support are still missing (the former will likely never be added), but today’s update is an important step towards making Gboard feel more integrated with iOS. Gboard can now switch its default theme between light and dark based on the app you’re using. I’m not sure how Google pulled this off, but I tested Gboard with the dark modes in [Apollo](https://itunes.apple.com/us/app/apollo-for-reddit/id979274575?mt=8&uo=4&at=10l6nh&ct=ms_inline), [Tweetbot](https://itunes.apple.com/us/app/tweetbot-4-for-twitter/id1018355599?mt=8&uo=4&at=10l6nh&ct=ms_inline), [Copied](https://itunes.apple.com/us/app/copied/id1015767349?mt=8&uo=4&at=10l6nh&ct=ms_inline), and [Bear](https://itunes.apple.com/us/app/bear/id1016366447?mt=8&uo=4&at=10l6nh&ct=ms_inline), and the keyboard always used the dark theme instead of the light version. Conversely, in Safari, App Store, and other light-themed apps, Gboard used the light mode instead. This was one of my complaints about the old Gboard: its default light theme looked garish in dark apps; on the other hand, if you persistently enabled Gboard’s dark theme, then it would look out of place in apps like Messages or Mail. With automatic theme switch, changing Gboard’s default appearance is no longer a concern because it adapts to the app you’re using. I’ve found a couple of apps where Gboard doesn’t correctly apply the dark theme (Overcast is one of them), but I’m impressed overall; Gboard even switches to the dark theme when you swipe down on the Home screen to open Spotlight. I’d be curious to know which iOS API Google is using to implement this option, and if third-party developers can optimize for Gboard in any way. [Gboard Adds Automatic Theme Switching](https://www.macstories.net/ios/gboard-adds-automatic-theme-switching/) # Things 3.6 Reimagines External Keyboard Control on iPad [image:E6D9F63D-AFEF-4E89-A053-20A5745A1529-16210-000012FE89E28827/2018-05-28-02-29-51.jpeg] Despite Apple’s [message](https://youtu.be/sQB2NjhJHvY) that the iPad Pro can be a viable PC replacement because, among other features, it natively supports a [dedicated external keyboard](https://www.apple.com/smart-keyboard/), its software still isn’t fully optimized for keyboard control. This isn’t surprising at all: iOS was designed with multitouch in mind; as long as the iPad shares a common foundation with the iPhone, it’ll always be first and foremost a touch computer. The iPad Pro line, however, is [nearing its third anniversary](https://www.macstories.net/stories/ipad-pro-review/), and its external keyboard integration still feels like an afterthought that’s hard to reconcile with the company’s marketing. Take multitasking for example: after [three years](https://www.macstories.net/stories/ios-9-review/11/#split-view), Split View, one of the iPad’s marquee exclusive features, still can’t be controlled from an external keyboard. If you buy an iPad Pro with a Smart Keyboard and assume that you’re going to be able to assign an app to a side of the Split View, or maybe resize it, or perhaps change the keyboard’s focus from one side to another…/well/, do not assume. As much as Apple argued against vertical touch screen surfaces in laptops [years ago](https://www.youtube.com/watch?v=JBcjlcaZUNU?t=56m26s), the iPad Pro ended up in this very situation: if you want to take advantage of all the great features [iOS 11 offers to pro users](https://www.macstories.net/stories/ios-11-the-macstories-review/15/#ipad), you will have to take your hands off the Smart Keyboard and touch the screen. There are dozens of similar instances elsewhere in iOS. For the most part, the iPad treats external keyboards as inferior, bolt-on input devices. It’s with this context that I want to cover [Things 3.6](https://itunes.apple.com/us/app/id904244226?at=10l6nh&ct=ms_inline), a major update to the task manager’s iPad version that gives us a glimpse into what Apple could do with external keyboard control on iPad if only they understood its potential. I’ve been able to play around with Things 3.6 on my iPad Pro for the past couple of weeks. This isn’t another “keyboard-centric” update that only adds a handful of shortcuts to trigger specific commands. Instead, the developers at [Cultured Code](https://culturedcode.com/things/) have focused on an all-encompassing keyboard control framework for the whole app, from task lists to popovers and multiple selections. With version 3.6, Things has the best implementation of external keyboard support I’ve ever seen in an iPad app. ## Keyboard Control The idea behind Things 3.6 is that you should be able to fully interact with and navigate through the app without ever leaving the keyboard. There are a few key concepts at play here. First, there’s selection of tasks in the app. Due to the lack of an external cursor on iOS, most iPad apps don’t support creating a new selection with the keyboard. Unless you’re dealing with a text view (which supports Apple’s default keyboard shortcuts out of the box), iPad apps usually require you to touch an item to select it; only after a selection is active can you invoke one of the available keyboard shortcuts to execute a command. It’s this constant back and forth between the screen and keyboard that makes certain pro apps so cumbersome to use on the iPad compared to the Mac. Things 3.6 obviates the need to touch the screen to select items by letting you press ↓ to select the first item in any view of the app, which gets highlighted in blue. It couldn’t be easier. As you can imagine, you can then navigate among multiple items with the ↓ and ↑ arrows. You can extend your selection up or down with `⇧↑/↓`, and even extend the selection to the top or bottom of a list with `⇧⌥↑/↓`. You can also quickly select or deselect everything at once with `⌘A` and `⌥⌘A`, respectively. These options alone sound remarkable for an iOS task manager, but we’re barely scratching the surface of what you can do with the keyboard in Things 3.6. Once an item is selected, the keyboard can control everything a finger can normally do in Things. Here’s a practical example: after selecting a task by pressing ↓, you can reschedule it by bringing up the Jump Start menu with `⌘S`. This is a popover that most iPad apps wouldn’t treat as keyboard-enabled; in Things 3.6, you can either start typing a date in natural language and accept it with Return, or you can select each different option of the popover with the arrow keys. Once you reach the mini calendar, you can even use ← and → to move between days horizontally. And if you want to dismiss the menu, you can use `⌘.` – a useful shortcut convention that Cultured Code adopted from the Mac throughout the entire app as a replacement for the ESC key. The idea that the user should be able to select and control every popover and every field of the UI permeates Things 3.6. When a task is selected, you can press Return to expand it inline (this animation has always been one of favorite design touches of Things). In the task editor, you can Tab through the title, note, date, tag, checklist, and deadline fields. There’s a blue highlight around fields that don’t show a blinking cursor, so you instantly know which one is currently selected and waiting to receive input from the keyboard. Pressing Return again either activates or expands a field. [image:ED28672F-735A-4F1B-942F-68CF62079EB7-16210-000012FE89C8D35F/2018-05-28-02-32-17.jpeg] Cycling through a task’s fields with the keyboard shows a blue highlight around the currently selected item. Even more impressively, fields that open an additional layer of UI within a task can also be controlled from the keyboard. Pressing Return on the checklist button, for instance, creates a line of text as your first checklist item; you can add more by typing and pressing Return. The same shortcut that completes a task in Things – `⌘K` – can be used to complete an individual checklist item when it is selected (or archive a heading in a project). These techniques can be used in the Quick Entry panel too, which you can invoke via `⌃Space`, interact with using Tab, Return, or the arrow keys, and dismiss with `⌘.` if you need to cancel. The breadth and depth of Things’ keyboard-powered app navigation is something I’ve never seen in any other iPad app before. You can move tasks to different lists and control the Move dialog with the keyboard (same for the Tag window); you can jump to the top sections of the sidebar with dedicated keyboard shortcuts; you can filter lists with a specific tag (something I do all the time for my Writing tasks [1](https://www.macstories.net/reviews/things-3-6-reimagines-external-keyboard-control-on-ipad/#fn-54475-1) ); you even have the ability to batch select multiple items and rearrange them in a list, tag them all at once, or reschedule them. You have to see it in action to believe how much you can accomplish in Things 3.6 from the keyboard alone. Then there’s Type Travel. This feature, which originally debuted in Things for Mac, is like a built-in Spotlight that lets you search for any task, view, or element of Things and instantly open it. Type Travel doesn’t require a special activation method: to use it in Things for iPad, just start typing as if the screen you’re looking at was an active search field. There are no key modifiers to press. As soon as you type a character, results appear in the middle of the screen, each of them carrying a different glyph whether it’s a task, a tag, or a list. You can keep typing to refine your query, page through results with the arrow keys, and jump to a specific item by selecting it and pressing Return. [image:50861582-2506-41D3-A7FB-415304D9FB9D-16210-000012FE89AF59F9/2018-05-28-02-34-24.jpeg] Type Travel in action. The combination of Type Travel and external keyboard awareness of essential interface elements makes using Things 3.6 an experience unlike any other on iPad. In my years spent testing and [reviewing third-party iPad apps](https://www.macstories.net/ipad/), I’ve used dozens of apps that, despite being labeled as “pro”, walked the uncomfortable line of offering a good selection of keyboard shortcuts while ultimately forcing you to touch the screen to navigate or confirm certain actions. Things 3.6 upends this tradition, not because it has the largest number of keyboard shortcuts ever seen in an iOS app (apps like [OmniOutliner](https://itunes.apple.com/us/app/id1174101450?at=10l6nh&ct=ms_inline) or [MindNode](https://itunes.apple.com/us/app/id1218718027?at=10l6nh&ct=ms_inline) probably have more in terms of sheer quantity), but thanks to a pervasive keyboard control that supports selection of items, navigation, multiple layers of interaction in the UI, app-wide searches, and more. After using Things 3.6, I want all my most-used iPad apps to behave like Cultured Code’s task manager. ## Shortcuts and More While I appreciate Things’ prioritization of keyboard navigation and interaction more than regular shortcuts, there are a few additions I want to call out. The aforementioned `⌘.`, which acts as a replacement for ESC on iOS, is one of my favorite surprises of this update. As it turns out, Cultured Code has simply adopted a shortcut that is already universally supported in the majority of iPad apps (and which is available on macOS too). I didn’t know about this before Things 3.6. You can use `⌘.` to dismiss a search in Ulysses, for instance, or the message composer in Mail, or a draft in Tweetbot. I still would like to see a new Smart Keyboard with a proper ESC key, but `⌘.` does the job pretty well. In terms of managing tasks and projects, I’ve been using `⇧⌘T` to assign a tag to a task and `⇧⌘M` to move it to a different project. Inside the tag popover, you can use `⌥Space` to toggle the selected tag on/off (though it’s easier to just type a tag’s name). There are even handy commands for dates, such as `⌃]` to add 1 day to a start date or `⇧⌘D` to add a deadline. For the full list of keyboard shortcuts supported in Things 3.6, I highly recommend reading [Cultured Code’s cheat sheet](https://support.culturedcode.com/customer/portal/articles/2939808). There are also some non-keyboard changes in this update worth noting. You can now apply tags and deadlines to multiple tasks at once; the option, which works on iPhone too, can be activated by tapping the ••• button after selecting multiple tasks. [image:7F16A735-F7CB-43D0-A159-220A8078BDA3-16210-000012FE89834752/2018-05-28-02-24-24.jpeg] How to tag multiple items at once in Things 3.6. On the iPad, drag and drop can be used to move tasks to different projects and areas in the sidebar. Unfortunately, Cultured Code is still using their custom flavor of multiple item selection, so you can’t add more tasks to one that you’re already dragging by [tapping on them once](https://www.macstories.net/stories/ios-11-the-macstories-review/19/#drag); instead, to create a multi-item drag and drop stack, you have to manually select items with Things’ selection mechanism, then drag them away. Finally, Things on iPad now supports undo and redo (which, as you can imagine, belong to `⌘Z` and `⇧⌘Z` on the keyboard). ## Things 3.6 I’ve only run into a handful of scenarios where multitouch input was necessary to dismiss a screen or interact with a menu in Things 3.6. Date pickers can’t be scrolled with the keyboard and you can’t open hyperlinks contained in a task’s note unless you tap them. These are small issues that do not compromise the big picture of this update. In an App Store where developers of certain iPad apps still think they’re supposed to be making “lighter” versions of their “more serious” Mac counterparts, Cultured Code deserves praise for thinking deeply about the hard problems of item selection and app navigation on a touch-first device that can transform into a quasi-laptop form factor. A true “pro” app for iPad – one that aims at reaching desktop-class levels of power and versatility – should cater to the hybrid nature of the iPad Pro as a computer that blends multitouch and external keyboard integration. Despite not being usually regarded among pro software for iOS, Things 3.6 is the first iPad app I’ve tried that embraces the keyboard like a Mac app would. With this update, Things for iPad essentially works just like Things for Mac; if anything, the iPad app has the /advantage/ of multitouch input, which is arguably faster and more intuitive than a mouse cursor. It’s the best of both worlds. As you’ve probably concluded by reading this article, I love that I can finally use Things on my iPad without taking my hands off the keyboard. It feels like the app doesn’t punish me for using an external keyboard, as is unfortunately the case with other iPad system features. There’s a peculiar sense of nerdy pleasure in having an iPad app that is so well integrated with an external keyboard; it’s almost a “We told you so” moment in response to Apple’s poor implementation of keyboard control on iOS three years into the iPad Pro era. Which is why I think Things 3.6 is also a statement of sorts – a message to developers of iPad apps, including those at Apple, to extend their keyboard integrations. Things 3.6 may be /just an app/, but the idea of complete keyboard control should be applicable to every area of an operating system as well. Can you imagine if iOS worked this way too? Things 3.6 is available on the App Store for [iPad](https://itunes.apple.com/us/app/id904244226?at=10l6nh&ct=ms_inline) and [iPhone](https://itunes.apple.com/us/app/id904237743?at=10l6nh&ct=ms_inline). [Things 3.6 Reimagines External Keyboard Control on iPad](https://www.macstories.net/reviews/things-3-6-reimagines-external-keyboard-control-on-ipad/) # iFixit Tests MacBook Pro’s Keyboard Membrane [image:DE4172CC-11DA-43C1-AABB-EF11679F6833-16210-000012FBB5773384/apple_macbook_pro_update_developers_coding_071220181532035380662.jpg] iFixit ran more tests and took a closer look at the keyboard membrane that was added to the 2018 MacBook Pro released last week. It turns out, the membrane is one sheet of die-cut silicone with tiny cutouts to allow keycaps to connect to the butterfly switches beneath. To test how well the new design holds up against dust, iFixit sprayed a new MacBook Pro with a dusting of paint additive. [They then tore apart the notebook and found](https://ifixit.org/blog/10319/butterfly-keyboard-teardown/): > Lo and behold, the dust is safely sequestered at the edges of the membrane, leaving the mechanism fairly sheltered. The holes in the membrane allow the keycap clips to pass through, but are covered by the cap itself, blocking dust ingress. The previous-gen butterfly keys are far less protected, and are almost immediately flooded with our glowing granules. On the 2018 keyboard, with the addition of more particulate and some aggressive typing, the dust eventually penetrates under the sheltered clips, and gets on top of the switch—so the ingress-proofing isn’t foolproof just yet. Time will tell how long the barrier will hold up. iFixit followed up by testing with grittier sand, which managed to cause keys to stick. It’s good to see that the MacBook Pro’s keyboard withstands fine particles better than earlier models in testing. The real test, of course, is long-term human testing. Only time will tell whether the 2018 MacBook Pros can hold up when faced with a crumbly muffin in your local café or the pollen blowing across your keyboard as you browse the web in your backyard. [iFixit Tests MacBook Pro’s Keyboard Membrane](https://www.macstories.net/linked/ifixit-tests-macbook-pros-keyboard-membrane/) # iPad Diaries: Typing on the iPad Pro with the Smart Keyboard Folio [image:EFEA031E-BF20-41E2-953B-EB4348B7599D-16210-000012F90A7C6391/2018-11-14-14-51-10.jpeg] /iPad Diaries is a regular series about using the iPad as a primary computer. You can find more installments [here](https://www.macstories.net/tag/ipad-diaries/) and subscribe to the dedicated [RSS feed](https://www.macstories.net/tag/ipad-diaries/feed)./ I have a love/hate relationship with Apple’s Smart Keyboard for the iPad Pro. On one hand, I’ve [always been a fan](https://www.macstories.net/stories/ipad-pro-accessories-review/) of its small footprint and ability to almost become part of the device itself from both a hardware and software perspective. The Smart Keyboard snaps itself into place and attaches magnetically to the iPad Pro; it doesn’t require you to even /think/ about charging it as the Smart Connector takes care of it; thanks to the trivial magic of magnets, the keyboard and cover stay attached to the iPad as you carry it in a bag, but can be easily disconnected at a moment’s notice should you need just the iPad’s screen. The software experience is equally intuitive and exquisitely Ive-esque: the Smart Keyboard requires no pairing because it eschews Bluetooth altogether, and it integrates with all the keyboard shortcuts supported by iOS and apps. In the latest iPad Pro, the Smart Keyboard is even Face ID-aware: you can double-tap the space bar to authenticate from the lock screen instead of extending your arm toward the screen to swipe up – a welcome enhancement for those who work with their iPad Pro constantly connected to a keyboard. There’s plenty to appreciate about Apple’s Smart Keyboard – an accessory designed on the premise of integration between hardware and software, following the same core principles at the foundation of AirPods, Apple Pencil, and (even though some liked to make fun of their peculiar design) [Smart Battery Cases](https://www.macstories.net/stories/iphone-7-computer-from-the-future/#the-24-hour-iphone). But since its debut in 2015, I’ve been saving a series of small complaints and bigger annoyances with the Smart Keyboard that I’d like to revisit now that Apple has shipped its evolution for the new iPad Pro – the Smart Keyboard Folio. ## Smart Keyboard Folio As I wrote in [my first impressions article](https://www.macstories.net/news/the-new-11-and-12-9-ipad-pros-my-first-impressions-and-hands-on/) following Apple’s Brooklyn event, I was concerned that putting the iPad Pro in the new folio case was going to be a more involved process than attaching one of its sides to the Smart Keyboard. That first impression was wrong and the byproduct of my limited hands-on time with the accessory. Thanks to its 102 built-in [magnets](https://twitter.com/MKBHD/status/1062368253316603905), the Smart Keyboard Folio easily aligns with the flush back of the iPad Pro with little guidance required on your end. With the Smart Keyboard Folio completely open on a desk, I haven’t had any trouble placing the iPad on top of it and folding it in typing mode. In fact, I’ve noticed that Apple intelligently placed magnets both inside the iPad and the folio case so that if you try to place the device upside down on top of the case, it won’t attach. The new iPad Pro may be marketed as an orientation-agnostic computer as far as holding it in your hands goes, but with the Smart Connector and the Pencil’s magnetic connector being on one side only, the device only supports one orientation for the Smart Keyboard Folio. Considering what this accessory is designed for, this makes perfect sense. If I had to point out a minor issue with the magnetic connection between the folio and the iPad Pro, I’d say that detaching the keyboard from the iPad now requires paying more attention and a stronger pull. To detach the iPad from the folio case, you have to hold the keyboard down with one hand then pull the iPad somewhat strongly out of one of the two grooves above the numeric keyboard row. Then you have to detach it from the folio case as well. Again, I wouldn’t have expected otherwise, but this interaction is worth keeping in mind when comparing the Smart Keyboard Folio to the old Smart Keyboard. To design a folio case that contained a keyboard and was still thin enough to carry around for everyday use, Apple had to rely on a robust magnetic connection between the iPad and the case, and it’s only natural that more magnets mean more strength required to detach them. The upside – which is why I believe Apple’s magnets layout was ultimately the right decision – is that it’s nearly impossible for this case to be accidentally pulled from the iPad Pro. The other new feature of the Smart Keyboard Folio is its support for two distinct typing modes which, [according to Apple](https://www.apple.com/newsroom/2018/10/new-ipad-pro-with-all-screen-design-is-most-advanced-powerful-ipad-ever/), have been optimized to be “easily adjustable for lap or desk use”. Unlike the Smart Keyboard, the Smart Keyboard Folio comes with two long cuts above the keyboard where the iPad can attach magnetically in landscape mode, changing the screen’s viewing angle. [image:8817B51F-8742-4598-B392-6875B4DDB69E-16210-000012F90A51D6AC/2018-11-14-14-53-03.jpeg] From a technical perspective, this is a clever engineering feat that adds options to the classic Smart Keyboard design without increasing its bulk, creating complexity, or forcing you to attach additional clips to the iPad’s screen. In practice however, I think calling one of the two angles “desk mode” is a mistake. I find the Smart Keyboard Folio’s desk position (the second groove from the bottom) to put the iPad’s screen at a steep angle that is uncomfortable to work with when sitting at a desk. I don’t know how Apple’s Smart Keyboard Folio designers like to sit when they’re typing in front of a computer, but I’m 6ft tall and I find that the keyboard’s desk mode doesn’t prevent neck strain (I’m still staring down at a screen sitting far lower than my line of sight) while being too steep compared to how I’d use a MacBook on a desk. I would have been okay with Apple calling this a “media mode” for watching video while laying down with an iPad Pro in front of you, but I suppose they’d prefer to gloss over the perception of iPads being consumption devices only (though, I must say, watching YouTube and Netflix on this device is pretty sweet). As a result, I’ve been using my Smart Keyboard Folio in “lap mode” all the time, and with better results. The viewing angle for this mode is comparable to the angle of the original Smart Keyboard for the 12.9” iPad Pro. When I do take advantage of laptop mode with the iPad sitting in my lap, I think Apple was able to improve on the Smart Keyboard [1](https://www.macstories.net/stories/ipad-diaries-typing-on-the-ipad-pro-with-the-smart-keyboard-folio/#fn-57159-lap), but we’re still far from the comfort of a MacBook or solutions such as [Brydge and Logitech keyboards](https://www.macstories.net/ios/11-tips-for-working-on-the-ipad/#4-consider-a-smart-keyboard-alternative). [image:7E1F94B5-6C5E-4A5F-A5D0-B32B755B3A49-16210-000012F90A257CF5/2018-11-14-14-57-54.jpeg] Laptop mode is my default typing mode when I’m working on the iPad Pro. The sturdier design and improved weight distribution of the Smart Keyboard Folio make it wobble less than a Smart Keyboard when typing with an iPad Pro in your lap, but it still rocks back and forth a little. I don’t know what else Apple can do to fix this: this configuration is top-heavy by design, so Apple would have to add extra weight to the keyboard to better balance it in laptop mode, but that would defeat the purpose of designing a keyboard cover that is thin and light. The Smart Keyboard always walked a fine line between portability and typing efficiency, and this has never been more apparent than it is with the new Smart Keyboard Folio. While I find desk mode to be a marketing misstep (or just a weird idea of how people are supposed to sit at desks), I believe Apple managed to balance the compromises involved with laptop use and the keyboard’s compact form factor well. If I want, I can write blog posts with the Smart Keyboard Folio on my lap, which I did for several sections of this article. [image:B2226528-DDBB-4B3A-AE7C-08E268CF3A85-16210-000012F90A07C1AD/2018-11-14-15-01-23.jpeg] The Smart Keyboard Folio (right) compared to the Smart Keyboard for the 12.9” and 10.5” iPad Pros. Which brings me to my feelings about the keyboard itself. The Smart Keyboard Folio doesn’t address my gripes with the Smart Keyboard, namely the fact that it isn’t backlit, doesn’t offer any special iOS function keys, and is too small for my hands. While I understand why Apple needs to make the keyboard as compact as possible [2](https://www.macstories.net/stories/ipad-diaries-typing-on-the-ipad-pro-with-the-smart-keyboard-folio/#fn-57159-keys), the Smart Keyboard has always been too cramped for my hands and typing style. My problem is twofold: the keys are too small and the keyboard’s vertical area is too short. Comparing the Smart Keyboard to Apple’s Magic Keyboard and a Brydge keyboard should give you an idea of what I mean. [image:EAF05E78-75C2-4433-867D-7238C6B5C0FF-16210-000012F909E815D9/2018-11-14-14-59-27.jpeg] As a result of its smaller size compared to other keyboards, I have to be extra careful when typing on the Smart Keyboard and I keep accidentally hitting the globe key in the lower left corner with the palm of my left hand, which triggers the modal keyboard switcher in the middle of the screen. These issues are exacerbated by the fact that the keys themselves don’t have a lot of travel compared to other keyboards I’m used to, which slows down my typing. For what it’s worth, I do like the sound that the Smart Keyboard makes when I’m typing and when my fingers are gliding across its fabric material (which seems unchanged from the previous generation). After spending the past couple of years typing on the [Logitech Slim Combo keyboard](https://www.logitech.com/en-us/product/slimcombo), then a Magic Keyboard, and, once I managed to get my hands on a working unit, the [Brydge keyboard](https://www.brydge.com/products/brydge-12-9-ipad-pro-keyboard), what is awfully clear to me is that Apple’s only official keyboard option for the iPad Pro isn’t a pro keyboard at all. Yes, the Smart Keyboard is thin and portable, but to achieve that it sacrifices important functionalities I’d like to have when I’m writing for a few hours with my iPad Pro on a desk. As I mentioned above, the Smart Keyboard isn’t backlit; adding backlight to keyboards involves making them thicker, but Apple could have perhaps explored a thin design with keys that glow in the dark.[3](https://www.macstories.net/stories/ipad-diaries-typing-on-the-ipad-pro-with-the-smart-keyboard-folio/#fn-57159-glow) Besides lack of backlight, the Smart Keyboard doesn’t offer any sort of media or system control functions: it doesn’t come with media playback controls; it doesn’t have integrated shortcuts for the “go back home” feature, search, or multitasking; it doesn’t provide you with a dedicated Siri key that could invoke the Siri assistant. The latter would be useful when combined with [Type to Siri on iPad](https://www.macstories.net/ios/ipad-diaries-type-to-siri-as-a-smart-command-line/); instead, if you want to work with Siri while typing on a Smart Keyboard, you’ll either have to summon “Hey Siri” or reach the top button on the new iPad Pro, which I find to be awkward and disjointed from the rest of the experience. The lack of these options on the Smart Keyboard sum up my troubled relationship with Apple’s only offering for iPad Pro customers. Other Bluetooth keyboards, including Apple’s Magic Keyboard, let you save time when working on an iPad Pro by embedding core system functionalities into the keyboard itself. The Smart Keyboard forces you to extend your arm toward the screen to interact with features such as multitasking, Control Center, and Siri, which is not what I’d expect from a $199 (€219 in Italy – $246) keyboard designed by the same company that makes the iPad /Pro/. The “smart” part of the Smart Keyboard is still true to its name thanks to the elegant foldable design and instant pairing; however, as someone who types for a living and likes to work on an iPad Pro connected to a keyboard, I’m disappointed by the lack of professional features in Apple’s Smart Keyboard, three years after its debut. ### Smart Keyboard Folio Miscellanea Here are some other notes about the Smart Keyboard Folio that didn’t fit anywhere else: * The Smart Keyboard Folio doesn’t come with microfiber lining on the inside as it doesn’t fold with two layers like the original Smart Keyboard. This design avoids the “bump” that the Smart Keyboard had when it was closed on top of the iPad, thus resulting in a flat and elegant design of the folio, but it also means that the iPad’s screen will sit directly against keys and the two grooves when closed. I haven’t noticed any issues with the screen getting dirty due to the lack of microfiber protection, but I’m curious if this direct placement will have any effect on key deterioration over a long period of time. We’ll see. * The iPad Pro with the Pencil and Smart Keyboard Folio fits in the old Apple leather sleeve for the 12.9” iPad Pro, but it’s a loose fit due to the smaller footprint of the 2018 model. I wouldn’t recommend reusing the old leather sleeve for this new iPad Pro. * The Smart Keyboard Folio doesn’t offer a “media mode” to hold the iPad upright without the keyboard laid out in front of it. You can fold the entire keyboard behind the iPad if you want to use the software keyboard, but you’ll feel the keys in the back while holding the device. Even though key presses won’t register because the bottom side of the iPad isn’t magnetically attached to one of the folio’s grooves, it’s strange to hold an iPad and feel the keyboard in its back. * As MacStories readers know, I spend quite a bit of time every week working from my car while I wait for my girlfriend to finish teaching her dance class. Unfortunately, I’m finding the laptop viewing angle and compact keyboard to not be ideal for typing in the driver’s seat. Perhaps I should consider switching to the more comfortable passenger seat until [a new Brydge keyboard](https://9to5mac.com/2018/11/07/brydge-keyboard-2018-ipad-pro/) with an adjustable hinge comes out. * The folio’s flat design is functional, but boring. This thing is prime sticker material, and is going to be covered with them soon. [image:055144D3-9914-4E97-90DA-2AD2A03276DE-16210-000012F90994BD04/2018-11-14-15-04-11.jpeg] Functional, but boring design. Keyboard recommendations are inherently subjective: iPad users have different needs, different priorities, and different budgets. If you value good portability, not having to worry about charging a keyboard, and, with this new iPad Pro, protection for the front and back of the iPad, the Smart Keyboard Folio is probably what you want to get, even though it’s not cheap. If you liked the Smart Keyboard before, you’re going to appreciate the versatility Apple added in this iteration. Personally, I’d like Apple to provide its pro iPad customers with *more options*. I would happily trade some of the Smart Keyboard’s portability for a larger, heavier keyboard with adjustable angles and extra functions that are natively integrated with iOS and apps. Maybe one day Apple will offer a Smart Keyboard Pro to cater to iPad Pro users like me; until that happens, I’m going to keep an eye out for promising alternatives based on Bluetooth and the new Smart Connector. [iPad Diaries: Typing on the iPad Pro with the Smart Keyboard Folio](https://www.macstories.net/stories/ipad-diaries-typing-on-the-ipad-pro-with-the-smart-keyboard-folio/) # Jason Snell Goes Hands-On with Brydge’s Upcoming Keyboard for the 2018 iPad Pro [image:8F6640D3-93B7-4319-A760-195AE2915E91-16210-000012F75D287DEC/256px.png] Jason Snell [tested a pre-production unit of the Brydge keyboard](https://sixcolors.com/post/2018/12/brydge-pro-keyboard/) for the 2018 iPad Pro (in the 12.9” flavor) and it sounds like this will be /the/ iPad keyboard [worth](https://www.macstories.net/stories/ipad-diaries-typing-on-the-ipad-pro-with-the-smart-keyboard-folio/) waiting for: > To attach the iPad to the Brydge 12.9 Pro, you slide it into two hinged clips covered with rubber padding. As with previous models, it takes a little practice to get the feel right. My main concern once the new iPad Pro was unveiled was if Brydge would be able to design a clip small enough to only cover the iPad’s much smaller bezels that also held the iPad securely. I’m happy to report that the answer is yes—there’s enough room and once the iPad is attached, the connection feels solid. > The clips are the same size front and back, meaning you can remove the iPad, flip it around, and insert it back into the clips to use the Brydge as a “movie mode” stand, or even fold it down and use it as a double-thick, double-weight tablet. (I don’t really see the appeal, but Brydge says that some customers requested it.) > In a nice touch, the Brydge 12.9 Pro comes with a slight indentation at the bottom of the wrist-rest space (below where a trackpad would be, if it had a trackpad). This creates a natural lifting point to open the “laptop”, which was sometimes tricky on the previous models. Once I was able to get my hands on a functioning unit of the original Brydge keyboard, I [fell in love with the idea](https://www.macstories.net/ios/11-tips-for-working-on-the-ipad/#4-consider-a-smart-keyboard-alternative) of turning the iPad into a “convertible” computer that could work both as a laptop and a tablet. I later upgraded to the [second-generation Brydge keyboard](https://amzn.to/2Ssb4pQ) and used it until I upgraded to the latest iPad Pro in November. Products like the Brydge keyboard tie into the iPad’s hybrid nature – the [multiplicity of input systems and work contexts](https://www.macstories.net/ipad-diaries/ipad-diaries-the-many-setups-of-the-2018-ipad-pro/) that make it, as Jason also notes, more flexible than a traditional laptop or desktop computer. I was concerned that the smaller bezels of the 2018 iPad Pro were going to be an issue for a redesigned Brydge keyboard, but it seems like the company has not only worked around the iPad’s new design constraints, but even improved upon previous generations of the keyboard case. I’m going to [pre-order one as soon as possible](https://www.brydge.com/pages/2018-ipad-pro-keyboard-interest-form). [Jason Snell Goes Hands-On with Brydge’s Upcoming Keyboard for the 2018 iPad Pro](https://www.macstories.net/linked/jason-snell-goes-hands-on-with-brydges-upcoming-keyboard-for-the-2018-ipad-pro/) # Agenda 5 Expands iPad External Keyboard Support [image:EEB3FA5A-42D2-43DB-B36C-15B3D148697C-16210-000012F687D18E5B/59e18fcf-f69d-4e87-9f9b-798d0f8b66771550011637796.png] Agenda recently passed the milestone of its first full year in public release, with the Mac version [debuting last January](https://www.macstories.net/reviews/agenda-review-mac-based-note-taking-with-a-calendar-focused-twist/) and the iOS app [a few months later](https://www.macstories.net/reviews/agenda-for-ios-review/). The team behind Agenda has been keeping busy ever since, with improvements like Siri shortcuts, dark mode, accent colors, and most recently, [images and file attachments](https://www.macstories.net/ios/agenda-4-0-brings-support-for-file-attachments-improved-ios-automation/). Today’s update to version 5.0 [on iOS](https://itunes.apple.com/us/app/agenda/id1370289240?mt=8&uo=4&at=10l6nh&ct=ms_ryan) and [the Mac](https://itunes.apple.com/us/app/agenda/id1287445660?mt=12&uo=4&at=10l6nh&ct=ms_ryan) is relatively minor by comparison, but it still offers a few valuable additions. There are new options for your text environment, like the ability to set a custom line spacing and use an extra small text size, plus you can now perform multi-tag and multi-person searches. The improvement that stands out most, however, is Agenda’s newly expanded support for external keyboards on iPad. When we published our [MacStories Selects awards for 2018](https://www.macstories.net/stories/introducing-macstories-selects-the-best-new-apps-app-updates-and-ios-games-of-2018/), Agenda was our pick for App Debut of the Year. Its strong 1.0 followed by a string of noteworthy updates made it an easy choice. In a separate Selects category, Best App Update, we recognized [Things 3.6](https://itunes.apple.com/us/app/things-3-for-ipad/id904244226?mt=8&uo=4&at=10l6nh&ct=ms_ryan) because of its unparalleled support for external keyboards. I’m happy to report that with today’s update Agenda has taken a page from Things’ book and made much of its interface accessible without lifting your fingers from the keyboard. Open Agenda 5 on the iPad with a connected keyboard and you can immediately start navigating the app with the arrow keys. The primary sidebar – where your On the Agenda and Today screens live, along with your list of areas, projects, and saved searches – supports up and down arrow inputs, and you can move from there to the right to enter your note lists. When you’ve highlighted the note you want to edit, pressing Return will activate editing mode on the title line, with a second Return press moving your cursor into the body of your note. When you’re done writing, ⌘ ` exits editing mode and brings you back to navigation mode. Being able to navigate Agenda’s interface, moving between sidebar and notes seamlessly using only the keyboard, is a nice improvement over many other apps, which tend to require at least a tap or two on-screen every time you want to switch “modes” in the app, such as moving between an editor and a note list. Apple Notes is another example of keyboard support done well in this area. Where Agenda surpasses even a solid app like Apple Notes though is in the sheer number of keyboard shortcuts it provides. [image:76884098-EAD4-4E16-B604-90C595089B92-16210-000012F687AFBC39/3b27c6da-df08-410d-bbc4-572d46302f961550010935951.png] Only a sampling of the shortcuts Agenda provides. There are so many shortcuts available now that, once you learn them all, you’ll be able to keep your fingers far more often where they belong in a writing app: on the keyboard. Despite all the positive ways Agenda’s keyboard support has expanded, there remain a few glaring oversights in keyboard navigation that keep the app from providing the same level of experience as Things 3. For example, you can’t add images or other file attachments to a note without touching the screen, nor can you navigate through search results using the keyboard, a limitation that extends to several other sub-menus that pop up when doing things like creating a new note or navigating a project’s table of contents. Agenda has most of the basics covered, but that makes it all the more painful when you run up against an area where the app seemingly forgets the keyboard exists. Hopefully those areas will be addressed in a future update. If you haven’t yet checked out 2018’s MacStories Selects App Debut of the Year, now’s as good a time as any – especially if you use an iPad. Agenda is a strong, unique take on the note-taking genre, and there are few modern productivity apps receiving the same level of strong development work as this. Agenda 5 is available on [iOS](https://itunes.apple.com/us/app/agenda/id1370289240?mt=8&uo=4&at=10l6nh&ct=ms_ryan) and [the Mac](https://itunes.apple.com/us/app/agenda/id1287445660?mt=12&uo=4&at=10l6nh&ct=ms_ryan). [Agenda 5 Expands iPad External Keyboard Support](https://www.macstories.net/reviews/agenda-5-expands-ipad-external-keyboard-support/) # Logitech Announces Smart Folio Pro Cases for Latest iPad Pros with Backlighting and Special Function Keys [image:F08651EA-FC32-4B90-ABA7-5512DEE47954-16210-000012F55EAC8C1D/slim-folio-pro-for-ipad-pro1554215860898.jpg] [Logitech has announced new keyboards for the 11 and 12.9-inch iPad Pros](https://www.logitech.com/en-us/product/slim-folio-pro) that it calls the Slim Folio Pro. The keyboard cases cost less than a comparable Apple Smart Keyboard Folios and include features that Apple’s cases don’t, but Logitech’s offerings come with their own set of trade-offs. The Logitech keyboard cases are substantially cheaper than Apple’s. The 11-inch Logitech Slim Folio Pro costs $119.99, and the 12.9-inch model costs $129.99, whereas Apple’s Smart Keyboard Folios cost $179 and $199 respectively. Logitech’s keyboards feature backlit keys with adjustable brightness, a row of media and other special function keys for doing things like going the iPad’s home screen, starting a Spotlight search, and displaying the iOS system keyboard, none of which you’ll find on a Smart Keyboard Folio. Logitech has also designed a magnetic clasp that includes a loop for the Apple Pencil that looks like it would do a better job of holding the Pencil in place. [image:C8955FD8-9663-4B9F-B893-C7BA7AD4BD41-16210-000012F55E90E3AB/slim-folio-pro-for-ipad-pro-21554215907215.jpg] On the downside, the Slim Folio Pro keyboard needs to be separately charged via USB-C and connects to the iPad via Bluetooth; unlike Apple’s keyboard, which uses the Smart Connector. Also, the Slim Folio may look slim, but it weighs in at a hefty 552 grams for the 11-inch model and 707 grams for the 12.9-inch model. To put that into perspective, [according to a 9to5Mac article reporting on measurements taken by Marco Arment](https://9to5mac.com/2018/11/07/ipad-pro-tidbits-replacement-apple-pencil-tips-smart-keyboard-weight-usb-c-display-info/), Apple’s Smart Keyboard Folios are 297 grams and 407 grams respectively. That puts Logitech’s offerings at nearly double the weight of Apple’s and means that a 12.9-inch iPad Pro with the Slim Folio Pro attached weighs more than a MacBook Air and only about 30 grams less than a 13-inch MacBook Pro. Also, unlike the forthcoming [Brydge Pro keyboard](https://www.brydge.com/products/brydge-for-ipad-pro-2018), Logitech’s models, like Apple’s, have only two viewing angles. I’m glad to see Logitech and other companies working to provide alternatives to Apple’s iPad Pro keyboards. Backlit keys and a row of function keys are two things I would love to have in a keyboard case, but the weight and lack of Smart Connector support are two aspects of the Slim Folio Pro that make me skeptical that it would be a net improvement over the Smart Keyboard Folio I use currently. [Logitech Announces Smart Folio Pro Cases for Latest iPad Pros with Backlighting and Special Function Keys](https://www.macstories.net/news/logitech-announces-smart-folio-pro-cases-for-latest-ipad-pros-with-backlighting-and-special-function-keys/) # Review: Touchtype Pro Offers an Ingenious All-in-One Solution for iPad Pro and Magic Keyboard Users [image:74930C95-E665-4EB0-B915-5C4AEE776728-16210-000012F2AC5B0FE2/2019-04-17-12-13-56.jpeg] The [Touchtype Pro](https://www.kickstarter.com/projects/sajidcreative/worlds-most-versatile-ipad-keyboard-case-touchtype) is a clever new accessory created by Salman Sajid that aims to combine the iPad Pro with Apple’s Magic Keyboard using a flexible cover case and magnets. Sajid launched a campaign for the product earlier this month on Kickstarter, where you can check out more details about pricing and the design process of the Touchtype Pro. I was lucky enough to get my hands on an early production unit before the Kickstarter went live and I’ve been using the Touchtype Pro with my 2018 12.9” iPad Pro for the past few weeks. After [sharing some first impressions on Connected](https://www.relay.fm/connected/238), I wanted to post a few more thoughts here, along with some photos. The Touchtype Pro consists of a hard plastic case where you place the iPad Pro; the case itself is attached to a flexible cover that wraps around the back of the iPad to create a kickstand (when placed on a desk) and which extends to cover the front of the iPad too (when closed, like a folio case). So far, nothing spectacular – the case is better than other attempts I’ve seen in the past from the likes of Logitech and [Razer](https://www.macstories.net/stories/my-new-ipad-pro-keyboard-the-razer-mechanical-keyboard-case/) and there is the omnipresent microfiber lining inside to keep the iPad’s screen clean and protected. What makes the Touchtype Pro unique is the second case that acts as a holding shell for the Apple Magic Keyboard (the [second-generation one](https://www.apple.com/shop/product/MLA22LL/A/magic-keyboard-us-english), not the old model). The Magic Keyboard’s case can be attached magnetically to the bottom edge of the iPad’s case; in doing this, the keyboard itself sustains the iPad at an angle and allows you to type without interfering with the Home indicator of the iPad Pro – a common issue of other Magic Keyboard accessories [I’ve covered before](https://www.macstories.net/ipad-diaries/ipad-diaries-the-many-setups-of-the-2018-ipad-pro/#magic-keyboard-fintie-cover-or-studio-neat-canopy-stand). [image:E7621583-21E7-41DA-B6F7-86404CA8CA0D-16210-000012F2AC237632/2019-04-17-12-16-08.jpeg] [image:9071DAEA-C2DD-4698-8E2D-8221872F09AB-16210-000012F2ABFA11FE/2019-04-17-12-16-55.jpeg] The magnetic attachment for the Magic Keyboard’s case. But here’s the best part: the Magic Keyboard’s case has magnets at the bottom that can slide across the main cover when it’s unfolded on your desk. This “train tracks” system lets the Magic Keyboard act as the mechanism that adjusts the iPad’s viewing angle: push it towards the back of the cover, and you create a steeper angle; slide it towards you, and you end up with a more comfortable viewing mode when typing at a desk. These are a lot of words for what can be easily explained by this GIF: [image:111E1D96-3217-4E9F-8395-B1A8C94FF11D-16210-000012F2ABD193AA/touchtype.gif] The other detail that makes the Touchtype Pro different from other iPad cases and Magic Keyboard covers I’ve tested in the past is the fact that its integrated case design lets you carry the keyboard and iPad Pro together when everything’s closed. When you’re done working, you can turn off the Magic Keyboard (the keyboard’s case has an opening in the front so you can access the power switch and charge it), flip it behind the iPad so the keys are facing out (against the Touchtype Pro cover), and fold the front of the Touchtype cover to hold everything together. The final result is a single package that is bulky and adds considerable weight to the iPad (more below) and that looks like this: [image:F5E5AF49-C213-4936-9562-585EFC52699A-16210-000012F2ABB0CC88/2019-04-17-12-17-56.jpeg] [image:CFF07535-8FAC-4E85-A725-E5DBB39CFEF0-16210-000012F2AB86471F/2019-04-17-12-24-07.jpeg] As you can see, there’s another benefit to Touchtype’s wrap-around cover: when it folds over the top side of the iPad Pro, it also protects and holds the Pencil in place, so it’ll never detach if you throw the Touchtype Pro in a bag. After working with the Touchtype at my kitchen table and while waiting in the car for the past couple of weeks, I think it’s the overall best option if you want to integrate the iPad Pro and Magic Keyboard with only one accessory – provided that you can accept some of its caveats. I’ve [written](https://www.macstories.net/ipad-diaries/ipad-diaries-the-many-setups-of-the-2018-ipad-pro/) about the Magic Keyboard multiple times on MacStories in the past, but for context: I like the feel of Apple’s keyboard (and use its [larger Space Gray cousin](https://www.apple.com/shop/product/MRMH2LL/A/magic-keyboard-with-numeric-keypad-us-english-space-gray) at my desk with the Mac mini), but there are two aspects I don’t like about it: the Magic Keyboard is not backlit and doesn’t come with iOS-specific function keys. The lack of backlighting is a well-known limitation of the Magic Keyboard line and, well, if you want to type in the dark and also look at the symbols on keys, you’re out of luck. The latter issue is more specific to pairing a Magic Keyboard with an iPad: while other Bluetooth keyboards (such as the ones from Logitech and Brydge) come with keys to go back to the home screen, show Search, or cycle between multiple software keyboards, the Magic Keyboard is first and foremost a Mac keyboard that /also/ supports the iPad by way of Bluetooth. There are no iOS-only keys on the Magic Keyboard; in fact, it actually comes with Mission Control and Launchpad keys that are useless on iOS.[1](https://www.macstories.net/reviews/review-touchtype-pro-offers-an-ingenious-all-in-one-solution-for-ipad-pro-and-magic-keyboard-users/#fn-58956-remap) All of this to say: the Magic Keyboard is lightweight and portable and its battery lasts a long time and it feels nice to type on – but if you’re looking for an iPad-optimized experience in an external Bluetooth keyboard, there are better options out there. The Touchtype Pro, however, is designed for folks who want to recycle their existing Magic Keyboards for an integrated iPad Pro setup, so I assume those users are already well aware of the keyboard’s flaws and advantages compared to third-party offerings. My main gripe with the Touchtype Pro is twofold: to me, it seems to have been primarily designed as a desk accessory; and, adjusting the iPad’s viewing angle by sliding the Magic Keyboard’s case across the magnetic cover can be a bit awkward. As I mentioned above, to adjust the viewing angle when the Magic Keyboard is attached to the front of the iPad’s case [2](https://www.macstories.net/reviews/review-touchtype-pro-offers-an-ingenious-all-in-one-solution-for-ipad-pro-and-magic-keyboard-users/#fn-58956-separate), you have to slide the Magic Keyboard toward you. In my experience, the strong connection between the magnets placed at the bottom of the Magic Keyboard’s case and inside the Touchtype Pro cover means I have to apply a fair amount of pressure to slide the keyboard. The feature does work as advertised, and I think it’s an ingenious system to rely on the Magic Keyboard to create an angle, but it requires more attention than I’d normally want to pay to this kind of process. And because I can be clumsy with these things, I’ve accidentally detached the keyboard from the iPad (and thus made the iPad fall flat on my desk) more times than I’d care to admit. I should also note that, due to the Magic Keyboard’s design, reaching for its power switch while the keyboard is attached to the front of the iPad is nearly impossible. Second, the Touchtype Pro feels, at least to me, like an accessory optimized for being used at a desk. Specifically, a desk with a fair amount of space available. When it’s fully extended, the cover (where you place the keyboard) can span up to 13.78” (35 cm) in length, which is not exactly compact. You can fold the cover on itself and create a thicker base for the Magic Keyboard, which helps. This folded mode is also what Sajid recommends if you want to use the Touchtype Pro in your lap, which is possible, but to me it doesn’t feel as stable as using the Smart Keyboard Folio or the new [Logitech Slim Folio Pro](https://www.logitech.com/en-us/product/slim-folio-pro) (which I am also reviewing soon). [image:370B0DF9-8A16-4D23-BD97-79DEF452D226-16210-000012F2AB63BB0D/2019-04-17-12-26-03.jpeg] Folding the cover on itself to save a bit of space. [image:2455FE24-AC6B-40B4-8934-E8EF366E7266-16210-000012F2AB45A467/2019-04-17-12-27-52.jpeg] The moving parts involved with the Touchtype Pro as opposed to the Smart Keyboard Folio or Slim Folio Pro (the separate case for the keyboard, plus the cover folded on itself) contribute to the feeling that this accessory is optimized for a rigid surface rather than your lap.[3](https://www.macstories.net/reviews/review-touchtype-pro-offers-an-ingenious-all-in-one-solution-for-ipad-pro-and-magic-keyboard-users/#fn-58956-madeofstone) It is possible to use an iPad with the Touchtype Pro on your lap, but I don’t like it as much as I like those two aforementioned keyboards (and, I assume, the new Brydge keyboard soon enough). The magnetic flap that attaches the Magic Keyboard to the iPad’s case still fared better in my tests than the old Razer keyboard, though. In addition to size and ergonomics, weight is a concern with the Touchtype Pro, which is also why I see it as a desk companion. A 12.9” iPad Pro with the Smart Keyboard Folio and Pencil weighs 2.35 lbs (1.07 kg); the same iPad with the Brydge keyboard is approximately 2.96 lbs (1.34 kg); paired with the Slim Folio Pro, it goes up to 3 lbs (1.35 kg); with the Touchtype Pro, the whole package weighs 3.41 lbs (1.55 kg). It may not seem like a huge difference, but, especially if you’re used to the Smart Keyboard Folio, you’re going to feel that extra pound when switching to the Touchtype Pro (not to mention the overall thickness when everything’s closed, as shown by pictures in this story). Finally, unlike the Smart Keyboard Folio, the Touchtype Pro offers a media mode for touch interactions: just place the keyboard behind the iPad, fold the cover on itself so that its outer edge is holding the iPad at an angle, and start watching a movie or listening to music, as shown below: [image:54A83576-E6FF-4C04-B7A6-1407AAEA6D7A-16210-000012F2AB22767D/2019-04-17-12-28-38.jpeg] Unfortunately, because I use my iPad Pro for work, I don’t need a media mode as much as I need a /touch/ mode for those times when I want to type using the software keyboard. The media mode supported by the Touchtype Pro has an angle that is too steep for typing, and because it relies on the front cover to act as a kickstand, I don’t find it as reliable as the touch mode supported by the Smart Folio. Then again, Apple’s Smart /Keyboard/ Folio does not offer any media or touch mode whatsoever, so at least the Touchtype Pro tries something new in this regard. I recognize that I’m a little particular when it comes to iPad Pro keyboards and cases and that the kind of product I seek (a Smart Keyboard Folio with backlit keys, media functions, and a touch mode) will probably never exist. Do not let my nitpicking distract you from my overall opinion of the Touchtype Pro though: if you love the Magic Keyboard, want to use it with your iPad Pro, and don’t want to buy /another/ keyboard, I think the Touchtype Pro is the best all-in-one solution I’ve tested to date. The product has its own quirks, but as far as the idea of combining the iPad Pro with a folio case that also holds the Magic Keyboard goes, I think Sajid’s design is a solid approach. The Touchtype Pro, in my opinion, is designed for a specific kind of customer: the iPad Pro user who wants to work with a Magic Keyboard primarily at a desk. The adjustable viewing angle, Pencil protection, support for portrait orientation, and media mode are additional, welcome benefits. Keeping in mind the nature of Kickstarter campaigns, if you’ve been looking for a product that can hold the iPad Pro and Magic Keyboard together for an ideal typing experience, the Touchtype Pro is well worth the [$49 price tag for a Kickstarter unit](https://www.kickstarter.com/projects/sajidcreative/worlds-most-versatile-ipad-keyboard-case-touchtype). [Review: Touchtype Pro Offers an Ingenious All-in-One Solution for iPad Pro and Magic Keyboard Users](https://www.macstories.net/reviews/review-touchtype-pro-offers-an-ingenious-all-in-one-solution-for-ipad-pro-and-magic-keyboard-users/) # Apple Updates Its MacBook Pro Line with Faster CPUs and New Keyboard Mechanisms [image:738F17F7-13D3-4D43-8389-043357F28188-16210-000012EF305DA4C5/2019-05-21-12-30-13.png] Apple updated its MacBook Pros today with new, faster processors and changes to the notebook line’s keyboard mechanism. [According to an Apple press release](https://www.apple.com/newsroom/2019/05/apple-introduces-first-8-core-macbook-pro-the-fastest-mac-notebook-ever/): > The 15-inch MacBook Pro now features faster 6- and 8-core Intel Core processors, delivering Turbo Boost speeds up to 5.0 GHz, while the 13-inch MacBook Pro with Touch Bar features faster quad-core processors with Turbo Boost speeds up to 4.7 GHz. Apple says that the new 15-inch MacBook Pro with an 8-core processor is up to two times faster than the previous top-end quad-core model. To put that performance in perspective, [Apple claims that](https://www.apple.com/newsroom/2019/05/apple-introduces-first-8-core-macbook-pro-the-fastest-mac-notebook-ever/): * Music producers can play back massive multi-track projects with up to two times more Alchemy plug-ins in Logic Pro X. * 3D designers can render scenes up to two times faster in Maya Arnold. * Photographers can apply complex edits and filters up to 75 percent faster in Photoshop. * Developers can compile code up to 65 percent faster in Xcode. * Scientists and researchers can compute complex fluid dynamics simulations up to 50 percent faster in TetrUSS. * Video editors can edit up to 11 simultaneous multicam streams of 4K video in Final Cut Pro X. > Interestingly, Apple’s press release makes no mention of the MacBook Pro’s keyboard. However, [the company spoke to Matthew Panzarino of TechCrunch](https://techcrunch.com/2019/05/21/apple-announces-new-macbook-pros-with-more-powerful-processors-and-yes-updated-keyboards/) who was told: 1. The MacBook Pro keyboard mechanism has had a materials change in the mechanism. Apple says that this new keyboard mechanism composition will substantially reduce the double type/no type issue. Apple will not specify what it has done, but doubtless tear-downs of the keyboard will reveal what has been updated. 2. Though Apple believes that this change will greatly reduce the issue, it is also including all butterfly keyboards across its notebook line into its [Keyboard Service Program](https://www.apple.com/support/keyboard-service-program-for-macbook-and-macbook-pro/). This means that current MacBook Pros and even the models being released today will have keyboard repairs covered at no cost, in warranty and out of warranty. 3. Apple tells me that repair times for keyboards have been longer than they would like. It is making substantial improvements to repair processes in Apple Stores to make repairs faster for customers with issues. > According to Panzarino, failing third-generation keyboards will be replaced with the new fourth-generation keyboard found in these updated MacBook Pros. It’s not unusual for Apple to release product updates shortly before a major event that don’t make the cut for the keynote presentation. Notebooks with faster CPUs fall squarely into that category. With the company’s annual developer conference just around the corner, today’s announcement is likely also be designed to try to satisfy one its biggest pro user groups that the company is trying to put keyboard issues behind it. However, only time will tell whether this version of the MacBook Pro’s keyboard is more reliable than prior iterations. [Apple Updates Its MacBook Pro Line with Faster CPUs and New Keyboard Mechanisms](https://www.macstories.net/news/apple-updates-its-macbook-pro-line-with-faster-cpus-and-new-keyboard-mechanisms/) # Brydge Announces Pro+ Keyboard with Trackpad for the iPad Pro and a Standalone Trackpad [image:F7E9880E-73E9-4D2B-85A5-AD1494D0B038-16210-000012EE16C6E6CA/2020-01-01-19-25-34.jpeg] (Source: Brydge) Today Brydge announced the Pro+ keyboard for the iPad Pro, which incorporates a trackpad. The keyboard was first revealed in connection with [a lawsuit filed by Brydge](https://www.theverge.com/2019/10/10/20906948/brydge-lawsuit-kickstarter-libra-ipad-keyboard-patent-infringement-lawsuit) against another keyboard maker that Brydge says violated a patent on the company’s keyboard hinge. Although Brydge’s official announcement doesn’t disclose when it will begin taking pre-orders, the company says it will be soon. Brydge also says that the first 500 pre-orders will be shipped in late February, with the remaining pre-orders shipping in late March. With iPadOS 13, Apple added accessibility support for pointing devices like mice and trackpads. Pointing devices can be connected via USB or Bluetooth using iPadOS’s Assistive Touch Accessibility feature, which permits navigation of the OS’s UI. Although the experience of using a pointing device with an iPad Pro partly resembles using one with a Mac, it’s also different and more limited. As Federico [explained in his iOS and iPadOS 13 review](https://www.macstories.net/stories/ios-and-ipados-13-the-macstories-review/23/#mouse-support): > The first and most important difference between iPadOS and macOS is that UIKit is still designed and optimized for touch input. When you enable mouse support in iPadOS, you’ll notice that the system won’t react to the hover state of the pointer: if you hover over a button in a toolbar, you won’t see a tooltip; if you wait with the cursor over the edge of a document, you won’t see a scroll bar; in Safari, hovering over drop down menus of a webpage will not automatically expand and collapse them. I’ve used iPadOS 13 with a [Logitech MX Master Mouse 3S](https://www.logitech.com/en-us/product/mx-master-3) and agree with Federico’s assessment that if you go into mouse or trackpad use on iPadOS expecting precisely the same sort of experience as a Mac, you’re likely to be disappointed. Still, the feature opens up exciting possibilities beyond the accessibility needs it addresses, such as the ability to assign shortcuts to button presses. [image:BCD3460E-1DEC-469D-B56B-52485E80116C-16210-000012EE167C7428/2020-01-01-19-30-14.jpeg] (Source: Brydge) Brydge’s new keyboard closely resembles past models but adds a trackpad to the center of the wrist rest. The keyboard comes in two sizes to accommodate the 11-inch and 12.9-inch iPad Pro models, connects via Bluetooth 4.1, has three levels of backlighting, 3-month battery life, and is space gray. With the trackpad, Brydge says users will also be able to open the dock with a two-finger tap on the trackpad and trigger App Exposé with a three-finger tap. Users will also be able to tap the bottom left or right-hand corners of their iPad Pro’s screen to return to the Home screen. The 11-inch model of the Pro+ will cost $199.99, and the 12.9-inch version will be $229.99. If you are interested in ordering the Pro+, Brydge encourages [registering on its website](https://www.brydge.com/products/brydge-pro-plus-for-ipad-pro) to receive an alert by email when pre-orders begin. [image:0D5524CB-B3B4-45CF-93EC-57EBEB4C6110-16210-000012EE165B0833/2020-01-01-19-32-48.jpeg] The Brydge trackpad. (Source: Brydge) Separately, Brydge announced a standalone trackpad, which should appeal to existing Brydge keyboard owners who want to add a complementary trackpad without purchasing the Pro+. Brydge hasn’t disclosed much about the standalone version of its trackpad, although the company says it is coming soon, will be glass with a ‘Multi-Touch Engine,’ connect using Bluetooth 4.1, and will have a 3-month per charge battery life. It will be interesting to see how Brydge’s Pro+ keyboard and standalone trackpad do with users. Off-the-shelf pointing device support was an important addition to iPadOS 13 for people who need the feature for accessibility reasons. I’ve experimented with the feature on several occasions, but until it’s more refined, I have a hard time seeing myself using a pointing device with my iPad Pro regularly. As a result, I’m not that interested in the Brydge Pro+, but I’ll withhold my final judgment on that score until I’ve seen reviews by people who have used production models of the device and tried one myself. I also wouldn’t be surprised if iPadOS 14 strengthens mouse and trackpad support, making the Pro+ an even more attractive option later this year. [Brydge Announces Pro+ Keyboard with Trackpad for the iPad Pro and a Standalone Trackpad](https://www.macstories.net/news/brydge-announces-pro-keyboard-with-trackpad-for-the-ipad-pro-and-a-standalone-trackpad/) # Cursors on the iPad [image:E7B4BE7F-FC4B-4C33-AA2A-01934AB0E654-16210-000012ED580C1771/256px.png] [Fantastic column by Jason Snell](https://www.macworld.com/article/3531970/cursors-on-the-ipad-bring-them-on.html), writing for Macworld, on the rumor that Apple may bring a trackpad to the Smart Keyboard and update the iPadOS UI to support external pointing devices [this year](https://9to5mac.com/2020/03/09/sophisticated-mouse-cursor-support-coming-to-ios-14-new-ipad-smart-keyboard-models-with-trackpad/): > What makes the iPad great is its ultimate flexibility. When I write about iPad keyboards, people inevitably say: Why don’t you just use a MacBook, already? > But the iPad lets me tear off the keyboard when I’m not using it, and a MacBook doesn’t. I can use my same iPad Pro, and all the same apps, when my iPad Pro is completely naked, when it’s attached to a keyboard, when I have an Apple Pencil in my hand, and yes, even when I’ve got a Bluetooth mouse attached. > This is why I love the iPad so much. It’s everything I want it to be, when I want it to be that—and not when I don’t. Yes, there are definitely tasks my Mac is much better at performing, and in those cases using an iPad can be a compromise. But using a MacBook that can’t be transformed into a light touchscreen tablet is /also/ a compromise. And unlike the current Windows experience, I don’t have to retreat into a weird faux-Mac interface to get real work done. As I’ve argued many times before, the iPad’s greatest strength is its ability to transform into different types of computer depending on what you need. Here’s how I concluded my [Beyond the Tablet story](https://www.macstories.net/stories/beyond-the-tablet/13/#conclusion) last year: > At a fundamental level, after seven years of daily iPad usage, I believe in the idea of a computer that can transform into different form factors. The iPad is such a device: it gives me the freedom to use it as a tablet with 4G while getting some lightweight work done at the beach, but it becomes a laptop when paired with a keyboard, and it turns into a workstation when hooked up to an external display, a USB keyboard, and a good pair of headphones. For me, the iPad is the ultimate expression of the modern portable computer: a one-of-a-kind device that morphs and scales along with my habits, needs, and lifestyle choices. > A few years ago, I [described](https://www.macstories.net/stories/ipad-air-2-review-why-the-ipad-became-my-main-computer/) the iPad as a “liberating” experience that married power to portability and allowed me to work from anywhere. I stand by that concept, but I’ll revise it for 2019: the iPad is a liberating device that transcends its form factor. Its range of configurations, combined with a new generation of powerful iOS apps, delivers a flexible experience that eludes classification. Adding a trackpad and native support for external pointing devices to UIKit wouldn’t turn the iPad into a laptop: it would just add to the list of potential, /optional/ configurations for the device. That’s been true for a while with other accessories; I don’t see why mice and trackpads shouldn’t be next. [Cursors on the iPad](https://www.macstories.net/linked/cursors-on-the-ipad/) # The New iPad Pro and Magic Keyboard with Trackpad [image:34B4220E-A6A6-4196-875A-0053FBDE86C9-16210-000012ECC7380D4A/2020-03-18-08-35-32.png] The new iPad Pro and Magic Keyboard. With a press release [published](https://www.apple.com/newsroom/2020/03/apple-unveils-new-ipad-pro-with-lidar-scanner-and-trackpad-support-in-ipados/) earlier today, Apple officially announced the fourth generation of its iPad Pro line. The new iPad Pro models – available, as with the current generation, in 11-inch and 12.9-inch flavors – feature the all-new A12Z Bionic chip, a new camera system that includes an ultra-wide camera and LiDAR scanner for augmented reality, and integration with a long-awaited accessory, which will become available starting in May: the new Magic Keyboard with trackpad. As is tradition with a major refresh of the iPad Pro line, the new iPad Pro models come with a new SoC, this time called the A12Z Bionic. While we’ll have to wait for benchmarks and tests to get a sense of the actual performance improvements over the current iPad Pros with the A12X Bionic chip, here’s what we know from Apple’s marketing materials today: the A12Z Bionic packs an 8-core CPU and 8-core GPU featuring “enhanced thermal architecture and tuned performance controllers”. The A12Z Bionic supports up to 1 TB of storage (as before) and drives the Liquid Retina display, which appears to be unchanged from the current generation with its support for wide color gamut (P3), ProMotion, and True Tone. Notably, the new iPad Pros still deliver up to 10 hours of battery life. ### Cellular Briefly mentioned in Apple’s announcement today, the new iPad Pros support faster Wi-Fi and gigabit-class LTE connections. The new iPad Pro models fully integrate with the [Wi-Fi 6 spec](https://www.theverge.com/2019/2/21/18232026/wi-fi-6-speed-explained-router-wifi-how-does-work) (including [802.11ax](https://en.wikipedia.org/wiki/IEEE_802.11ax) ) for speeds up to 1.2 Gbps (up from 866 Mbps on the current-generation iPad Pro). On the LTE side, the new iPad Pros support 30 bands instead of the older models’ 29. I’m no LTE expert, but I guess an extra band can’t hurt. ### More Microphones [image:0F8FFFBA-2003-42E7-9DCF-4DDB7C2B87F7-16210-000012ECC71E9480/2020-03-18-08-38-41.png] Joining the iPad Pro’s current 4-speaker system are 5 studio-quality microphones which, according to Apple, should allow users to capture “super clean audio” with the “quietest details”. Apple’s press release mentions that an update to [DoubleTake by FiLMic Pro](https://apps.apple.com/us/app/doubletake-by-filmic-pro/id1478041592), available next month, will take advantage of the new microphone system in the updated iPad Pros. Following the studio-quality microphones of last year’s 16-inch MacBook Pro, I’m keen to test the quality of the iPad Pro’s new microphone system with apps such as Skype and FaceTime. ## New Camera System [image:A2AE093A-6B9B-4F81-9216-B4906E604FFE-16210-000012ECC704AB6F/2020-03-18-16-18-22.jpeg] Wide, ultra-wide, and LiDAR. As has been widely speculated over the past few months, the new iPad Pros follow in the footsteps of 2019’s iPhone 11 line by offering a 10 MP ultra-wide camera in addition to the 12 MP wide camera. As we’ve seen with the [iPhone 11 camera system before](https://www.macstories.net/stories/iphone-11-pro-in-rome/), the ultra-wide camera allows you to capture a much larger field of view. I’ve never been an iPad photographer myself, but it’s nice to see consistency in the camera department (which includes the design of the camera bump, pictured above) across the iPhone and iPad lines. The big addition to the iPad Pro’s camera system – and a feature that is expected to find its way to new iPhone models later this year – is the [LiDAR](https://en.wikipedia.org/wiki/Lidar) scanner which, according to Apple, makes the new iPad Pro “the world’s best device for augmented reality”. The LiDAR scanner, in short, is a sensor that can more accurately measure the distance between the iPad Pro and surrounding objects with greater precision and higher performance. Here’s how Apple describes it: > The LiDAR Scanner measures the distance to surrounding objects up to 5 meters away, works both indoors and outdoors, and operates at the photon level at nano-second speeds. As others have [pointed out already](https://twitter.com/backlon/status/1240255325766184961?s=21), that’s how lasers work. Besides the technical jargon, the addition of a LiDAR scanner is a noteworthy enhancement for Apple’s ARKit developer framework, which feeds into the company’s bigger plans for augmented reality down the road. In the short term, this means that ARKit-enabled apps can integrate with the LiDAR scanner on the new iPad Pro to become considerably more precise, faster, and – potentially – useful: the new iPad Pros can combine depth points captured by the LiDAR scanner with data coming from cameras, motion sensors, and [Vision algorithms](https://developer.apple.com/documentation/vision) to assemble a more detailed understanding of a scene in the real world. Practically speaking, here are some examples mentioned by Apple today: * The [IKEA Place](https://apps.apple.com/us/app/ikea-place/id1279244498) app will gain a new Studio Mode to let you furnish entire rooms with multiple pieces of furniture, more quickly; * [Hot Lava](https://apps.apple.com/us/app/hot-lava/id1469252166), an Apple Arcade game, will have a new AR mode that transforms your room into an obstacle course; * The built-in Measure app will make it faster to calculate someone’s height. The app will also gain a new Ruler view for more granular measurements with the ability to save screenshots for future use. [image:7BD5CDD8-6362-45C8-AE0E-C8EA86FEF0D7-16210-000012ECC6E959DF/2020-03-18-08-40-54.png] The upcoming Hot Lava update. Apple has been betting big on AR over the past few years, and while it is somewhat surprising to see a major addition such as a LiDAR scanner find its way to the iPad Pro before the iPhone, it’s not /that/ surprising if you consider how this gives iPhone app and game developers several months to play around with new APIs before – if the rumors are correct – the next iPhone /also/ receives a LiDAR scanner with faster, more precise AR support. ## Magic Keyboard and Trackpad Support [image:CAE8FDBE-06A5-40BD-A353-0DF1A426EDDD-16210-000012ECC6CE3F1A/2020-03-18-08-36-25.png] The new Magic Keyboard for iPad Pro. Along with the new iPad Pro, Apple also announced a new Magic Keyboard with trackpad specifically designed for the iPad Pro line. The Magic Keyboard ships in May, is available at $299 for the 11-inch iPad Pro and $349 for the 12.9-inch model, and will be backward-compatible with the 2018 iPad Pro line. Unlike other external keyboards with trackpads by third-party manufacturers we’ve seen on iPad so far, Apple’s new Magic Keyboard doesn’t use a traditional clamshell design. Instead, the Magic Keyboard relies on a so-called “floating cantilever design” that lets you attach the iPad magnetically to the keyboard (which also doubles as a protective case when closed, just like the Smart Keyboard Folio) and adjust the viewing angle. Unlike other keyboard cases, including Apple’s existing one for the iPad Pro, the iPad Pro will *float* atop the Magic Keyboard thanks to these cantilevered hinges, which support a viewing angle of up to 130 degrees. [image:E1665BAF-7012-4517-BBB4-37FF5436530F-16210-000012ECC6B2ACB2/2020-03-18-16-25-05.jpeg] It floats! But there’s more. The hinge itself contains a USB-C passthrough port which, according to Apple, will be used for charging the iPad Pro. Presumably, power will be transferred from the USB-C port in the keyboard to the Smart Connector on the back of the iPad Pro (I’m curious to hear about charging times when used this way). This also means that, thanks to USB-C passthrough in the Magic Keyboard, you’ll be able to connect external accessories such as drives or monitors to the iPad Pro’s own USB-C port while charging the device at the same time without having to purchase a separate USB hub. Furthermore, the Magic Keyboard follows the 16-inch MacBook Pro and [new MacBook Air](https://www.macstories.net/news/apple-releases-faster-macbook-air-with-new-keyboard-and-increased-storage-starting-at-999-and-doubles-storage-on-base-model-mac-minis/) in implementing a scissor mechanism with hard key caps and 1 mm travel. For the first time in an iPad keyboard made by Apple, the new Magic Keyboard with trackpad will also offer backlit keys. As I mentioned above, the Magic Keyboard will be compatible with the existing 12.9-inch and 11-inch iPad Pro models, which suggests it will take advantage of the Smart Connector available on those devices. Along with the new Magic Keyboard, Apple has also announced that iPadOS 13.4, due to be released on March 24, will bring a new system-wide cursor whenever an external trackpad or mouse is connected to any iPad Pro that can run iPadOS 13. This includes the upcoming Magic Keyboard of course, but also the company’s Magic Mouse 2, Magic Trackpad 2, and any third-party mouse connected to the iPad Pro via USB or Bluetooth. [image:12D22245-1DF7-4871-B8DC-88A0C9DA020D-16210-000012ECC6962780/apple_new-ipad-pro-cursor-support-ipados_031820201584537676646.gif] The new system-wide cursor. In the weeks leading up to today’s announcements, some speculated that Apple may add cursor support to iPadOS but limit the feature to selecting text in text fields. Instead, iPadOS’ new cursor – which is different from the AssistiveTouch accessibility cursor [launched last year](https://www.macstories.net/stories/ios-and-ipados-13-the-macstories-review/23/#mouse-support) – will appear as a circle that can *highlight any UI element*, text fields, and apps on the Home screen and dock. In short demo videos shared by Apple today, it appears the cursor is a mix of the Mac’s classic cursor and tvOS’ [focus engine](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppleTV_PG/WorkingwiththeAppleTVRemote.html#//apple_ref/doc/uid/TP40015241-CH5-SW5) for selecting UI elements: the cursor appears to automatically “snap” to elements such as toolbar buttons and text fields; Apple says it is contextual and “intelligently adapts to content” shown onscreen. Judging from today’s images and videos, what Apple built is much more than just a cursor for text fields – it appears to be a comprehensive, sophisticated system for controlling a touch-first UI that /complements/ the iPad experience to bring additional versatility, easier navigation, and more precision. [image:A0BD7A53-CD13-42DB-B205-300CC158046A-16210-000012ECC67173A5/cursor-gif-copy1584537765738.gif] More examples of iPadOS’ new cursor from Apple. According to Apple, most third-party apps will work with the new system-wide cursor (which, again, does not require the new Magic Keyboard) with no changes at all. However, there will be specific APIs for developers to fine-tune their apps’ UIs to the cursor (presumably, to better integrate with aspects such as hover states). The company also mentioned that the iWork suite of apps will be updated with full cursor integration soon (plus new features such as more templates, drop caps, and folder-based iCloud Drive collaboration). In addition to the cursor, the Magic Keyboard’s trackpad will also support multitouch gestures in iPadOS 13.4. The trackpad will let you switch between apps, reveal the dock, open Control Center, interact with apps in Slide Over, and return to the Home screen. As Apple notes, in designing the new Magic Keyboard and adapting it to iPadOS, they’ve done more than replicate the macOS experience: > Rather than copying the experience from macOS, trackpad support has been completely reimagined for iPad. As users move their finger across the trackpad, the pointer elegantly transforms to highlight user interface elements. [image:870B1452-4247-4968-9A69-DA88E65C149C-16210-000012ECC607FD4D/2020-03-18-16-50-15.jpeg] Examples of the various multitouch gestures that will be supported by the trackpad in iPadOS 13.4. So far, it’s unclear whether iPadOS’ multitouch gestures will be exclusive to the Magic Keyboard or if they’ll work on Apple’s Magic Trackpad 2 as well. We’ll follow up on this once iPadOS 13.4 with cursor support releases next week. ## Price and Availability The new iPad Pro is available to order starting today and will ship next week. Both versions of the new iPad Pro are available in silver and space gray finishes. The new iPad Pro starts at $799 and $999 for the 11-inch and 12.9-inch Wi-Fi-only models, respectively, and $949 and $1,149 for the Wi-Fi + Cellular models. Apple also announced [new Smart Folios](https://www.macstories.net/news/apple-debuts-new-seasonal-colors-for-iphone-and-ipad-cases-and-apple-watch-bands/) for the new iPad Pros today. ## Flexible Pro [image:2E4B95E8-719A-4702-993B-A144E8B63C4A-16210-000012ECC5EEA40F/2020-03-18-16-06-04.jpeg] I have several questions about the new iPad Pro, its cursor support, and the new Magic Keyboard that can’t be answered today. Will the Magic Keyboard’s floating design be comfortable enough to use the iPad Pro on my lap? Will existing third-party apps /really/ require no changes to support the new system-wide cursor? And will third-party manufacturers like Logitech and Brydge be able to replicate all of the features of Apple’s trackpad, including its multitouch gestures to control multitasking, or will those remain exclusive to Apple’s Magic Keyboard? What I do know after today’s reveal, however, is that Apple has been listening to iPad Pro users who have been asking for increased versatility and more input options. At its very core, the iPad Pro is still a tablet – a single piece of glass you can hold in your hands and use with multitouch gestures with no external accessories. At the same time, however, the iPad Pro can be a new kind of modular computer that supports a variety of accessories – from an intelligent stylus and external keyboards to external displays and now trackpads. As I argued in [my story last year](https://www.macstories.net/stories/beyond-the-tablet/), I see a fundamental beauty in this idea of owning a computer that can adapt to your lifestyle and work requirements and be flexible enough to support multiple use cases. Ever since the first iPad Pro came out in 2015, Apple has been steadily upending the definition of “computer” for the masses. Today’s announcements are a validation of that vision; I look forward to testing these changes in hardware and software next week. [The New iPad Pro and Magic Keyboard with Trackpad](https://www.macstories.net/news/the-new-ipad-pro-and-magic-keyboard-with-trackpad-the-macstories-overview/) # Logitech Introduces Combo Touch Keyboard Case, Bringing a Trackpad to the iPad, iPad Air, and 10.5-inch iPad Pro [image:02013A28-C263-4E0C-86D5-F882042C956F-16210-000012EB8B04722A/2020-03-18-12-27-47.jpeg] Today following Apple’s debut of the [new iPad Pro and Magic Keyboard](https://www.macstories.net/news/the-new-ipad-pro-and-magic-keyboard-with-trackpad-the-macstories-overview/), and cursor support coming to all iPad models that can run iPadOS 13.4, Logitech has [announced a brand new accessory coming in May](https://news.logitech.com/press-releases/news-details/2020/Introducing-Logitech-Combo-Touch-Case-With-iPad/default.aspx): the Combo Touch, which brings a keyboard case with trackpad to the iPad (7th generation), iPad Air, and 10.5-inch iPad Pro. From the [product listing on Apple’s online store](https://www.apple.com/shop/product/HP312ZM/A/logitech-combo-touch-keyboard-case-with-trackpad-for-ipad-7th-generation?fnode=3e&fs=s%3Dnewest): > Logitech’s Combo Touch for iPad combines a precision trackpad with a full-size backlit keyboard…Enjoy comfortable typing on a full-size keyboard with backlit keys that are perfect for working in dark environments like on an airplane or late at night. And the flexible design supports four use modes for extra versatility. Despite all modern iPads gaining full cursor support, Apple currently only offers a first-party keyboard with built-in trackpad for the iPad Pro, not any other iPad model. Filling that gap, Logitech’s Combo Touch will be available for $149.95 as a great solution for users of other modern iPads. The Combo Touch covers the front and back of the iPad, includes a full keyboard and trackpad, and even offers a dedicated holder for the Apple Pencil. Notably, the device’s trackpad will also support all the same multitouch gestures that Apple’s Magic Keyboard offers. Between Apple’s Magic Keyboard for the iPad Pro, and Logitech’s Combo Touch covering the iPad, iPad Air, and 10.5-inch iPad Pro, the only modern iPad where a keyboard case with trackpad isn’t being offered is the iPad mini. [Logitech Introduces Combo Touch Keyboard Case, Bringing a Trackpad to the iPad, iPad Air, and 10.5-inch iPad Pro](https://www.macstories.net/news/logitech-introduces-combo-touch-keyboard-case-bringing-a-trackpad-to-the-ipad-ipad-air-and-105-inch-ipad-pro/) # How the iPad’s Trackpad Support Works [image:2F04A222-02D8-4B62-8EEE-5213389B93A1-16210-000012EAF373FAF6/256px.png] [Dieter Bohn at The Verge](https://www.theverge.com/2020/3/18/21185188/ipad-trackpad-how-to-support-mouse-cursor): > We can answer some of your questions about how trackpad support will work today and we’ll get a chance to actually use it ourselves in the public beta. In the meantime, here’s what we definitely know about how it will work based on videos Apple has released publicly and on a video presentation given to reporters this morning. Bohn gives a great bullet-point walkthrough of how iPadOS handles input from a trackpad or mouse, complete with the roster of navigation gestures supported by trackpads. Best of all, however, the article includes a video Apple created in which Craig Federighi, Apple’s software head, demos the trackpad on the iPad Pro’s new Magic Keyboard. Presumably it’s exactly what Federighi would have done if the company had been able to [introduce the iPad Pro](https://www.macstories.net/news/the-new-ipad-pro-and-magic-keyboard-with-trackpad-the-macstories-overview/) at a press event. [How the iPad’s Trackpad Support Works](https://www.macstories.net/linked/how-the-ipads-trackpad-support-works/) # Apple Releases iOS and iPadOS 13.4 with iPad Cursor Support and Keyboard Improvements, iCloud Drive Shared Folders, and More [image:151F04DA-7AD9-46D6-B953-47B48CC583BD-16210-000012EA400BD061/2020-03-16-12-53-12.png] Today Apple released the latest updates for its suite of software platforms, most notable of which are iOS and iPadOS 13.4. Timed with the release of the [latest iPad Pro models](https://www.macstories.net/news/the-new-ipad-pro-and-magic-keyboard-with-trackpad-the-macstories-overview/), the hallmark features include brand new systemwide support for mouse and trackpad on iPad, plus a handful of external keyboard enhancements. Shared folders for iCloud Drive is the other big addition – first announced at WWDC last June then delayed out of the initial 13.0 release, iCloud users may finally be able to consider reducing their Dropbox dependency. Beyond those highlights, Apple has also included smaller OS tweaks in a variety of areas. ## Mouse and Trackpad Support on iPad [image:8C8435FB-2782-496E-9DCE-E2B936A6B16E-16210-000012EA3FE3DE67/2020-03-18-08-36-25.png] Mouse and trackpad support is available today, but the new Magic Keyboard won’t arrive until May. Announced last week as part of the narrative around the [new iPad Pro and Magic Keyboard](https://www.macstories.net/news/the-new-ipad-pro-and-magic-keyboard-with-trackpad-the-macstories-overview/), iPadOS now fully supports input from a mouse or trackpad. This is an entirely separate feature from the pointing device support that was an [accessibility addition in iPadOS 13](https://www.macstories.net/stories/ios-and-ipados-13-the-macstories-review/23/#mouse-support). iPadOS 13.4’s mouse and trackpad support enables connecting either a Magic Trackpad or Magic Mouse, or even a third-party Bluetooth or USB mouse, to gain a whole new input paradigm on the iPad. This feature will be utilized especially well by the new [Magic Keyboard accessory](https://www.apple.com/shop/product/MXQT2LL/A/magic-keyboard-for-ipad-pro-11%E2%80%91inch-2nd-generation-us-english), but that doesn’t launch until May, so dedicated pointing devices are the only option for using it in the meantime. Apple has entirely optimized iPadOS such that UI elements respond to having a cursor hover over and select them. Home screen icons magnify and follow the cursor’s movement when hovered over, and buttons and controls inside apps now similarly respond to the cursor; this is true in Apple’s own apps, but also in many third-party apps with no developer work whatsoever. However, for the best, most consistent cursor experience, Apple has provided new APIs developers can adopt. Rather than simply copying the Mac’s own cursor implementation, Apple has designed something new for iPadOS. Beyond the simple aesthetic change of the cursor being a circle on iPad rather than a pointer, iPadOS’ cursor also adapts to different types of content: when hovering over an app icon on the Home screen, the cursor doesn’t actually sit above the icon, rather it merges with the icon such that the visual circle disappears, and your movement of the cursor is reflected in the icon itself moving around. Similarly, in the case of certain other UI elements the cursor merges with those elements while hovering over them. [image:FB00E9F6-2733-44F0-9070-58C4084D0D30-16210-000012EA3FC2802D/cursor-gif-copy1584537765738.gif] iPadOS’ new cursor at work. The design effect is similar to what happens on tvOS when an object is selected, with user input causing that object to wiggle around as it follows your motion. Though any average Bluetooth or USB mouse or trackpad should work on iPadOS, if you use Apple’s own Magic Trackpad 2 or Magic Mouse 2 you’ll also gain the ability to perform several gestures, which Apple outlines in 13.4’s release notes: > Multi-Touch gestures on Magic Keyboard for iPad and Magic Trackpad 2 enable you to scroll, swipe between app spaces, go Home, access App Switcher, zoom in or out, tap to click, secondary click (right-click), and swipe between pages > Multi-Touch gestures on Magic Mouse 2 enable you to scroll, secondary click (right-click), and swipe between pages Apple’s work supporting mouse and trackpad input is absolutely extensive. It represents a major new input option for iPad users, and the company has done something truly special with the way it’s been implemented. ## Keyboard Improvements for iPad [image:3DCE2BAF-54B9-48AC-B196-523AD26467C2-16210-000012EA3F6265F4/2020-03-16-11-37-47.png] Modifier key remapping. There are also several nice improvements in iPadOS 13.4 that relate to using hardware keyboards. First, you can remap modifier keys to perform the specific actions you prefer; from Settings ⇾ General ⇾ Keyboard ⇾ Hardware Keyboard ⇾ Modifier Keys you’ll see all of the available options. Smart Keyboard users will be glad about the chance to set a custom method for hitting Escape, but anyone wishing for rich customization will be disappointed – the options are essentially limited to rearranging existing modifier actions, rather than offering access to new functionality altogether. Full keyboard access is a new option in the Accessibility area of Settings. Exactly as its name indicates, the feature enables performing any action system-wide on your iPad via a keyboard. When activated, a blue box highlights whichever element on-screen has the keyboard’s focus, so you can use arrow keys to navigate different UI elements. Full keyboard access isn’t a substitute for richer keyboard controls across iPadOS, since it’s designed for accessibility purposes, but it does lay the groundwork for future improvement in this area. [image:664BA4A7-53ED-4AA9-9B9F-4D61F2BF8AD8-16210-000012EA3F4617D4/2020-03-16-10-14-30.png] Full keyboard access is a new Accessibility feature. Another change introduced in iPadOS 13.4 will require developer adoption before users benefit from it: key up/down events. Before now, Apple didn’t provide developers a standard way of knowing whether iPad users were pressing keys or not, outside of areas like text editing or when the Command key was also held down. Some developers found workarounds for this limitation, but now there’s an API for everyone to employ – which is an especially nice enhancement for Mac Catalyst apps, since Mac apps have never had the same limitation, and now their iPad counterparts can match the same behavior. Finally in the realm of keyboards, the Photos app has introduced some limited keyboard shortcuts, primarily for switching between different navigation tabs and views. [image:1936906E-498D-4332-A6DA-A03819CEC71C-16210-000012EA3F241AA0/2020-03-16-08-13-57.png] It’s become common practice for at least one noteworthy feature announced at WWDC to not make it to public release until shortly before the following year’s WWDC. This year, that feature is iCloud Drive shared folders. Similar to how file sharing works in iCloud Drive, you can now share a folder via the Add People button inside the share sheet. Shared folders will automatically sync changes to files they contain among every user they’re shared with, and are accessible across iPhone, iPad, and the Mac on all devices updated to the latest OS versions. When you share a folder with someone, you’re sharing a link they can tap to add that folder to their own iCloud Drive. As the owner of the folder, you can determine whether people with access can make changes to the folder’s contents or have view-only privileges; there’s also a sharing setting that enables anyone with the link to access the folder, rather than the default of only specific people. When a folder’s been shared with someone, its contents will only take up their owner’s iCloud Drive storage space. I tested this by sharing a folder containing audio files from [Adapt](https://www.relay.fm/adapt) recordings with Federico – after he added the folder, which took up 1.5 GB of storage on my end, he didn’t see any change in available iCloud Drive storage himself. Downloading individual files impacted his local storage, of course, but his amount of remaining iCloud Drive storage was still unchanged. Time will tell if iCloud Drive’s shared folders are reliable enough to replace alternative options like Dropbox, but it’s certainly good to see this feature finally arrive. ## Miscellaneous Features *Mail toolbar tweaks.* In iOS 13.0, the Mail app’s toolbar was scaled back to include only two options: a reply button, and one for archive/trash. The reply button, oddly, hid all other actions behind it in a pop-up menu. Now the toolbar has re-added move and compose buttons, restoring it closer to its iOS 12 iteration. You still get a pop-up menu when hitting reply, but now at least you won’t have to use it as often. [image:269F84DD-89F8-41DF-8037-95E36F7D3BAD-16210-000012EA3F00A668/2020-03-16-10-26-18.png] Mail’s tweaked toolbar. *New Memoji sticker reactions.* If you’re someone who uses Memoji stickers, Apple has just the update for you: nine new Memoji reactions are available in sticker form, including eye-rolling, hearts, sitting behind a Mac, and more. [image:564478EC-FE3C-451D-83A0-2FBBCE4DD0AF-16210-000012EA3EE0B74D/2020-03-16-08-23-44.jpeg] Image credit: Rene Ritchie *Family Sharing in TV app.* In iOS 13.4 the TV app has gained a new Family Sharing section inside the Library tab. This enables easy access to iTunes movie and TV show purchases that a family member has made. Before, in order to access a family member’s purchased content, you would need to visit the iTunes Store app to download the videos there. *Resume Arcade games from the App Store.* Though I haven’t seen this yet in the 13.4 beta, today’s release notes from Apple mention that the Arcade tab inside the App Store will now display Arcade titles you’ve recently played so you can quickly resume playing without needing to find a game on your Home screen. *CarKey.* [Discovered by the team at 9to5Mac](https://9to5mac.com/2020/02/05/new-carkey-feature-in-ios-13-4-beta-brings-built-in-support-for-unlocking-driving-and-sharing-nfc-car-keys/), iOS 13.4’s code references a new CarKey API which would enable an iPhone or Apple Watch to be used to unlock, lock, and start compatible cars, as well as share vehicle privileges with other people via iMessage. CarKey may or may not become an active feature immediately following iOS 13.4’s launch, but one way or another we should find out shortly. iOS and iPadOS 13.4 arrive representing a semblance of normalcy in an otherwise very uncertain time. Before this past week, we had no idea whether Apple would be announcing new products any time soon, and the only sure thing for the future was that an [online WWDC would be held in June](https://www.macstories.net/news/apple-announces-wwdc-2020-will-be-held-online-only/). Now, however, Apple has debuted a new [MacBook Air](https://www.macstories.net/news/apple-releases-faster-macbook-air-with-new-keyboard-and-increased-storage-starting-at-999-and-doubles-storage-on-base-model-mac-minis/), [iPad Pro](https://www.macstories.net/news/the-new-ipad-pro-and-magic-keyboard-with-trackpad-the-macstories-overview/), and [accessories](https://www.macstories.net/news/apple-debuts-new-seasonal-colors-for-iphone-and-ipad-cases-and-apple-watch-bands/), plus significant software updates. Amid all the world’s present unknowns, it’s comforting that Apple can at least continue to push new hardware and software; it’s a reminder that some of the rhythms we’ve all grown used to can continue on as before. [Apple Releases iOS and iPadOS 13.4 with iPad Cursor Support and Keyboard Improvements, iCloud Drive Shared Folders, and More](https://www.macstories.net/news/apple-releases-ios-and-ipados-134-with-ipad-cursor-support-and-keyboard-improvements-icloud-drive-shared-folders-and-more/) # Magic Keyboard for iPad Pro: A New Breed of Laptop [image:7108566F-0712-4E39-8E32-EE40A5EEC0F3-16210-000012E88FBC65A9/2020-04-21-12-47-24-1637679025147.jpeg] The Magic Keyboard and my iPad Pro, featuring the iVisor matte screen protector. Following the surprise [early release](https://www.apple.com/newsroom/2020/04/new-magic-keyboard-for-ipad-pro-now-available-to-order-begins-arriving-next-week/) of the Magic Keyboard for iPad Pro, I’ve been waiting to get my hands on Apple’s highly anticipated accessory and evaluate it from the perspective of someone who uses the iPad Pro as a [tablet, laptop, and desktop workstation](https://www.macstories.net/stories/modular-computer/). I received the Magic Keyboard for my 12.9” iPad Pro yesterday afternoon; fortunately, I was able to order one in the US English keyboard layout from the Italian Apple Store last week, and the keyboard arrived three days ahead of its original scheduled delivery date. Obviously, less than a day of usage isn’t enough time to provide you with a comprehensive review; however, given that plenty of iPad users are still waiting for their Magic Keyboards to arrive, I thought it’d be useful to share some first impressions and thoughts based on my initial 24 hours with the keyboard. Let’s dive in. ## Laptop Mode and iPad Modularity From the get-go, it’s apparent that the Magic Keyboard was primarily designed to enable a native laptop mode for the iPad Pro. Unlike the Smart Keyboard Folio, the Magic Keyboard comes with a built-in 5x10cm multi-touch trackpad; because of its hinge-based floating design, you can’t fully fold the Magic Keyboard on itself, hiding it in the back of the iPad Pro like [you can with the Smart Keyboard Folio](https://www.macstories.net/stories/modular-computer/#tablet-mode). This is Apple’s answer to users who have been asking for years for a “pro Smart Keyboard” to turn the iPad into a quasi-laptop device, and it doesn’t try to replicate all the features from the Smart Keyboard Folio or regular Smart Folio. I would have liked to see the option to fold the Magic Keyboard in the back of the iPad; I’m just not sure how that could be physically possible given Apple’s design direction for the Magic Keyboard (more on this later). The first thing I noticed when setting up the Magic Keyboard is that, when laying flat on a desk, you can’t open the iPad Pro with one hand: you can easily lift the screen from the Magic Keyboard’s inner magnetic cover, but if you want to fully open it to start typing, you have to keep at least one finger on the keyboard’s base while lifting the rest of the unit – just like most laptops. Here’s where the Magic Keyboard’s design differs from traditional laptops though: when lifting the iPad’s display, you’ll feel a first snap when the bottom hinge (the cylinder-shaped one that comes with a built-in USB-C port) has reached its open position; keep pushing on the iPad’s display, and the iPad will detach from the /second/ hinge, which is located in the Magic Keyboard’s back cover and lets you adjust the iPad’s viewing angle. It’s the horizontal line that separates the two halves of the Magic Keyboard’s cover. In a nice act of design symmetry, the second hinge runs exactly across the antenna line of the 12.9” iPad Pro: [image:720BC77C-60E2-4B09-A059-AA392F74FDEB-16210-000012E88F909D0F/2020-04-21-12-50-34-1637679028794.jpeg] The Magic Keyboard’s second hinge. What’s even nicer about this opening procedure is how the iPad’s software knows when to turn on the display and activate Face ID. If you pay attention when lifting the iPad, you’ll notice that the display turns on as soon as the iPad is detached from one half of the Magic Keyboard’s back cover; a few moments later, the Face ID sensor is activated and starts scanning. In practice, this isn’t just a delightful detail that proves Apple’s proverbial integration of hardware and software – it also means that by the time you’re done adjusting the iPad’s viewing angle, the iPad will have already authenticated you. At that point, it’s just a matter of pressing the space bar to dismiss the Lock screen and start working. Over the last 24 hours, I’ve used the iPad Pro with the Magic Keyboard at my desk, at the kitchen table, on my lap, and in bed. In all circumstances, I found the Magic Keyboard’s two-hinge system strong and reliable. I wouldn’t describe the hinges as overly stiff; they require just the right amount of pressure to lift the iPad and put it in place, and once that’s done, they’re sturdy enough to maintain the viewing angle you set and prevent the iPad from tipping over. As with the Smart Keyboard Folio, the magnetic connection between the cover and the back of the iPad is also strong – so much, in fact, that it allows the iPad to float above the keyboard. [image:91010428-02BB-4450-AFE8-A1E88C6CE461-16210-000012E88F766CFB/2020-04-21-12-58-58-1637679031157.jpeg] I was somewhat skeptical of Apple’s floating design initially and wondered whether the whole structure could be stable enough to type with a Magic Keyboard on your lap. I’m happy to be proven wrong: I find the Magic Keyboard /very/ comfortable to use on my lap; its footprint is smaller than a 13” MacBook Pro, but it feels stable and the iPad’s screen doesn’t wobble when typing thanks to the [array of magnets](https://www.pocket-lint.com/tablets/news/apple/146215-apple-ipad-pro-has-a-staggering-number-of-magnets-inside) that keep it locked in-place to the back cover. No matter how I was using the Magic Keyboard, I never second-guessed the stability of its hinge-based floating design. The iPad does wobble back and forth a little if you’re using the Apple Pencil or tapping your fingers on the display with a moderate amount of force (perhaps because you’re playing a game or liking [certain tweets](https://twitter.com/512px/status/1250968255260319744) with particular emphasis); however, this is to be expected given the keyboard’s flexible design, and they’re not activities I’d recommend you perform while the iPad is inside the Magic Keyboard anyway. Plus, any laptop screen would wobble a little if you tried to interact with it via touch. In terms of viewing angles, while the Smart Keyboard Folio only supported two fixed positions, the Magic Keyboard lets you manually adjust the display’s angle thanks to its secondary hinge in the back. [image:BDB0DAA3-E711-4042-8291-C05882BE6CBE-16210-000012E88F577467/2020-04-21-12-52-20-1637679034884.jpeg] The Magic Keyboard’s most open angle is roughly comparable to the Smart Keyboard Folio’s (pictured in the back), but the iPad floats higher. [image:61C16512-E67E-4F10-B3D4-DC85C075B8EB-16210-000012E88F383939/2020-04-21-12-54-17-1637679038713.jpeg] The Smart Keyboard Folio’s other viewing angle. The Magic Keyboard can also be adjusted to this position and can create an even steeper angle. The best way to think about it is this: at its most open position, the Magic Keyboard essentially replicates the largest viewing angle of the Smart Keyboard Folio, only the iPad’s screen floats higher. I like to type with the display tilted a bit further back into the Magic Keyboard’s case, and it’s nice that I can adjust the angle to get it just right instead of being limited to two preset angles. What’s even better is that I no longer have to hear the horrible noise the Smart Keyboard Folio makes when locking the iPad into a viewing angle, which would routinely wake up my girlfriend or dogs at night. Based on my experience in these first 24 hours, I would go as far as saying that, because of the adjustable viewing angle, robust design, and built-in trackpad, using the Magic Keyboard on my lap has been my favorite mode so far. Thanks to the [improvements in iPadOS 13.4](https://www.macstories.net/stories/modular-computer/#the-new-pointer) and adoption from third-party developers, I very rarely have to touch the iPad’s display; because of the Magic Keyboard’s design and integration with iPadOS, I can work with the iPad Pro in a variety of contexts without ever worrying about pairing, charging, or having a subpar trackpad experience. I’ll probably follow up on this in a few months, but I have a feeling I must have /really/ missed using a portable computer on my lap after years with the Brydge keyboard and Smart Keyboard Folio. Which brings me to the point I believe most people are not seeing when comparing the iPad Pro with Magic Keyboard to other laptops or tablets. The Magic Keyboard is an accessory that fully embraces Apple’s [modular approach](https://www.macstories.net/stories/modular-computer/#modular-future) to the iPad Pro: it enables a reliable, functional laptop mode while at the same time *encouraging you to detach the iPad* at any time and use it as a tablet when you no longer need a keyboard and trackpad. This is, I believe, the key differentiator for the iPad Pro and Magic Keyboard: when paired together, you have a useful, credible laptop mode for your iPad; pick up the iPad – which you can even do with one hand by just pulling it from the cover without knocking it loose [1](https://www.macstories.net/stories/magic-keyboard-for-ipad-pro-a-new-breed-of-laptop/#fn-63008-loose) – and you still have a fantastic tablet with a vibrant ecosystem of tablet-optimized apps and a multi-touch OS. For the same price and weight, yes, you could get a MacBook Air (or even a MacBook Pro) instead of an iPad Pro with Magic Keyboard; however, I wouldn’t recommend trying to pull a MacBook’s display away from the keyboard when you’d like to use a tablet instead. > The Magic Keyboard strikes a perfect balance between altering the iPad’s nature and keeping it intact at the same time. The Magic Keyboard turns an iPad Pro into a laptop, but it does so in a way that isn’t definitive – the transformation can always be reversed by the simple act of pulling the “computing core” away from it. This is also where the Magic Keyboard differs from competing accessories such as the Brydge keyboard: aside from Brydge’s [poor trackpad implementation](https://sixcolors.com/post/2020/04/review-brydge-pro-ipad-keyboard-with-trackpad/), I always found their design discouraged a constant alternation of roles – from laptop to tablet, and vice versa. It /could/ be done, but carefully putting the iPad inside the Brydge’s keyboard clips and pulling it out was a chore. As a result, I found myself leaving the iPad Pro inside the Brydge keyboard at all times and never using it as a tablet. The Magic Keyboard feels like it was designed with the opposite principle in mind: it enables a laptop mode for the iPad, but you can always undo it and return to the iPad’s pure tablet form in two seconds. And when you’re done using the iPad as a tablet, you can just as easily re-align it with the Magic Keyboard (thanks to magnets in the case) and go back to using the physical keyboard and trackpad. Based on what I’ve seen and tested so far, the Magic Keyboard is the only laptop-like accessory that strikes a perfect balance between altering the iPad’s nature and keeping it intact at the same time. ## Typing and Trackpad The Magic Keyboard is powered by the Smart Connector, so it’s always ready to type as soon as you unlock the iPad since it requires no pairing. The absence of Bluetooth was one of my favorite aspects of the Smart Keyboard Folio, and I’m glad Apple was able to continue down this road with the Magic Keyboard as well. Keyboards – especially [Apple’s](https://support.apple.com/keyboard-service-program-for-mac-notebooks) – are best judged over time, but right now I can say that typing on this keyboard feels great. The keys are larger than the ones on the Smart Keyboard Folio and have a more traditional square shape, which is a welcome change; despite the size increase, there’s enough space between them. The keyboard is backlit (finally!), which allows me to more easily edit articles at night [2](https://www.macstories.net/stories/magic-keyboard-for-ipad-pro-a-new-breed-of-laptop/#fn-63008-edit); the return of the inverted-T layout for arrow keys is also nice. As far as comparisons to other Apple keyboards go, the Magic Keyboard for iPad has less travel than my old [external Magic Keyboard](https://www.apple.com/shop/product/MQ052LL/A/magic-keyboard-with-numeric-keypad-us-english-silver), but I find it vastly superior to the infamous butterfly keyboard (which I tested on my girlfriend’s 13” MacBook Pro). In short: I like the keyboard, and I find its layout more comfortable than the Smart Keyboard Folio. That said, I’m still adjusting to typing on the Magic Keyboard because one of my initial concerns has proven true: the bottom edge of the iPad’s display occasionally gets in the way of my fingers, resulting in accidental touches on the screen. I believe this is due to a combination of the way I type and how, at its widest viewing angle, the iPad’s bottom edge floats right above the keyboard’s number row. I’ve had similar issues with other keyboards in the past, and I usually get used to it by adjusting the way I type over time; I’ll have to report back on this in a few weeks. For now, tweaking the iPad’s angle so it floats farther away from the keyboard seems to do the trick. [image:C9179B66-D2C0-4D1C-B994-F71468DE131C-16210-000012E88F117810/2020-04-21-13-16-58-1637679043021.jpeg] It’s a small trackpad, but I’ve already grown used to it. The trackpad is fairly small at 5x10cm (compared to the Brydge keyboard’s 6x10cm), and I was afraid it would be too cramped for my hands, but in practice it feels great to use. Scrolling and swiping across the iPadOS UI is smooth and responsive; you can press down anywhere on the trackpad to physically click (which isn’t true of other keyboard cases), but tap to click is also supported. Just like Apple’s Magic Trackpad 2, multi-touch gestures are activated instantly; based on the size of my hands, three-finger gestures (which are needed to navigate the iPadOS multitasking interface) are fine; 4-finger gestures require a bit more dexterity and precision. Making good trackpads is hard; the Magic Keyboard’s trackpad feels like a mini version of the excellent Magic Trackpad 2 – quite the accomplishment given its diminutive form factor. The trackpad’s most important feat is that it allows you to navigate the iPadOS UI entirely with the system-wide pointer. As [I explained weeks ago](https://www.macstories.net/stories/modular-computer/#multitouch-and-updated-apps), this is turning out to be a transformational addition to the iPad experience that I wouldn’t have expected to witness within the iPadOS 13 release cycle. In editing this story last night, I was laying in bed, iPad Pro on my lap with the Magic Keyboard, and dark mode enabled in [iA Writer](https://apps.apple.com/us/app/ia-writer/id775737172); it was just so /nice/ to be able to see the keys in front of me in the dark and control the iPad’s interface without lifting my hands off the keyboard. I know – none of this comes as a surprise to laptop owners; but as a longtime iPad user who has long struggled trying to use the device in a traditional laptop configuration, especially when the lights are out, the Magic Keyboard feels like a game changer already. ## Materials, Size, and Weight Comparisons The Magic Keyboard is made of the same material as the Smart Keyboard Folio’s outer case. The keyboard and trackpad are made of plastic, of course, and keys aren’t covered in fabric; everything else has the same texture as the Smart (Keyboard) Folio’s outer layer. Time will tell how this material will age after intense use; what’s for certain today is that you can’t freely spill water or crumbs on the Magic Keyboard and hope to wipe everything away as you could with the Smart Keyboard Folio. As was widely [expected](https://leancrew.com/all-this/2020/04/weighing-in-as-an-apple-pundit/), the Magic Keyboard is heavier than the Smart Keyboard Folio, and when you pair the 12.9” iPad Pro with it, the combined weight is comparable to a MacBook. This doesn’t shock me. After all, this is a laptop keyboard with backlit keys, two adjustable hinges, and a trackpad; it’d be foolish to think Apple could replicate a laptop configuration (and support the structure of a floating design that facilitates pulling the iPad away) with the same design of the Smart Keyboard Folio – nor would I want them to. The Magic Keyboard feels just right for what it is and does. The MacBook comparison fails to acknowledge the basic premise of this entire story: some people prefer working on iPadOS and like having a computer that transforms into a tablet or laptop *when necessary*. Perhaps a better comparison would be to consider how much a bag would weigh if you carried both a MacBook /and/ iPad at the same time. That said, if you /really/ wanted to know about the Magic Keyboard’s numbers, here you go. I weighed my iPad Pro and various keyboards with my kitchen scale, so pardon the margin of error. * iPad Pro 12.9”, cellular: 640g * Magic Keyboard: 710g * iPad Pro and Magic Keyboard: 1350g * Smart Keyboard Folio: 455g * iPad Pro and Smart Keyboard Folio: 1095g * Brydge Pro+ keyboard: 685g * iPad Pro and Brydge Pro+ keyboard: 1325g [image:045A10A2-7258-4232-AFE8-4A727F785ECF-16210-000012E88EF37E47/2020-04-21-13-00-16-1637679046894.jpeg] The Magic Keyboard’s base is thinner than the Brydge keyboard (right), but Apple’s accessory adds thickness by covering the iPad in the back. As you can see, the Brydge Pro+ Keyboard paired with the 12.9” iPad Pro actually weighs slightly less than the Magic Keyboard + iPad combo (when closed, both configurations have the same thickness at 1.5cm). In practice, however, carrying the iPad Pro around with the Magic Keyboard feels more “portable” than the Brydge Pro+ keyboard. I don’t know why, exactly, but I feel like the Brydge’s aluminum body and blocky design makes it feel heftier overall. In any case, despite the weight increase over the Smart Keyboard Folio, using the iPad Pro inside the Magic Keyboard on my lap doesn’t feel like I’m using a heavy laptop. ## Miscellaneous Notes Here’s a collection of assorted notes and details I’ve noticed since I started testing the Magic Keyboard yesterday. *The Apple logo is very faint*. Unlike the Smart Keyboard Folio, the Magic Keyboard features an embedded Apple logo (placed horizontally) on the back cover, facing out from the iPad when in laptop mode. However, you can barely see it. I still find Apple’s [only color choice](https://twitter.com/stroughtonsmith/status/1252396201934155778) for this keyboard boring, so I’m probably going to cover up the whole thing with stickers very soon. *The camera cutout is fine, even if you have an older iPad Pro*. I’m testing the Magic Keyboard with a 2018 iPad Pro, and the larger camera cutout (designed to accomodate the additional sensors in the [2020 iPad Pro](https://www.macstories.net/news/the-new-ipad-pro-and-magic-keyboard-with-trackpad-the-macstories-overview/) ) doesn’t bother me. I never look at it anyway. This is not something worth being concerned about. [image:25D77CD9-1929-401A-B2A3-E8A16EB9DA48-16210-000012E88ECFD515/2020-04-21-12-56-36-1637679050442.jpeg] My 2018 iPad Pro inside the Magic Keyboard. *No media keys*. My biggest criticism of the Magic Keyboard so far (aside from accidentally touching the iPad’s bottom edge) is that the keyboard doesn’t come with a function row for media keys, system shortcuts, and an ESC key. This is a disappointment given that other keyboard manufacturers figured out how to embed an additional row in keyboards of the same footprint. I wonder if a future revision of the Magic Keyboard – or perhaps a Magic Keyboard for a larger 15” iPad Pro – could solve this. As a general tip, you can always use the system-wide ⌘. (Command-period) keyboard shortcut on iPadOS to replicate the functionality of a physical ESC key. *You can manually adjust the keyboard’s backlight illumination*. The Magic Keyboard’s backlit keys automatically adjust via the iPad’s ambient sensor, but if you want to manually tweak the keyboard’s brightness, you can do so with a slider in Settings ⇾ General ⇾ Keyboard ⇾ Hardware Keyboard. If you want an easier way to get to this page, I created a shortcut that launches the Hardware Keyboard section of Settings directly. The shortcut is best used as a widget on the iPad Home screen, and you can download it below. *The USB-C port is for charging only*. The embedded USB-C port in the Magic Keyboard’s hinge doesn’t support any data transfer – it’s a charging-only port. As others have [shown on Twitter](https://twitter.com/bzamayo/status/1252227174905647107), and as I was also able to confirm with my USB-C power meter, the port lets you charge the iPad Pro at full-speed (although I haven’t personally tested fast charging yet). I like that I will be able to [connect my Sony Walkman to the iPad Pro’s USB-C port](https://www.macstories.net/stories/modular-computer/#usb-dac-mode) and charge the device from the keyboard’s pass-through port at the same time. *The CoverBuddy case fits, but the Magic Keyboard doesn’t close*. I tested the Magic Keyboard with my existing [SwitchEasy CoverBuddy](https://www.amazon.com/Protective-SwitchEasy-CoverBuddy-Compatible-Keyboard/dp/B07P7L789C/) case for the 2018 iPad Pro and, while the case fits and can be attached to the Magic Keyboard, it prevents the keyboard from staying attached to the iPad when closed. I hope SwitchEasy will come up with a Magic Keyboard-compatible design soon. ## Hybrid Laptop [image:55246ED5-E8DE-4DB2-9DE3-79D1C95D58F5-16210-000012E88EAFC2B7/2020-04-21-12-49-21-1637679053233.jpeg] As I noted at the outset, it’s impossible to come up with a comprehensive review of a major new iPad accessory and consider its effect on the ecosystem in 24 hours. For instance, I still don’t know where the Magic Keyboard fits in my [modular desktop setup](https://www.macstories.net/stories/modular-computer/#desk-mode) (but I have some ideas), and, given the current circumstances, I haven’t been able to use the Magic Keyboard outside the house yet. What I can say right now, however, is that it only took me a couple hours of working with my iPad Pro – writing, doing some research, talking with my colleagues, building some shortcuts and editing code – to get the feeling the Magic Keyboard is the best external keyboard experience I’ve had on iPad to date. The Magic Keyboard is, at least for me, superior to the Smart Keyboard Folio for a handful of reasons: the keyboard itself is more comfortable to type on; it’s backlit, which helps me get work done at night; the adjustable hinges let me get the iPad’s angle just right; I can stop reaching out to touch the display because there’s a trackpad built-in. The Magic Keyboard offers a professional typing experience and seamless integration with the iPadOS UI; it’s a pro keyboard for pro iPad users who demanded more than a Smart Keyboard Folio. At the same time, the Magic Keyboard underlines the iPad’s nature as a [modular computer](https://www.macstories.net/stories/modular-computer/) by enabling me to pick it up and resume using it as a tablet whenever I want, with a simple gesture. More than any other iPad accessory, the Magic Keyboard reinforces the idea that the same computer can transform into two radically different form factors at any given time. This philosophy goes beyond the design of a keyboard alone: it’s supported by the iPad’s hardware (with a magnet-based system that simplifies attaching the iPad /and/ encourages pulling it out), software (with the new system pointer that disappears when not in use), and app ecosystem (with apps that can be used with multi-touch /and/ the pointer). Considered through this lens, the Magic Keyboard delivers on the kind of hybrid computing experience I hoped the iPad would eventually achieve, and it’s here today. 24 hours in, the Magic Keyboard feels like an entirely new class of accessory for the iPad Pro, and it’s the keyboard + trackpad combo I’ve been waiting for. Let’s check back on this in a few months. [Magic Keyboard for iPad Pro: A New Breed of Laptop](https://www.macstories.net/stories/magic-keyboard-for-ipad-pro-a-new-breed-of-laptop/) # External Keyboards, iPadOS 14, and Obscuring Tab Bars [image:B30BE9BA-124B-4E9F-BCC0-20925754C01D-16210-000012E7449CC2AD/47034658-8acb-48d8-adcc-a47340718b90.png] iPadOS 14 apps use sidebars, but only in certain size classes, so tab bars still get hidden behind the keyboard row. I love using the iPad as my primary computer, but a long-standing frustration I’ve had involves the keyboard row that lines the bottom of the screen when an external keyboard is attached. I like the row itself, as it usually offers valuable utility such as in Apple Notes, where a text formatting menu is available in the keyboard row. The problem is that iPadOS doesn’t adapt apps’ UI to account for the keyboard row, rather it simply hides the bottom portion of an app – which in many cases means hiding the app’s tab bar or other important controls. This is mainly an issue when using Split View or Slide Over, not full-screen apps. But most of my iPad use does involve Split View and Slide Over, and I can’t count the number of times I’ve had to manually hide the keyboard row so I could access an app’s tab bar. This is a regular occurrence when writing articles, for example, as I’ll keep [Ulysses](https://apps.apple.com/us/app/ulysses/id1225571038?uo=4) and Photos in Split View, and the keyboard row that appears when working in Ulysses obscures Photos’ tab bar so I can’t switch tabs in Photos without manually hiding the keyboard row. The row also hides the share icon when viewing a photo, which is what I press many times when writing an article so I can run shortcuts via the share sheet. So as a workaround I have to manually hide the row, a short-lived fix because it then reappears after typing a single keystroke in Ulysses. In iPadOS 14, Apple is /halfway/ solving this problem. Because apps are being encouraged to switch from a tab bar-based design to one that involves a sidebar, there are fewer occasions when tab bars will be visible. In the iPadOS 14 beta, if I have Ulysses and Photos in a 50/50 Split View, there’s no longer a tab bar for the keyboard row to obscure, because Photos uses a sidebar instead where I can easily navigate to the view I need. Unfortunately, this is only a partial solution because iPadOS 14 apps still revert to using a tab bar in a compact size class (i.e. when they’re an iPhone-like size). So all Slide Over apps retain tab bars for navigation as before, meaning those important tabs will be hidden any time you’re also working in an app that uses text and thus presents a keyboard row. The same is true for Split View when an app is the smaller app in your multitasking setup. If the app you’re writing in is the larger app in your Split View, the smaller app will have its tab bar obscured by a keyboard row. This is especially problematic for writers, who live in a text editor all day, but it also applies to anyone working in a note-taking app, messaging app, or anything else involving text. iPadOS 14 improves things via sidebars in certain situations, but in many multitasking contexts the years-old problem remains. But there’s a happy ending of sorts, at least for me. My inspiration for writing about this issue was the discovery of a feature in Ulysses that fixes the problem for me. The app’s View Options inside its Settings panel contains a toggle that has been there for quite a while, I simply never thought to activate it: Hide Shortcut Bar. What this does is /perpetually/ hide the keyboard row whenever a hardware keyboard is attached to your iPad. No keyboard row means no hiding tab bars in other apps while I write. Ulysses does place some important shortcuts in the keyboard row, but most if not all of them can be triggered via keyboard shortcuts instead, making the keyboard row unnecessary (for my uses at least). After making this discovery, I dug around in a few other apps’ settings to see how common this feature is. [iA Writer](https://apps.apple.com/us/app/ia-writer/id775737172?uo=4) offers it, as does [Drafts](https://apps.apple.com/us/app/drafts/id1236254471?uo=4), and possibly many other apps I haven’t tried. It seems more common in text editors than note-taking apps. It’s a shame that the whole keyboard row needs to be hidden just to account for an iPadOS design flaw, but I’m thankful that third-party developers have stepped in to address the issue themselves. Ulysses is the app I multitask in most frequently, so the ability to keep its keyboard row hidden forever has truly made my day. I tried explaining to my wife why I got so happy all of a sudden, and she didn’t really get it. I don’t blame her. [External Keyboards, iPadOS 14, and Obscuring Tab Bars](https://www.macstories.net/ipad/external-keyboards-ipados-14-and-obscuring-tab-bars/) # Apple Releases New Mac Keyboards and Pointing Devices [image:DB7FE265-9D6D-4BE3-B2F8-448A73A080C7-16210-000012E698E321FF/magickeyboard_touchid2-1628013269103.png] Apple has [updated its online store](https://www.apple.com/shop/mac/accessories) with new accessories that first debuted with [the M1 iMac](https://www.macstories.net/news/apple-shows-off-new-m1-imacs-in-beautiful-vibrant-colors/). The updated accessories were spotted by Rene Ritchie, who tweeted about them: Among the items listed, which each come with a woven USB-C to Lightning cable and come in white and silver only, are: * [Magic Keyboard](https://www.apple.com/shop/product/MK2A3LL/A/magic-keyboard-us-english) ($99). The Magic Keyboard features rounded corners and some changes to its keys, including a dedicated Globe/Fn key and Spotlight, Dictation, and Do Not Disturb functionality mapped to the F4 - F6 keys. * [Magic Keyboard with Touch ID](https://www.apple.com/shop/product/MK293LL/A/magic-keyboard-with-touch-id-for-mac-models-with-apple-silicon-us-english) ($149). Along with the design and key changes of the Magic Keyboard, this model includes Touch ID, which works with M1 Macs only. * [Magic Keyboard with Touch ID and Numeric Keypad](https://www.apple.com/shop/product/MK2C3LL/A/magic-keyboard-with-touch-id-and-numeric-keypad-for-mac-models-with-apple-silicon-us-english) ($179) * [Magic Trackpad](https://www.apple.com/shop/product/MK2D3AM/A/magic-trackpad) ($129). The corners of the new Magic Trackpad are more rounded than before, but it’s functionally the same as prior models. * [Magic Mouse](https://www.apple.com/shop/product/MK2E3AM/A/magic-mouse) ($79). The Magic Mouse is listed as new, too, although apart from the woven USB-C to Lightning cable in the box, there don’t appear to be any other differences between this model and the prior model. [I’ve been using the Magic Keyboard with Touch ID](https://www.macstories.net/stories/two-months-with-apples-new-m1-imac/), Magic Trackpad, and Magic Mouse for a couple of months with an M1 iMac. Based on my experience, the trackpad and mouse haven’t changed enough to warrant purchasing one unless you need one anyway. However, if you’ve got an M1 Mac mini or M1 laptop that you run in clamshell mode, the Magic Keyboard with Touch ID is a nice addition to any setup. Having Touch ID always available is fantastic, and I’ve grown used to using the Do Not Disturb button along with the Globe + Q keyboard shortcut for Quick Note, the new Notes feature coming to macOS Monterey this fall, which is the same when using an iPad running the iPadOS 15 beta with a Magic Keyboard attached. [Apple Releases New Mac Keyboards and Pointing Devices](https://www.macstories.net/news/apple-releases-new-mac-keyboards-and-pointing-devices/) # ~insom — now ``` 2022-03-16 ---------- Getting of C's crutches so I can learn Rust better continues. I got a new PC recently which lead me to thinking about giving computers personality. It's hard for me to tease apart from because both of those things were happening at the same time, so forgive me some muddled thinking. I'm 39, and I was pretty lucky to have a computer at all growing up, and I remember buying my first (second hand) which was a 486DX2/66. I'd _used_ other computers, but this one was mine. It ran Windows 3.1, and later 95, and I squeezed Slackware onto its 130MiB HDD. At some point it probably had a Debian install on it and I know it ended its useful life running FreeBSD 4. It did _not_ have a stable name, to be fair, but that kind of made sense: I didn't have any other computer or a network, so why would it need a name? When a name was mandatory (like a unix hostname) I probably put "aaron" or "insom". Then I read Cryptonomicon and I was intrigued by Tombstone, the mail server which plays a medium-important plot point in that novel. I thought "oh, maybe _servers_ should have names". I spray painted that machine in day-glo red and silver, like a bad version of the Half-Life branding. (Keyboard, too!). It had various RAM and HDD upgrades through its life, many CD-ROM drives and ISA cards. Later I got a Pentium II 300 as the payment for my summer job, and even later I got a Dual Pentium 100 (yes, that's slower, but it also was SMP which is cool and it had a SCSI drive). _Even_ later, the only real Unix machine I used as a personal device: a DECstation 5000/200 which was being given away by NUI Galway. These machines had long lives, being repurposed again and again, upgraded, customized and very rarely sold (which meant they didn't have to be left in good enough condition to sell at the end of their life). When I ran my first company, I built the servers we used, they had quirky names and were built in two's. The turning point in this (for me) is ~2005 when I started working for someone else. The servers were called ..co.uk. The machines on the network were named . The machine you used was yours for 3+ years and then it was scrapped and you got another. You probably never got an upgrade from its original specification. While I worked at the company, we started using virtualization. Now the physical hosts were things like `xen3` or `jcb8`, a number and a class of machine use and the VMs followed the familiar pattern. Anyway, I don't want to be all "the problem is capitalism" but ... For my personal use I've ended up amassing too many computers, of arguable quality, and I rsync my homedir from machine to machine, and install my dotfiles from a GitHub repo on a new machine. This means every machine feels like the exact same environment. Work computers are an aluminium slab that starts off fast and gets slow over the years and is replaced with a new slab. That's okay, my data is barely stored on it; I don't even back up my work laptop. That's what the cloud is for. (I did variously cover them in stickers, though, but I'd hardly say I've "loved" a machine in the last 10+ years). When I got my new computer I got my first new desktop in a very long time. Even desktops that I've had were repurposed work machines, HP G5 or G6 machines or an 8300 workstation. I decided to sell my laptop, which was also kind of powerful, and consolidate onto this new machine. This means that instead of having several "okay" computing devices, I have a _very fast_ desktop. It also means that to "do computing" I need to go sit in my office. I am hoping this makes practice helps create separation between computing and not computing (unrelated to separation between work and home, which I'm already okay at). I do have a remaining laptop, a spares-and-repairs Chromebook which I bought because it was non-functional from water damage but that I was able to get back to health. It's not powerful enough to do more than one thing at a time (certainly not on the web). I like that. It's not signed into my 1Password or synced with my Firefox account and it doesn't even have my dotfiles. It runs Bunsenlabs Linux and it's unlike any environment I use. It's its own thing. ``` [~insom — now](https://tilde.town/~insom/) # Abusing Safari's webarchive file format | Rapid7 Blog /Last updated at Mon, 28 Aug 2017 19:18:43 GMT/ tldr: For now, don't open .webarchive files, and check the Metasploit module, [Apple Safari .webarchive File Format UXSS](https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/apple_safari_webarchive_uxss.rb) Safari's webarchive format saves all the resources in a web page - images, scripts, stylesheets - into a single file. A flaw exists in the security model behind webarchives that allows us to execute script in the context of any domain (a Universal Cross-site Scripting bug). In order to exploit this vulnerability, an attacker must somehow deliver the webarchive file to the victim and have the victim manually open it [1](https://community.rapid7.com/#safari-footnote1) (e.g. through email or a forced download), after ignoring a potential "this content was downloaded from a webpage" warning message [2](https://community.rapid7.com/#safari-footnote2). It is easy to reproduce this vulnerability on any Safari browser: Simply go to [https://browserscan.rapid7.com/](https://browserscan.rapid7.com/) (or any website that uses cookies), and select File -> Save As... and save the webarchive to your ~/Desktop as metasploit.webarchive. Now convert it from a binary plist to an XML document (on OSX): ``` plutil -convert xml1 -o ~/Desktop/metasploit_xml.webarchive ~/Desktop/metasploit.webarchive ``` Open up ~/Desktop/metasploit_xml.webarchive in your favorite text editor. Paste the following line (base64 for ``` alert(document.cookie) ``` ) at the top of the first large base64 block. ``` PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ ``` [image:7FAF5EA5-0397-424D-AD94-EF29207E8312-10346-00000A12D19A2BBD/safari-ss1.png] Now save the file and double click it from Finder to open in Safari: [image:655D3083-2905-4A34-90BD-8B9A04621CCA-10346-00000A12D158F553/safari-ss5.png] You will see your [browserscan.rapid7.com](https://browserscan.rapid7.com/) cookies in an alert box. Using this same approach, an attacker can send you crafted webarchives that, upon being opened by the user, will send cookies and saved passwords back to the attacker. By modifying the WebResourceURL key, we can write script that executes in the context of any domain, which is why this counts as a UXSS bug. Unfortunately, Apple has labeled this a "wontfix" since the webarchives must be downloaded and manually opened by the client. This is a potentially dangerous decision, since a user expects better security around the confidential details stored in the browser, and since the webarchive format is otherwise quite useful. Also, not fixing this leaves only the browser's file:// URL redirect protection, which has been bypassed [many](https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/osx/browser/safari_file_policy.rb) [times](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-1778) in the [past](http://support.apple.com/kb/ht5400). Let's see how we can abuse this vulnerability by attempting to attack [browserscan.rapid7.com](https://browserscan.rapid7.com/): Attack Vector #1: Steal the user's cookies. Straightforward. In the context of [https://browserscan.rapid7.com/](https://browserscan.rapid7.com/), simply send the attacker back the `document.cookie`. HTTP-only cookies make this attack vector far less useful. Attack Vector #2: Steal CSRF tokens. Force the browser to perform an AJAX fetch of [https://browserscan.rapid7.com](https://browserscan.rapid7.com/) and send the response header and body back to the attacker. Attack Vector #3: Steal local files. Since .webarchives must be run in the file:// URL scheme, we can fetch the contents of local files by placing AJAX requests to file:// URLs [3](https://community.rapid7.com/#safari-footnotes3). Unfortunately, the tilde (~) cannot be used in file:// URLs, so unless we know the user's account name we will not be able to access the user's home directory. However this is easy to work around by fetching and parsing a few known system logs [4](https://community.rapid7.com/#safari-footnote4) from there, the usernames can be parsed out and the attacker can start stealing known local file paths (like /Users/username/.ssh/id_rsa) and can even "crawl" for sensitive user files by recursively parsing .DS_Store files in predictable locations (OSX only) [5](https://community.rapid7.com/#safari-footnote5). Attack Vector #4: Steal saved form passwords. Inject a javascript snippet that, when the page is loaded, dynamically creates an iframe to a page on an external domain that contains a form (probably a login form). After waiting a moment for Safari's password autofill to kick in, the script then reads the values of all the input fields in the DOM and sends it back to the attacker [6](https://community.rapid7.com/#safari-footnote6). Attack Vector #5: Store poisoned javascript in the user's cache. This allows for installing “viruses” like persisted keyloggers on specific sites... VERY BAD! An attacker can store javascript in the user's cache that is run everytime the user visits [https://browserscan.rapid7.com/](https://browserscan.rapid7.com/) or any other page under browserscan.rapid7.com that references the poisoned javascript. Many popular websites cache their script assets to conserve bandwidth. In a nightmare scenario, the user could be typing emails into a "bugged" webmail, social media, or chat application for years before either 1) he clears his cache, or 2) the cached version in his browser is expired. Other useful assets to poison are CDN-hosted open-source JS libs like google's hosted jquery, since these are used throughout millions of different domains. Want to try for yourself? I've written a [Metasploit module](https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/apple_safari_webarchive_uxss.rb) that can generate a malicious .webarchive that discretely carries out all of the above attacks on a user-specified list of URLs. It then runs a listener that prints stolen data on your msfconsole. Unless otherwise noted, all of these vectors are applicable on all versions of Safari on OSX and Windows. ## Disclosure Timeline Date Description 2013-02-22 Initial discovery by Joe Vennix, Metasploit Products Developer 2013-02-22 Disclosure to Apple via bugreport.apple.com 2013-03-01 Re-disclosed to Apple via bugreport.apple.com 2013-03-11 Disclosure to CERT/CC 2013-03-15 Response from CERT/CC and Apple on VU#460100 2013-04-25 Public Disclosure and Metasploit module published 1. Safari only allows webarchives to be opened from file:// URLs; otherwise it will simply download the file. 2. Alternatively, if the attacker can find a bypass for Safari's file:// URL redirection protection (Webkit prevents scripts or HTTP redirects from navigating the user to file:// URLs from a normal https?:// page), he could redirect the user to a file URL of a .webarchive that is hosted at an absolute location (this can be achieved by forcing the user to mount an anonymous FTP share (osx only), like in our [Safari file-policy exploit](https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/osx/browser/safari_file_policy.rb)). Such bypasses are known to exist in Safari up to 6.0. 3. Unlike Chrome, Safari allows an HTML document served under the file:// protocol to access *any* file available to the user on the harddrive 1. `file:///var/log/install.log` 1. `file:///var/log/system.log` 1. `file:///var/log/secure.log` 2. `file:///Users/username/Documents/.DS_Store` 2. `file:///Users/username/Pictures/.DS_Store` 2. `file:///Users/username/Desktop/.DS_Store` 3. X-Frame-Options can be used to disable loading a page in an iframe, but does not necessarily prevent against UXSS attacks stealing saved passwords. You can always attempt to pop open a new window to render the login page in. If popups are blocked, Flash can be used to trivially bypass the blocker, otherwise you can coerce the user to click a link. [Abusing Safari's webarchive file format | Rapid7 Blog](https://www.rapid7.com/blog/post/2013/04/25/abusing-safaris-webarchive-file-format/) # How to disable generating special characters when pressing the `alt+a`/`option+a` keybinding in Mac OS (`⌥+a` )? [image:746BB4B0-298D-41E0-8974-00B9761EAD14-12242-000011293D968422/apple-touch-icon@2.png] You can create a *custom keyboard mapping with option-letters all set to BLANK* using online tool [from this webpage](http://wordherd.com/keyboards/). You can create a custom mapping in several clicks out of almost any keyboard layout. Proved to work on MacOSX 10.7+ with IntelliJ Idea, Php/WebStorm, NetBeans, Eclipse. Select *"Set blank for option key"* radio in the form, submit the form, and download a patched keyboard layout with "option" key feature disabled. I'm sharing the working file for standard US English keyboard layout: * [MacOS <= 10.10](https://pelam.fi/osx/USKeylayout_custom_no_alt.keylayout) * [MacOS >= 10.11](https://gist.github.com/haosdent/573ea124e5ea666fc576) After enabling this custom mapping, if you type a letter with "option" key pressed, nothing is printed to text output. But, the "option key press" is triggered by OS, and detected by your IDE. So you get exactly the same behaviour as you have for other command keys! 1. Download the key mapping file `My Layout.keylayout`. 2. Move it to `~/Library/Keyboard\ Layouts/` 3. Open `System Preferences` -> `Language Input Methods` (or `Keyboard` -> `Input Sources` ) 4. Go to `Input Sources` -> `(hit +)` -> `Select Others` 5. You should find `My Layout` in the list and select it. /Step 4 can change slightly across MacOS versions. Please be patient to find keyboard layouts list in the settings./ [How to disable generating special characters when pressing the `alt+a`/`option+a` keybinding in Mac OS (`⌥+a` )?](https://stackoverflow.com/questions/11876485/how-to-disable-generating-special-characters-when-pressing-the-alta-optiona) # Belt, Buckled 🚗 From: Ernie at Tedium To: David Blue Date: Mar 18, 2022 Subject: Belt, Buckled 🚗 The seat belt is a rare example of patent altruism. Here’s a version for your browser. Hunting for the end of the long tail • March 18, 2022 ‌ Hey all, Ernie here with a refreshed piece from 2018 about the kind of patent altruism that doesn’t really happen anymore—the story of the best seat belt design being shared with the entire car industry. Buckle up, and read on: Today in Tedium: Traveling, in one way or another, is a series of belts. Perhaps you’re traveling in a car, and you’re putting on a seat belt to ensure your safety. Perhaps you’re one of those infamous customers of size on an airplane and you’re forced to ask the flight attendant for a seat belt extender. Maybe you’re just walking around town with your Chrome Industries bag, which features a prominent seat belt buckle. Either way, the seat belt has become a key part of our lives, a strap of nylon webbing that has saved a whole lot of lives in the roughly 100 or so years since they’ve been embedded into the mainstream. But at a time of year when weekend road trips are likely to be picking up (well, at least with electric vehicles, something about gas prices), now’s a good time as any to talk about ’em. Buckle up, because today’s Tedium is all about seat belts. — Ernie @ Tedium Sponsored by Nightfall Are API keys or other sensitive data in your logs? Learn how to find out what you are logging with Nightfall's Developer Platform and our new Fluent Bit filter plugin here. “European and American practice are in agreement on the point of not providing parachutes. As for safety belts, British and Dutch opinion is against their installation. Most of the transports operating in the United States do not provide belts for the passengers, but it is being demonstrated rapidly that they are sometimes necessary.” — Charles N. Monteith, the chief engineer of Boeing, speaking to the American Society of Mechanical Engineers in a 1929 presentation, covered by The New York Times, that discussed at length the need for various amenities on aircraft. Yes, that’s correct; at one point parachutes were discussed as a potential option for passengers. Humor aside about this, seat belts were first commonly seen in airplanes before they appeared in cars. The highly tested, highly used seat belt. (Jasz Paulino/Flickr) Let’s talk about the fabric that seat belts are made out of, because it’s pretty awesome Clearly, you’ve likely held a seat belt in your hands sometime during your stay on Earth, but have you ever examined the belt? It is an amazing piece of fabric—one that’s tough as nails and designed to last for decades. Odds are, if you find yourself in a junkyard checking out a dilapidated vehicle, the best looking part of the entire car will be the seat belt, thanks in no small part to its fabric design. The fabric, also known as “webbing” in reference to the weaving process used to hold it together, is incredibly strong, in part because it has to be. Often made of synthetic materials like nylon and polyester (just like other fabrics in modern vehicles), the tensile strength of a seat belt has to meet certain standards, because you never know when that strength has to be put into use. One of the benefits of a highly regulated material that has been used in literally billions of places over a 60-year period is that most of the kinks have been worked out, and lots of research has been done into edge cases. If a new edge case comes up, eventually it will get added into new regulatory standards. To further underline the point: Click in this document about federal motor vehicle safety standards and do a search for the term “webbing”—you’ll find it comes up 281 times, despite it being a very obscure technical term that really only means something to folks who worry about things like textiles, such as Tedium editors. Because you can buy literally anything on Amazon, I just wanted to let you know that extends to the fabric used to make seat belts. On top of that, it gives the material certain unique elements compared to the way that we think of most woven materials: Unlike, say, a T-shirt, it’s not really all that water absorbent, and because it’s so tightly wound already, it tends to avoid issues like shrinkage. (And unlike corduroy, you won’t find any wales in a seat belt.) It’s hard to tear a seat belt as well, and often requires a cutting tool of some kind to tear it apart. And seat belts have a tendency to be deeply considered from a design perspective, both from the position of strength and comfort—if you’re driving in a car for 10 hours, you don’t want to be wearing a seat belt that drives you nuts. Which means that while it’s strong, “military-grade fabric” lost out to “basic creature comforts.” And like I mentioned above about those Chrome Industries bags (which use three-panel webbing on their straps, just like many seat belts), the design of seat belts has directly inspired the designs of other products. Of course, the modern seat belt—while invented more than 100 years ago—had inspiration from the defense industry, which spent much time testing different kinds of harnesses and other structures during World War II. The fabric used in the modern seat belt, whether you think of it this way or not, may be the most thoughtfully considered roll of fabric you’ve ever used. It pretty much has to be. Your life could depend on it. A lift-lever-style belt buckle, of the type used on airplanes. (Sun Brockie/Flickr) Five interesting facts about seat belts, a fundamental modern-day safety mechanism 1. The concept of the seat belt long predates the automobile. The idea gained attention from an early British aerospace pioneer, Sir George Cayley, who came up with a number of important ideas for transportation technology. In an 1840 essay discussing safety mechanisms for trains, he wrote of a “broad padded belt to be placed in front of each passenger, to retain him in his place in case of accident, and to prevent a collision with each other.” (Ironically, most seats in Amtrak trains don’t actually use seat belts.) 2. There’s actually a reason why your seat belt always gets stuck. Ever run into a situation where the seat belt won’t offer any more slack because you pulled it the wrong way? This is actually a function of its design. Basically, the belt uses a retractor that is designed to lock up in a case of sudden motion, so as to secure the passenger in the vehicle in their seat. In other words, if you jerk it in a way akin to how a seat belt might move when you press hard on your brakes, it’s going to lock up, requiring you to let the whole belt retract. (Here’s a useful YouTube clip on how the mechanism works.) It may be a bit annoying, but it might just save your life. 3. Nearly everyone—but not quite everyone—uses seat belts. The use rate of seat belts in the United States was 90.4 percent in 2021, according to the National Highway Traffic Safety Administration, a solid level, albeit one that still leaves open a significant gap—that means 9.6 percent of people don’t wear seat belts, or 27.4 million people. 4. Airline seat belts aren’t made equal. If you’re a “customer of size,” you might find the rigamarole around seat belts in airliners to be a bit annoying, especially due to the fact that you might need a seat belt extender just to get in the seat safely. So who gives passengers the most slack? The website TripSavvy reached out to every major airline and found that the best airline, by seat belt length, is Aeroméxico, which offers a 51-inch belt along with a 22-inch extender. Right behind is Hawaiian Airlines, with the same-size belt and a 20-inch extender. Most major airlines, like Delta and Southwest, fall below 40 inches for their belts, while the worst airline for customers of size is United Airlines, which only offers a 31-inch seat belt—and requires consumers to pre-reserve their seat belt extender requests. 5. There’s a reason why seat belt buckles are so different in airplanes. As Atlas Obscura notes, lift-lever lap belts, a common design choice for seat belts in early cars, quickly were replaced with a press-button design in many vehicles, but airlines have generally kept the older design, which stays fairly secure but can be taken off easily, in case there’s an emergency or you have a hankering to see how small the bathrooms have gotten in modern airplanes. Plus, there’s less risk of accidental pressings. “A car-style push-button buckle, which is typically mounted at the hip, could open on impact if something bangs against the button,” the site’s Dan Nosowitz writes. “And given the meager room in economy class, nobody wants to be digging around between the seats to find a buckle in a crash situation.” 1930 The year that Dr. Claire L. Straith, a plastic surgeon based in the Detroit area, put a safety belt in his own vehicle, a part of his role as an auto-safety innovator. “The attitude toward the problem has greatly changed in recent years,” Straith told the Detroit Free Press in 1957, adding that vehicles were increasingly designed with safety in mind. Straith, who died in 1958, was one of a handful of doctors who put public focus on the auto-safety problem, even going so far as to patent new designs for dashboards to better absorb shock. His efforts drew the attention of Chrysler, which started selling vehicles with his safety recommendations starting in the late 1930s, though seat belts—along with the interest of the rest of the industry—would only come later. Nils Bohlin, wearing his most important invention. The guy who invented an important seat belt design, but gave away his patent As a society, we often have strong opinions about the value of ownership, especially if we’ve invented something unique or novel—as highlighted in an epic New York Times story, from 2018, all about the unusual ownership situation around a specific type of bikini. But what happens when you invent something so novel, so fundamental that you’re better off just giving away the patent for the invention for free, because it would do the public significant harm to keep a tight leash on ownership? That was the situation Swedish inventor Nils Bohlin, an engineer for Volvo, faced when he came up with the three-point seat belt. If you’ve sat in the front seat of a vehicle sometime in the last 60 years, you’ve most assuredly seen this basic design, which not only secures your waist, but also your chest with a stretching belt mechanism that pulls out just as much slack as the passenger needs. The two-point seat belt, which went across your lap and is still found in the back seat of many modern vehicles today, was an important innovation, but it was imperfect—especially in seats that are independently adjustable, generally in the front seat of vehicles or the middle seat of minivans—and were known to cause internal injuries during car crashes. This guy is strapped in and ready to go. (Google Patents) Bohlin’s patent filing for the three-point seat belt, originally field in the U.S. in 1958 and granted in 1962, warns that even cars that have separate belts for hips and chests are susceptible to forces so dramatic during crashes that “the load-resisting and retaining properties of the belt are impaired to such an extent that the strapped person is not safely prevented from being thrown against the wind-shield or steering column.” Bohlin’s three-point seat belt, an attempt to simplify a more complicated four-point approach used in military settings, provided an important alternative, one that treated the belt as a single mechanism. As the filing explained: > The object of the present invention is to provide a safety belt which independently of the strength of the seat and its connection with the vehicle in an effective and physiologically favorable manner retains the upper as well as the lower part of the body of the strapped person against the action of substantially forwardly directed forces and which is easy to fasten and unfasten and even in other respects satisfies rigorous requirements. This seat belt design could have provided an important competitive advantage for Volvo, which was one of the few car companies at the time to have a chief safety engineer on staff—a situation that, according to History.com, came about as a result of a relative of Volvo’s then-CEO, Gunnar Engelau, dying in a car crash. Bohlin, who previously worked on safety mechanisms for fighter jets at the Swedish aerospace giant Saab, brought much of that thinking to Volvo’s cars. “It was just a matter of finding a solution that was simple, effective and could be put on conveniently with one hand,” Bohlin said of his design, according to a 2002 Times obituary. But it soon became clear that the patent would be more useful as an official standard that was mandated at a regulatory level by state and federal governments. For years, the automobile industry’s own handling of seat belts left a lot to be desired. Seat belts, 1949-1956, a 1979 report created at the behest of the National Highway Traffic Safety Administration, highlighted the fact that making car safety a matter of consumer choice led to wildly different results among manufacturers. In 1955, Ford tried to emphasize safety options in its vehicles, including the offering of seat belts, which was a novel option for vehicles at the time. The marketing campaign was spearheaded by Robert McNamara, a Ford executive who just a few years later saw his profile increase significantly as the U.S. Defense Secretary. But while Ford’s efforts at safety were legitimate and drove interest in the vehicles, the company was competing against General Motors, which made no effort to emphasize safety in its own vehicles at the time—instead focusing on more traditional concerns among car manufacturers, such as speed. In a marketing war, speed won out. Losing a sales battle, Ford soon backed off of the safety language in its marketing—though the report suggests this turned out to be a huge mistake: > Declining sales were the reason given by Ford executives for scrapping the safety campaign. The implicit rationale was that campaign was that safety hurt sales. But it is not at all clear that the safety responsible for Ford’s sagging sales. Instead of hurting sales, the safety campaign, according to some Ford Division officials, had helped in a bad sales year to sell about two hundred thousand more cars than expected. It had been an important fact, some Ford executives felt, in preventing a disastrous sales year. Ford’s decision, the report argued, proved hugely damaging for the automobile safety movement, leading to years of lost momentum—momentum that was only picked up after federal regulations were put into place. Volvo’s work, however, did not go unnoticed. A turning point for the three-point seat belt came in 1967, thanks to Bohlin, who published a report based on years of crash statistics involving Volvo’s three-point seat belt, and found that the belt prevented fatal injuries among passengers in vehicles involved in crashes below 60 miles per hour. The impact of the report encouraged the National Highway Safety Bureau, a just-formed predecessor agency to the modern National Highway Traffic Safety Administration, to push for the belt to not only be an important add-on for vehicles, but for the device to come standard in all vehicles—a key victory for the automobile safety movement, and one that put safety beyond the whims of marketing. Thanks to the astute timing of Bohlin and Volvo, the three-point seat belt became a part of the regulations enacted with the American National Traffic and Motor Vehicle Safety Act of 1966—soon replicated throughout the world—and became the way the public buckled itself in. Volvo realized that what it had was more important than royalties, and gave away its patented design to other manufacturers, free of charge, to build and improve upon. This move, over the past 60 years, has likely saved hundreds of millions of lives. Reflecting on the decision in a 2009 retrospective article, an Australian Volvo executive put the move as such: “The decision to release the three-point seat belt patent was visionary and in line with Volvo’s guiding principle of safety. It’s why we like to say there’s a little bit of Volvo in every car.” In a world where patents are often used as expensive weapons, Volvo’s decision is refreshing. But, more importantly than that, it’s life-saving. The seat belt is an important innovation that highlights the value of creating consistent standards for the common good. Sure, there have been plenty of different seat belt designs over the years—you’d be hard-pressed to find a button-press mechanism along the lines of the ones used on Chrome Industries bags in a modern-day vehicle—but for the most part, the ideas that drove Nils Bohlin survive to this day. Of course, there’s always room for innovation. A few years ago, Ford raised some eyebrows in the world of automotive news when a seat belt patent of theirs surfaced. The patent, for a heated seat belt, extends a more recent trend among vehicle makers to add temperature control to seating from the person’s backside to the person’s front side. This edgy teen is happy because their seat belt is heated. (Google Patents) The patent is lengthy, discussing the process of adding a heating mechanism to the webbing of a seat belt strap. But some were skeptical, such as CarBuzz’s John Tallodi, who noted the obvious technical problems of such a solution. “Now there may be some merit in this system, but being wrapped up in electricity should you be involved in an accident just doesn’t seem like a very good idea,” he wrote. “They also don’t mention what would happen if the seat belt frayed over time or if you were to accidentally spill some liquid on it while strapped in.” Something tells me that if they pull this off, though, they won’t be sharing this patent with their competitors. -- Find this one an interesting read? Share it with a pal! And thanks again to Nightfall for sponsoring over the last month. We were happy to have them. Share this post: follow on Twitter | privacy policy | advertise with us Copyright © 2015-2022 Tedium, all rights reserved. Disclosure: From time to time, we may use affiliate links in our content—but only when it makes sense. Promise. unsubscribe from this list | view email in browser | sent with Email Octopus [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjAxMDAwMTdmOWVmNWJjZjktYTIwODRl%0D%0ANzgtMWY0MS00YWRiLWE4MTYtN2MwNmRlMjEzZWQ5LTAwMDAwMEBlbWFpbC5hbWF6%0D%0Ab25zZXMuY29tO2dJRDoxNzI3Njc1MTEwMjM3MDk4NTQyOzEzMjM1NTE1MDY%3D) # The Breakroom • A blog for the Iconfactory [image:BF49AD98-4200-48BD-B06F-F8C129E67F2A-47350-00008EB1E2C1D40D/share-logo-512.png] [image:BA516FCB-27E6-4FA8-85FD-6B2C3FC41311-47350-00008EB1E2A868F2/InAppEvent-Christmas-Landscape.jpg] Another year has come to a close and it’s time to reflect on our accomplishments over the past fifty-two weeks. Spoiler alert: It’s a lot! The year 2021 was full of major milestones as we crafted a new and exciting chapter in the life of our very first game, celebrated 25 years in business, continued to serve our design clients, and launched a major release to one of our favorite productivity apps. ### *The Year of Frenzic* Frenzic’s long journey from the simple puzzle game in 2007 to this year’s exciting release of [Frenzic: Overtime on Apple Arcade](http://apple.co/-FrenzicOvertime) spanned a total of [14 years](https://blog.iconfactory.com/2007/02/introducing-frenzic-for-mac-os-x/). Efforts on Overtime actually began in March of 2020 as we worked from our homes during the pandemic, and culminated with the release in June of 2021. [image:4338FEA0-039E-4D9A-8DBE-C2CAA3663E82-47350-00008EB1E27A87BF/Frenzic-512.png] [Creating Frenzic: Overtime](https://twitter.com/gedeon/status/1405989348869349387) was a [labor of love](https://blog.iconfactory.com/2021/06/making-music-for-robots/) for [our](https://twitter.com/bigzaphod) [entire](https://twitter.com/piraino) [team](https://twitter.com/cherylcicha) and we were thrilled to bring this long-awaited sequel to life. The game combines fast-paced play with stunning visuals and sound to create a frenetic, fun experience for Apple Arcade players the world-over. This title on Apple Arcade was accompanied by super-cool swag like [collectible pins](https://cottonbureau.com/account#/products-v1/59269) and an amazing, original soundtrack available for streaming on [Apple Music](https://geo.music.apple.com/au/album/frenzic-overtime/1568221707?itsct=music_box_link&itscg=30200&at=10l4G7&ct=FRENZIC_SITE&ls=1&app=music) and [Spotify](https://open.spotify.com/album/0yOP6zlA5AlT49TXRkRCQ4). We followed up the initial release with /Frenzic’s/ [Test Lab Daily Challenge](https://blog.iconfactory.com/2021/10/the-test-lab-a-daily-frenzic-challenge/) in October. Players flex their fingers and compete to become the top bot each day, participating in unique challenges and special holiday events like Halloween and Christmas. If you just can’t get enough Frenzic, fear not! The bots are hard at work assembling the next chapter in the story and promise to deliver new puzzles, strategies, and fun for everyone in 2022. Stay tuned! ### *Silver Linings* June marked a major milestone in the form of our Silver Pixel Anniversary. The Iconfactory celebrated our [25th year in business](https://blog.iconfactory.com/2021/06/celebrating-our-silver-pixel-anniversary/) getting to do the things we love most – pushing pixels and creating apps. [image:34BF4635-46DA-4247-9B26-8475B5015149-47350-00008EB1E25468D0/Founders-Final-1500.jpg] The Iconfactory’s founders: Ged Maheux, Corey Marion, and Talos Tsui. When we think back to where it all started, [posting tiny 32×32 icons on AOL](http://files.iconfactory.net/archive/if1/), and how we grew over the past two and half decades, we have to pinch ourselves. Along the way we’ve had the honor of working alongside some of the most [talented](http://www.artissoftware.com) [developers](https://www.panic.com) and [designers](http://louie.world) in the [business](https://dlanham.com) and for that we are truly grateful. We’re also proud to have a small sample of our work included in [The iOS App Icon Book](https://www.appiconbook.com) coming next year from our friend Michael Flareup. It’s wonderful to be honored in print along with so many of our iconic peers, and we hope you’ll check it out. ### *At Long Last, Linea* We shipped updates to most of our apps during 2021, including a substantial [update to Twitterrific](https://blog.iconfactory.com/2021/05/twitterrific-whats-on-the-menu/), and measured improvements in [Tot](https://tot.rocks), [Triode](https://triode.app), and [others](https://iconfactoryapps.com). But Linea was our [biggest update](https://blog.iconfactory.com/2021/11/announcing-linea-sketch-4/) and our main focus in the second half of the year. [image:01D38151-9A80-4773-A682-E947A1FFF660-47350-00008EB1E21D8D01/LineaSketch40-Hero2.png] Linea Sketch 4 brought two major new features that users have been long requesting – support for text in the form of [Annotations](https://youtu.be/cJuBq6yyNrA), and a way to paint and sketch organically with Linea’s new [watercolor brush](https://youtu.be/UooFpCckCyQ). Customers enjoyed the app’s improvements and continued focus on simplicity that lets them spend their time where it matters most – sketching out ideas. Our [Linea YouTube channel](https://www.youtube.com/c/LineaSketch) grew by leaps and bounds in 2021, offering new [tutorials](https://www.youtube.com/playlist?list=PLZ_2v04o_NEAVlHvHVvWtwNj33QlUR0EO) as well as tips and tricks to get the most out of the app. If you’ve not subscribed head on over and mash that button! There are more great improvements coming in the months ahead, so be sure to follow [@Linea_App](https://twitter.com/linea_app) on Twitter for the latest news and sneak peeks. ### One More Thing Innovation at Apple has always [inspired us](https://www.flickr.com/photos/iconfactory/3254133728/). Even when it comes in the form of a notch on the latest MacBook Pros. As we close out the year, we’re happy to have a fun little app that is our gift to Mac users everywhere: [Notchmeister](https://apps.apple.com/us/app/notchmeister/id1599169747?mt=12). It follows the long tradition of software on the Mac whose only purpose it to make you smile. Like any gift, the less you know about it before downloading, the better! ### *Snug In Our Beds* [image:16E35A83-55AF-4314-9404-65030C5443ED-47350-00008EB1E1EE1830/Ollie-Tim-Cook.jpg] Twitterrific’s Ollie perched over Tim Cook’s shoulder during the WWDC 2021 Keynote. As we take our well-earned holiday break, it’s easy to lose track of all the things we achieved in 2021. We added over 80 new [wallpapers](https://twitter.com/BasicAppleGuy/status/1406283061843533827) for our [loyal Patreon subscribers](https://www.patreon.com/iconfactory/posts), crafted new and exciting icons, emoji, and interfaces for our [design clients](https://design.iconfactory.com), and even appeared in [Apple’s WWDC Keynote address](https://twitter.com/Iconfactory/status/1437863151127703566). Well, at least Ollie did :-) Who can say what the new year will hold for us or our [loyal customers](https://twitter.com/phabyo_/status/1460778433458454533) and [fans](https://twitter.com/exkclamation/status/1407439735862153216)? We can only strive to continue to create the kind of work you’ve known and loved for the [past 25 years](https://blog.iconfactory.com/wp-content/uploads/2016/06/IconfactoryPartners_2006.png). As always, new opportunities will arise, new challenges will present themselves, and hopefully we’ll all stay safe and thrive in 2022. We hope you’ll join us again next year. Happy holidays, everyone! [The Breakroom • A blog for the Iconfactory](https://blog.iconfactory.com/) # Apple Media Services Terms and Conditions From: "iTunes Store" To: uikeycommand@icloud.com Date: Mar 17, 2022 Subject: Apple Media Services Terms and Conditions iTunes Store TERMS OF SERVICE Apple Media Services Terms and Conditions These terms and conditions create a contract between you and Apple (the “Agreement”). Please read the Agreement carefully. To confirm your understanding and acceptance of the Agreement, click “Agree.” A. INTRODUCTION TO OUR SERVICES This Agreement governs your use of Apple’s Services (“Services” – e.g., and where available, App Store, Apple Arcade, Apple Books, Apple Fitness+, Apple Music, Apple News, Apple News+, Apple One, Apple Podcasts, Apple Podcast Subscriptions, Apple TV, Apple TV+, Apple TV Channels, Game Center, iTunes), through which you can buy, get, license, rent or subscribe to content, Apps (as defined below), and other in-app services (collectively, “Content”). Content may be offered through the Services by Apple or a third party. Our Services are available for your use in your country or territory of residence (“Home Country”). By creating an account for use of the Services in a particular country or territory you are specifying it as your Home Country. To use our Services, you need compatible hardware, software (latest version recommended and sometimes required) and Internet access (fees may apply). Our Services’ performance may be affected by these factors. B. USING OUR SERVICES PAYMENTS, TAXES, AND REFUNDS You can acquire Content on our Services for free or for a charge, either of which is referred to as a “Transaction.” Each Transaction is an electronic contract between you and Apple, and/or you and the entity providing the Content on our Services. However, if you are a customer of Apple Distribution International Ltd., Apple Distribution International Ltd. is the merchant of record for some Content you acquire from Apple Books, Apple Podcasts, or App Store as displayed on the product page and/or during the acquisition process for the relevant Service. In such case, you acquire the Content from Apple Distribution International Ltd., which is licensed by the Content provider (e.g., App Provider (as defined below), book publisher, etc.). When you make your first Transaction, we will ask you to choose how frequently we should ask for your password for future Transactions. If you enable Touch ID for Transactions, we will ask you to authenticate all Transactions with your fingerprint, and if you enable Face ID for Transactions, we will ask you to authenticate all Transactions using facial recognition. Manage your password settings at any time by following these instructions: https://support.apple.com/HT204030. Apple will charge your selected payment method (such as your credit card, debit card, gift card/code, or other method available in your Home Country) for any paid Transactions, including any applicable taxes. If you have also added it to your Apple Wallet, Apple may charge your selected payment method in Apple Wallet using Apple Pay. You can associate multiple payment methods with your Apple ID, and you agree that Apple may store and charge those payment methods for Transactions. Your primary payment method appears at the top of your account settings payments page. If your primary payment method cannot be charged for any reason (such as expiration or insufficient funds), you authorize Apple to attempt to charge your other eligible payment methods in order from top to bottom as they appear on your account settings payments page.  If we cannot charge you, you remain responsible for any uncollected amounts, and we may attempt to charge you again or request that you provide another payment method. If you pre-order Content, you will be charged when the Content is delivered to you (unless you cancel prior to the Content’s availability). In accordance with local law, Apple may automatically update your payment information regarding your payment methods if provided such information by the payment networks or your financial institutions. For more details about how Transactions are billed, please visit http://support.apple.com/HT201359. All Transactions are final. Content prices may change at any time. If technical problems prevent or unreasonably delay delivery of Content, your exclusive and sole remedy is either replacement of the Content or refund of the price paid, as determined by Apple. From time to time, Apple may suspend or cancel payment or refuse a refund request if we find evidence of fraud, abuse, or unlawful or other manipulative behavior that entitles Apple to a corresponding counterclaim. Terms related to store credit and gift cards/codes are available here: https://www.apple.com/legal/internet-services/itunes/giftcards/. ACCOUNT Using our Services and accessing your Content may require an Apple ID. An Apple ID is the account you use across Apple’s ecosystem. Use of Game Center is subject to this Agreement and also requires a Game Center account. Your account is valuable, and you are responsible for maintaining its confidentiality and security. Apple is not responsible for any losses arising from the unauthorized use of your account. Please contact Apple if you suspect that your account has been compromised. You must be age 13 (or equivalent minimum age in your Home Country, as set forth in the registration process) to create an account and use our Services. Apple IDs for persons under this age can be created by a parent or legal guardian using Family Sharing or by an approved educational institution. A parent or legal guardian who is creating an account for a child under the age of majority should review this Agreement with the child to ensure that they both understand it. You may add, notify, or remove a Legacy Contact for your Apple ID as described in http://support.apple.com/HT212360. A Legacy Contact’s access to your Apple ID is limited as described in http://support.apple.com/HT212361. PRIVACY Your use of our Services is subject to Apple’s Privacy Policy, which is available at https://www.apple.com/legal/privacy/. SERVICES AND CONTENT USAGE RULES Your use of the Services and Content must follow the rules set forth in this section (“Usage Rules”). Any other use of the Services and Content is a material breach of this Agreement. Apple may monitor your use of the Services and Content to ensure that you are following these Usage Rules. All Services: - You may use the Services and Content only for personal, noncommercial purposes (except as set forth in the App Store Content section below). - Apple’s delivery of Services or Content does not transfer any commercial or promotional use rights to you, and does not constitute a grant or waiver of any rights of the copyright owners. - You can use Content from up to five different Apple IDs on each device. - For any Service, you can have up to 10 devices (but only a maximum of 5 computers) signed in with your Apple ID at one time, though simultaneous streams or downloads of Content may be limited to a lower number of devices as set out below under Apple Music and Apple TV content. Each computer must also be authorized using the same Apple ID (to learn more about authorization of computers, visit https://support.apple.com/HT201251). Devices can be associated with a different Apple ID once every 90 days. - Manipulating play counts, downloads, ratings, or reviews via any means — such as (i) using a bot, script, or automated process; or (ii) providing or accepting any kind of compensation or incentive — is prohibited. - It is your responsibility not to lose, destroy, or damage Content once downloaded. We encourage you to back up your Content regularly. - You may not tamper with or circumvent any security technology included with the Services. - You may access our Services only using Apple’s software, and may not modify or use modified versions of such software. - Video Content requires an HDCP connection. Audio and Video Content Sales and Rentals: - You can use Digital Rights Management (DRM)-free Content on a reasonable number of compatible devices that you own or control. DRM-protected Content can be used on up to five computers and any number of devices that you sync to from those computers. - Content rentals are viewable on a single device at a time, and must be played within 30 days, and completed within 48 hours of the start of play (stopping, pausing or restarting does not extend this period). - You may burn an audio playlist of purchased music to disc for listening purposes up to seven times; this limitation does not apply to DRM-free Content. Other Content may not be burned to disc. - Purchased Content will generally remain available for you to download, redownload, or otherwise access from Apple. Though it is unlikely, subsequent to your purchase, Content may be removed from the Services (for instance, because the provider removed it) and become unavailable for further download or access from Apple. To ensure your ability to continue enjoying Content, we encourage you to download all purchased Content to a device in your possession and to back it up. App Store Content: - The term “Apps” includes apps and App Clips for any Apple platform and/or operating system, including any in-app purchases, extensions (such as keyboards), stickers, and subscriptions made available in such apps or App Clips. - Individuals acting on behalf of a commercial enterprise, governmental organization or educational institution (an “Enterprise”) may download and sync non-Arcade Apps for use by either (i) a single individual on one or more devices owned or controlled by an Enterprise; or (ii) multiple individuals on a single shared device owned or controlled by an Enterprise. For the sake of clarity, each device used serially or collectively by multiple users requires a separate license. Apple Music: - An Individual Apple Music membership allows you to stream on a single device at a time; a Family membership allows you or your Family members to stream on up to six devices at a time. Apple Arcade: - Apple Arcade Apps may only be downloaded, or redownloaded, with a valid Apple Arcade trial or subscription. - If your subscription ends, Apps downloaded via Apple Arcade will no longer be accessible to you. Apple TV Content: - For most channels, you can stream Content on up to three devices simultaneously. - Learn more about Apple TV Content Usage Rules at https://support.apple.com/HT210074. DOWNLOADS You may be limited in the amount of Content you may download, and some downloaded Content may expire after a given amount of time after downloaded or first played. Certain Content may not be available for download at all. You may be able to redownload previously acquired Content (“Redownload”) to your devices that are signed in with the same Apple ID (“Associated Devices”). You can see Content types available for Redownload in your Home Country at https://support.apple.com/HT204632. Content may not be available for Redownload if that Content is no longer offered on our Services. Content also may be removed from our Services at any time, after which it cannot be downloaded, redownloaded, or otherwise accessed from Apple. SUBSCRIPTIONS The Services and certain Apps may allow you to purchase access to Content or Services on a subscription basis (“Paid Subscriptions”). Paid Subscriptions automatically renew until cancelled in the Manage Subscriptions section of your account settings. To learn more about cancelling your subscriptions, visit https://support.apple.com/HT202039. We will notify you if the price of a Paid Subscription increases and, if required, seek your consent to continue. You will be charged no more than 24 hours prior to the start of the latest Paid Subscription period. If we cannot charge your payment method for any reason (such as expiration or insufficient funds), and you have not cancelled the Paid Subscription, you remain responsible for any uncollected amounts, and we will attempt to charge the payment method as you may update your payment method information. This may result in a change to the start of your next Paid Subscription period and may change the date on which you are billed for each period. We reserve the right to cancel your Paid Subscription if we are unable to successfully charge your payment method to renew your subscription. Certain Paid Subscriptions may offer a free trial prior to charging your payment method. If you decide to unsubscribe from a Paid Subscription before we start charging your payment method, cancel the subscription at least 24 hours before the free trial ends. If you start a free trial to a Paid Subscription offered by Apple as Content provider (an “Apple Paid Subscription”) and cancel before it ends, you cannot reactivate the free trial. Free trials or free offers to Apple Paid Subscriptions, excluding iCloud, cannot be combined with any free trials or offers of Apple One. If you are in a free trial or free offer for any Apple Paid Subscriptions, and you subscribe to Apple One, your free trial(s) or offer(s) will not be paused even if you have access to such Apple Paid Subscription(s) through your Apple One subscription. You acknowledge that your free trial or free offer may expire while you are a Paid Subscriber to Apple One, and Apple shall have no obligation to reinstate, reimburse, or otherwise compensate you for any part of such expired free trial or free offer. When your Paid Subscription to any Service or Content ends, you will lose access to any functionality or Content of that Service that requires a Paid Subscription. CONTENT AND SERVICE AVAILABILITY Terms found in this Agreement that relate to Services, Content types, features or functionality not available in your Home Country are not applicable to you unless and until they become available to you. To see the Content types available to you in your Home Country, go to the Services or visit https://support.apple.com/HT204411. Certain Services and Content available to you in your Home Country may not be available to you when traveling outside of your Home Country. THIRD-PARTY DEVICES AND EQUIPMENT You may not be able to use all features of the Services when accessing them on a non-Apple-branded device. Additionally, certain Services may require, direct, or suggest you use third-party equipment in some circumstances and/or for certain activities; such use is subject to the terms and conditions of such equipment and should be made in accordance with the applicable manufacturer’s instructions. By using the Services, you agree that Apple may automatically download and install minor updates to its software on third-party equipment from time to time. C. YOUR SUBMISSIONS TO OUR SERVICES Our Services may allow you to submit or post materials such as comments, ratings and reviews, pictures, videos, and podcasts (including associated metadata and artwork). Your use of such features must comply with the Submissions Guidelines below, which may be updated from time to time, and if we become aware of materials that violate our Submission Guidelines we will remove them. If you see materials that do not comply with the Submissions Guidelines, please use the Report a Concern feature. Except to the extent prohibited by law, you hereby grant Apple a worldwide, royalty-free, perpetual, nonexclusive license to use the materials you submit within the Services and related marketing, and Apple internal purposes. Apple may monitor and decide to remove or edit any submitted material. Submissions Guidelines: You may not use the Services to: - post any materials that (i) you do not have permission, right or license to use, or (ii) infringe on the rights of any third party; - post objectionable, offensive, unlawful, deceptive, inaccurate, or harmful content; - post personal, private or confidential information belonging to others; - request personal information from a minor; - impersonate or misrepresent your affiliation with another person, or entity; - post or transmit spam, including but not limited to unsolicited or unauthorized advertising, promotional materials, or informational announcements; - post, modify, or remove a rating or review in exchange for any kind of compensation or incentive; - post a dishonest, abusive, harmful, misleading, or bad-faith rating or review, or a rating or review that is irrelevant to the Content being reviewed; - plan or engage in any illegal, fraudulent, or manipulative activity. D. FAMILY SHARING The organizer of a Family (“Organizer”) must be 18 years or older and the parent or legal guardian of any Family member under age 13 or the equivalent minimum age in their Home Country (as set forth in the registration process). Apple devices are required for access to all of the Family Sharing features. Purchase Sharing: Family Sharing’s Purchase Sharing feature allows eligible Content to be shared among up to six members of a Family. The Organizer invites other members to participate, and agrees to pay for all Transactions initiated by Family members. The Organizer's eligible payment methods are used to pay for any Transaction initiated by a Family member (except when the Family member’s account has store credit, which is always used first). Family members are acting as agents for the Organizer when the Organizer’s eligible payment methods are used. The Organizer hereby agrees (1) to pay for such Transactions; (2) that Transactions initiated by Family members are authorized; and (3) Transactions will be charged to eligible payment methods in the manner indicated in Section B above. Organizers are responsible for complying with their payment method contracts, and assume all risk related to sharing access to their eligible payment methods with Family members. A receipt or invoice for any Family member Transaction is sent to the initiating Family member and the Organizer. Ask to Buy: Ask to Buy is a convenient feature that allows an Organizer to approve Transactions initiated by a Family member under age 18 (or the equivalent age of majority in your Home Country). The Organizer must be the parent or legal guardian of any Family member for whom Ask to Buy is activated. Content shared by Family members or acquired via content codes may not be subject to Ask to Buy. Family Member changes: When a Family member leaves or is removed from the Family, the remaining Family members may no longer be able to access the former member’s Content, including Content acquired with the Organizer’s payment method. Family Sharing Rules: You can only belong to one Family at a time, and may join any Family no more than twice per year. You can change the Apple ID you associate with a Family no more than once every 90 days. All Family members must share the same Home Country. Not all Content, including In-App Purchases, subscriptions, and some previously acquired Apps, are eligible for Purchase Sharing. Apple TV+, Apple TV Channels, Apple One Family, Apple One Premier, Apple Music Family, Apple Arcade, Apple News+, and Apple Fitness+ subscriptions are automatically enabled for Family Sharing. Subscriptions shared by a Family may be subject to Content usage limitations on a per subscription basis. E. PERSONALIZED RECOMMENDATION FEATURES The Services may recommend Content to you based on your downloads, purchases and other activities. You may opt out from receiving such personalized recommendations for some Services in your account settings. F. ADDITIONAL ITUNES STORE TERMS SEASON PASS AND MULTI-PASS A Pass allows you to purchase and receive television Content as it becomes available. A Season Pass applies to television Content that has a limited number of episodes per season; a Multi-Pass applies to television Content that is available on an ongoing basis. The full price of a Season Pass or Multi-Pass is charged at the time of the Transaction. Season Pass or Multi-Pass Content is available for download up to 90 days after the last episode becomes available. If automatic renewal is selected when you obtain a Multi-Pass, you will be charged the full price of each subsequent Multi-Pass cycle. You can turn off automatic renewal at least 24 hours prior to the beginning of the next Multi-Pass cycle in your account settings. If a Content provider delivers to Apple fewer TV episodes than planned when you purchased a Season Pass, we will credit to your Apple ID the retail value of the corresponding number of episodes that were not provided to Apple. G. ADDITIONAL APP STORE TERMS (EXCLUDING APPLE ARCADE APPS) LICENSE OF APP STORE CONTENT App licenses are provided to you by Apple or a third party developer (“App Provider”). If you are a customer of Apple Distribution International Ltd., the merchant of record is Apple Distribution International Ltd., which means that you acquire the App license from Apple Distribution International Ltd., but the App is licensed by the App Provider. An App licensed by Apple is an “Apple App;” an App licensed by an App Provider is a “Third Party App.” Apple acts as an agent for App Providers in providing the App Store and is not a party to the sales contract or user agreement between you and the App Provider. Any App that you acquire is governed by the Licensed Application End User License Agreement (“Standard EULA”) set forth below, unless Apple or the App Provider provides an overriding custom license agreement (“Custom EULA”). The App Provider of any Third Party App is solely responsible for its content, warranties, and claims that you may have related to the Third Party App. You acknowledge and agree that Apple is a third-party beneficiary of the Standard EULA or Custom EULA applicable to each Third Party App and may therefore enforce such agreement. Certain Apps, such as stickers and iMessage apps, may not appear on the device springboard but can be accessed and used in the Messages app drawer. IN-APP PURCHASES Apps may offer content, services or functionality for use within such Apps (“In-App Purchases”). In-App Purchases that are consumed during the use of the App (for example, virtual gems) cannot be transferred among devices and can be downloaded only once. You must authenticate your account before making In-App Purchases – separate from any authentication to obtain other Content – by entering your password or using Touch ID or Face ID. You will be able to make additional In-App Purchases for fifteen minutes without re-authenticating unless you’ve asked us to require a password for every purchase or have enabled Touch ID or Face ID. You can turn off the ability to make In-App Purchases by following these instructions: https://support.apple.com/HT201304. APP MAINTENANCE AND SUPPORT Apple is responsible for providing maintenance and support for Apple Apps only, or as required under applicable law. App Providers are responsible for providing maintenance and support for Third Party Apps. APP BUNDLES Some Apps may be sold together as a bundle (“App Bundle”). The price displayed with an App Bundle is the price you will be charged upon purchasing the App Bundle. The App Bundle price may be reduced to account for Apps you have already purchased or acquired, but may include a minimum charge to complete the App Bundle. LICENSED APPLICATION END USER LICENSE AGREEMENT Apps made available through the App Store are licensed, not sold, to you. Your license to each App is subject to your prior acceptance of either this Licensed Application End User License Agreement (“Standard EULA”), or a custom end user license agreement between you and the Application Provider (“Custom EULA”), if one is provided. Your license to any Apple App under this Standard EULA or Custom EULA is granted by Apple, and your license to any Third Party App under this Standard EULA or Custom EULA is granted by the Application Provider of that Third Party App. Any App that is subject to this Standard EULA is referred to herein as the “Licensed Application.” The Application Provider or Apple as applicable (“Licensor”) reserves all rights in and to the Licensed Application not expressly granted to you under this Standard EULA. a. Scope of License: Licensor grants to you a nontransferable license to use the Licensed Application on any Apple-branded products that you own or control and as permitted by the Usage Rules. The terms of this Standard EULA will govern any content, materials, or services accessible from or purchased within the Licensed Application as well as upgrades provided by Licensor that replace or supplement the original Licensed Application, unless such upgrade is accompanied by a Custom EULA. Except as provided in the Usage Rules, you may not distribute or make the Licensed Application available over a network where it could be used by multiple devices at the same time. You may not transfer, redistribute or sublicense the Licensed Application except as expressly permitted in this Agreement and, if you sell your Apple Device to a third party, you must remove the Licensed Application from the Apple Device before doing so. You may not copy (except as permitted by this license and the Usage Rules), reverse-engineer, disassemble, attempt to derive the source code of, modify, or create derivative works of the Licensed Application, any updates, or any part thereof (except as and only to the extent that any foregoing restriction is prohibited by applicable law or to the extent as may be permitted by the licensing terms governing use of any open-sourced components included with the Licensed Application). b. Consent to Use of Data: You agree that Licensor may collect and use technical data and related information—including but not limited to technical information about your device, system and application software, and peripherals—that is gathered periodically to facilitate the provision of software updates, product support, and other services to you (if any) related to the Licensed Application. Licensor may use this information, as long as it is in a form that does not personally identify you, to improve its products or to provide services or technologies to you. c. Termination. This Standard EULA is effective until terminated by you or Licensor. Your rights under this Standard EULA will terminate automatically if you fail to comply with any of its terms. d. External Services. The Licensed Application may enable access to Licensor’s and/or third-party services and websites (collectively and individually, "External Services"). You agree to use the External Services at your sole risk. Licensor is not responsible for examining or evaluating the content or accuracy of any third-party External Services, and shall not be liable for any such third-party External Services. Data displayed by any Licensed Application or External Service, including but not limited to financial, medical and location information, is for general informational purposes only and is not guaranteed by Licensor or its agents. You will not use the External Services in any manner that is inconsistent with the terms of this Standard EULA or that infringes the intellectual property rights of Licensor or any third party. You agree not to use the External Services to harass, abuse, stalk, threaten or defame any person or entity, and that Licensor is not responsible for any such use. External Services may not be available in all languages or in your Home Country, and may not be appropriate or available for use in any particular location. To the extent you choose to use such External Services, you are solely responsible for compliance with any applicable laws. Licensor reserves the right to change, suspend, remove, disable or impose access restrictions or limits on any External Services at any time without notice or liability to you. e. NO WARRANTY: YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT USE OF THE LICENSED APPLICATION IS AT YOUR SOLE RISK. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED APPLICATION AND ANY SERVICES PERFORMED OR PROVIDED BY THE LICENSED APPLICATION ARE PROVIDED "AS IS" AND “AS AVAILABLE,” WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND, AND LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS WITH RESPECT TO THE LICENSED APPLICATION AND ANY SERVICES, EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND OF NONINFRINGEMENT OF THIRD-PARTY RIGHTS. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY LICENSOR OR ITS AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SHOULD THE LICENSED APPLICATION OR SERVICES PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR LIMITATIONS ON APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO THE ABOVE EXCLUSION AND LIMITATIONS MAY NOT APPLY TO YOU. f. Limitation of Liability. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT SHALL LICENSOR BE LIABLE FOR PERSONAL INJURY OR ANY INCIDENTAL, SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, CORRUPTION OR LOSS OF DATA, FAILURE TO TRANSMIT OR RECEIVE ANY DATA (INCLUDING WITHOUT LIMITATION COURSE INSTRUCTIONS, ASSIGNMENTS AND MATERIALS), BUSINESS INTERRUPTION, OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR RELATED TO YOUR USE OF OR INABILITY TO USE THE LICENSED APPLICATION, HOWEVER CAUSED, REGARDLESS OF THE THEORY OF LIABILITY (CONTRACT, TORT, OR OTHERWISE) AND EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR PERSONAL INJURY, OR OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event shall Licensor’s total liability to you for all damages (other than as may be required by applicable law in cases involving personal injury) exceed the amount of two hundred and fifty dollars ($250.00). The foregoing limitations will apply even if the above stated remedy fails of its essential purpose. g. You may not use or otherwise export or re-export the Licensed Application except as authorized by United States law and the laws of the jurisdiction in which the Licensed Application was obtained. In particular, but without limitation, the Licensed Application may not be exported or re-exported (a) into any U.S.-embargoed countries or (b) to anyone on the U.S. Treasury Department's Specially Designated Nationals List or the U.S. Department of Commerce Denied Persons List or Entity List. By using the Licensed Application, you represent and warrant that you are not located in any such country or on any such list. You also agree that you will not use these products for any purposes prohibited by United States law, including, without limitation, the development, design, manufacture, or production of nuclear, missile, or chemical or biological weapons. h. U.S. Government End Users. The Licensed Application and related documentation are "Commercial Items", as that term is defined at 48 C.F.R. §2.101, consisting of "Commercial Computer Software" and "Commercial Computer Software Documentation", as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202, as applicable. Consistent with 48 C.F.R. §12.212 or 48 C.F.R. §227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights reserved under the copyright laws of the United States. i. Except to the extent expressly provided in the following paragraph, this Agreement and the relationship between you and Apple shall be governed by the laws of the State of California, excluding its conflicts of law provisions. You and Apple agree to submit to the personal and exclusive jurisdiction of the courts located within the county of Santa Clara, California, to resolve any dispute or claim arising from this Agreement. If (a) you are not a U.S. citizen; (b) you do not reside in the U.S.; (c) you are not accessing the Service from the U.S.; and (d) you are a citizen of one of the countries identified below, you hereby agree that any dispute or claim arising from this Agreement shall be governed by the applicable law set forth below, without regard to any conflict of law provisions, and you hereby irrevocably submit to the non-exclusive jurisdiction of the courts located in the state, province or country identified below whose law governs: If you are a citizen of any European Union country or the United Kingdom, Switzerland, Norway or Iceland, the governing law and forum shall be the laws and courts of your usual place of residence. Specifically excluded from application to this Agreement is that law known as the United Nations Convention on the International Sale of Goods. H. ADDITIONAL TERMS FOR CERTAIN CONTENT ACQUIRED FROM THIRD PARTIES Some Content available in Apple Books, App Store, and Apple Podcasts (including Apple Podcast Subscriptions) are acquired by You from the third-party provider of such Content (as displayed on the product page and/or during the acquisition process for the relevant Content), not Apple. For example, Apple Books Content is acquired from book publishers, not Apple. In such case, Apple acts as an agent for the Content provider in providing the Content to you, and therefore Apple is not a party to the Transaction between you and the Content provider. However, if you are a customer of Apple Distribution International Ltd., Apple Distribution International Ltd. is the merchant of record for the Content you acquire, but such Content is licensed by the Content provider. The Content provider reserves the right to enforce the terms of use relating to such Content. The Content provider is solely responsible for such Content, any warranties to the extent that such warranties have not been disclaimed, and any claims that you or any other party may have relating to such Content. I. ADDITIONAL APPLE MUSIC TERMS iCloud Music Library is an Apple Music feature that allows you to access your matched or uploaded songs, playlists and music videos acquired from Apple Music, the iTunes Store or another source (“iCloud Music Library Content”) on your Apple Music-enabled devices. iCloud Music Library is turned on automatically when you set up your Apple Music membership. iCloud Music Library collects information about your iCloud Music Library Content. This information is associated with your Apple ID, and compared to iCloud Music Library Content currently available on Apple Music. iCloud Music Library Content that is not matched is uploaded to Apple’s iCloud Music Library servers (in a format determined by Apple). You can upload up to 100,000 songs. Songs acquired from the iTunes Store do not count against this limit. Songs that do not meet certain criteria (for example, excessively large files) or that are not authorized for your device are not eligible for iCloud Music Library. When you use iCloud Music Library, Apple logs information such as the tracks you play, stop or skip, the devices you use, and the time and duration of playback. You agree to use iCloud Music Library only for lawfully acquired content. iCloud Music Library is provided on an “AS IS” basis and could contain errors or inaccuracies. You should back up your data and information prior to using iCloud Music Library. If you are not an Apple Music member, you may purchase an iTunes Match subscription, which uses iCloud Music Library. When your Apple Music membership ends, you will lose access to your iCloud Music Library, including iCloud Music Library Content that is uploaded to iCloud Music Library servers. J. ADDITIONAL APPLE FITNESS+ TERMS Apple Fitness+ is for entertainment and/or informational purposes only and is not intended to provide any medical advice. You should always seek the advice of an appropriately qualified healthcare professional regarding (a) the safety and advisability of any given activity, or (b) any specific medical condition or symptoms. K. CARRIER MEMBERSHIP Where available, you may be offered to purchase a Service membership from your wireless carrier (a “Carrier Membership”). If you purchase a Carrier Membership, your carrier is the merchant of record, which means that you acquire the Service license from your carrier, which will bill you for the cost of your Service membership, but the Service is licensed and provided by Apple. Your purchase relationship with the carrier is governed by the carrier’s terms and conditions, not this Agreement, and any billing disputes related to a Carrier Membership must be directed to your carrier, not Apple. By using a Service through a Carrier Membership, you agree that your carrier may exchange your carrier account information, telephone number and subscription information with Apple, and that Apple may use this information to determine the status of your Carrier Membership. L. MISCELLANEOUS TERMS APPLICABLE TO ALL SERVICES DEFINITION OF APPLE Depending on your Home Country, “Apple” means: Apple Inc., located at One Apple Park Way, Cupertino, California, for users in the United States, including Puerto Rico; Apple Canada Inc., located at 120 Bremner Blvd., Suite 1600, Toronto ON M5J 0A8, Canada for users in Canada; Apple Services LATAM LLC, located at 1 Alhambra Plaza, Ste 700 Coral Gables, Florida, for users in Mexico, Central or South America, or any Caribbean country or territory (excluding Puerto Rico); iTunes K.K., located at Roppongi Hills, 6-10-1 Roppongi, Minato-ku, Tokyo 106-6140, Tokyo for users in Japan; Apple Pty Limited, located at Level 3, 20 Martin Place, Sydney NSW 2000, Australia, for users in Australia or New Zealand, including in any of their territories or affiliated jurisdictions; and Apple Distribution International Ltd., located at Hollyhill Industrial Estate, Hollyhill, Cork, Republic of Ireland, for all other users. CONTRACT CHANGES Apple reserves the right at any time to modify this Agreement and to add new or additional terms or conditions on your use of the Services. Such modifications and additional terms and conditions will be effective immediately and incorporated into this Agreement. Your continued use of the Services will be deemed acceptance thereof. THIRD-PARTY MATERIALS Apple is not responsible or liable for third party materials included within or linked from the Content or the Services. INTELLECTUAL PROPERTY You agree that the Services, including but not limited to Content, graphics, user interface, audio clips, video clips, editorial content, and the scripts and software used to implement the Services, contain proprietary information and material that is owned by Apple and/or its licensors, and is protected by applicable intellectual property and other laws, including but not limited to copyright. You agree that you will not use such proprietary information or materials in any way whatsoever except for use of the Services for personal, noncommercial uses in compliance with this Agreement. No portion of the Content or Services may be transferred or reproduced in any form or by any means, except as expressly permitted by this Agreement. You agree not to modify, rent, loan, sell, share, or distribute the Services or Content in any manner, and you shall not exploit the Services in any manner not expressly authorized. The Apple name, the Apple logo, iTunes, iTunes Store, App Store, Apple Books, Apple Music, Apple TV, Apple TV+, Apple Arcade, Apple News, Apple News+, Apple One, Apple Podcasts, Apple Fitness+, and other Apple trademarks, service marks, graphics, and logos used in connection with the Services are trademarks or registered trademarks of Apple in the U.S. and other countries throughout the world. You are granted no right or license with respect to any of the aforesaid trademarks. COPYRIGHT Unless otherwise noted, Services and Content provided by Apple are copyrights of Apple Inc. and its subsidiaries. If you believe that any Content available through the Services infringe a copyright claimed by you, please contact Apple at the following locations: - Third Party Apps: https://www.apple.com/legal/internet-services/itunes/appstorenotices/ - Apple Books: https://www.apple.com/legal/internet-services/itunes/applebooksnotices/ - Apple TV+ and Apple Fitness+: https://www.apple.com/legal/internet-services/itunes/appletvplusnotices/ - Apple News: https://www.apple.com/legal/internet-services/itunes/applenewsnotices/ - All other Services (including but not limited to iTunes Store, Apple Music, and Apple Podcasts): https://www.apple.com/legal/internet-services/itunes/itunesstorenotices/ TERMINATION AND SUSPENSION OF SERVICES If you fail, or Apple suspects that you have failed, to comply with any of the provisions of this Agreement, Apple may, without notice to you: (i) terminate this Agreement and/or your Apple ID, and you will remain liable for all amounts due under your Apple ID up to and including the date of termination; and/or (ii) terminate your license to the software; and/or (iii) preclude your access to the Services. Apple further reserves the right to modify, suspend, or discontinue the Services (or any part or Content thereof) at any time with or without notice to you, and Apple will not be liable to you or to any third party should it exercise such rights. DISCLAIMER OF WARRANTIES; LIABILITY LIMITATION APPLE DOES NOT GUARANTEE, REPRESENT, OR WARRANT THAT YOUR USE OF THE SERVICES WILL BE UNINTERRUPTED OR ERROR-FREE, AND YOU AGREE THAT FROM TIME TO TIME APPLE MAY REMOVE THE SERVICES FOR INDEFINITE PERIODS OF TIME, CANCEL THE SERVICES AT ANY TIME, OR OTHERWISE LIMIT OR DISABLE YOUR ACCESS TO THE SERVICES WITHOUT NOTICE TO YOU. YOU EXPRESSLY AGREE THAT YOUR USE OF, OR INABILITY TO USE, OR ACTIVITY IN CONNECTION WITH THE SERVICES IS AT YOUR SOLE RISK. THE SERVICES AND ALL CONTENT DELIVERED TO YOU THROUGH THE SERVICES ARE (EXCEPT AS EXPRESSLY STATED BY APPLE) PROVIDED "AS IS" AND "AS AVAILABLE" FOR YOUR USE, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NONINFRINGEMENT. BECAUSE SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, THE ABOVE EXCLUSION OF IMPLIED WARRANTIES MAY NOT APPLY TO YOU. YOU AGREE THAT UNLESS REQUIRED BY APPLICABLE LAW, APPLE HAS NO RESPONSIBILITY TO CONTINUE MAKING CONTENT AVAILABLE TO YOU THROUGH OUR SERVICES, AND APPLE WILL NOT BE LIABLE TO YOU IF CONTENT, INCLUDING PURCHASED CONTENT, BECOMES UNAVAILABLE FOR DOWNLOAD OR STREAMING. IN NO CASE SHALL APPLE, ITS DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES, AGENTS, CONTRACTORS, OR LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, PUNITIVE, SPECIAL, OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OF ANY OF THE SERVICES OR FOR ANY OTHER CLAIM RELATED IN ANY WAY TO YOUR USE OF THE SERVICES AND/OR CONTENT, INCLUDING, BUT NOT LIMITED TO, ANY ERRORS OR OMISSIONS IN ANY CONTENT, OR ANY INJURY, LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SERVICES, EVEN IF ADVISED OF THEIR POSSIBILITY. BECAUSE SOME COUNTRIES, STATES OR JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR THE LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, IN SUCH COUNTRIES, STATES OR JURISDICTIONS, APPLE'S LIABILITY SHALL BE LIMITED TO THE EXTENT SUCH LIMITATION IS PERMITTED BY LAW. APPLE SHALL USE REASONABLE EFFORTS TO PROTECT INFORMATION SUBMITTED BY YOU IN CONNECTION WITH THE SERVICES, BUT YOU AGREE THAT YOUR SUBMISSION OF SUCH INFORMATION IS AT YOUR SOLE RISK, AND YOU HEREBY RELEASE APPLE FROM ANY AND ALL LIABILITY TO YOU FOR ANY LOSS OR LIABILITY RELATING TO SUCH INFORMATION IN ANY WAY. APPLE DOES NOT REPRESENT OR GUARANTEE THAT THE SERVICES WILL BE FREE FROM LOSS, CORRUPTION, ATTACK, VIRUSES, INTERFERENCE, HACKING, OR OTHER SECURITY INTRUSION, AND YOU HEREBY RELEASE APPLE FROM ANY LIABILITY RELATING THERETO. YOU SHALL BE RESPONSIBLE FOR BACKING UP YOUR OWN SYSTEM, INCLUDING ANY CONTENT ACQUIRED OR RENTED THROUGH THE SERVICES. APPLE IS NOT RESPONSIBLE FOR DATA CHARGES YOU MAY INCUR IN CONNECTION WITH YOUR USE OF THE SERVICES. WAIVER AND INDEMNITY BY USING THE SERVICES, YOU AGREE, TO THE EXTENT PERMITTED BY LAW, TO INDEMNIFY AND HOLD APPLE, ITS DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES, AGENTS, CONTRACTORS, AND LICENSORS HARMLESS WITH RESPECT TO ANY CLAIMS ARISING OUT OF YOUR BREACH OF THIS AGREEMENT, YOUR USE OF THE SERVICES, OR ANY ACTION TAKEN BY APPLE AS PART OF ITS INVESTIGATION OF A SUSPECTED VIOLATION OF THIS AGREEMENT OR AS A RESULT OF ITS FINDING OR DECISION THAT A VIOLATION OF THIS AGREEMENT HAS OCCURRED. YOU AGREE THAT YOU SHALL NOT SUE OR RECOVER ANY DAMAGES FROM APPLE, ITS DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES, AGENTS, CONTRACTORS, AND LICENSORS AS A RESULT OF ITS DECISION TO REMOVE OR REFUSE TO PROCESS ANY INFORMATION OR CONTENT, TO WARN YOU, TO SUSPEND OR TERMINATE YOUR ACCESS TO THE SERVICES, OR TO TAKE ANY OTHER ACTION DURING THE INVESTIGATION OF A SUSPECTED VIOLATION OR AS A RESULT OF APPLE'S CONCLUSION THAT A VIOLATION OF THIS AGREEMENT HAS OCCURRED. THIS WAIVER AND INDEMNITY PROVISION APPLIES TO ALL VIOLATIONS DESCRIBED IN OR CONTEMPLATED BY THIS AGREEMENT. STATUTORY EXCEPTIONS FOR PUBLIC INSTITUTIONS If you are a qualified public educational or government institution and any part of this Agreement, such as, by way of example, all or part of the indemnification section, is invalid or unenforceable against you because of applicable local, national, state or federal law, then that portion shall be deemed invalid or unenforceable, as the case may be, and instead construed in a manner most consistent with applicable governing law. GOVERNING LAW Except to the extent expressly provided in the following paragraph, this Agreement and the relationship between you and Apple, and all Transactions on the Services shall be governed by the laws of the State of California, excluding its conflicts of law provisions. You and Apple agree to submit to the personal and exclusive jurisdiction of the courts located within the county of Santa Clara, California, to resolve any dispute or claim arising from this Agreement. If (a) you are not a U.S. citizen; (b) you do not reside in the U.S.; (c) you are not accessing the Service from the U.S.; and (d) you are a citizen of one of the countries identified below, you hereby agree that any dispute or claim arising from this Agreement shall be governed by the applicable law set forth below, without regard to any conflict of law provisions, and you hereby irrevocably submit to the non-exclusive jurisdiction of the courts located in the state, province or country identified below whose law governs: If you are a citizen of any European Union country or the United Kingdom, Switzerland, Norway or Iceland, the governing law and forum shall be the laws and courts of your usual place of residence. Specifically excluded from application to this Agreement is that law known as the United Nations Convention on the International Sale of Goods. OTHER PROVISIONS This Agreement constitutes the entire agreement between you and Apple and governs your use of the Services, superseding any prior agreements with respect to the same subject matter between you and Apple. You also may be subject to additional terms and conditions that may apply when you use affiliate services, third-party content, third-party software, or additional services such as the Volume Purchase Program. If any part of this Agreement is held invalid or unenforceable, that portion shall be construed in a manner consistent with applicable law to reflect, as nearly as possible, the original intentions of the parties, and the remaining portions shall remain in full force and effect. Apple's failure to enforce any right or provisions in this Agreement will not constitute a waiver of such or any other provision. Apple will not be responsible for failures to fulfill any obligations due to causes beyond its control. You agree to comply with all local, state, federal, and national laws, statutes, ordinances, and regulations that apply to your use of the Services. Your use of the Services may also be subject to other laws. Risk of loss for all electronically delivered Transactions pass to the acquirer upon electronic transmission to the recipient. No Apple employee or agent has the authority to vary this Agreement. Apple may notify you with respect to the Services by sending an email message to your email address or a letter via postal mail to your mailing address, or by a posting on the Services. Notices shall become effective immediately. Apple may also contact you by email or push notification to send you additional information about the Services. You hereby grant Apple the right to take steps Apple believes are reasonably necessary or appropriate to enforce and/or verify compliance with any part of this Agreement. You agree that Apple has the right, without liability to you, to disclose any data and/or information to law enforcement authorities, government officials, and/or a third party, as Apple believes is reasonably necessary or appropriate to enforce and/or verify compliance with any part of this Agreement (including but not limited to Apple's right to cooperate with any legal process relating to your use of the Services and/or Content, and/or a third-party claim that your use of the Services and/or Content is unlawful and/or infringes such third party's rights). Last Updated: September 20, 2021 [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjU0MTY1MTY5LjE3NjQxMTI5%0D%0AMS4xNjQ3NTMxODc3NzE3QGVtYWlsLmFwcGxlLmNvbTsyMjA4MDEyMDM1) # userland: a book about the command line for humans In the fall of 2013, [thinking about](https://p1k3.com/2013/8/4) text utilities got me thinking in turn about how my writing habits depend on the Linux command line. This seems like a good hook for explaining some tools I use every day, so now I’m writing a short, haphazard book. This isn’t a book about system administration, writing complex software, or becoming a wizard. I am not a wizard, and I don’t subscribe to the idea that wizardry is required to use these tools. In fact, I barely know what I’m doing most of the time. I still get some stuff done. This is a work in progress. It probably gets some stuff wrong. – bpb / [p1k3](https://p1k3.com) / [@brennen](https://twitter.com/brennen) ## [#](https://p1k3.com/userland-book/#get-you-a-shell) 0. get you a shell You don’t have to have a shell at hand to get something out of this book. Still, as with most practical subjects, you’ll learn more if you try things out as you go. You shouldn’t feel guilty about skipping this section. It will always be here later if you need it. Not so long ago, it was common for schools and ISPs to hand out shell accounts on big shared systems. People learned the command line as a side effect of reading their e-mail. That doesn’t happen as often now, but in the meanwhile computers have become relatively cheap and free software is abundant. If you’re reading this on the web, you can probably get access to a shell. Some options follow. ## [#](https://p1k3.com/userland-book/#get-an-account-on-a-social-unix-server) get an account on a social unix server Check out [tilde.town](https://tilde.town/): > tilde.town is an intentional digital community for making art, socializing, and learning. Unlike many online spaces, users interact with tilde.town through a direct connection instead of a web site. This means using a tool called ssh and other text based tools. ## [#](https://p1k3.com/userland-book/#use-a-raspberry-pi-or-beaglebone) use a raspberry pi or beaglebone Do you have a single-board computer laying around? Perfect. If you already run the standard Raspbian, Debian on a BeagleBone, or a similar-enough Linux, you don’t need much else. I wrote most of this text on a Raspberry Pi, and the example commands should all work there. ## [#](https://p1k3.com/userland-book/#use-a-virtual-machine) use a virtual machine A few options: ## [#](https://p1k3.com/userland-book/#the-command-line-as-literary-environment) 1. the command line as literary environment There’re a lot of ways to structure an introduction to the command line. I’m going to start with writing as a point of departure because, aside from web development, it’s what I use a computer for most. I want to shine a light on the humane potential of ideas that are usually understood as nerd trivia. Computers have utterly transformed the practice of writing within the space of my lifetime, but it seems to me that writers as a class miss out on many of the software tools and patterns taken as a given in more “technical” fields. Writing, particularly writing of any real scope or complexity, is very much a technical task. It makes demands, both physical and psychological, of its practitioners. As with woodworkers, graphic artists, and farmers, writers exhibit strong preferences in their tools, materials, and environment, and they do so because they’re engaged in a physically and cognitively challenging task. My thesis is that the modern Linux command line is a pretty good environment for working with English prose and prosody, and that maybe this will illuminate the ways it could be useful in your own work with a computer, whatever that work happens to be. ## [#](https://p1k3.com/userland-book/#terms-and-definitions) terms and definitions What software are we actually talking about when we say “the command line”? For the purposes of this discussion, we’re talking about an environment built on a very old paradigm called Unix. [image:DBEB4F81-F278-4D2E-8BA1-402F9C540174-1775-000000291B5E9ABB/jp_unix.jpg] …except what classical Unix really looks like is this: [image:D00AA66C-D151-41F5-A493-F425E1F1C5AF-1775-000000291B5DB989/blinking.gif] The Unix-like environment we’re going to use isn’t very classical, really. It’s an operating system kernel called Linux, combined with a bunch of things written by other people (people in the GNU and Debian projects, and many others). Purists will tell you that this isn’t properly Unix at all. In strict historical terms they’re right, or at least a certain kind of right, but for the purposes of my cultural agenda I’m going to ignore them right now. [image:52CEAB68-6C80-496D-81D1-15179E421583-1775-000000291B5CCDBC/debian.png] This is what’s called a shell. There are many different shells, but they pretty much all operate on the same idea: You navigate a filesystem and run programs by typing commands. Commands can be combined in various ways to make programs of their own, and in fact the way you use the computer is often just to write little programs that invoke other programs, turtles-all-the-way-down style. The standard shell these days is something called Bash, so we’ll use Bash. It’s what you’ll most often see in the wild. Like most shells, Bash is ugly and stupid in more ways than it is possible to easily summarize. It’s also an incredibly powerful and expressive piece of software. ## [#](https://p1k3.com/userland-book/#twisty-little-passages) twisty little passages Have you ever played a text-based adventure game or MUD, of the kind that describes a setting and takes commands for movement and so on? Readers of a certain age and temperament might recognize the opening of Crowther & Woods' /Adventure/, the great-granddaddy of text adventure games: ``` YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING. AROUND YOU IS A FOREST. A SMALL STREAM FLOWS OUT OF THE BUILDING ANd DOWN A GULLY. > GO EAST YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING. THERE ARE SOME KEYS ON THE GROUND HERE. THERE IS A SHINY BRASS LAMP NEARBY. THERE IS FOOD HERE. THERE IS A BOTTLE OF WATER HERE. ``` You can think of the shell as a kind of environment you inhabit, in much the way your character inhabits an adventure game. The difference is that instead of navigating around virtual rooms and hallways with commands like `LOOK` and `EAST`, you navigate between directories by typing commands like `ls` and `cd notes`: ``` $ ls code Downloads notes p1k3 photos scraps userland-book $ cd notes $ ls notes.txt sparkfun TODO.txt ``` `ls` lists files. Some files are directories, which means they can contain other files, and you can step inside of them by typing `cd` (for *c* hange *d* irectory). In the Macintosh and Windows world, directories have been called “folders” for a long time now. This isn’t the /worst/ metaphor for what’s going on, and it’s so pervasive by now that it’s not worth fighting about. It’s also not exactly a /great/ metaphor, since computer filesystems aren’t built very much like the filing cabinets of yore. A directory acts a lot like a container of some sort, but it’s an infinitely expandable one which may contain nested sub-spaces much larger than itself. Directories are frequently like the TARDIS: Bigger on the inside. ## [#](https://p1k3.com/userland-book/#cat) cat When you’re in the shell, you have many tools at your disposal - programs that can be used on many different files, or chained together with other programs. They tend to have weird, cryptic names, but a lot of them do very simple things. Tasks that might be a menu item in a big program like Word, like counting the number of words in a document or finding a particular phrase, are often programs unto themselves. We’ll start with something even more basic than that. Suppose you have some files, and you’re curious what’s in them. For example, suppose you’ve got a list of authors you’re planning to reference, and you just want to check its contents real quick-like. This is where our friend `cat` comes in: ``` $ cat authors_sff Ursula K. Le Guin Jo Walton Pat Cadigan John Ronald Reuel Tolkien Vanessa Veselka James Tiptree, Jr. John Brunner ``` “Why,” you might be asking, “is the command to dump out the contents of a file to a screen called `cat`? What do felines have to do with anything?” It turns out that `cat` is actually short for “catenate”, which is a long word basically meaning “stick things together”. In programming, we usually refer to sticking two bits of text together as “string concatenation”, probably because programmers like to feel like they’re being very precise about very simple actions. Suppose you wanted to see the contents of a /set/ of author lists: ``` $ cat authors_sff authors_contemporary_fic authors_nat_hist Ursula K. Le Guin Jo Walton Pat Cadigan John Ronald Reuel Tolkien Vanessa Veselka James Tiptree, Jr. John Brunner Eden Robinson Vanessa Veselka Miriam Toews Gwendolyn L. Waring ``` ## [#](https://p1k3.com/userland-book/#wildcards) wildcards We’re working with three filenames: `authors_sff`, `authors_contemporary_fic`, and `authors_nat_hist`. That’s an awful lot of typing every time we want to do something to all three files. Fortunately, our shell offers a shorthand for “all the files that start with `authors_` ”: ``` $ cat authors_* Eden Robinson Vanessa Veselka Miriam Toews Gwendolyn L. Waring Ursula K. Le Guin Jo Walton Pat Cadigan John Ronald Reuel Tolkien Vanessa Veselka James Tiptree, Jr. John Brunner ``` In Bash-land, `*` basically means “anything”, and is known in the vernacular, somewhat poetically, as a “wildcard”. You should always be careful with wildcards, especially if you’re doing anything destructive. They can and will surprise the unwary. Still, once you’re used to the idea, they will save you a lot of RSI. ## [#](https://p1k3.com/userland-book/#sort) sort There’s a problem here. Our author list is out of order, and thus confusing to reference. Fortunately, since one of the most basic things you can do to a list is to sort it, someone else has already solved this problem for us. Here’s a command that will give us some organization: ``` $ sort authors_* Eden Robinson Gwendolyn L. Waring James Tiptree, Jr. John Brunner John Ronald Reuel Tolkien Jo Walton Miriam Toews Pat Cadigan Ursula K. Le Guin Vanessa Veselka Vanessa Veselka ``` Does it bother you that they aren’t sorted by last name? Me too. As a partial solution, we can ask `sort` to use the second “field” in each line as its sort *k* ey (by default, sort treats whitespace as a division between fields): ``` $ sort -k2 authors_* John Brunner Pat Cadigan Ursula K. Le Guin Gwendolyn L. Waring Eden Robinson John Ronald Reuel Tolkien James Tiptree, Jr. Miriam Toews Vanessa Veselka Vanessa Veselka Jo Walton ``` That’s closer, right? It sorted on “Cadigan” and “Veselka” instead of “Pat” and “Vanessa”. (Of course, it’s still far from perfect, because the second field in each line isn’t necessarily the person’s last name.) ## [#](https://p1k3.com/userland-book/#options) options Above, when we wanted to ask `sort` to behave differently, we gave it what is known as an option. Most programs with command-line interfaces will allow their behavior to be changed by adding various options. Options usually (but not always!) look like `-o` or `--option`. For example, if we wanted to see just the unique lines, irrespective of case, for a file called colors: ``` $ cat colors RED blue red BLUE Green green GREEN ``` We could write this: ``` $ sort -uf colors blue Green RED ``` Here `-u` stands for *u* nique and `-f` stands for *f* old case, which means to treat upper- and lower-case letters as the same for comparison purposes. You’ll often see a group of short options following the `-` like this. ## [#](https://p1k3.com/userland-book/#uniq) uniq Did you notice how Vanessa Veselka shows up twice in our list of authors? That’s useful if we want to remember that she’s in more than one category, but it’s redundant if we’re just worried about membership in the overall set of authors. We can make sure our list doesn’t contain repeating lines by using `sort`, just like with that list of colors: ``` $ sort -u -k2 authors_* John Brunner Pat Cadigan Ursula K. Le Guin Gwendolyn L. Waring Eden Robinson John Ronald Reuel Tolkien James Tiptree, Jr. Miriam Toews Vanessa Veselka Jo Walton ``` But there’s another approach to this — `sort` is good at only displaying a line once, but suppose we wanted to see a count of how many different lists an author shows up on? `sort` doesn’t do that, but a command called `uniq` does, if you give it the option `-c` for *c* ount. `uniq` moves through the lines in its input, and if it sees a line more than once in sequence, it will only print that line once. If you have a bunch of files and you just want to see the unique lines across all of those files, you probably need to run them through `sort` first. How do you do that? ``` $ sort authors_* | uniq -c 1 Eden Robinson 1 Gwendolyn L. Waring 1 James Tiptree, Jr. 1 John Brunner 1 John Ronald Reuel Tolkien 1 Jo Walton 1 Miriam Toews 1 Pat Cadigan 1 Ursula K. Le Guin 2 Vanessa Veselka ``` ## [#](https://p1k3.com/userland-book/#standard-IO) standard IO The `|` is called a “pipe”. In the command above, it tells your shell that instead of printing the output of `sort authors_*` right to your terminal, it should send it to `uniq -c`. [image:B9F2E266-2375-4609-8CE7-8A70A765EA75-1775-000000291B5BEC93/pipe.gif] Pipes are some of the most important magic in the shell. When the people who built Unix in the first place give interviews about the stuff they remember from the early days, a lot of them reminisce about the invention of pipes and all of the new stuff it immediately made possible. Pipes help you control a thing called “standard IO”. In the world of the command line, programs take *i* nput and produce *o* utput. A pipe is a way to hook the output from one program to the input of another. Unlike a lot of the weirdly named things you’ll encounter in software, the metaphor here is obvious and makes pretty good sense. It even kind of looks like a physical pipe. What if, instead of sending the output of one program to the input of another, you’d like to store it in a file for later use? Check it out: ``` $ sort authors_* | uniq > ./all_authors ``` ``` $ cat all_authors Eden Robinson Gwendolyn L. Waring James Tiptree, Jr. John Brunner John Ronald Reuel Tolkien Jo Walton Miriam Toews Pat Cadigan Ursula K. Le Guin Vanessa Veselka ``` I like to think of the `>` as looking like a little funnel. It can be dangerous — you should always make sure that you’re not going to clobber an existing file you actually want to keep. If you want to tack more stuff on to the end of an existing file, you can use `>>` instead. To test that, let’s use `echo`, which prints out whatever string you give it on a line by itself: ``` $ echo 'hello' > hello_world ``` ``` $ echo 'world' >> hello_world ``` ``` $ cat hello_world hello world ``` You can also take a file and pull it directly back into the input of a given program, which is a bit like a funnel going the other direction: ``` $ nl < all_authors 1 Eden Robinson 2 Gwendolyn L. Waring 3 James Tiptree, Jr. 4 John Brunner 5 John Ronald Reuel Tolkien 6 Jo Walton 7 Miriam Toews 8 Pat Cadigan 9 Ursula K. Le Guin 10 Vanessa Veselka ``` `nl` is just a way to *n* umber *l* ines. This command accomplishes pretty much the same thing as `cat all_authors | nl`, or `nl all_authors`. You won’t see it used as often as `|` and `>`, since most utilities can read files on their own, but it can save you typing `cat` quite as often. We’ll use these features liberally from here on out. ## [#](https://p1k3.com/userland-book/#code-help-code-and-man-pages) `--help` and man pages You can change the behavior of most tools by giving them different options. This is all well and good if you already know what options are available, but what if you don’t? Often, you can ask the tool itself: ``` $ sort --help Usage: sort [OPTION]... [FILE]... or: sort [OPTION]... --files0-from=F Write sorted concatenation of all FILE(s) to standard output. Mandatory arguments to long options are mandatory for short options too. Ordering options: -b, --ignore-leading-blanks ignore leading blanks -d, --dictionary-order consider only blanks and alphanumeric characters -f, --ignore-case fold lower case to upper case characters -g, --general-numeric-sort compare according to general numerical value -i, --ignore-nonprinting consider only printable characters -M, --month-sort compare (unknown) < 'JAN' < ... < 'DEC' -h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G) -n, --numeric-sort compare according to string numerical value -R, --random-sort sort by random hash of keys --random-source=FILE get random bytes from FILE -r, --reverse reverse the result of comparisons ``` …and so on. (It goes on for a while in this vein.) If that doesn’t work, or doesn’t provide enough info, the next thing to try is called a man page. (“man” is short for “manual”. It’s sort of an unfortunate abbreviation.) ``` $ man sort SORT(1) User Commands SORT(1) NAME sort - sort lines of text files SYNOPSIS sort [OPTION]... [FILE]... sort [OPTION]... --files0-from=F DESCRIPTION Write sorted concatenation of all FILE(s) to standard output. ``` …and so on. Manual pages vary in quality, and it can take a while to get used to reading them, but they’re very often the best place to look for help. If you’re not sure what /program/ you want to use to solve a given problem, you might try searching all the man pages on the system for a keyword. `man` itself has an option to let you do this - `man -k keyword` - but most systems also have a shortcut called `apropos`, which I like to use because it’s easy to remember if you imagine yourself saying “apropos of [some problem I have]…” ``` $ apropos -s1 sort apt-sortpkgs (1) - Utility to sort package index files bunzip2 (1) - a block-sorting file compressor, v1.0.6 bzip2 (1) - a block-sorting file compressor, v1.0.6 comm (1) - compare two sorted files line by line sort (1) - sort lines of text files tsort (1) - perform topological sort ``` It’s useful to know that the manual represented by `man` has numbered sections for different kinds of manual pages. Most of what the average user needs to know about lives in section 1, “User Commands”, so you’ll often see the names of different tools written like `sort(1)` or `cat(1)`. This can be a good way to make it clear in writing that you’re talking about a specific piece of software rather than a verb or a small carnivorous mammal. (I specified `-s1` for section 1 above just to cut down on clutter, though in practice I usually don’t bother.) Like other literary traditions, Unix is littered with this sort of convention. This one just happens to date from a time when the manual was still a physical book. ## [#](https://p1k3.com/userland-book/#wc) wc `wc` stands for *w* ord *c* ount. It does about what you’d expect - it counts the number of words in its input. ``` $ wc index.md 736 4117 24944 index.md ``` 736 is the number of lines, 4117 the number of words, and 24944 the number of characters in the file I’m writing right now. I use this constantly. Most obviously, it’s a good way to get an idea of how much you’ve written. `wc` is the tool I used to track my progress the last time I tried National Novel Writing Month: ``` $ find ~/p1k3/archives/2010/11 -regextype egrep -regex '.*([0-9]+|index)' -type f | xargs wc -w | tail -1 6585 total ``` ``` $ cowsay 'embarrassing.' _______________ < embarrassing. > --------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || ``` Anyway. The less obvious thing about `wc` is that you can use it to count the output of other commands. Want to know /how many/ unique authors we have? ``` $ sort authors_* | uniq | wc -l 10 ``` This kind of thing is trivial, but it comes in handy more often than you might think. ## [#](https://p1k3.com/userland-book/#head-tail-and-cut) head, tail, and cut Remember our old pal `cat`, which just splats everything it’s given back to standard output? Sometimes you’ve got a piece of output that’s more than you actually want to deal with at once. Maybe you just want to glance at the first few lines in a file: ``` $ head -3 colors RED blue red ``` …or maybe you want to see the last thing in a list: ``` $ sort colors | uniq -i | tail -1 red ``` …or maybe you’re only interested in the first “field” in some list. You might use `cut` here, asking it to treat spaces as delimiters between fields and return only the first field for each line of its input: ``` $ cut -d' ' -f1 ./authors_* Eden Vanessa Miriam Gwendolyn Ursula Jo Pat John Vanessa James John ``` Suppose we’re curious what the few most commonly occurring first names on our author list are? Here’s an approach, silly but effective, that combines a lot of what we’ve discussed so far and looks like plenty of one-liners I wind up writing in real life: ``` $ cut -d' ' -f1 ./authors_* | sort | uniq -ci | sort -n | tail -3 1 Ursula 2 John 2 Vanessa ``` Let’s walk through this one step by step: First, we have `cut` extract the first field of each line in our author lists. ``` cut -d' ' -f1 ./authors_* ``` Then we sort these results ``` | sort ``` and pass them to `uniq`, asking it for a case-insensitive count of each repeated line ``` | uniq -ci ``` then sort again, numerically, ``` | sort -n ``` and finally, we chop off everything but the last three lines: ``` | tail -3 ``` If you wanted to make sure to count an individual author’s first name only once, even if that author appears more than once in the files, you could instead do: ``` $ sort -u ./authors_* | cut -d' ' -f1 | uniq -ci | sort -n | tail -3 1 Ursula 1 Vanessa 2 John ``` ## [#](https://p1k3.com/userland-book/#tab-separated-values) tab separated values Notice above how we had to tell `cut` that “fields” in `authors_*` are delimited by spaces? It turns out that if you don’t use `-d`, `cut` defaults to using tab characters for a delimiter. Tab characters are sort of weird little animals. You can’t usually /see/ them directly — they’re like a space character that takes up more than one space when displayed. By convention, one tab is usually rendered as 8 spaces, but it’s up to the software that’s displaying the character what it wants to do. (In fact, it’s more complicated than that: Tabs are often rendered as marking /tab stops/, which is a concept I remember from 7th grade typing classes, but haven’t actually thought about in my day-to-day life for nearly 20 years.) Here’s a version of our `all_authors` that’s been rearranged so that the first field is the author’s last name, the second is their first name, the third is their middle name or initial (if we know it) and the fourth is any suffix. Fields are separated by a single tab character: ``` $ cat all_authors.tsv Robinson Eden Waring Gwendolyn L. Tiptree James Jr. Brunner John Tolkien John Ronald Reuel Walton Jo Toews Miriam Cadigan Pat Le Guin Ursula K. Veselka Vanessa ``` That looks kind of garbled, right? In order to make it a little more obvious what’s happening, let’s use `cat -T`, which displays tab characters as `^I`: ``` $ cat -T all_authors.tsv Robinson^IEden Waring^IGwendolyn^IL. Tiptree^IJames^I^IJr. Brunner^IJohn Tolkien^IJohn^IRonald Reuel Walton^IJo Toews^IMiriam Cadigan^IPat Le Guin^IUrsula^IK. Veselka^IVanessa ``` It looks odd when displayed because some names are at or nearly at 8 characters long. “Robinson”, at 8 characters, overshoots the first tab stop, so “Eden” gets indented further than other first names, and so on. Fortunately, in order to make this more human-readable, we can pass it through `expand`, which turns tabs into a given number of spaces (8 by default): ``` $ expand -t14 all_authors.tsv Robinson Eden Waring Gwendolyn L. Tiptree James Jr. Brunner John Tolkien John Ronald Reuel Walton Jo Toews Miriam Cadigan Pat Le Guin Ursula K. Veselka Vanessa ``` Now it’s easy to sort by last name: ``` $ sort -k1 all_authors.tsv | expand -t14 Brunner John Cadigan Pat Le Guin Ursula K. Robinson Eden Tiptree James Jr. Toews Miriam Tolkien John Ronald Reuel Veselka Vanessa Walton Jo Waring Gwendolyn L. ``` Or just extract middle names and initials: ``` $ cut -f3 all_authors.tsv L. Ronald Reuel K. ``` It probably won’t surprise you to learn that there’s a corresponding `paste` command, which takes two or more files and stitches them together with tab characters. Let’s extract a couple of things from our author list and put them back together in a different order: ``` $ cut -f1 all_authors.tsv > lastnames ``` ``` $ cut -f2 all_authors.tsv > firstnames ``` ``` $ paste firstnames lastnames | sort -k2 | expand -t12 John Brunner Pat Cadigan Ursula Le Guin Eden Robinson James Tiptree Miriam Toews John Tolkien Vanessa Veselka Jo Walton Gwendolyn Waring ``` As these examples show, TSV is something very like a primitive spreadsheet: A way to represent information in columns and rows. In fact, it’s a close cousin of CSV, which is often used as a lowest-common-denominator format for transferring spreadsheets, and which represents data something like this: ``` last,first,middle,suffix Tolkien,John,Ronald Reuel, Tiptree,James,,Jr. ``` The advantage of tabs is that they’re supported by a bunch of the standard tools. A disadvantage is that they’re kind of ugly and can be weird to deal with, but they’re useful anyway, and character-delimited rows are often a good-enough way to hack your way through problems that call for basic structure. ## [#](https://p1k3.com/userland-book/#finding-text-grep) finding text: grep After all those contortions, what if you actually just want to see /which lists/ an individual author appears on? ``` $ grep 'Vanessa' ./authors_* ./authors_contemporary_fic:Vanessa Veselka ./authors_sff:Vanessa Veselka ``` `grep` takes a string to search for and, optionally, a list of files to search in. If you don’t specify files, it’ll look through standard input instead: ``` $ cat ./authors_* | grep 'Vanessa' Vanessa Veselka Vanessa Veselka ``` Most of the time, piping the output of `cat` to `grep` is considered silly, because `grep` knows how to find things in files on its own. Many thousands of words have been written on this topic by leading lights of the nerd community. You’ve probably noticed that this result doesn’t contain filenames (and thus isn’t very useful to us). That’s because all `grep` saw was the lines in the files, not the names of the files themselves. ## [#](https://p1k3.com/userland-book/#now-you-have-n-problems) now you have n problems To close out this introductory chapter, let’s spend a little time on a topic that will likely vex, confound, and (occasionally) delight you for as long as you are acquainted with the command line. When I was talking about `grep` a moment ago, I fudged the details more than a little by saying that it expects a string to search for. What `grep` /actually/ expects is a /pattern/. Moreover, it expects a specific kind of pattern, what’s known as a /regular expression/, a cumbersome phrase frequently shortened to regex. There’s a lot of theory about what makes up a regular expression. Fortunately, very little of it matters to the short version that will let you get useful stuff done. The short version is that a regex is like using wildcards in the shell to match groups of files, but for text in general and with more magic. ``` $ grep 'Jo.*' ./authors_* ./authors_sff:Jo Walton ./authors_sff:John Ronald Reuel Tolkien ./authors_sff:John Brunner ``` The pattern `Jo.*` says that we’re looking for lines which contain a literal `Jo`, followed by any quantity (including none) of any character. In a regex, `.` means “anything” and `*` means “any amount of the preceding thing”. `.` and `*` are magical. In the particular dialect of regexen understood by `grep`, other magical things include: `^` start of a line `$` end of a line `[abc]` one of a, b, or c `[a-z]` a character in the range a through z `[0-9]` a character in the range 0 through 9 `+` one or more of the preceding thing `?` 0 or 1 of the preceding thing `*` any number of the preceding thing `(foo|bar)` "foo" or "bar" `(foo)?` optional "foo" It’s actually a little more complicated than that: By default, if you want to use a lot of the magical characters, you have to prefix them with `\`. This is both ugly and confusing, so unless you’re writing a very simple pattern, it’s often easiest to call `grep -E`, for *E* xtended regular expressions, which means that lots of characters will have special meanings. Authors with 4-letter first names: ``` $ grep -iE '^[a-z]{4} ' ./authors_* ./authors_contemporary_fic:Eden Robinson ./authors_sff:John Ronald Reuel Tolkien ./authors_sff:John Brunner ``` A count of authors named John: ``` $ grep -c '^John ' ./all_authors 2 ``` Lines in this file matching the words “magic” or “magical”: ``` $ grep -iE 'magic(al)?' ./index.md Pipes are some of the most important magic in the shell. When the people who shell to match groups of files, but with more magic. `.` and `*` are magical. In the particular dialect of regexen understood by `grep`, other magical things include: use a lot of the magical characters, you have to prefix them with `\`. This is Lines in this file matching the words "magic" or "magical": $ grep -iE 'magic(al)?' ./index.md ``` Find some “-agic” words in a big list of words: ``` $ grep -iE '(m|tr|pel)agic' /usr/share/dict/words magic magic's magical magically magician magician's magicians pelagic tragic tragically tragicomedies tragicomedy tragicomedy's ``` `grep` isn’t the only - or even the most important - tool that makes use of regular expressions, but it’s a good place to start because it’s one of the fundamental building blocks for so many other operations. Filtering lists of things, matching patterns within collections, and writing concise descriptions of how text should be transformed are at the heart of a practical approach to Unix-like systems. Regexen turn out to be a seductively powerful way to do these things - so much so that they’ve crept their way into text editors, databases, and full-featured programming languages. There’s a dark side to all of this, for the truth about regular expressions is that they are ugly, inconsistent, brittle, and /incredibly/ difficult to think clearly about. They take years to master and reward the wielder with great power, but they are also a trap: a temptation towards the path of cleverness masquerading as wisdom. ✑ I’ll be returning to this theme, but for the time being let’s move on. Now that we’ve established, however haphazardly, some of the basics, let’s consider their application to a real-world task. ## [#](https://p1k3.com/userland-book/#a-literary-problem) 2. a literary problem The [previous chapter](https://p1k3.com/literary_environment) introduced a bunch of tools using contrived examples. Now we’ll look at a real problem, and work through a solution by building on tools we’ve already covered. So on to the problem: I write poetry. {rimshot dot wav} Most of the poems I have written are not very good, but lately I’ve been thinking that I’d like to comb through the last ten years' worth and pull the least-embarrassing stuff into a single collection. I’ve hinted at how the contents of my blog are stored as files, but let’s take a look at the whole thing: ``` $ ls -F ~/p1k3/archives/ 1997/ 2003/ 2009/ bones/ meta/ 1998/ 2004/ 2010/ chapbook/ winfield/ 1999/ 2005/ 2011/ cli/ wip/ 2000/ 2006/ 2012/ colophon/ 2001/ 2007/ 2013/ europe/ 2002/ 2008/ 2014/ hack/ ``` ( `ls`, again, just lists files. `-F` tells it to append a character that shows it what type of file we’re looking at, such as a trailing / for directories. `~` is a shorthand that means “my home directory”, which in this case is `/home/brennen`.) Each of the directories here holds other directories. The ones for each year have sub-directories for the months of the year, which in turn contain files for the days. The files are just little pieces of HTML and Markdown and some other stuff. Many years ago, before I had much of an idea how to program, I wrote a script to glue them all together into a web page and serve them up to visitors. This all sounds complicated, but all it really means is that if I want to write a blog entry, I just open a file and type some stuff. Here’s an example for March 1st: ``` $ cat ~/p1k3/archives/2014/3/1

Saturday, March 1

Sometimes I'm going along on a Saturday morning, still a little dazed from the night before, and I think something like "I should just go write a detailed analysis of hooded sweatshirts". Mostly these thoughts don't survive contact with an actual keyboard. It's almost certainly for the best. ``` And here’s an older one that contains a short poem: ``` $ cat ~/p1k3/archives/2012/10/9

tuesday, october 9

i am a stateful machine i exist in a manifold of consequence a clattering miscellany of impure functions and side effects ``` Notice that `` bit? It kind of looks like an HTML tag, but it’s not. What it actually does is tell my blog script that it should format the text it contains like a poem. The specifics don’t matter for our purposes (yet), but this convention is going to come in handy, because the first thing I want to do is get a list of all the entries that contain poems. Remember `grep`? ``` $ grep -ri '' ~/p1k3/archives > ~/possible_poems ``` Let’s step through this bit by bit: First, I’m asking `grep` to search *r* ecursively, *i* gnoring case. “Recursively” just means that every time the program finds a directory, it should descend into that directory and search in any files there as well. ``` grep -ri ``` Next comes a pattern to search for. It’s in single quotes because the characters `<` and `>` have a special meaning to the shell, and here we need the shell to understand that it should treat them as literal angle brackets instead. ``` '' ``` This is the path I want to search: ``` ~/p1k3/archives ``` Finally, because there are so many entries to search, I know the process will be slow and produce a large list, so I tell the shell to redirect it to a file called `possible_poems` in my home directory: ``` > ~/possible_poems ``` This is quite a few instances… ``` $ wc -l ~/possible_poems 679 /home/brennen/possible_poems ``` …and it’s also not super-pretty to look at: ``` $ head -5 ~/possible_poems /home/brennen/p1k3/archives/2011/10/14:i've got this friend has a real knack /home/brennen/p1k3/archives/2011/4/25:i can't claim to strive for it /home/brennen/p1k3/archives/2011/8/10:one diminishes or becomes greater /home/brennen/p1k3/archives/2011/8/12: /home/brennen/p1k3/archives/2011/1/1:six years on ``` Still, it’s a decent start. I can see paths to the files I have to check, and usually a first line. Since I use a fancy text editor, I can just go down the list opening each file in a new window and copying the stuff I’m interested in to a new file. This is good enough for government work, but what if instead of jumping around between hundreds of files, I’d rather read everything in one file and just weed out the bad ones as I go? ``` $ cat `grep -ril '' ~/p1k3/archives` > ~/possible_poems_full ``` This probably bears some explaining. `grep` is still doing all the real work here. The main difference from before is that `-l` tells grep to just list any files it finds which contain a match. ``` `grep -ril '' ~/p1k3/archives` ``` Notice those backticks around the grep command? This part is a little trippier. It turns out that if you put backticks around something in a command, it’ll get executed and replaced with its result, which in turn gets executed as part of the larger command. So what we’re really saying is something like: ``` $ cat [all of the files in the blog directory with in them] ``` Did you catch that? I just wrote a command that rewrote itself as a /different/, more specific command. And it appears to have worked on the first try: ``` $ wc ~/possible_poems_full 17628 80980 528699 /home/brennen/possible_poems_full ``` Welcome to wizard school. ## [#](https://p1k3.com/userland-book/#programmerthink) 3. programmerthink In the [preceding chapter](https://p1k3.com/userland-book/#a-literary-problem), I worked through accumulating a big piece of text from some other, smaller texts. I started with a bunch of files and wound up with one big file called `potential_poems_full`. Let’s talk for a minute about how programmers approach problems like this one. What I’ve just done is sort of an old-school humanities take on things: Metaphorically speaking, I took a book off the shelf and hauled it down to the copy machine to xerox a bunch of pages, and now I’m going to start in on them with a highlighter and some Post-Its or something. A process like this will often trigger a cascade of questions in the programmer-mind: * What if, halfway through the project, I realize my selection criteria were all wrong and have to backtrack? * What if I discover corrections that also need to be made in the source documents? * What if I want to access metadata, like the original location of a file? * What if I want to quickly re-order the poems according to some new criteria? * Why am I storing the same text in two different places? A unifying theme of these questions is that they could all be answered by involving a little more abstraction. ★ Some kinds of abstraction are so common in the physical world that we can forget they’re part of a sophisticated technology. For example, a good deal of bicycle maintenance can be accomplished with a cheap multi-tool containing a few different sizes of hex wrench and a couple of screwdrivers. A hex wrench or screwdriver doesn’t really know anything about bicycles. All it /really/ knows about is fitting into a space and allowing torque to be applied. Standardized fasteners and adjustment mechanisms on a bicycle ensure that the work can be done anywhere, by anyone with a certain set of tools. Standard tools mean that if you can work on a particular bike, you can work on /most/ bikes, and even on things that aren’t bikes at all, but were designed by people with the same abstractions in mind. The relationship between a wrench, a bolt, and the purpose of a bolt is a lot like something we call /indirection/ in software. Programs like `grep` or `cat` don’t really know anything about poetry. All they /really/ know about is finding lines of text in input, or sticking inputs together. Files, lines, and text are like standardized fasteners that allow a user who can work on one kind of data (be it poetry, a list of authors, the source code of a program) to use the same tools for other problems and other data. ★ When I first started writing stuff on the web, I edited a page — a single HTML file — by hand. When the entries on my nascent blog got old, I manually cut-and-pasted them to archive files with names like `old_main97.html`, which held all of the stuff I’d written in 1997. I’m not holding this up as an example of youthful folly. In fact, it worked fine, and just having a single, static file that you can open in any text editor has turned out to be a /lot/ more future-proof than the sophisticated blogging software people were starting to write at the time. And yet. Something about this habit nagged at my developing programmer mind after a few years. It was just a little bit too manual and repetitive, a little bit silly to have to write things like a table of contents by hand, or move entries around by copy-and-pasting them to different files. Since I knew the date for each entry, and wanted to make them navigable on that basis, why not define a directory structure for the years and months, and then write a file to hold each day? That way, all I’d have to do is concatenate the files in one directory to display any given month: ``` $ cat ~/p1k3/archives/2014/1/* | head -10

Sunday, January 12

the one casey is waiting for

after a while the thing about drinking is that it just feeds what you drink to kill and kills ``` I ultimately wound up writing a few thousand lines of Perl to do the actual work, but the essential idea of the thing is still little more than invoking `cat` on some stuff. I didn’t know the word for it at the time, but what I was reaching for was a kind of indirection. By putting blog posts in a specific directory layout, I was creating a simple model of the temporal structure that I considered their most important property. Now, if I want to write commands that ask questions about my blog posts or re-combine them in certain ways, I can address my concerns to this model. Maybe, for example, I want a rough idea how many words I’ve written in blog posts so far in 2014: ``` $ find ~/p1k3/archives/2014/ -type f | xargs cat | wc -w 6677 ``` `xargs` is not the most intuitive command, but it’s useful and common enough to explain here. At the end of last chapter, when I said: ``` $ cat `grep -ril '' ~/p1k3/archives` > ~/possible_poems_full ``` I could also have written this as: ``` $ grep -ril '' ~/p1k3/archives | xargs cat > ~/possible_poems_full ``` What this does is take its input, which starts like: ``` /home/brennen/p1k3/archives/2002/10/16 /home/brennen/p1k3/archives/2002/10/27 /home/brennen/p1k3/archives/2002/10/10 ``` …and run `cat` on all the things in it: ``` cat /home/brennen/p1k3/archives/2002/10/16 /home/brennen/p1k3/archives/2002/10/27 /home/brennen/p1k3/archives/2002/10/10 ... ``` It can be a better idea to use `xargs`, because while backticks are incredibly useful, they have some limitations. If you’re dealing with a very large list of files, for example, you might exceed the maximum allowed length for arguments to a command on your system. `xargs` is smart enough to know that limit and run `cat` more than once if needed. `xargs` is actually sort of a pain to think about, and will make you jump through some irritating hoops if you have spaces or other weirdness in your filenames, but I wind up using it quite a bit. Maybe I want to see a table of contents: ``` $ find ~/p1k3/archives/2014/ -type d | xargs ls -v | head -10 /home/brennen/p1k3/archives/2014/: 1 2 3 4 /home/brennen/p1k3/archives/2014/1: 5 12 14 ``` Or find the subtitles I used in 2013: ``` $ find ~/p1k3/archives/2012/ -type f | xargs perl -ne 'print "$1\n" if m{

(.*?)

}' pursuit fragment this poem again i'll do better next time timebinding animals more observations on gear nerdery & utility fetishism thrift A miracle, in fact, means work technical notes for late october, or it gets dork out earlier these days radio light enough to travel 12:06am "figures like Heinlein and Gingrich" ``` The crucial thing about this is that the filesystem /itself/ is just like `cat` and `grep`: It doesn’t know anything about blogs (or poetry), and it’s basically indifferent to the actual /structure/ of a file like `~/p1k3/archives/2014/1/12`. What the filesystem knows is that there are files with certain names in certain places. It need not know anything about the /meaning/ of those names in order to be useful; in fact, it’s best if it stays agnostic about the question, for this enables us to assign our own meaning to a structure and manipulate that structure with standard tools. ★ Back to the problem at hand: I have this collection of files, and I know how to extract the ones that contain poems. My goal is to see all the poems and collect the subset of them that I still find worthwhile. Just knowing how to grep and then edit a big file solves my problem, in a basic sort of way. And yet: Something about this nags at my mind. I find that, just as I can already use standard tools and the filesystem to ask questions about all of my blog posts in a given year or month, I would like to be able to ask questions about the set of interesting poems. If I want the freedom to execute many different sorts of commands against this set of poems, it begins to seem that I need a model. When programmers talk about models, they often mean something that people in the sciences would recognize: We find ways to represent the arrangement of facts so that we can think about them. A structured representation of things often means that we can /change/ those things, or at least derive new understanding of them. ★ At this point in the narrative, I could pretend that my next step is immediately obvious, but in fact it’s not. I spend a couple of days thinking off and on about how to proceed, scribbling notes during bus rides and while drinking beers at the pizza joint down the street. I assess and discard ideas which fall into a handful of broad approaches: * Store blog entries in a relational database system which would allow me to associate them with data like “this entry is in a collection called ‘ok poems’”. * Selectively build up a file containing the list of files with ok poems, and use it to do other tasks. * Define a format for metadata that lives within entry files. * Turn each interesting file into a directory of its own which contains a file with the original text and another file with metadata. I discard the relational database idea immediately: I like working with files, and I don’t feel like abandoning a model that’s served me well for my entire adult life. Building up an index file to point at the other files I’m working with has a certain appeal. I’m already most of the way there with the `grep` output in `potential_poems`. It would be easy to write shell commands to add, remove, sort, and search entries. Still, it doesn’t feel like a very satisfying solution unto itself. I’d like to know that an entry is part of the collection just by looking at the entry, without having to cross-reference it to a list somewhere else. What about putting some meaningful text in the file itself? I thought about a bunch of different ways to do this, some of them really complicated, and eventually arrived at this: ``` ``` The `` bits are how you define a comment in HTML, which means that neither my blog code nor web browsers nor my text editor have to know anything about the format, but I can easily find files with certain values. Check it: ``` $ find ~/p1k3/archives -type f | xargs perl -ne 'print "$ARGV[0]: $1 -> $2\n" if m{};' /home/brennen/p1k3/archives/2014/2/9: collection -> ok-poems ``` That’s an ugly one-liner, and I haven’t explained half of what it does, but the comment format actually seems pretty workable for this. It’s a little tacky to look at, but it’s simple and searchable. Before we settle, though, let’s turn to the notion of making each entry into a directory that can contain some structured metadata in a separate file. Imagine something like: ``` $ ls ~/p1k3/archives/2013/2/9 index Meta ``` Here I use the name “index” for the main part of the entry because it’s a convention of web sites for the top-level page in a directory to be called something like `index.html`. As it happens, my blog software already supports this kind of file layout for entries which contain multiple parts, image files, and so forth. ``` $ head ~/p1k3/archives/2013/2/9/index

saturday, february 9

midwinter midafternoon; depressed as hell sitting in a huge cabin in the rich-people mountains writing a sprawl, pages, of melancholic midlife bullshit outside the snow gives way to broken clouds and the clear unyielding light of the high country sun fills $ cat ~/p1k3/archives/2013/2/9/Meta collection: ok-poems ``` It would then be easy to `find` files called `Meta` and grep them for `collection: ok-poems`. What if I put metadata right in the filename itself, and dispense with the grep altogether? ``` $ ls ~/p1k3/archives/2013/2/9 index meta-ok-poem $ find ~/p1k3/archives -name 'meta-ok-poem' /home/brennen/archives/2013/2/9/meta-ok-poem ``` There’s a lot to like about this. For one thing, it’s immediately visible in a directory listing. For another, it doesn’t require searching through thousands of lines of text to extract a specific string. If a directory has a `meta-ok-poem` in it, I can be pretty sure that it will contain an interesting `index`. What are the downsides? Well, it requires transforming lots of text files into directories-containing-files. I might automate that process, but it’s still a little tedious and it makes the layout of the entry archive more complicated overall. There’s a cost to doing things this way. It lets me extend my existing model of a blog entry to include arbitrary metadata, but it also adds steps to writing or finding blog entries. Abstractions usually cost you something. Is this one worth the hassle? Sometimes the best way to answer that question is to start writing code that handles a given abstraction. ## [#](https://p1k3.com/userland-book/#script) 4. script Back in chapter 1, I said that “the way you use the computer is often just to write little programs that invoke other programs”. In fact, we’ve already gone over a bunch of these. Grepping through the text of a previous chapter should pull up some good examples: ``` $ grep -E '\$ [a-z]+.*\| ' ../literary_environment/index.md $ sort authors_* | uniq -c $ sort authors_* | uniq > ./all_authors $ find ~/p1k3/archives/2010/11 -regextype egrep -regex '.*([0-9]+|index)' -type f | xargs wc -w | tail -1 $ sort authors_* | uniq | wc -l $ sort colors | uniq -i | tail -1 $ cut -d' ' -f1 ./authors_* | sort | uniq -ci | sort -n | tail -3 $ sort -u ./authors_* | cut -d' ' -f1 | uniq -ci | sort -n | tail -3 $ sort -k1 all_authors.tsv | expand -t14 $ paste firstnames lastnames | sort -k2 | expand -t12 $ cat ./authors_* | grep 'Vanessa' ``` None of these one-liners do all that much, but they all take input of one sort or another and apply one or more transformations to it. They’re little formal sentences describing how to make one thing into another, which is as good a definition of programming as most. Or at least this is a good way to describe programming-in-the-small. (A lot of the programs we use day-to-day are more like essays, novels, or interminable Fantasy series where every character you like dies horribly than they are like individual sentences.) One-liners like these are all well and good when you’re staring at a terminal, trying to figure something out - but what about when you’ve already figured it out and you want to repeat it in the future? It turns out that Bash has you covered. Since shell commands are just text, they can live in a text file as easily as they can be typed. ## [#](https://p1k3.com/userland-book/#learn-you-an-editor) learn you an editor We’ve skirted the topic so far, but now that we’re talking about writing out text files in earnest, you’re going to want a text editor. My editor is where I spend most of my time that isn’t in a web browser, because it’s where I write both code and prose. It turns out that the features which make a good code editor overlap a lot with the ones that make a good editor of English sentences. So what should you use? Well, there have been other contenders in recent years, but in truth nothing comes close to dethroning the Great Old Ones of text editing. Emacs is a creature both primal and sophisticated, like an avatar of some interstellar civilization that evolved long before multicellular life existed on earth and seeded the galaxy with incomprehensible artefacts and colossal engineering projects. Vim is like a lovable chainsaw-studded robot with the most elegant keyboard interface in history secretly emblazoned on its shining diamond heart. It’s worth the time it takes to learn one of the serious editors, but there are easier places to start. Nano, for example, is easy to pick up, and should be available on most systems. To start it, just say: ``` $ nano file ``` You should see something like this: [image:F0095C91-6EC5-4672-B5EE-3C72078F7D51-1775-000000291B5AEBEB/nano.png] Arrow keys will move your cursor around, and typing stuff will make it appear in the file. This is pretty much like every other editor you’ve ever used. If you haven’t used Nano before, that stuff along the bottom of the terminal is a reference to the most commonly used commands. `^` is a convention for “Ctrl”, so `^O` means Ctrl-o (the case of the letter doesn’t actually matter), which will save the file you’re working on. Ctrl-x will quit, which is probably the first important thing to know about any given editor. ## [#](https://p1k3.com/userland-book/#d-i-y-utilities) d.i.y. utilities So back to putting commands in text files. Here’s a file I just created in my editor: ``` $ cat okpoems #!/bin/bash # find all the marker files and get the name of # the directory containing each find ~/p1k3/archives -name 'meta-ok-poem' | xargs -n1 dirname exit 0 ``` This is known as a script. There are a handful of things to notice here. First, there’s this fragment: ``` #!/bin/bash ``` The `#!` right at the beginning, followed by the path to a program, is a special sequence that lets the kernel know what program should be used to interpret the contents of the file. `/bin/bash` is the path on the filesystem where Bash itself lives. You might see this referred to as a shebang or a hash bang. Lines that start with a `#` are comments, used to describe the code to a human reader. The `exit 0` tells Bash that the currently running script should exit with a status of 0, which basically means “nothing went wrong”. If you examine the directory listing for `okpoems`, you’ll see something important: ``` $ ls -l okpoems -rwxrwxr-x 1 brennen brennen 163 Apr 19 00:08 okpoems ``` That looks pretty cryptic. For the moment, just remember that those little `x` s in the first bit mean that the file has been marked e *x* ecutable. We accomplish this by saying something like: ``` $ chmod +x ./okpoems ``` Once that’s done, it and the shebang line in combination mean that typing `./okpoems` will have the same effect as typing `bash okpoems`: ``` $ ./okpoems /home/brennen/p1k3/archives/2013/2/9 /home/brennen/p1k3/archives/2012/3/17 /home/brennen/p1k3/archives/2012/3/26 ``` ## [#](https://p1k3.com/userland-book/#heavy-lifting) heavy lifting `okpoems` demonstrates the basics, but it doesn’t do very much. Here’s a script with a little more substance to it: ``` $ cat markpoem #!/bin/bash # $1 is the first parameter to our script POEM=$1 # Complain and exit if we weren't given a path: if [ ! $POEM ]; then echo 'usage: markpoem ' # Confusingly, an exit status of 0 means to the shell that everything went # fine, while any other number means that something went wrong. exit 64 fi if [ ! -e $POEM ]; then echo "$POEM not found" exit 66 fi echo "marking $POEM an ok poem" POEM_BASENAME=$(basename $POEM) # If the target is a plain file instead of a directory, make it into # a directory and move the content into $POEM/index: if [ -f $POEM ]; then echo "making $POEM into a directory, moving content to" echo " $POEM/index" TEMPFILE="/tmp/$POEM_BASENAME.$(date +%s.%N)" mv $POEM $TEMPFILE mkdir $POEM mv $TEMPFILE $POEM/index fi if [ -d $POEM ]; then # touch(1) will either create the file or update its timestamp: touch $POEM/meta-ok-poem else echo "something broke - why isn't $POEM a directory?" file $POEM fi # Signal that all is copacetic: echo kthxbai exit 0 ``` Both of these scripts are imperfect, but they were quick to write, they’re made out of standard commands, and I don’t yet hate myself for them: All signs that I’m not totally on the wrong track with the `meta-ok-poem` abstraction, and could live with it as part of an ongoing writing project. `okpoems` and `markpoem` would also be easy to use with custom keybindings in my editor. In a few more lines of code, I can build a system to wade through the list of candidate files and quickly mark the interesting ones. ## [#](https://p1k3.com/userland-book/#generality) generality So what’s lacking here? Well, probably a bunch of things, feature-wise. I can imagine writing a script to unmark a poem, for example. That said, there’s one really glaring problem. “Ok poem” is only one kind of property a blog entry might possess. Suppose I wanted a way to express that a poem is terrible? It turns out I already know how to add properties to an entry. If I generalize just a little, the tools become much more flexible. ``` $ ./addprop /home/brennen/p1k3/archives/2012/3/26 meta-terrible-poem marking /home/brennen/p1k3/archives/2012/3/26 with meta-terrible-poem kthxbai ``` ``` $ ./findprop meta-terrible-poem /home/brennen/p1k3/archives/2012/3/26 ``` `addprop` is only a little different from `markpoem`. It takes two parameters instead of one - the target entry and a property to add. ``` $ cat addprop #!/bin/bash ENTRY=$1 PROPERTY=$2 # Complain and exit if we weren't given a path and a property: if [[ ! $ENTRY || ! $PROPERTY ]]; then echo "usage: addprop " exit 64 fi if [ ! -e $ENTRY ]; then echo "$ENTRY not found" exit 66 fi echo "marking $ENTRY with $PROPERTY" # If the target is a plain file instead of a directory, make it into # a directory and move the content into $ENTRY/index: if [ -f $ENTRY ]; then echo "making $ENTRY into a directory, moving content to" echo " $ENTRY/index" # Get a safe temporary file: TEMPFILE=`mktemp` mv $ENTRY $TEMPFILE mkdir $ENTRY mv $TEMPFILE $ENTRY/index fi if [ -d $ENTRY ]; then touch $ENTRY/$PROPERTY else echo "something broke - why isn't $ENTRY a directory?" file $ENTRY fi echo kthxbai exit 0 ``` Meanwhile, `findprop` is more or less `okpoems`, but with a parameter for the property to find: ``` $ cat findprop #!/bin/bash if [ ! $1 ] then echo "usage: findprop " exit fi # find all the marker files and get the name of # the directory containing each find ~/p1k3/archives -name $1 | xargs -n1 dirname exit 0 ``` These scripts aren’t much more complicated than their poem-specific counterparts, but now they can be used to solve problems I haven’t even thought of yet, and included in other scripts that need their functionality. ## [#](https://p1k3.com/userland-book/#general-purpose-programmering) 5. general purpose programmering I didn’t set out to write a book about programming, /as such/, but because programming and the command line are so inextricably linked, this text draws near the subject almost of its own accord. If you’re not terribly interested in programming, this chapter can easily enough be skipped. It’s more in the way of philosophical rambling than concrete instruction, and will be of most use to those with an existing background in writing code. ✢ If you’ve used computers for more than a few years, you’re probably viscerally aware that most software is fragile and most systems decay. In the time since I took my first tentative steps into the little world of a computer (a friend’s dad’s unidentifiable gaming machine, my own father’s blue monochrome Zenith laptop, the Apple II) the churn has been overwhelming. By now I’ve learned my way around vastly more software — operating systems, programming languages and development environments, games, editors, chat clients, mail systems — than I presently could use if I wanted to. Most of it has gone the way of some ancient civilization, surviving (if at all) only in faint, half-understood cultural echoes and occasional museum-piece displays. Every user of technology becomes, in time, a refugee from an irretrievably recent past. And yet, despite all this, the shell endures. Most of the ideas in this book are older than I am. Most of them could have been applied in 1994 or thereabouts, when I first logged on to multiuser systems running AT&T Unix. Since the early 1990s, systems built on a fundamental substrate of Unix-like behavior and abstractions have proliferated wildly, becoming foundational at once to the modern web, the ecosystem of free and open software, and the technological dominance ca. 2014 of companies like Apple, Google, and Facebook. Why is this, exactly? ✣ As I’ve said (and hopefully shown), the commands you write in your shell are essentially little programs. Like other programs, they can be stored for later use and recombined with other commands, creating new uses for your ideas. It would be hard to say that there’s any /one/ reason command line environments remain so vital after decades of evolution and hard-won refinement in computer interfaces, but it seems like this combinatory nature is somewhere near the heart of it. The command line often lacks the polish of other interfaces we depend on, but in exchange it offers a richness and freedom of expression rarely seen elsewhere, and invites its users to build upon its basic facilities. What is it that makes last chapter’s `addprop` preferable to the more specific `markpoem`? Let’s look at an alternative implementation of `markpoem`: ``` $ cat simple_markpoem #!/bin/bash addprop $1 meta-ok-poem ``` Is this script trivial? Absolutely. It’s so trivial that it barely seems to exist, because I already wrote `addprop` to do all the heavy lifting and play well with others, freeing us to imagine new uses for its central idea without worrying about the implementation details. Unlike `markpoem`, `addprop` doesn’t know anything about poetry. All it knows about, in fact, is putting a file (or three) in a particular place. And this is in keeping with a basic insight of Unix: Pieces of software that do one very simple thing generalize well. Good command line tools are like a hex wrench, a hammer, a utility knife: They embody knowledge of turning, of striking, of cutting — and with this kind of knowledge at hand, the user can change the world even though no individual tool is made with complete knowledge of the world as a whole. There’s a lot of power in the accumulation of small competencies. Of course, if your code is only good at one thing, to be of any use, it has to talk to code that’s good at other things. There’s another basic insight in the Unix tradition: Tools should be composable. All those little programs have to share some assumptions, have to speak some kind of trade language, in order to combine usefully. Which is how we’ve arrived at standard IO, pipelines, filesystems, and text as as a lowest-common-denominator medium of exchange. If you think about most of these things, they have some very rough edges, but they give otherwise simple tools ways to communicate without becoming super-complicated along the way. ✤ What is the command line? The command line is an environment of tool use. So are kitchens, workshops, libraries, and programming languages. ✥ Here’s a confession: I don’t like writing shell scripts very much, and I can’t blame anyone else for feeling the same way. That doesn’t mean you shouldn’t /know/ about them, or that you shouldn’t /write/ them. I write little ones all the time, and the ability to puzzle through other people’s scripts comes in handy. Oftentimes, the best, most tasteful way to automate something is to build a script out of the commonly available commands. The standard tools are already there on millions of machines. Many of them have been pretty well understood for a generation, and most will probably be around for a generation or three to come. They do neat stuff. Scripts let you build on ideas you’ve already worked out, and give repeatable operations a memorable, user-friendly name. They encourage reuse of existing programs, and help express your ideas to people who’ll come after you. One of the reliable markers of powerful software is that it can be scripted: It extends to its users some of the same power that its authors used in creating it. Scriptable software is to some extent /living/ software. It’s a book that you, the reader, get to help write. In all these ways, shell scripts are wonderful, a little bit magical, and quietly indispensable to the machinery of modern civilization. Unfortunately, in all the ways that a shell like Bash is weird, finicky, and covered in 40 years of incidental cruft, long-form Bash scripts are even worse. Bash is a useful glue language, particularly if you’re already comfortable wiring commands together. Syntactic and conceptual innovations like pipes are beautiful and necessary. What Bash is /not/, despite its power, is a very good general purpose programming language. It’s just not especially good at things like math, or complex data structures, or not looking like a punctuation-heavy variety of alphabet soup. It turns out that there’s a threshold of complexity beyond which life becomes easier if you switch from shell scripting to a more robust language. Just where this threshold is located varies a lot between users and problems, but I often think about switching languages before a script gets bigger than I can view on my screen all at once. `addprop` is a good example: ``` $ wc -l ../script/addprop 41 ../script/addprop ``` 41 lines is a touch over what fits on one screen in the editor I usually use. If I were going to add much in the way of features, I’d think pretty hard about porting it to another language first. What’s cool is that if you know a language like C, Python, Perl, Ruby, PHP, or JavaScript, your code can participate in the shell environment as a first class citizen simply by respecting the conventions of standard IO, files, and command line arguments. Often, in order to create a useful utility, it’s only necessary to deal with `STDIN`, or operate on a particular sort of file, and most languages offer simple conventions for doing these things. * I think the shell can be taught and understood as a humane environment, despite all of its ugliness and complication, because it offers the materials of its own construction to its users, whatever their concerns. The writer, the philosopher, the scientist, the programmer: Files and text and pipes know little enough about these things, but in their very indifference to the specifics of any one complex purpose, they’re adaptable to the basic needs of many. Simple utilities which enact simple kinds of knowledge survive and recombine because there is a wisdom to be found in small things. Files and text know nothing about poetry, nothing in particular of the human soul. Neither do pen and ink, printing presses or codex books, but somehow we got Shakespeare and Montaigne. ## [#](https://p1k3.com/userland-book/#one-of-these-things-is-not-like-the-others) 6. one of these things is not like the others If you’re the sort of person who took a few detours into the history of religion in college, you might be familiar with some of the ways people used to do textual comparison. When pen, paper, and typesetting were what scholars had to work with, they did some fairly sophisticated things in order to expose the relationships between multiple pieces of text. [image:4BE3BD50-8656-4459-8AA5-9D71EC0F2649-1775-000000291B59B1BF/throckmorton_small.jpg] Here’s a book I got in college: /Gospel Parallels: A Comparison of the Synoptic Gospels/, Burton H. Throckmorton, Jr., Ed. It breaks up three books from the New Testament by the stories and themes that they contain, and shows the overlapping sections of each book that contain parallel texts. You can work your way through and see what parts only show up in one book, or in two but not the other, or in all three. Pages are arranged like so: ``` § JESUS DOES SOME STUFF ________________________________________________ | MAT | MAR | LUK | |-----------------+--------------------+---------| | Stuff | | | | | Stuff | | | | Stuff | Stuff | | | Stuff | | | | Stuff | | | | | | ``` The way I understand it, a book like this one only scratches the surface of the field. Tools like this support a lot of theory about which books copied each other and how, and what other sources they might have copied that we’ve since lost. This is some /incredibly/ dry material, even if you kind of dig thinking about the questions it addresses. It takes a special temperament to actually sit poring over fragmentary texts in ancient languages and do these painstaking comparisons. Even if you’re a writer or editor and work with a lot of revisions of a text, there’s a good chance you rarely do this kind of comparison on your own work, because that shit is /tedious/. ## [#](https://p1k3.com/userland-book/#diff) diff It turns out that academics aren’t the only people who need tools for comparing different versions of a text. Working programmers, in fact, need to do this /constantly/. Programmers are also happiest when putting off the /actual/ task at hand to solve some incidental problem that cropped up along the way, so by now there are a lot of ways to say “here’s how this file is different from this file”, or “here’s how this file is different from itself a year ago”. Let’s look at a couple of shell scripts from an earlier chapter: ``` $ cat ../script/okpoems #!/bin/bash # find all the marker files and get the name of # the directory containing each find ~/p1k3/archives -name 'meta-ok-poem' | xargs -n1 dirname exit 0 ``` ``` $ cat ../script/findprop #!/bin/bash if [ ! $1 ] then echo "usage: findprop " exit fi # find all the marker files and get the name of # the directory containing each find ~/p1k3/archives -name $1 | xargs -n1 dirname exit 0 ``` It’s pretty obvious these are similar files, but do we know what /exactly/ changed between them at a glance? It wouldn’t be hard to figure out, once. If you wanted to be really certain about it, you could print them out, set them side by side, and go over them with a highlighter. Now imagine doing that for a bunch of files, some of them hundreds or thousands of lines long. I’ve actually done that before, colored markers and all, but I didn’t feel smart while I was doing it. This is a job for software. ``` $ diff ../script/okpoems ../script/findprop 2a3,8 > if [ ! $1 ] > then > echo "usage: findprop " > exit > fi > 5c11 < find ~/p1k3/archives -name 'meta-ok-poem' | xargs -n1 dirname --- > find ~/p1k3/archives -name $1 | xargs -n1 dirname ``` That’s not the most human-friendly output, but it’s a little simpler than it seems at first glance. It’s basically just a way of describing the changes needed to turn `okpoems` into `findprop`. The string `2a3,8` can be read as “at line 2, add lines 3 through 8”. Lines with a `>` in front of them are added. `5c11` can be read as “line 5 in the original file becomes line 11 in the new file”, and the `<` line is replaced with the `>` line. If you wanted, you could take a copy of the original file and apply these instructions by hand in your text editor, and you’d wind up with the new file. A lot of people (me included) prefer what’s known as a “unified” diff, because it’s easier to read and offers context for the changed lines. We can ask for one of these with `diff -u`: ``` $ diff -u ../script/okpoems ../script/findprop --- ../script/okpoems 2014-04-19 00:08:03.321230818 -0600 +++ ../script/findprop 2014-04-21 21:51:29.360846449 -0600 @@ -1,7 +1,13 @@ #!/bin/bash +if [ ! $1 ] +then + echo "usage: findprop " + exit +fi + # find all the marker files and get the name of # the directory containing each -find ~/p1k3/archives -name 'meta-ok-poem' | xargs -n1 dirname +find ~/p1k3/archives -name $1 | xargs -n1 dirname exit 0 ``` That’s a little longer, and has some metadata we might not always care about, but if you look for lines starting with `+` and `-`, it’s easy to read as “added these, took away these”. This diff tells us at a glance that we added some lines to complain if we didn’t get a command line argument, and replaced `'meta-ok-poem'` in the `find` command with that argument. Since it shows us some context, we have a pretty good idea where those lines are in the file and what they’re for. What if we don’t care exactly /how/ the files differ, but only whether they do? ``` $ diff -q ../script/okpoems ../script/findprop Files ../script/okpoems and ../script/findprop differ ``` I use `diff` a lot in the course of my day job, because I spend a lot of time needing to know just how two programs differ. Just as importantly, I often need to know how (or whether!) the /output/ of programs differs. As a concrete example, I want to make sure that `findprop meta-ok-poem` is really a suitable replacement for `okpoems`. Since I expect their output to be identical, I can do this: ``` $ ../script/okpoems > okpoem_output ``` ``` $ ../script/findprop meta-ok-poem > findprop_output ``` ``` $ diff -s okpoem_output findprop_output Files okpoem_output and findprop_output are identical ``` The `-s` just means that `diff` should explicitly tell us if files are the *s* ame. Otherwise, it’d output nothing at all, because there aren’t any differences. As with many other tools, `diff` doesn’t very much care whether it’s looking at shell scripts or a list of filenames or what-have-you. If you read the man page, you’ll find some features geared towards people writing C-like programming languages, but its real specialty is just text files with lines made out of characters, which works well for lots of code, but certainly could be applied to English prose. Since I have a couple of versions ready to hand, let’s apply this to a text with some well-known variations and a bit of a literary legacy. Here’s the first day of the Genesis creation narrative in a couple of English translations: ``` $ cat genesis_nkj In the beginning God created the heavens and the earth. The earth was without form, and void; and darkness was on the face of the deep. And the Spirit of God was hovering over the face of the waters. Then God said, "Let there be light"; and there was light. And God saw the light, that it was good; and God divided the light from the darkness. God called the light Day, and the darkness He called Night. So the evening and the morning were the first day. ``` ``` $ cat genesis_nrsv In the beginning when God created the heavens and the earth, the earth was a formless void and darkness covered the face of the deep, while a wind from God swept over the face of the waters. Then God said, "Let there be light"; and there was light. And God saw that the light was good; and God separated the light from the darkness. God called the light Day, and the darkness he called Night. And there was evening and there was morning, the first day. ``` What happens if we diff them? ``` $ diff -u genesis_nkj genesis_nrsv --- genesis_nkj 2014-05-11 16:28:29.692508461 -0600 +++ genesis_nrsv 2014-05-11 16:28:29.744508459 -0600 @@ -1,6 +1,6 @@ -In the beginning God created the heavens and the earth. The earth was without -form, and void; and darkness was on the face of the deep. And the Spirit of -God was hovering over the face of the waters. Then God said, "Let there be -light"; and there was light. And God saw the light, that it was good; and God -divided the light from the darkness. God called the light Day, and the darkness -He called Night. So the evening and the morning were the first day. +In the beginning when God created the heavens and the earth, the earth was a +formless void and darkness covered the face of the deep, while a wind from +God swept over the face of the waters. Then God said, "Let there be light"; +and there was light. And God saw that the light was good; and God separated +the light from the darkness. God called the light Day, and the darkness he +called Night. And there was evening and there was morning, the first day. ``` Kind of useless, right? If a given line differs by so much as a character, it’s not the same line. This highlights the limitations of `diff` for comparing things that * aren’t logically grouped by line * aren’t easily thought of as versions of the same text with some lines changed We could edit the files into a more logically defined structure, like one-line-per-verse, and try again: ``` $ diff -u genesis_nkj_by_verse genesis_nrsv_by_verse --- genesis_nkj_by_verse 2014-05-11 16:51:14.312457198 -0600 +++ genesis_nrsv_by_verse 2014-05-11 16:53:02.484453134 -0600 @@ -1,5 +1,5 @@ -In the beginning God created the heavens and the earth. -The earth was without form, and void; and darkness was on the face of the deep. And the Spirit of God was hovering over the face of the waters. +In the beginning when God created the heavens and the earth, +the earth was a formless void and darkness covered the face of the deep, while a wind from God swept over the face of the waters. Then God said, "Let there be light"; and there was light. -And God saw the light, that it was good; and God divided the light from the darkness. -God called the light Day, and the darkness He called Night. So the evening and the morning were the first day. +And God saw that the light was good; and God separated the light from the darkness. +God called the light Day, and the darkness he called Night. And there was evening and there was morning, the first day. ``` It might be a little more descriptive, but editing all that text just for a quick comparison felt suspiciously like work, and anyway the output still doesn’t seem very useful. ## [#](https://p1k3.com/userland-book/#wdiff) wdiff For cases like this, I’m fond of a tool called `wdiff`: ``` $ wdiff genesis_nkj genesis_nrsv In the beginning {+when+} God created the heavens and the [-earth. The-] {+earth, the+} earth was [-without form, and void;-] {+a formless void+} and darkness [-was on-] {+covered+} the face of the [-deep. And the Spirit of-] {+deep, while a wind from+} God [-was hovering-] {+swept+} over the face of the waters. Then God said, "Let there be light"; and there was light. And God saw [-the light,-] that [-it-] {+the light+} was good; and God [-divided-] {+separated+} the light from the darkness. God called the light Day, and the darkness [-He-] {+he+} called Night. [-So the-] {+And there was+} evening and [-the morning were-] {+there was morning,+} the first day. ``` Deleted words are surrounded by `[- -]` and inserted ones by `{+ +}`. You can even ask it to spit out HTML tags for insertion and deletion… ``` $ wdiff -w '' -x '' -y '' -z '' genesis_nkj genesis_nrsv ``` …and come up with something your browser will render like this: > In the beginning when God created the heavens and the earth. The earth, the earth was without form, and void; a formless void and darkness was on covered the face of the deep. And the Spirit of deep, while a wind from God was hovering swept over the face of the waters. Then God said, "Let there be light"; and there was light. And God saw the light, that it the light was good; and God divided separated the light from the darkness. God called the light Day, and the darkness He he called Night. So the And there was evening and the morning were there was morning, the first day. Burton H. Throckmorton, Jr. this ain’t. Still, it has its uses. ## [#](https://p1k3.com/userland-book/#the-command-line-as-as-a-shared-world) 7. the command line as as a shared world In an earlier chapter, I wrote: > You can think of the shell as a kind of environment you inhabit, in much the way your character inhabits an adventure game. It turns out that sometimes there are other human inhabitants of this environment. Unix was built on a model known as “time-sharing”. This is an idea with a lot of history, but the very short version is that when computers were rare and expensive, it made sense for lots of people to be able to use them at once. This is part of the story of how ideas like e-mail and chat were originally born, well before networks took over the world: As ways for the many users of one computer to communicate on the same machine. Says Dennis Ritchie: > What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing, as supplied by remote-access, time-shared machines, is not just to type programs into a terminal instead of a keypunch, but to encourage close communication. Times have changed, and while it’s mundane to use software that’s shared between many users, it’s not nearly as common as it once was for a bunch of us to be logged into the same computer all at once. ★ In the mid 1990s, when I was first exposed to Unix, it was by opening up a program called NCSA Telnet on one of the Macs at school and connecting to a server called mother.esu1.k12.ne.us. NCSA Telnet was a terminal, not unlike the kind that you use to open a shell on your own Linux computer, a piece of software that itself emulated actual, physical hardware from an earlier era. Hardware terminals were basically very simple computers with keyboards, screens, and just enough networking brains to talk to a /real/ computer somewhere else. You’ll still come across these scattered around big institutional environments. The last time I looked over the shoulder of an airline checkin desk clerk, for example, I saw green monochrome text that was probably coming from an IBM mainframe somewhere far away. Part of what was exciting about being logged into a computer somewhere else was that you could /talk to people/. ★ /{This chapter is a work in progress.}/ ## [#](https://p1k3.com/userland-book/#the-command-line-and-the-web) 8. the command line and the web Web browsers are really complicated these days. They’re full of rendering engines, audio and video players, programming languages, development tools, databases — you name it, and there’s a fair chance it’s in there somewhere. The modern web browser is kitchen sink software, and to make matters worse, it is /totally surrounded/ by technobabble. It can take /years/ to come to terms with the ocean of words about web stuff and sort out the meaningful ones from the snake oil and bureaucratic mysticism. All of which can make the web itself seem like a really complicated landscape, and obscure the simplicity of its basic design, which is this: Some programs pass text around to one another. Which might sound familiar. The gist of it is that the web is made out of URLs, “Uniform Resource Locators”, which are paths to things. If you squint, these look kind of like paths to files on your filesystem. When you visit a URL in your browser, it asks a server for a certain path, and the server gives it back some text. When you click a button to submit a form, your browser sends some text to the server and waits to see what it says back. The text that gets passed around is (usually) written in a language with particular significance to web browsers, but if you look at it directly, it’s a format that humans can understand. Let’s illustrate this. I’ve written a really simple web page that lives at [http://p1k3.com/hello_world.html](http://p1k3.com/hello_world.html). ``` $ curl 'https://p1k3.com/hello_world.html' hello, world

hi everybody

How are things?

``` `curl` is a program with lots and lots of features — it too is a little bit of a kitchen sink — but it has one core purpose, which is to grab things from URLs and spit them back out. It’s a little bit like `cat` for things that live on the web. Try the above command with just about any URL you can think of, and you’ll probably get /something/ back. Let’s try this book: ``` $ curl 'https://p1k3.com/userland-book/' | head userland: a book about the command line for humans ``` `hello_world.html` and `userland-book` are both written in HyperText Markup Language. HTML is just text with a specific kind of structure. It’s been around for quite a while now, and has grown up a lot in 20 years, but at heart it still looks a lot [like it did in 1991](http://info.cern.ch/hypertext/WWW/TheProject.html). The basic idea is that the contents of a web page are marked up with tags. A tag looks like this: ``` hi! -, | | | | `- content | | `- closing tag `-opening tag ``` Sometimes you’ll see tags with what are known as “attributes”: ``` userland ``` This is how links are written in HTML. `href="..."` tells the browser where to go when the user clicks on “ [userland](http://p1k3.com/userland-book) ”. Tags are a way to describe not so much what something /looks like/ as what something /means/. Browsers are, in large part, big collections of knowledge about the meanings of tags and ways to represent those meanings. While the browser you use day-to-day has (probably) a graphical interface and does all sorts of things impossible to render in a terminal, some of the earliest web browsers were entirely text-based, and text-mode browsers still exist. Lynx, which originated at the University of Kansas in the early 1990s, is still actively maintained: ``` $ lynx -dump 'http://p1k3.com/userland-book/' | head userland __________________________________________________________________ [1]# a book about the command line for humans Late last year, [2]a side trip into text utilities got me thinking about how much my writing habits depend on the Linux command line. This struck me as a good hook for talking about the tools I use every day with an audience of mixed technical background. ``` If you invoke Lynx without any options, it’ll start up in interactive mode, and you can navigate between links with the arrow keys. `lynx -dump` spits a rendered version of a page to standard output, with links annotated in square brackets and printed as footnotes. Another useful option here is `-listonly`, which will print just the list of links contained within a page: ``` $ lynx -dump -listonly 'http://p1k3.com/userland-book/' | head References 2. http://p1k3.com/2013/8/4 3. http://p1k3.com/userland-book.git 4. https://github.com/brennen/userland-book 5. http://p1k3.com/userland-book/ 6. https://twitter.com/brennen 9. http://p1k3.com/userland-book/#a-book-about-the-command-line-for-humans 10. http://p1k3.com/userland-book/#copying ``` An alternative to Lynx is w3m, which copes a little more gracefully with the complexities of modern web layout. ``` $ w3m -dump 'http://p1k3.com/userland-book/' | head userland ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # a book about the command line for humans Late last year, a side trip into text utilities got me thinking about how much my writing habits depend on the Linux command line. This struck me as a good hook for talking about the tools I use every day with an audience of mixed technical background. ``` Neither of these tools can easily replace enormously capable applications like Chrome or Firefox, but they have their place in the toolbox, and help to demonstrate how the web is built (in part) on principles we’ve already seen at work. ## [#](https://p1k3.com/userland-book/#a-miscellany-of-tools-and-techniques) 9. a miscellany of tools and techniques Want to know the definition of a word, or find useful synonyms? ``` $ dict concatenate | head -10 4 definitions found From The Collaborative International Dictionary of English v.0.48 [gcide]: Concatenate \Con*cat"e*nate\ (k[o^]n*k[a^]t"[-e]*n[=a]t), v. t. [imp. & p. p. {Concatenated}; p. pr. & vb. n. {Concatenating}.] [L. concatenatus, p. p. of concatenare to concatenate. See {Catenate}.] To link together; to unite in a series or chain, as things depending on one another. ``` ## [#](https://p1k3.com/userland-book/#aspell) aspell Need to interactively spell-check your presentation notes? ``` $ aspell check presentation ``` Just want a list of potentially-misspelled words in a given file? ``` $ aspell list < ../literary_environment/index.md | sort | uniq -ci | sort -nr | head -5 40 td 24 Veselka 17 Reuel 16 Brunner 15 Tiptree ``` ## [#](https://p1k3.com/userland-book/#mostcommon) mostcommon Something like that last sequence sure does seem to show up a lot in my work: Spit out the /n/ most common lines in the input, one way or another. Here’s a little script to be less repetitive about it. ``` $ aspell list < ../literary_environment/index.md | ./mostcommon -i -n5 40 td 24 Veselka 17 Reuel 16 Brunner 15 Tiptree ``` This turns out to be pretty simple: ``` $ cat ./mostcommon #!/usr/bin/env bash # Optionally specify number of lines to show, defaulting to 10: TOSHOW=10 CASEOPT="" while getopts ":in:" opt; do case $opt in i) CASEOPT="-i" ;; n) TOSHOW=$OPTARG ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done # sort and then uniqify STDIN, # sort numerically on the first field, # chop off everything but $TOSHOW lines of input sort < /dev/stdin | uniq -c $CASEOPT | sort -k1 -nr | head -$TOSHOW ``` Notice, though, that it doesn’t handle opening files directly. If you wanted to find the most common lines in a file with it, you’d have to say something like `mostcommon < filename` in order to redirect the file to `mostcommon` ’s input. Also notice that most of the script is boilerplate for handling a couple of options. The work is all done in a oneliner. Worth it? Maybe not, but an interesting exercise. ## [#](https://p1k3.com/userland-book/#cal-and-ncal) cal and ncal Want to know what the calendar looks like for this month? ``` $ cal April 2014 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ``` How about for September, 1950, in a more compact format? ``` $ ncal -m9 1950 September 1950 Su 3 10 17 24 Mo 4 11 18 25 Tu 5 12 19 26 We 6 13 20 27 Th 7 14 21 28 Fr 1 8 15 22 29 Sa 2 9 16 23 30 ``` Need to know the date of Easter this year? ``` $ ncal -e April 20 2014 ``` ## [#](https://p1k3.com/userland-book/#seq) seq Need the numbers 1-5? ``` $ seq 1 5 1 2 3 4 5 ``` ## [#](https://p1k3.com/userland-book/#shuf) shuf Want to shuffle some lines? ``` $ seq 1 5 | shuf 2 1 4 3 5 ``` ## [#](https://p1k3.com/userland-book/#ptx) ptx Want to make a [permuted index](http://en.wikipedia.org/wiki/Key_Word_in_Context) of some phrase? ``` $ echo 'i like american music' | ptx i like american music i like american music i like american music i like american music ``` ## [#](https://p1k3.com/userland-book/#figlet) figlet Need to make ASCII art of some giant letters? ``` $ figlet "R T F M" ____ _____ _____ __ __ | _ \ |_ _| | ___| | \/ | | |_) | | | | |_ | |\/| | | _ < | | | _| | | | | |_| \_\ |_| |_| |_| |_| ``` ## [#](https://p1k3.com/userland-book/#cowsay) cowsay How about ASCII art of a cow dragon saying something? ``` $ cowsay -f dragon "RTFM, man" ___________ < RTFM, man > ----------- \ / \ //\ \ |\___/| / \// \\ /0 0 \__ / // | \ \ / / \/_/ // | \ \ @_^_@'/ \/_ // | \ \ //_^_/ \/_ // | \ \ ( //) | \/// | \ \ ( / /) _|_ / ) // | \ _\ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. (( / / )) ,-{ _ `-.|.-~-. .~ `. (( // / )) '/\ / ~-. _ .-~ .-~^-. \ (( /// )) `. { } / \ \ (( / )) .----~-.\ \-' .~ \ `. \^-. ///.----..> \ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ ``` ## [#](https://p1k3.com/userland-book/#endmatter) endmatter As of July 2018, source for this work can be found [on code.p1k3.com](https://code.p1k3.com/gitea/brennen/userland-book). I welcome feedback there, [on Mastodon](https://mastodon.social/brennen), or by mail to userland@p1k3.com. ## [#](https://p1k3.com/userland-book/#copying) copying This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/). [image:87EF0913-B025-47F7-85E7-8176639A3A13-1775-000000291B50E02A/by-sa-4.png] [userland: a book about the command line for humans](https://p1k3.com/userland-book/) # iPhone 4S review [image:63CAD17C-30B0-41FA-9E6F-2C5F472B6A5C-648-0000000C2F94D344/iPhone4s_review1.1419962147.jpg] Reviewing the iPhone 4S is in many ways a lot like reviewing the original iPhone 4, except that it's not. The device, which was just announced at a special event on Apple's campus, is very much the same phone the company released in June of 2010 — but it's also something completely new. While much of that sameness comes from an identical physical appearance, and nearly identical specs (in some places), there's much that's fresh here. Besides packing the successor to Apple's custom A4 CPU (appropriately dubbed the A5) inside, the iPhone 4S also sports an upgraded rear camera, an improved antenna design, and a new internal radio that allows the device to perform double duty on both CDMA and GSM networks. In reality, however, the hardware is only half the story. Maybe not even half. The introduction of the iPhone 4S marks the introduction of iOS 5 as well. The new operating system is loaded with big improvements, from notifications to how your device connects to your computer. Packed with major features like iCloud integration and an innovative, voice-activated "intelligent assistant" named Siri, it's not unfair to consider this one of the most meaningful updates to iOS we've ever seen. For a phone that's already being touted as one of Apple's fastest-sellers, it's hard to even suggest that the iPhone 4S won't be a success. But beyond pure market excitement, is there enough in this new device to stand up to a steady wave of competition — some which is awfully fierce? I'll try to answer that question in my review below, so read on for the whole story. [Video]() [image:8AA7E31B-F477-4390-8130-5C5645512956-648-0000000C2F9234E8/done-apple-iphone4s.jpg] > The iPhone 4S is an astoundingly good phone, but the gap between this year's model and last year's model isn't as wide as Apple would probably like This is the easy part, kind of. If you're an owner of an older iPhone, or someone looking to switch to an iPhone from a different platform, there's never been a better Apple device to buy. The iPhone 4S is an astoundingly good phone. Between the hardware (both inside and out) and the software (iOS 5 as well as third party offerings), it's just kind of an awesome package. The lack of LTE, a larger display, or a new design may put off some buyers, but that won't change the fact that the 4S is a force to be reckoned with. It's not exactly the same story as with the release of the iPhone 4, where you felt like competitors had to go back to the drawing board completely, but Android and Windows Phone device makers will certainly be scratching their heads trying to figure out how to best what Apple is offering. The iPhone 4S is a great device for some, but what if you're thinking of upgrading from an iPhone 4? That's a tougher call. The phone is faster, to be sure, and has an amazing camera. And of course, you can't get Siri unless you have a 4S... but I just don't know if any of those reasons are compelling enough to convince previous buyers to upgrade. The concept is a particularly hard sell for Verizon customers. The gap between this year's model and last year's model isn't as wide as Apple would probably like. For this review, I returned to the iPhone after a fairly long period of using and testing other devices. Spending a week with Apple's newest phone, I'm reminded again of just what makes the company's products so special. It's not specs, services, or apps. This phone is not perfect. Certainly it can be improved. But there is something here, beyond the screen and CPU, beyond iCloud, something under the surface. Some intangible spark. Is this the best phone ever made? That's debatable. But I can tell you this: the iPhone 4S is pretty damn cool. [View all 23 stories](https://www.theverge.com/2011/10/31/2528593/iphone-4s-release-date-price) [iPhone 4S review](https://www.theverge.com/apple/2011/10/12/2484524/iphone-4s-review) # Inside Apple’s Decision to Blow Up the Digital Ads Business [image:ED8F0166-758B-4B4D-B171-E0C182818941-29981-000003D2D6B1F9CB/29b2b053-cced-4b62-bc3e-e7a9c7a55f60.jpg] From left: Apple's Tim Cook, Erik Neuenschwander, Craig Federighi, Eddy Cue and Phil Schiller. Photos by Bloomberg. Art by Mike Sullivan March 14, 2022 6:00 AM PDT For years, Apple CEO Tim Cook has been the most vocal privacy champion among all of big tech’s top leaders. But within Apple, a decision to curtail ad tracking of iPhone users in 2020 sparked an intense debate about just how far to push privacy changes poised to upend the digital advertising industry. On one side of the discussions was Craig Federighi, Apple’s software chief. He oversaw a team of privacy-minded engineers who wanted to curtail the powers of an Apple tool that unscrupulous advertising companies, mobile developers and data brokers were exploiting to track the behavior of iPhone users, according to people with direct knowledge of the discussions. On the other side were groups reporting to Eddy Cue, head of Apple’s services and advertising businesses, and Philip Schiller, then the company’s top marketing executive, who led its App Store. Cue's and Schiller's teams argued for more-cautious action against the tool, given that many developers relied on it for advertising revenue. Schiller's group also worried about potential damage to App Store revenues, though Schiller himself was in agreement with Federighi and his team, the people said. In the end, the Apple leaders reached a solution. The company required app developers to ask users whether they wanted to allow their online activities to be tracked across websites and apps operated by companies other than the developer. Developers couldn’t use the tool anymore to track users who opted out but instead had to rely on an inferior system developed by Apple that better protected user privacy. For many companies in digital advertising, the impact of Apple’s changes—which the company began to enforce last April—has been seismic. That’s especially true for Facebook’s parent company, Meta Platforms, which expects the changes to shave $10 billion off its revenues this year because of their impact on the company’s prodigious data collection practices. Tech Executives Threatened With Jail Time Under Proposed U.K. Law By Mark Di Stefano and Sylvia Varnham O'Regan · March 16, 2022 12:32 PM PDT [image:B4D6EB2D-3329-4029-AA95-9BE4704534B5-29981-000003D2D6B09D58/7ca94b96-6881-4b04-8e4a-e248fbf79ace.jpeg] Google Cloud Doubles Pricing for Some Storage Services By Kevin McLaughlin · March 16, 2022 Lawmakers introduce bill that would let Nvidia, Qualcomm share in U.S. chip subsidies By Stephen Nellis · March 16, 2022 SiFive raises $175 million at $2.5 billion valuation By Stephen Nellis · March 16, 2022 [image:96AA22D3-78EB-4BF3-BF4F-ED6135BBDDB5-29981-000003D2D6AD1727/app-articles-tab-screenshot@2x-3c2289fa3376fba910bde19989adba825d62fb1385dbc047be504492de139916.png] [image:7D25B65E-881F-4E77-8EF9-7CC3F71E13BE-29981-000003D2D6ABB18D/locked-homepage-video-insert.jpg] [image:21FEB169-B966-4371-BF3C-A0EC5B1DD856-29981-000003D2D6A92D90/locked-homepage-article-insert.png] [Inside Apple’s Decision to Blow Up the Digital Ads Business](https://www.theinformation.com/articles/inside-apples-decision-to-blow-up-the-digital-ads-business?rc=78wqry) # Flexibits | Flexible Mac and iOS Apps [image:47E1C588-494F-4845-A5BD-D068C979EDCC-29324-000031C4B9C3738B/flexibits-loop-512x512.png] Fantastical is compatible with the Shortcuts app, allowing you to create a number of detailed actions. Here are the supported actions Fantastical offers: * `Create from Input` * `Show Calendar` * `Show List` * `Show Schedule` * `Upcoming Item` * `Overdue Tasks` * `Open on Date` * `Change Calendar Set` * `Create New Event in Fantastical` * `Get Invitees from Event` ### URL actions Fantastical supports the following URL actions: `x-fantastical3://parse?sentence=[input]` — Begin creating a new event with the given sentence. The notes parameter can also be added to specify a note with the event. For example: `x-fantastical3://parse?sentence=sentence¬es=[your note]`. The following parameters are also supported: * `add` (set to 1 to automatically add an event - be careful!) * `reminder` * `due` (requires the format `yyyy-MM-dd HH:mm` ) * `title` * `location` * `url` * `notes` * `start` (requires the format `yyyy-MM-dd HH:mm` ) * `end` (requires the format `yyyy-MM-dd HH:mm` ) * `allDay` (can be 1 or 0) * `attendees` (list of email addresses to invite, separate multipes with commas) * `availability` (options: `free`, `busy`, `tentative`, `unavailable` ) * `private` (can be 1 or 0, only applies to Exchange calendars). Note that if you use the `sentence` parameter it will cause other parameters to be ignored. `x-fantastical3://show?date=yyyy-mm-dd` — Jumps to the specified date. You can also use a natural language date such as "Tuesday" or "next month" and Fantastical will do its best to show the date. Fantastical supports [x-callback-url](http://x-callback-url.com/). x-callback-url can be used by using `x-fantastical3://x-callback-url/parse?parameters` or `x-fantastical3://x-callback-url/show?parameters`. The parameters `x-source`, `x-success`, `x-cancel`, and `x-error` are all supported. Refer to the x-callback-url site for more details. Fantastical is also officially supported by [Launch Center Pro](http://contrast.co/launch-center-pro/). [Flexibits | Flexible Mac and iOS Apps](https://flexibits.com/fantastical-ios/help/integration) # The Ladies Room [image:EE97CCEA-2AF5-4524-ADDF-106FFC4F0FAF-1797-000000507A3619ED/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3d2b2180-7905-4b61-83d3-6db68ccba7b5_2080x1442.jpeg] Every two weeks or so, I am publishing an essay from an emerging writer. This week, an essay from Nancy Powaga. Nancy is a writer who lives and works in Seattle, Washington. They hold an MFA in Creative Writing from the University of Arizona. Currently, Nancy is at work on a novel about brain injury, alcoholism, and queer spirituality. You can find them on Twitter @nanbot and Instagram @sideofnanch. As a rule, I use the public bathroom that corresponds to the sex on my birth certificate. Filed on May 11, 1984 by the Director of Licensing of Hennepin, County, Minnesota, the certificate reads, “Sex: Female.” At airports and restaurants, in amusement parks and malls, I urinate and sometimes defecate, though only on an absolutely need-to-go-number-two-now basis, in the women’s restroom. Despite the female pedigree granted by my birth certificate and the vagina between my legs, I’m always nervous to step inside public bathrooms. On first glance, most people perceive me as a man. I am 6’1” and muscular. I have short, nineties male heartthrob hair, and I wear clothes from the men’s section. In winter, I cover my body with a long goose down parka. I don’t have much in the way of hips and usually bind my breasts. I am trans non-binary, but since there aren’t widespread unisex restrooms, I choose the women’s restroom, the safer of two evils, to do my business. More often than not, I’m greeted by impolite stares. After people get in their double and triple takes, they usually just wash their hands and get the hell out of my way. Sometimes, I’m told point-blank that I’m in the women’s bathroom, the wrong bathroom. I say, “No, I’m not,” and then I rush into a stall, hoping that the accuser either realizes the error of her assumption or doesn’t have the fight to escalate things. Once at Whole Foods in Bellevue, Washington, an affluent Seattle suburb, as I waited for the automated dispenser to whir out my recycled paper towel, I could hear a muffled conversation happening right outside the restroom door. I figured it was the elderly woman who had minutes prior stared at me with the unbroken awe of a human being first encountering extraterrestrial life, as though a little green man stood before her and not me, an Earthling, rushing to urgently expel a load of iced-Americano-tinged urine into a porcelain chair. I prepped myself to defend myself, summoned some righteous rage, swung open the door, and preemptively stated, “I’m in the right restroom.” The woman, store manager, and poor teenage checkout person who’d been roped into the mix, scattered. Hoping that was the end of it, I took my cart and started walking away. I didn’t get far before the woman reappeared. “I’m sorry,” she said, “I thought you were a man because you’re so tall and have short hair.” “It’s okay, really,” I said, trying to kill the conversation. “But now I see that you’re a woman.” “It doesn’t matter,” I said. “You can’t tell people which restroom they can use.” “But I thought you were a man…” I was livid, but I managed to measure my speech. “Listen, you can’t tell a person’s gender based on how they look, and you shouldn’t assume or tell someone they’re in the wrong bathroom.” In her eyes, something clicked. I was proud to have stood up for myself and anyone else who is regularly given the side eye—or worse—in gendered public spaces. Regardless, I wished that someone else had already informed Grandma that trans people exist. I’m fine, really. Whatever harassment lite I get pales in comparison to the more serious threats against other trans people. First off, I rarely feel like I’m in physical danger. There’s privilege in being read, even if just for a moment, as a six foot-plus white man. Bathroom starers are usually quite young or quite old and not about to attack me. I do get the occasional “faggot!” shouted at me, but these greetings come from bigots on-the-go, young guys leaning out of their Corollas as they roll off to school or home or work for another day of indignity, real or imagined, at being reminded that they’re nothing special. They’d never learned in toddlerdom that acting out only shines a spotlight on one’s insecurities. In this scenario, it only makes it seem like they want to have sex with a man. The American Right echoes the resentment of these mundane men. Republicans remain uncomfortable with strides towards gender equity, even if they can’t say it in so many words because in gender politics (and nearly everything else), the party holds the minority opinion. Politicians cannot openly [agree with the ten percent of American adults](https://www.pewresearch.org/social-trends/2020/07/07/a-century-after-women-gained-the-right-to-vote-majority-of-americans-see-work-to-do-on-gender-equality/) who believe that when it comes to giving women equal rights to men, our country has gone too far. The polling suggests that militant misogynists are a relatively small proportion of the population. The group doesn’t constitute much of a voting bloc, even among the MAGA base. The Right’s attempts to sustain minority rule inspires some of their most twisted rhetoric. [In a recent speech](https://www.hawley.senate.gov/senator-hawley-delivers-national-conservatism-keynote-lefts-attack-men-america), Senator Josh Hawley—made famous by his January 6th insurrectionist fist pump— put on the Ol’ Fascist Razzle Dazzle: > The Left know what they believe. They believe that America is a systemically racist, structurally oppressive, hopelessly patriarchal kind of place. It’s a dystopia, if only Americans would get woke enough to see it. It’s a nation that needs to be taught how unjust it truly is and after that, rebuilt from top to bottom. That’s the Leftist project, and that’s their grand ambition: to deconstruct America. This work of deconstruction is what unites today’s Left and binds together all their various preoccupations, from critical race theory to their economic socialism to their bizarre war on women’s sports. Hawley goes on to blame the abolitionist Left for a supposed crisis of masculinity. He believes (or purports to believe, one can’t really tell with this guy) that the Left’s multi-pronged challenge to gender norms signals the collapse of the American Man. He says that instead of getting married and raising families, young men are stuck in the basement playing Call of Duty and jacking off to porn. Josh Hawley doth protest too much. For all their talk of freedom, Hawley and his cronies rely heavily on strident rules—and the fear of breaking these rules—to manipulate their followers. The speech is his way of shouting out of a car window or telling someone they’re in the wrong bathroom. This is how the Right makes victims out of men. Despite their insistence on self-reliance, they bemoan the sad state of affairs from mothers’ basements throughout the land. Politicians deflect and conjure unspecific, mythical periods when men were men, women were women, and America was untouchable. Their nationalism ignores all the destruction wrought by American culture, wars, and settler colonialism. In pre-colonial North America, societies recognized genders beyond the binary. Duane Brayboy’s article “ [Two Spirits, One Heart, Five Genders](https://indiancountrytoday.com/archive/two-spirits-one-heart-five-genders) ” details the status of Two Spirit people, a term which coalesces various tribes’ understanding of gender nuance: > The Two Spirit people in pre-contact Native America were highly revered and families that included them were considered lucky. Indians believed that a person who was able to see the world through the eyes of both genders at the same time was a gift from The Creator. Traditionally, Two Spirit people held positions within their tribes that earned them great respect, such as Medicine Men/Women, shamans, visionaries, mystics, conjurers, keepers of the tribe's oral traditions, conferrers of lucky names for children and adults (it has been said that Crazy Horse received his name from a Winkte), nurses during war expeditions, cooks, matchmakers and marriage counselors, jewelry/feather regalia makers, potters, weavers, singers/artists in addition to adopting orphaned children and tending to the elderly. Brayboy points out that Two Spirit people weren’t merely tolerated, they were celebrated, ordained, and considered integral assets to society. Texas Governor Greg Abbott’s new anti-trans legislation suggests an opposite approach to diversity. Abbott and his Attorney General operate under the implication that there’s no such thing as transgenderism, and so they work hard to erase trans people. In another century, Abbott might have called for the governmental institutionalization and lobotomization of transgender adults. Today, he points his ire at transgender kids and their caretakers. According to Abbott, parents, teachers, and medical professionals who enable gender-affirming care for citizens under eighteen are guilty of child abuse. Parental choice has become a potent topic for the Right, born out of the hardships that parents have experienced during the pandemic. Republicans want to maintain a system where parents have a fundamental right to raise their children how they choose. One would assume that these rights should privilege a parent’s consultations with their child’s medical providers. The problem for Abbott is that in the twenty-first century, sometimes a child’s medical regimen includes comprehensive gender care. Abbott’s work is cruel, but also incoherent. Any parent knows that there are an infinite number of things that they cannot choose about their child. Gender reveal parties are built around this conceit. These popular festivals of biological determinism confuse gender and sex but ultimately celebrate the delight and surprise of chance, matters left squarely out of parents’ hands. Reveal parties, despite their ham-handed understanding of gender, manage to concede that a human’s nature is left to fortune, randomness, a deity—but not parental choice. I see an opening. What if the mainstream understanding of gender moved on from pink and blue to include numerous genders, each innate in that they depend on a person’s interpretation of one’s own soul, and not the appearance of one’s genitals? I don’t want to “leave trans kids alone,” as liberals plead whenever issues around trans youth make it to the courts. This framing is too passive, too much like the “love is love” cry from the marriage equality fight. Queer love is amazing, holy, and so are trans kids. I hope for a culture that exalts trans kids, sees them as special in the same way that Brayboy describes his Two Spirit ancestors. The genocide of the Indigenous Peoples of North America destroyed both lives and expansive cultural understandings of gender roles. Adherence to a rigid gender binary is ahistorical, unimaginative, and fragile; any contemporary deconstruction is just the overdue toppling of a house of cards. Still, the Right has a talent for sniffing out, exploiting, and even creating anxieties which shadow progressive gains. In the years leading up to the pandemic, Republicans designed so-called “bathroom bills” to scapegoat my transgender siblings who use the public restroom in contradiction with the sex marker on their birth certificates. The bills play on all sorts of ugly tropes: transgender people are deceptive and predatory, perverted, and ultimately up to no good. Bathroom bills are a wedge issue meant to align a Republican party split between haves and have-nots, the old-school Moral Majority types and the white grieving NASCAR set, a voting bloc divided between people who get richer from low-or-no taxes on the wealthy and those who seek an answer to their failing quality of work and life. Bathroom bills bet on the premise that everyone—whether they are high income or ashamed of relying on other people, let alone the government—fears a man in a skirt. Of course, transgender women are not men in ladies’ clothing. They are women, full stop. And of course, transgender people, especially Black transgender women, are not the perpetrators of sexual assault but [overwhelmingly the victims](https://www.hrc.org/resources/fatal-violence-against-the-transgender-and-gender-non-conforming-community-in-2021) of [violence](https://www.pbs.org/newshour/nation/2021-is-now-the-deadliest-year-on-record-for-transgender-people). Bathroom bills are meant to inject fear and confusion into a place where women of all stripes just want to pee in peace. They are designed to shout, in the words of the drag queen Jaida Essence Hall, “Look over there!” as Republican politicians strip workers’ rights, cut social safety nets, and otherwise screw over voters. Where then do I fit in this fool’s bargain? There are no state legislators arguing about where I, a 37-year-old non-binary dyke, should go when nature calls. By focusing so much on the gender binary—that quick and dirty tool to divide and conquer—the Right has neglected to think about the millions of people who fall somewhere in between male and female. I could spend all day poking holes in the ginned-up problems supposedly haunting America. But at the end of the day, anti-trans activism is tactical. Politics only has so many themes, and the rich and powerful using fear-based manipulation to stir up support is one that is tried and true. The Republican playbook is simple. First, they make up a problem which centers an already-oppressed group as the object of fear. When one kerfuffle dissipates from the public consciousness, Republicans simply move on to the next fabricated social catastrophe because in this version of Occam’s razor, the simplest solution to any non-problem is more ignorance. But wedge issues touching on gender have unique staying power. People remain super sensitive about disrupting the divide. I’m reminded of this every time someone mistakes me for a man and then knee-jerks into profuse apology. Recently at a nice restaurant, the visibly gay, presumably cisgender man working as host “sirred” me from behind. When I turned around, he hid his face in embarrassment. The remainder of the evening, he made a point to call me “miss” and “she” and “her.” At the end of the meal, a free dessert arrived at the table. I liked the host. He was kind, polite, and well-meaning. The gratis pavlova was delicious. The guy was likely operating from his own experience as a queer person, reacting to the pain he’s felt at being called a sissy or a girl or a faggot, and dreading that he’d inflicted the same harm on someone else. The irony of the situation is that the host failed to do the one thing that would have made things right. He could have asked me for my pronouns. Or I could have just /told/ him which pronouns I use. While misgendering someone remains an ultimate social taboo, I try not to be too hard on other people or myself. Until very recently, I did identify as a woman. The pandemic years have given me time and space to reflect. Interactions with the general public have diminished. When I’m out and about, my face—which holds some of my most feminine features—is obscured by a mask. Often, strangers don’t even try to guess my gender. I’m neither sirred nor m’aammed, bossed nor honeyed. I exist without salutation. I enjoy respite from perception. At home, it’s just me, my partner, and our dog, and when only two people are around, “you” quickly becomes the only pronoun you need. At some indeterminant point in the pandemic, I started noticing myself squirm when coworkers on Zoom referred to me with she/her pronouns. Over this period, I’ve come to identify most comfortably as neither male nor female, as a person who can express and internalize qualities from all along the gender spectrum. I now use they/them pronouns. This is not a matter of preference. I prefer almond milk in my latte but will drink cow’s milk in a pinch. My gender, however, is not my coffee order, so I ask others to use these pronouns when referring to me as a matter of fact, not frivolity. One of the blessings of queerness is the potential energy that it stores up in a person, a power that fuels change. Over the years, I’ve changed a lot about myself, and not only my pronouns. In the late-aughts as I was coming of age, only a handful of people I knew in my extended, very queer community in Portland, Oregon identified as non-binary and used they/them pronouns. Binary trans people were far more visible, especially trans men whose beards, flat chests, and general masculinity threatened my fragile, baby-queer psyche. Back then, I held problematic views still common among TERFs who fear that trans people aim to snuff out or replace women and lesbians. I’ve learned a lot since then. I’ve changed, and so has my community. TikTok routinely feeds me videos from people who explain that during the course of the pandemic, they’ve found themselves unexpectedly but irrefutably attracted to genders they’d never desired in the past. Bros lust after Paul Mescal. Ostensibly straight women fawn over Megan Rapinoe. My gay cis male friend Carson keeps posting to Instagram about his giant crush on Sydney Sweeney even though he’s still more likely to spend his Fridays at the leather bar than anywhere near straight people. Anecdotally, a number of friends have experienced shifts to non-binary identities similar to mine. The social rupture caused by the pandemic has provided folks a petri dish to test out alternate premises. For example, you don’t have to pass or have surgery or do anything at all to be trans. You don’t have to accept or reject or love or fear masculinity to be a good queer. Queerness isn’t necessarily about how you look or who you date. It’s about truth which is beauty which is love for yourself and others. Humans are paradoxical, characteristically obstinate and adaptable. We despise being inconvenienced, but our survival routinely begs us to take novel approaches. As I leave the house I now recite, “phone, keys, wallet, mask.” I’m so accustomed to pandemic public health measures that I have a hard time recalling the beforetimes, when seeing a masked public would have been remarkable, a scene out of a disaster movie, not a Trader Joe’s. Of course, not everyone has been so amenable to masks. Anti-mask activism gets a lot of attention, which seems like the point. Vaccines are another problem. American men are about [four percent less likely to have been vaccinated](https://covid.cdc.gov/covid-data-tracker/#vaccination-demographics-trends) than women. [Polling suggests](https://www.nbcnews.com/politics/meet-the-press/nbc-news-poll-shows-demographic-breakdown-vaccinated-u-s-n1277514) that white men, particularly those who support Trump, are the most stubborn holdouts. Sometimes, I wonder if the resistance has to do with the fact that getting vaccinated means getting penetrated, letting the outside into your body. At a public event in early 2021, an Idaho doctor named Ryan Cole—who was later appointed to Idaho’s largest public health board—even referred to the COVID-19 vaccine as “needle rape.” I wonder how these attention-starved anti-vaxxers would handle real oppression, the types of hardships that are life-altering and life-ending and not just inconveniences. Sixteen percent of American women, for example, have been the [victim of an attempted or completed rape](http://www.rainn.org/statistics/scope-problem) in their lifetimes. And according to the [Williams Institute at UCLA School of Law](https://williamsinstitute.law.ucla.edu/press/ncvs-lgbt-violence-press-release/), “LGBT people are nearly four times more likely than non-LGBT people to experience violent victimization, including rape, sexual assault, and aggravated or simple assault.” Then again, maybe anti-vaxxers are aware of their standing. Maybe they fear that a needle’s poke is not just a poke but a small taste of what it’s like to be us. It can be tempting to want to just wait out these so-called culture wars. The pandemic will end. The broader public might one day soon accept trans people. This year, for the first time ever, /People Magazine/ placed actor Brian Michael Smith, a transgender man, on its Sexiest Men Alive list. It may seem silly, but the distinction points to a big cultural shift. Not long ago, trans panic was an effective legal defense in homicide cases. Defendants argued that their horrific actions were justified on account of the insanity-inducing horror of realizing that a romantic partner was transgender. But now in waiting rooms across the country, a popular tabloid has given straight women and cis gay men permission to lust after a trans person. In America, objectification is the surest sign of acceptance. Of course, there’s real danger in today’s persistent anti-trans rhetoric. I fear that all transgender and gender-nonconforming people, despite the modest gains of now being considered human in some circles, are a few setbacks away from being dragged back into hate’s tar pit. The only thing keeping us from another Trump candidacy is a massive stroke in the septuagenarian’s brain and even then, Republicans would find a way to run the guy. Picture Lindsay Graham and Mitch McConnell propping up Trump /Weekend at Bernie’s/ style in the Oval Office, piping in “Memories” from /Cats/ to give him enough wherewithal to mutter out “Count Chocula!” as his Supreme Court nominee to replace an ousted Sonia Sotomayor. The new seven-two conservative super XXL majority court would love to hear the case of /Karen versus Ross Dress for Less/ where the plaintiff argues that the retailer did not do enough to protect her from the irreversible psychological damage of seeing a person with facial hair trying on a maxi dress. My decades-long bathroom troubles make me worry about the average American’s tolerance for gender difference. I’m also a Teutonophile and have spent a lot of time thinking about how backlash turned genocidal in the twentieth century. In 1930, the German economy tanked, which primed the conditions for Hitler to woo disillusioned voters to his extremist Nazi Party. Less than a decade later at the Buchenwald Concentration Camp, for example, homosexual prisoners were raped, castrated, and killed. Ilsa Koch, also known as the “Witch of Buchenwald,” oversaw this torture and made lampshades out of the tattooed skin of murdered inmates. Her crimes resemble the work of American serial killers from Wisconsin to Washington State, psychopaths also known for targeting women and gay men. And for every Ilsa Koch, there were probably thousands of Elke Kochs, average German citizens who ratted out a neighbor to the SS for suspicions of antisocial behavior, Nazism’s umbrella-term for queerness. Their proof? None required. I imagine that if pressed, they may have cited an apocryphal incident like trespassing in the opposite gender’s restroom. In the rush of everyday life, it’s impossible to know which conflicts are temporary backlash and which are here for the long haul. Torture to compel confession. Iraq and weapons of mass destruction. Economic stimulus as a cause of economic downfall. And now climate change. Time and again, reality has killed the American Right’s political darlings. We live in difficult times, no doubt. The past two years have seen a cavalcade of troubling events and attitudes. Police murder citizens yet voters elect the status quo. Adults scream at each other in school board meetings. Kids still bring guns to school. Global warming is here, no longer some future specter but a fleshy ghost of Christmas Present, reminding us of humanity’s excesses through fire and flood. In memes, conversation, and song, the Zeitgeist seems to be ushering in the apocalypse. /Inside/, Bo Burnham’s magnum opus of pandemic-era anxieties, features “That Funny Feeling,” a litany of sensations, objects, and facts which elucidate this contemporary sense of doom: > The backlash to the backlash to the thing that's just begun…The whole world at your fingertips, the ocean at your door…Twenty-thousand years of this, seven more to go…That unapparent summer air in early fall, the quiet comprehending of the ending of it all. Right-wing politicians have long characterized climate change as a liberal boogie man. One of their main arguments against confronting climate change, meant to appeal to an evangelical Christian base, claims that only God can affect the weather. The idea that carbon emissions, and the humans who direct them, could negatively impact the weather spits in the face of God’s supremacy. If temperatures are rising, it’s all a part of the divine plan. The righteous welcome the apocalypse, after all, because they’re sure to be chosen. Thankfully, plenty of smart, sensible people reject this suicidal ideation wrapped up as faith. There is still time to fight the worst effects of climate change. We have reason to hope that humans and our Earth will survive. And yes, there are trans people in that future. I also hope that the current backlash against transgender people will soon go the way of the marriage equality fight in the aughts. I hope in ten years, trans people can just be normal people. We’ll use bathrooms with impunity. Trans kids will include themselves in the vast majority of people who play youth sports but never dream of going on to college or professional ball. I hope trans people will have the luxury of being basic. They won’t have to be perfect like Laverne Cox, sexiest like Brian Michael Smith, or enormously wealthy like Caitlyn Jenner to gain respect. Then and now, trans people should be allowed to be messy, to stumble out of taxi cabs, to wear Halloween costumes of questionable taste. Trans people should be allowed to make clumsy passes at a bar without fear of physical harm. Maybe one day we’ll all just be human, endlessly forgivable and lovable. [The Ladies Room](https://audacity.substack.com/p/the-ladies-room?s=r) # MacStories Weekly: Issue 311 From: Club MacStories To: davidblue@extratone.com Date: Mar 11, 2022 Subject: MacStories Weekly: Issue 311 Great apps, reads, and more, curated by the MacStories team and delivered every Friday. Read MacStories Weekly in your browser Issue 311 - Friday, March 11 In this issue: An update to Federico's ShareMenu shortcut, John shares a shortcut for assembling draft tweets in Typefully, Club member Dan Stucke's desk setup, plus the usual Links, App Debuts, the latest happenings in the Club MacStories+ Discord community, a recap of MacStories articles, and a preview of upcoming MacStories podcast episodes. Rescheduling A.V. Club We're really looking forward to the next A.V. Club Town Hall, but due to unforeseen circumstances, we need to reschedule it. We'll post a new date in the Announcements channel in the Discord community as soon as we have a little more clarity about our schedules next week. We'd love to share more about what this is all about, but it will all make sense soon enough, and we think you'll agree that it will be worth the short delay. Thanks for you patience; we're really looking forward to a great conversation about the Apple TV+ series The Afterparty, which we will also publish in the Town Hall podcast feed for anyone who can't listen in live. SHORTCUTS CORNER Get help and suggestions for your iOS shortcuts and productivity apps. Shortcuts Essentials ShareMenu 2.0, Now with Better macOS Integration and Support for More Input Types Federico: Toward the end of last year, I created ShareMenu, a meta-shortcut that was designed to replicate the behavior of the old 'Run Workflow' extension: instead of picking individual shortcuts from the share sheet on iPhone and iPad, ShareMenu was a single shortcut that presented me with a colorful list of multiple shortcuts to choose from. Here's what I wrote: > With ShareMenu, I only have one shortcut in the share sheet that presents me with a nicer list of shortcuts to run. It’s the same behavior of the old ‘Run Workflow’ extension, except it’s a list, not a grid. Yes, this approach requires an extra tap to run a shortcut in the share sheet because you have to tap ShareMenu first, then select a shortcut. However, I’m fine with it because, thanks to colors, I waste less time scrolling through the share sheet to find the shortcut I’m looking for. Essentially, when running ShareMenu from the share sheet, instead of seeing multiple monochrome icons for all your shortcuts, you'd get this intermediate step with a nice list of your favorite shortcuts: ShareMenu on the Home Screen. Another advantage of ShareMenu: in addition to the share sheet, the same shortcut could also be used as a quick launcher for shortcuts that required input from the Home Screen as a widget/icon or via Siri. In my original post, I described the technique used to build ShareMenu and also detailed its integration with ShareBot, a third-party macOS utility that provides a workaround for the lack of shortcuts in the share sheet on macOS Monterey. Make sure to read the original story if you missed it. For the past few weeks, I've been tweaking ShareMenu with a variety of bug fixes and deeper integration with macOS to support even more types of files passed to the shortcut, and I thought it'd be useful to share it again and explain what's changed in ShareMenu 2.0. First, it's no longer necessary to keep the shortcuts you want to use with ShareMenu in a specific folder of the Shortcuts app. In iOS and iPadOS 15.3, Apple fixed the bug that prevented the 'Get My Shortcuts' action from finding shortcuts by name if you used the default 'All Shortcuts' parameter, so now you're free to fetch shortcuts by title even if they're stored in different folders. For context, here's what I mean and what the action looks like on my end: The shortcuts I use in ShareMenu. As you can see, the 'Get My Shortcuts' action now looks for items in the standard All Shortcuts view, and it no longer returns 0 results, which was the case last December. The 'Filter Files' action connected to it does the rest in terms of only returning shortcuts that match a specific name, sorting them alphabetically. As always, you'll have to modify this action with the names of the shortcuts you want to use inside ShareMenu. The other big improvement I've brought to ShareMenu is the way it runs on macOS and checks for input passed to the shortcut. I was unhappy with the fact that, on my Mac, ShareMenu would either accept input from ShareBot or always prompt me to manually type some text. What if I wanted to share the Safari webpage I was looking at without going through ShareBot first? What about passing files from Finder? What if other people just don't want to use ShareBot? So a few days ago, I had an idea: I tweaked a technique I first used in my URL Cleaner shortcut to make ShareMenu aware of the app that is currently the frontmost window on macOS. Depending on what the app is, ShareMenu can use Mac-only actions to pass the appropriate item to the list of shortcuts. In ShareMenu 2.0, I've added support for two macOS features: getting the URL of the current tab in Safari and getting the files currently selected in Finder. The idea is quite simple: using AppleScript, we can check what the name of the frontmost window is; depending on whether the name is "Safari" or "Finder", the shortcut can run different blocks of actions. Specifically, it can execute the 'Get Current Web Page from Safari' and 'Get Selected Files in Finder' actions, which are exclusive to macOS Monterey. You can visualize how these few steps work in the image below. Getting the name of the frontmost window and performing different actions whether it's Safari or Finder. Thanks to this system, I no longer need to invoke ShareBot to perform two common actions on my Mac: sharing the page I'm looking at in Safari or sharing the file I've selected on my Desktop. All I need to do is press a hotkey (it's ⌥S for me, which I assigned via Raycast) and ShareMenu will grab the URL of the current Safari tab and ask me which shortcut I want to pass it to. It couldn't be easier. ShareMenu 2.0 can automatically grab the URL of the Safari page you're looking at. This kind of intelligent integration with the system is only possible in Shortcuts for macOS, and it's one of the reasons why I've enjoyed working with shortcuts on my MacBook Pro so much lately. I still use ShareMenu from the share sheet and Home Screen on my iPhone and iPad a lot, but nothing beats the ability to invoke ShareMenu system-wide via a single hotkey and instantly share links, images, files, or text, which is only possible on the Mac. ShareMenu has evolved into a powerful command palette for my favorite shortcuts; I look forward to the day when triggering it from anywhere on my iPad will be just as fast and easy as it is on my MacBook. You can download the new ShareMenu here. Tweet Draft: Assembling Tweet Drafts for Typefully John: On AppStories this week, Federico and I covered ways to get more out of Twitter with a combination of the service's advanced search syntax, Shortcuts, and third-party apps. I hadn't realized until I looked at Federico's notes for the episode that I hadn't used Linky in a while. It's an excellent share extension for tweeting articles with a combination of their title, URL, image, and textshots that I relied on for years but don't as much these days. I think part of the reason for the change is that Linky isn't available on the Mac, and I've been working on the Mac more during the past 18 months or so. Another factor is that with multiwindowing on the iPad, it's possible to assemble a tweet with a Twitter app and Safari side-by-side, which wasn't true when I started using Linky. The app is still useful on the iPhone, but I don't work on my phone as much as I did when I had a regular commute. Assembling a tweet in Linky. Still, there's something to be said for automating the process of assembling multiple parts of a tweet, and since I've been using Typefully recently, which has a URL scheme, I thought I'd see how closely I could approximate Linky with a shortcut that uses Typefully. Draft Tweet, the shortcut I created, works on iOS with the share sheet. Because Shortcuts for Mac doesn't support macOS's sharing system, you have to run it another way on that platform. I've been using Raycast, which is one of the fastest ways to run shortcuts on the Mac, but you can also run Draft Tweet from the Shortcuts app, the menu bar, with a keyboard shortcut, or as a Service. The first thing that Draft Tweet does is ask whether you want to share an article or not. If you answer no, the shortcut will ask you to type the text of your tweet and then send you to Typefully to finish the draft tweet. Pulling the title of a webpage using AppleScript. The process is simpler and more robust on iOS, where you can also grab the hero image of an article using the Get Details of Article action. If you answer 'yes,' Draft Tweet works a little differently depending on what platform you're using. If you're on the Mac, the shortcut grabs the URL of the active tab in Safari and uses AppleScript to get the page's title, using a technique Federico described last November. On iOS and iPadOS, the shortcut uses Get Details from Article to extract the title, URL, and main image. In both cases, Draft Tweet gives you an opportunity to add your own text to the tweet. If you answer 'no' at the beginning of the shortcut, it skips the article detail assembly actions and immediately asks you what you want to tweet. Assembling the tweet. Typefully has a URL scheme that takes a draft tweet as a parameter, so Draft Tweet assembles the text you've typed, plus the title of the page and the URL. Next, Draft Tweek URL-encodes the text and assembles the Typefully URL. The final step is to open the URL, which opens Typefully in your browser with the tweet you assembled saved as a draft. From here, you can make any edits, add text to your images, and tweet it immediately or schedule it to be sent later. If you run Tweet Draft on iOS or iPadOS, you can also add an article's main image once you're kicked over to Typefully because the shortcut pastes the image to your clipboard. I made Tweet Draft primarily to avoid flipping back and forth between a Twitter client and Safari when assembling a tweet about an article we've published on MacStories, which is where I expect I'll use it most often, but having it available everywhere means I'm far more likely to use it consistently, which hasn't been the case with Linky recently. You can download Tweet Draft here. Submit a Shortcut Request INTERESTING LINKS Great reads and links from around the web. Google has new widgets coming for a few of its iOS and iPadOS apps, including Google Translate, which lets you pick a language pair and access the app's conversation, camera, and transcribe features, and Google Drive, which comes in multiple sizes, including an extra-large one for iPad. (Link) Twitter has changed the way its algorithmic (Home) and Latest timelines work in its iOS app. As reported by The Verge, if you pin your latest tweets view, it now appears as a tab at the top of the screen, similar to the way Lists are handled. (Link) MacPaw, the maker of CleanMyMac and Setapp, has begun collecting humanitarian aid through its MacPaw Development Fund to deliver food, medical supplies, and other necessities to the people of Ukraine affected by Russia's invasion of their country. (Link) Substack has had a progressive web app for reading your substack newsletters and other content for a while, but this week it added a dedicated iOS app as detailed by Engadget. (Link) Google has new widgets coming for a few of its iOS and iPadOS apps, including Google Translate, which lets you pick a language pair and access the app's conversation, camera, and transcribe features, and Google Drive, which comes in multiple sizes, including an extra-large one for iPad. (Link) Twitter has changed the way its algorithmic (Home) and Latest timelines work in its iOS app. As reported by The Verge, if you pin your latest tweets view, it now appears as a tab at the top of the screen, similar to the way Lists are handled. (Link) MacPaw, the maker of CleanMyMac and Setapp, has begun collecting humanitarian aid through its MacPaw Development Fund to deliver food, medical supplies, and other necessities to the people of Ukraine affected by Russia's invasion of their country. (Link) Substack has had a progressive web app for reading your newsletters and other content for a while, but this week it added a dedicated iOS app as detailed by Engadget. (Link) The Washington Post profiles Michael Sayman, previously of Facebook and Google, who is helping Twitter retain and add teenage users. (Link) The Washington Post profiles Michael Sayman, previously of Facebook and Google, who is helping Twitter retain and add teenage users. (Link) APP DEBUTS Noteworthy new app releases and updates, handpicked by the MacStories team. Pure Paste Federico: This free Mac app by Sindre Sorhus does one thing: it sits in the menu bar and automatically clears formatting from text you copy so you don't have to worry about "paste and match style" or having different colors and fonts in the text you paste. Pure Paste just lives in the menu bar and takes care of removing formatting from copied text for you. I love this kind of focused utilities; Pure Paste is free to use and doesn't have ads. Firefox Federico: Following Apple's redesign of Safari for iPhone in iOS 15, Firefox for iPhone has also switched to displaying the address bar at the bottom of the screen by default. Like Safari, you can revert this change in the app's settings if you don't like it. Shattered Ring Federico: In what is likely going to be a trend on the App Store for what is likely going to be the Game of the Year for many in 2022, Shattered Ring is the first example of an app that serves as a companion utility for Elden Ring. From Software's game doesn't have a quest log or any other way to keep track of locations, requests, and NPCs, and that's exactly what Shattered Ring tries to do. I've personally been keeping a plain text note in Obsidian to track various things I want to do in the game, but if you'd prefer to use a separate app for that, Shattered Ring is worth a look. CHRONO TRIGGER Federico: One of the greatest JRPGs of all time received a major update earlier this week (after two years of inactivity) that has brought several quality-of-life improvements. For starters, Chrono Trigger now runs in native full-screen mode on modern Apple hardware, including the 12.9" iPad Pro and Apple TV, with support for game controllers. Square Enix added the ability to create up to 20 save slots; the virtual gamepad shown onscreen has been redesigned to make it easier to see; there are new options to increase the speed of battles (old games tend to be much slower than the fast-paced action we're used to seeing these days), and there's a new Extras mode to check out movies, illustrations, and more. If, for whatever reason, you never played this classic before, now's a great time to check it out. Craft John: I work with templates a lot, which is why I was excited to hear that Craft has introduced a new templating system of pre-built templates. The templates Craft offers look great and cover a lot of use cases, such as: • Goal tracking • Journaling • Recipe organizing • Travel planning • Team event planning • An employee directory • Meeting planners • A design showcase • Job posting • And more Currently there are a total of 27 templates available that incorporate a nice mix of personal and business use cases. Craft says that user-defined templates are coming in the future, too, which is what I'm looking forward to most since a substantial portion of the work I do is created with templates. Craft's Home screen has been updated too. There's a new top section that can be toggled between displaying your recently viewed documents and your daily notes if you use that feature. The row can also be hidden when you don't need it. There are several other smaller features added to the latest update, so be sure to poke around in the UI, or read this feature rundown from the Craft team. READER SETUPS Members of Club MacStories share their computing setups. Dan Stucke Twitter: @danielstucke. LinkedIn: Daniel Stucke. (Former) Teacher, Data Geek, Runner, Dad & Husband This is my home office in Saddleworth, England, in a village in the hills mid-way between Manchester and Leeds. For the past 18 years I've been a teacher and school leader and led hectic days working with teenagers (now I have just a cat for company most days!). Christmas marked a new beginning, as I left frontline education to work from home as a managing consultant for an ed-tech company. We specialise in data analytics solutions for groups of schools in England and further afield. Working from home used to involve a cramped spare bedroom and a combination of a 2015 iMac and a 12.9" iPad Pro (that also went to school and into the classroom with me). This wasn't going to cut it for 8 hours a day at home. My goal was to build a home office, without spending a complete fortune, that I could work efficiently in, that my wife could also use, and that could be used as a space for exercise and a spare bedroom when we have visitors. The first thing we did was change the room. This room is a better shape for the furniture needed for all those uses. It also has a wonderful view across our village, including the old Victorian mill and village duck pond. My son now uses the old spare room as his bedroom, and is no longer woken by ducks and geese each morning. A window view was important to me; why wouldn't you with that view? The sofa is actually a sofa-bed, we've had it since we moved in the house. I think it was from made.com. It wasn't the cheapest, but is surprisingly comfortable in both modes. It's a nice space away from the desk to sit and read with my iPad mini. The Echelon Sport exercise bike is my wife's. It was a lockdown purchase and kept her sane and fit throughout the last two years. In a theme you will see throughout, it's a quality piece of kit, and not cheap, but in this case, it's not a Peloton. We combined it with an app-only subscription to Peloton (about £12 a month); the qdomyos-zwift app does some magic that I don't quite understand to connect the two together. The Lamicall Tablet Holder holds an old iPad to the handlebar to view the Peloton app. I started with the window, sofa, and bike as they impacted the design of the desk. I wanted the biggest desk I could manage, ideally to seat two if required, however I also needed to fit the bike and sofa (in bed mode) in the room. As you can see we still managed a pretty big desk! After too much time browsing the likes of reddit.com/r/battlestations we went with the classic combination of a separate desk-top combined with a pair of Ikea Alex drawers. The common desk-top option is an Ikea kitchen worktop, but they only come in two widths; I wanted something in-between the two so we had to get creative. Custom desks can get very expensive, very quickly, so continuing the kitchen worktop idea I came across Worktop Express. They allow you to order custom sized worktops in a whole range of woods, we went with pine to keep the costs reasonable. To get the length we needed we had to start with a really big piece of wood and cut it down. But the bonus was keeping the off-cuts. With a bit of trimming, and the addition of some painted legs/brackets (from Etsy), these became a new shelf and coffee table. I'm seriously chuffed with these – they really bring the whole room together. The office chair is a classic Herman Millar Aeron. I bought this second hand for about £200 during the first lockdown. My computing is predominantly done on an M1 MacBook Air, hooked up to a ridiculously large 43" 4K LG 43UN700 monitor. I couldn't wait for new Mac announcements: my old 2015 iMac was finally getting slow, and I wanted the flexibility of a laptop, so picking up an M1 MacBook Air was a no-brainer. I bought it second hand on eBay for about £700. Monitor support is a real mess on Monterey and with current Macs. My usual working day sees me keeping notes in Obsidian, chatting to colleagues in Teams chat, speaking with schools via Teams, managing my calendar in Fantastical and working in various web-apps in Edge (Safari for personal stuff). Alongside this is some serious spreadsheet and PowerBI work. The MacBook eats up tasks like this without breaking a sweat, and with a 4K monitor of this size I can run it at native resolution with no scaling, happily running 3 or 4 of my key apps at once on the same screen. It's not as crisp as a scaled 5K monitor, but it was £600 and I have it now. The new 5K Studio Display looks lovely, but it's £1k more, and less actual real estate due to scaling. The monitor has a USB-C hub with power delivery so I can live the one-cable dream. The built-in speakers suffice for Teams calls and YouTube videos. I also have a Logitech webcam hooked into the monitor. For listening to music I use the HomePod mini – it's normally 'tuned in' to BBC Radio 6 Music. I haven't used a Mac for work full-time before, so I'm steadily getting back into the wonderful world of tools available. Key applications supporting my work so far are: TextExpander; BetterTouchTool; Choosy (for managing my split Edge/Safari workflow); CleanShotX; Rocket; MonitorControl (to control the monitor volume & brightness 'natively'). I'm deep into Obsidian (thanks MacStories team!); the next step is developing my use of Shortcuts for Mac. The final touches...a mismatched Apple Magic Trackpad 2 and Apple Magic Keyboard with Touch ID. I did have a matching space grey keyboard with numeric keypad, but found the keyboard was too wide and was causing me to get back-pain. Gaining Touch ID on the new keyboard is an added bonus. The monitor is attached to an Invision Monitor Arm. Technically, the screen is over the size and weight limit for that arm. But it works, just, and was only £50. My iPhone 12 Max spends its day sat on an Anker wireless charger, which again just works and doesn't break the bank. I replaced my 12.9" iPad Pro with a new Mini, which sits on a cheap Omotom stand. I've not missed the size of the old device yet. In the classroom and in endless face-to-face meetings it was a wonderful device, but at home with my MacBook at hand at all times, I wasn't using it. The mini is a joy to use, mostly for reading and watching YouTube on the sofa. I am looking forward to Universal Control so I can use the trackpad and keyboard with it seamlessly. Finally there is an old inkjet printer we've had for ages, a BT WholeHome Wifi disc (not sure if these are available outside of the UK but they've been a brilliant mesh Wi-Fi solution for years), and an antique Anglepoise lamp. Oh, and a Lenovo laptop from work, which I begrudgingly use when I need to fire up PowerBI desktop (Microsoft, please make a Mac version!). Overall I'm really pleased with my setup. My only problem right now is the monitor is so big it's blocking the view out of the window. This probably helps with productivity though! My favourite thing in all of it is the wallpaper, printed in the UK and based on the rolling hills and villages of Yorkshire. A work-from-home office is a lot more peaceful than one in a school with 1300 teenagers, but still comes with its own distractions. Submit your own setup SPOTLIGHT ON CLUB MACSTORIES+ Highlights of the latest Club MacStories+ happenings. Shortcuts, Stream Deck, Raycast, Bash Script Automations Federico: Here are the highlights from the Club MacStories Discord this week: Inspired by a challenge I proposed to John on AppStories a while back, member Jarrod created a fantastic shortcut that progressively changes the color of your lights depending on how many reminders you've completed during the day. I love this. Speaking of John, he recently shared a method he came up with to speed up taking screenshots on his Mac. It involves the Stream Deck and Raycast. Member Yoni shared a bash script to change your Mac's wallpaper from the command line starting from a folder that contains images you want to use. Want to join the Club MacStories+ Discord? Upgrade to Club MacStories+ or Club Premier, then visit the Account page. PREVIOUSLY, ON MACSTORIES Our top stories from the past week. Stories Logger Is the Missing Console for Shortcuts Power Users The Shift in Apple’s Hardware Strategy Jason Snell on the Implications of Apple’s Major League Baseball Deal Mac Studio, M1 Ultra, and Apple Studio Display: The MacStories Overview Apple’s ‘Peek Performance’ Event: All The Small Things Apple’s New iPad Air Adds the M1 Chip, Center Stage Support, and 5G Connectivity Apple’s ‘Peek Performance’ Event: By the Numbers Apple Unveils the Latest Iteration of iPhone SE with an A15 Bionic Chip and 5G Replay Apple’s Peek Performance Keynote and Other Videos Apple’s ‘Peek Performance’ Event – Apple Announces Availability of Green iPhones, iPhone SE, iPad Air, Mac Studio, and Studio Display Last Week, on Club MacStories: Symlinks for Windows and macOS, File Organization Tips, Batch-Converting Saved Timers, and an Upcoming ‘Peek Performance’ Town Hall Nintendo Switch Online 2.0 Gets a Redesign and Adds a Few New Features Podcasts AppStories, Episode 263 – Beyond Doom Scrolling: Getting More Out of Twitter MacStories Unwind: Elden Ring and Kimi UP NEXT ON MACSTORIES' PODCASTS A preview of upcoming MacStories podcast episodes. Next week on AppStories, Federico and John Federico and John cover their first impressions of the iPad Air, Mac Studio, and Studio Display, including Federico's thoughts on where the Air fits into the iPad lineup and John's take on what to keep in mind when customizing a Mac Studio. This week on MacStories Unwind, Federico and John Federico shares Peacock sitcom A.P. Bio, and John shares House by Shout Out Louds, his current favorite album of 2022. WEEKLY ARCHIVE Previous emails that were sent to Club MacStories members. To view this issue of MacStories Weekly in your browser, click here. Thanks for your support, we'll see you next week! THE SMALL PRINT It's OK to share this email with a friend or family member occasionally, but please don't share as a habit – this email is for Club MacStories members who financially support Federico and the rest of the MacStories team. If you are interested in a team subscription to Club MacStories for teams of 5 or more people, please contact Federico directly. Authored by Federico Viticci, John Voorhees, and Alex Guyot. Email Feedback Copyright © 2022 MacStories, All rights reserved. You're receiving this email as a member of Club MacStories. unsubscribe from this list    update subscription preferences [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjlmNGI4MGEzNTcyOGY3Mjcx%0D%0AZmUzZWE2ZmYuMTIxMTc3NDI3My4yMDIyMDMxMTE3Mzg0MC42ZjhjMzI1ODg0Ljc3%0D%0ANzE5ZTI4QG1haWwyMjUuYXRsMTAxLm1jZGx2Lm5ldDsyODI0ODc1ODcy) # Files are hard /*[I'm trying some experimental tiers on Patreon](https://patreon.com/danluu)* to see if I can get to [substack-like levels of financial support for this blog without moving to substack](https://twitter.com/danluu/status/1456346963691991041)!/ *Files are hard* I haven't used a desktop email client in years. None of them could handle the volume of email I get without at least occasionally corrupting my mailbox. Pine, Eudora, and outlook have all corrupted my inbox, forcing me to restore from backup. How is it that desktop mail clients are less reliable than gmail, even though my gmail account not only handles more email than I ever had on desktop clients, but also allows simultaneous access from multiple locations across the globe? Distributed systems have an unfair advantage, in that they can be robust against total disk failure in a way that desktop clients can't, but none of the file corruption issues I've had have been from total disk failure. Why has my experience with desktop applications been so bad? Well, what sort of failures can occur? Crash consistency (maintaining consistent state even if there's a crash) is probably the easiest property to consider, since we can assume that everything, from the filesystem to the disk, works correctly; let's consider that first. ### Crash Consistency Pillai et al. had a [paper](https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-pillai.pdf) and [presentation](https://www.usenix.org/sites/default/files/conference/protected-files/osdi14_slides_pillai.pdf) at OSDI '14 on exactly how hard it is to save data without corruption or data loss. Let's look at a simple example of what it takes to save data in a way that's robust against a crash. Say we have a file that contains the text `a foo` and we want to update the file to contain `a bar`. The pwrite function looks like it's designed for this exact thing. It takes a file descriptor, what we want to write, a length, and an offset. So we might try ``` pwrite([file], “bar”, 3, 2) // write 3 bytes at offset 2 ``` What happens? If nothing goes wrong, the file will contain `a bar`, but if there's a crash during the write, we could get `a boo`, `a far`, or any other combination. Note that you may want to consider this an example over sectors or blocks and not chars/bytes. If we want atomicity (so we either end up with `a foo` or `a bar` but nothing in between) one standard technique is to make a copy of the data we're about to change in an [undo log](http://www.cburch.com/cs/340/reading/log/index.html) file, modify the “real” file, and then delete the log file. If a crash happens, we can recover from the log. We might write something like ``` creat(/dir/log); write(/dir/log, “2,3,foo”, 7); pwrite(/dir/orig, “bar”, 3, 2); unlink(/dir/log); ``` This should allow recovery from a crash without data corruption via the undo log, at least if we're using `ext3` and we made sure to mount our drive with `data=journal`. But we're out of luck if, like most people, we're using the default -- with the default `data=ordered`, the `write` and `pwrite` syscalls can be reordered, causing the write to `orig` to happen before the write to the log, which defeats the purpose of having a log. We can fix that. ``` creat(/dir/log); write(/dir/log, “2, 3, foo”); fsync(/dir/log); // don't allow write to be reordered past pwrite pwrite(/dir/orig, 2, “bar”); fsync(/dir/orig); unlink(/dir/log); ``` That should force things to occur in the correct order, at least if we're using ext3 with `data=journal` or `data=ordered`. If we're using `data=writeback`, a crash during the the `write` or `fsync` to log can leave `log` in a state where the filesize has been adjusted for the write of “bar”, but the data hasn't been written, which means that the log will contain random garbage. This is because with `data=writeback`, metadata is [journaled](https://en.wikipedia.org/wiki/Journaling_file_system), but data operations aren't, which means that data operations (like writing data to a file) aren't ordered with respect to metadata operations (like adjusting the size of a file for a write). We can fix that by adding a checksum to the log file when creating it. If the contents of `log` don't contain a valid checksum, then we'll know that we ran into the situation described above. ``` creat(/dir/log); write(/dir/log, “2, 3, [checksum], foo”); // add checksum to log file fsync(/dir/log); pwrite(/dir/orig, 2, “bar”); fsync(/dir/orig); unlink(/dir/log); ``` That's safe, at least on current configurations of ext3. But it's legal for a filesystem to end up in a state where the log is never created unless we issue an fsync to the parent directory. ``` creat(/dir/log); write(/dir/log, “2, 3, [checksum], foo”); fsync(/dir/log); fsync(/dir); // fsync parent directory of log file pwrite(/dir/orig, 2, “bar”); fsync(/dir/orig); unlink(/dir/log); ``` That should prevent corruption on any Linux filesystem, but if we want to make sure that the file actually contains “bar”, we need another fsync at the end. ``` creat(/dir/log); write(/dir/log, “2, 3, [checksum], foo”); fsync(/dir/log); fsync(/dir); pwrite(/dir/orig, 2, “bar”); fsync(/dir/orig); unlink(/dir/log); fsync(/dir); ``` That results in consistent behavior and guarantees that our operation actually modifies the file after it's completed, as long as we assume that `fsync` actually flushes to disk. OS X and some versions of ext3 have an fsync that doesn't really flush to disk. OS X requires `fcntl(F_FULLFSYNC)` to flush to disk, and some versions of ext3 only flush to disk if the the [inode](https://en.wikipedia.org/wiki/Inode) changed (which would only happen at most once a second on writes to the same file, since the inode mtime has one second granularity), as an optimization. Even if we assume fsync issues a flush command to the disk, some disks ignore flush directives for the same reason fsync is gimped on OS X and some versions of ext3 -- to look better in benchmarks. Handling that is beyond the scope of this post, but the [Rajimwale et al. DSN '11 paper](http://www.researchgate.net/profile/Vijay_Chidambaram/publication/220958003_Coerced_Cache_Eviction_and_discreet_mode_journaling_Dealing_with_misbehaving_disks/links/54d0f0190cf29ca811040c8a.pdf) and related work cover that issue. ### Filesystem semantics When the authors examined ext2, ext3, ext4, btrfs, and xfs, they found that there are substantial differences in how code has to be written to preserve consistency. They wrote a tool that collects block-level filesystem traces, and used that to determine which properties don't hold for specific filesystems. The authors are careful to note that they can only determine when properties don't hold -- if they don't find a violation of a property, that's not a guarantee that the property holds. [image:61F91877-2E90-4D8E-9A48-FAA78882067A-588-0000000F00E8E284/fs_properties.png] Xs indicate that a property is violated. The atomicity properties are basically what you'd expect, e.g., no X for single sector overwrite means that writing a single sector is atomic. The authors note that the atomicity of single sector overwrite sometimes comes from a property of the disks they're using, and that running these filesystems on some disks won't give you single sector atomicity. The ordering properties are also pretty much what you'd expect from their names, e.g., an X in the “Overwrite -> Any op” row means that an overwrite can be reordered with some operation. After they created a tool to test filesystem properties, they then created a tool to check if any applications rely on any potentially incorrect filesystem properties. Because invariants are application specific, the authors wrote checkers for each application tested. [image:53393E72-A602-4C0C-B117-D9A17EC091D1-588-0000000F00E6D664/program_bugs.png] The authors find issues with most of the applications tested, including things you'd really hope would work, like LevelDB, HDFS, Zookeeper, and git. In a talk, one of the authors noted that the developers of sqlite have a very deep understanding of these issues, but even that wasn't enough to prevent all bugs. That speaker also noted that version control systems were particularly bad about this, and that the developers had a pretty lax attitude that made it very easy for the authors to find a lot of issues in their tools. The most common class of error was incorrectly assuming ordering between syscalls. The next most common class of error was assuming that syscalls were atomic. These are fundamentally the same issues people run into when doing multithreaded programming. Correctly reasoning about re-ordering behavior and inserting barriers correctly is hard. But even though shared memory concurrency is considered a hard problem that requires great care, writing to files isn't treated the same way, even though it's actually harder in a number of ways. Something to note here is that while btrfs's semantics aren't inherently less reliable than ext3/ext4, many more applications corrupt data on top of btrfs because developers aren't used to coding against filesystems that allow directory operations to be reordered (ext2 is perhaps the most recent widely used filesystem that allowed that reordering). We'll probably see a similar level of bug exposure when people start using NVRAM drives that have byte-level atomicity. People almost always just run some tests to see if things work, rather than making sure they're coding against what's legal in a POSIX filesystem. Hardware memory ordering semantics are usually [well documented](http://danluu.com/new-cpu-features/#memory-concurrency) in a way that makes it simple to determine precisely which operations can be reordered with which other operations, and which operations are atomic. By contrast, here's [the ext manpage](http://man7.org/linux/man-pages/man5/ext4.5.html) on its three data modes: > journal: All data is committed into the journal prior to being written into the main filesystem. > ordered: This is the default mode. All data is forced directly out to the main file system prior to its metadata being committed to the journal. > writeback: Data ordering is not preserved – data may be written into the main filesystem after its metadata has been committed to the journal. *This is rumoured to be* the highest-throughput option. It guarantees internal filesystem integrity, however it can allow old data to appear in files after a crash and journal recovery. The manpage literally refers to rumor. This is the level of documentation we have. If we look back at our example where we had to add an `fsync` between the `write(/dir/log, “2, 3, foo”)` and `pwrite(/dir/orig, 2, “bar”)` to prevent reordering, I don't think the necessity of the `fsync` is obvious from the description in the manpage. If you look at the hardware memory ordering “manpage” above, it specifically defines the ordering semantics, and it certainly doesn't rely on rumor. This isn't to say that filesystem semantics aren't documented anywhere. Between [lwn](http://lwn.net/) and LKML, it's possible to get a good picture of how things work. But digging through all of that is hard enough that it's still quite common [for there to be long, uncertain discussions on how things work](http://austingroupbugs.net/view.php?id=672). A lot of the information out there is wrong, and even when information was right at the time it was posted, it often goes out of date. When digging through archives, I've often seen a post from 2005 cited to back up the claim that OS X `fsync` is the same as Linux `fsync`, and that OS X `fcntl(F_FULLFSYNC)` is even safer than anything available on Linux. Even at the time, I don't think that was true for the 2.4 kernel, although it was true for the 2.6 kernel. But since 2008 or so Linux 2.6 with ext3 will do a full flush to disk for each fsync (if the disk supports it, and the filesystem hasn't been specially configured with barriers off). Another issue is that you often also see exchanges [like this one](http://lkml.iu.edu/hypermail/linux/kernel/0908.3/01481.html): *Dev 1*: Personally, I care about metadata consistency, and ext3 documentation suggests that journal protects its integrity. Except that it does not on broken storage devices, and you still need to run fsck there. *Dev 2*: as the ext3 authors have stated many times over the years, you still need to run fsck periodically anyway. *Dev 1*: Where is that documented? *Dev 2*: linux-kernel mailing list archives. *Dev 3*: Probably from some 6-8 years ago, in e-mail postings that I made. Where's this documented? Oh, in some mailing list post 6-8 years ago (which makes it 12-14 years from today). I don't mean to pick on filesystem devs. The fs devs whose posts I've read are quite polite compared to LKML's reputation; they generously spend a lot of their time responding to basic questions and I'm impressed by how patient the expert fs devs are with askers, but it's hard for outsiders to troll through a decade and a half of mailing list postings to figure out which ones are still valid and which ones have been obsoleted! In their OSDI 2014 talk, the authors of the paper we're discussing noted that when they reported bugs they'd found, developers would often respond “POSIX doesn't let filesystems do that”, without being able to point to any specific POSIX documentation to support their statement. If you've followed Kyle Kingsbury's Jepsen work, this may sound familiar, except devs respond with “filesystems don't do that” instead of “networks don't do that”. I think this is understandable, given how much misinformation is out there. Not being a filesystem dev myself, I'd be a bit surprised if I don't have at least one bug in this post. ### Filesystem correctness We've already encountered a lot of complexity in saving data correctly, and this only scratches the surface of what's involved. So far, we've assumed that the disk works properly, or at least that the filesystem is able to detect when the disk has an error via [SMART](https://en.wikipedia.org/wiki/S.M.A.R.T.) or some other kind of monitoring. I'd always figured that was the case until I started looking into it, but that assumption turns out to be completely wrong. The [Prabhakaran et al. SOSP 05 paper](http://research.cs.wisc.edu/wind/Publications/iron-sosp05.pdf) examined how filesystems respond to disk errors in some detail. They created a fault injection layer that allowed them to inject disk faults and then ran things like `chdir`, `chroot`, `stat`, `open`, `write`, etc. to see what would happen. Between ext3, reiserfs, and NTFS, reiserfs is the best at handling errors and it seems to be the only filesystem where errors were treated as first class citizens during design. It's mostly consistent about propagating errors to the user on reads, and calling `panic` on write failures, which triggers a restart and recovery. This general policy allows the filesystem to gracefully handle read failure and avoid data corruption on write failures. However, the authors found a number of inconsistencies and bugs. For example, reiserfs doesn't correctly handle read errors on indirect blocks and leaks space, and a specific type of write failure doesn't prevent reiserfs from updating the journal and committing the transaction, which can result in data corruption. Reiserfs is the good case. The authors found that ext3 ignored write failures in most cases, and rendered the filesystem read-only in most cases for read failures. This seems like pretty much the opposite of the policy you'd want. Ignoring write failures can easily result in data corruption, and remounting the filesystem as read-only is a drastic overreaction if the read error was a transient error (transient errors are common). Additionally, ext3 did the least consistency checking of the three filesystems and was the most likely to not detect an error. In one presentation, one of the authors remarked that the ext3 code had lots of comments like “I really hope a write error doesn't happen here" in places where errors weren't handled. NTFS is somewhere in between. The authors found that it has many consistency checks built in, and is pretty good about propagating errors to the user. However, like ext3, it ignores write failures. The paper has much more detail on the exact failure modes, but the details are mostly of historical interest as many of the bugs have been fixed. It would be really great to see an updated version of the paper, and in one presentation someone in the audience asked if there was more up to date information. The presenter replied that they'd be interested in knowing what things look like now, but that it's hard to do that kind of work in academia because grad students don't want to repeat work that's been done before, which is pretty reasonable given the incentives they face. Doing replications is a lot of work, often nearly as much work as the original paper, and replications usually give little to no academic credit. This is one of the many cases where the incentives align very poorly with producing real world impact. The [Gunawi et al. FAST 08](http://usenix.org/legacy/event/fast08/tech/full_papers/gunawi/gunawi_html/index.html) is another paper it would be great to see replicated today. That paper follows up the paper we just looked at, and examines the error handling code in different file systems, using a simple static analysis tool to find cases where errors are being thrown away. Being thrown away is defined very loosely in the paper --- code like the following ``` if (error) { printk(“I have no idea how to handle this error\n”); } ``` is considered /not/ throwing away the error. Errors are considered to be ignored if the execution flow of the program doesn't depend on the error code returned from a function that returns an error code. With that tool, they find that most filesystems drop a lot of error codes: *By % Broken* *By Viol/Kloc* Rank FS Frac. FS Viol/Kloc 1 IBM JFS 24.4 ext3 7.2 2 ext3 22.1 IBM JFS 5.6 3 JFFS v2 15.7 NFS Client 3.6 4 NFS Client 12.9 VFS 2.9 5 CIFS 12.7 JFFS v2 2.2 6 MemMgmt 11.4 CIFS 2.1 7 ReiserFS 10.5 MemMgmt 2.0 8 VFS 8.4 ReiserFS 1.8 9 NTFS 8.1 XFS 1.4 10 XFS 6.9 NFS Server 1.2 Comments they found next to ignored errors include: "Should we pass any errors back?", "Error, skip block and hope for the best.", "There's no way of reporting error returned from ext3_mark_inode_dirty() to user space. So ignore it.", "Note: todo: log error handler.", "We can't do anything about an error here.", "Just ignore errors at this point. There is nothing we can do except to try to keep going.", "Retval ignored?", and "Todo: handle failure." One thing to note is that in a lot of cases, ignoring an error is more of a symptom of an architectural issue than a bug per se (e.g., ext3 ignored write errors during checkpointing because it didn't have any kind of recovery mechanism). But even so, the authors of the papers found many real bugs. ### Error recovery Every widely used filesystem has bugs that will cause problems on error conditions, which brings up two questions. Can recovery tools robustly fix errors, and how often do errors occur? How do they handle recovery from those problems? The [Gunawi et al. OSDI 08 paper](http://usenix.org/legacy/events/osdi08/tech/full_papers/gunawi/gunawi_html/index.html) looks at that and finds that fsck, a standard utility for checking and repairing file systems, “checks and repairs certain pointers in an incorrect order . . . the file system can even be unmountable after”. At this point, we know that it's quite hard to write files in a way that ensures their robustness even when the underlying filesystem is correct, the underlying filesystem will have bugs, and that attempting to repair corruption to the filesystem may damage it further or destroy it. How often do errors happen? ### Error frequency The [Bairavasundaram et al. SIGMETRICS '07 paper](http://bnrg.eecs.berkeley.edu/~randy/Courses/CS294.F07/11.1.pdf) found that, depending on the exact model, between 5% and 20% of disks would have at least one error over a two year period. Interestingly, many of these were isolated errors -- 38% of disks with errors had only a single error, and 80% had fewer than 50 errors. [A follow-up study](https://www.usenix.org/legacy/events/fast08/tech/full_papers/bairavasundaram/bairavasundaram_html/main.html) looked at corruption and found that silent data corruption that was only detected by checksumming happened on .5% of disks per year, with one extremely bad model showing corruption on 4% of disks in a year. It's also worth noting that they found very high locality in error rates between disks on some models of disk. For example, there was one model of disk that had a very high error rate in one specific sector, making many forms of RAID nearly useless for redundancy. That's another study it would be nice to see replicated. [Most studies on disk focus on the failure rate of the entire disk](https://www.backblaze.com/blog/hard-drive-reliability-q3-2015/), but if what you're worried about is data corruption, errors in non-failed disks are more worrying than disk failure, which is easy to detect and mitigate. ### Conclusion Files are hard. [Butler Lampson has remarked](http://danluu.com/butler-lampson-1999/#parallelism) that when they came up with threads, locks, and condition variables at PARC, they thought that they were creating a programming model that anyone could use, but that there's now decades of evidence that they were wrong. We've accumulated a lot of evidence that humans are very bad at reasoning about these kinds of problems, which are very similar to the problems you have when writing correct code to interact with current filesystems. Lampson suggests that the best known general purpose solution is to package up all of your parallelism into as small a box as possible and then have a wizard write the code in the box. Translated to filesystems, that's equivalent to saying that as an application developer, writing to files safely is hard enough that it should be done via some kind of library and/or database, not by directly making syscalls. Sqlite is quite good in terms of reliability if you want a good default. However, some people find it to be too heavyweight if all they want is a file-based abstraction. What they really want is a sort of polyfill for the file abstraction that works on top of all filesystems without having to understand the differences between different configurations (and even different versions) of each filesystem. Since that doesn't exist yet, when no existing library is sufficient, you need to checksum your data since you will get silent errors and corruption. The only questions are whether or not you detect the errors and whether or not your record format only destroys a single record when corruption happens, or if it destroys the entire database. As far as I can tell, most desktop email client developers have chosen to go the route of destroying all of your email if corruption happens. These studies also hammer home the point that [conventional testing isn't sufficient](http://danluu.com/everything-is-broken/). There were multiple cases where the authors of a paper wrote a relatively simple tool and found a huge number of bugs. You don't need any deep computer science magic to write the tools. The error propagation checker from the paper that found a ton of bugs in filesystem error handling was 4k LOC. If you read the paper, you'll see that the authors observed that the tool had a very large number of shortcomings because of its simplicity, but despite those shortcomings, it was able to find a lot of real bugs. I wrote a vaguely similar tool at my last job to enforce some invariants, and it was literally two pages of code. It didn't even have a real parser (it just went line-by-line through files and did some regexp matching to detect the simple errors that it's possible to detect with just a state machine and regexes), but it found enough bugs that it paid for itself in development time the first time I ran it. Almost every software project I've seen has a lot of low hanging testing fruit. Really basic [random testing](http://danluu.com/testing/), [static analysis](http://danluu.com/pl-troll/), and [fault injection](https://aphyr.com/tags/jepsen) can pay for themselves in terms of dev time pretty much the first time you use them. ### Appendix I've probably covered less than 20% of the material in the papers I've referred to here. Here's a bit of info about some other neat info you can find in those papers, and others. [Pillai et al., OSDI '14](https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-pillai.pdf): this papers goes into much more detail about what's required for crash consistency than this post does. It also gives a fair amount of detail about how exactly applications fail, including diagrams of traces that indicate what false assumptions are embedded in each trace. [Chidambara et al., FAST '12](http://static.usenix.org/legacy/events/fast12/tech/full_papers/Chidambaram.pdf): the same filesystem primitives are responsible for both consistency and ordering. The authors propose alternative primitives that separate these concerns, allow better performance while maintaining safety. [Rajimwale et al. DSN '01](https://www.researchgate.net/publication/220958003_Coerced_Cache_Eviction_and_Discreet_Mode_Journaling_Dealing_with_Misbehaving_Disks): you probably shouldn't use disks that ignore flush directives, but in case you do, here's a protocol that forces those disks to flush using normal filesystem operations. As you might expect, the performance for this is quite bad. [Prabhakaran et al. SOSP '05](http://research.cs.wisc.edu/wind/Publications/iron-sosp05.pdf): This has a lot more detail on filesystem responses to error than was covered in this post. The authors also discuss JFS, an IBM filesystem for AIX. Although it was designed for high reliability systems, it isn't particularly more reliable than the alternatives. Related material is covered further in [DSN '08](http://research.cs.wisc.edu/adsl/Publications/pointer-dsn08.pdf), [StorageSS '06](http://research.cs.wisc.edu/adsl/Publications/trust-storagess06.pdf), [DSN '06](http://research.cs.wisc.edu/adsl/Publications/vmdep-dsn06.pdf), [FAST '08](http://research.cs.wisc.edu/adsl/Publications/parity-fast08.pdf), and [USENIX '09](http://research.cs.wisc.edu/adsl/Publications/envyfs-usenix09.pdf), among others. [Gunawi et al. FAST '08](http://usenix.org/legacy/event/fast08/tech/full_papers/gunawi/gunawi_html/index.html) : Again, much more detail than is covered in this post on when errors get dropped, and how they wrote their tools. They also have some call graphs that give you one rough measure of the complexity involved in a filesystem. The XFS call graph is particularly messy, and one of the authors noted in a presentation that an XFS developer said that XFS was fun to work on since they took advantage of every possible optimization opportunity regardless of how messy it made things. [Bairavasundaram et al. SIGMETRICS '07](http://bnrg.eecs.berkeley.edu/~randy/Courses/CS294.F07/11.1.pdf): There's a lot of information on disk error locality and disk error probability over time that isn't covered in this post. [A followup paper in FAST08 has more details](http://research.cs.wisc.edu/adsl/Publications/corruption-fast08.pdf). [Gunawi et al. OSDI '08](http://usenix.org/legacy/events/osdi08/tech/full_papers/gunawi/gunawi_html/index.html): This paper has a lot more detail about when fsck doesn't work. In a presentation, one of the authors mentioned that fsck is the only program that's ever insulted him. Apparently, if you have a corrupt pointer that points to a superblock, fsck destroys the superblock (possibly rendering the disk unmountable), tells you something like "you dummy, you must have run fsck on a mounted disk", and then gives up. In the paper, the authors reimplement basically all of fsck using a declarative model, and find that the declarative version is shorter, easier to understand, and much easier to extend, at the cost of being somewhat slower. Memory errors are beyond the scope of this post, but [memory corruption](http://danluu.com/why-ecc/) can cause disk corruption. This is especially annoying because memory corruption can cause you to take a checksum of bad data and write a bad checksum. It's also possible to corrupt in memory pointers, which often results in something very bad happening. See the [Zhang et al. FAST '10 paper](http://research.cs.wisc.edu/adsl/Publications/zfs-corruption-fast10.pdf) for more on how ZFS is affected by that. There's a meme going around that ZFS is safe against memory corruption because it checksums, but that paper found that critical things held in memory aren't checksummed, and that memory errors can cause data corruption in real scenarios. The sqlite devs are serious about both [documentation](https://www.sqlite.org/howtocorrupt.html) and [testing](https://www.sqlite.org/testing.html). If I wanted to write a reliable desktop application, I'd start by reading the sqlite docs and then talking to some of the core devs. If I wanted to write a reliable distributed application I'd start by getting a job at Google and then reading the design docs and [postmortems](http://danluu.com/postmortem-lessons/) for GFS, Colossus, Spanner, etc. J/k, but not really. We haven't looked at formal methods at all, but there have been a variety of attempts to formally verify properties of filesystems, such as [SibylFS](https://sibylfs.github.io/). This list isn't intended to be exhaustive. It's just a list of things I've read that I think are interesting. *Update*: many people have read this post and suggested that, in the first file example, you should use the much simpler protocol of copying the file to modified to a temp file, modifying the temp file, and then renaming the temp file to overwrite the original file. In fact, that's probably the most common comment I've gotten on this post. If you think this solves the problem, I'm going to ask you to pause for five seconds and consider the problems this might have. The main problems this has are: * rename isn't atomic on crash. POSIX says that rename is atomic, but this only applies to normal operation, not to crashes. * even if the techinque worked, the performance is very poor * how do you handle hardlinks? * metadata can be lost; this can sometimes be preserved, under some filesystems, with ioctls, but now you have filesystem specific code just for the non-crash case * etc. The fact that so many people thought that this was a simple solution to the problem demonstrates that this problem is one that people are prone to underestimating, even they're explicitly warned that people tend to underestimate this problem! *[This post reproduces some of the results from these papers on modern filesystems as of 2017](http://danluu.com/filesystem-errors/).* *[This talk (transcript) contains a number of newer results and discusses hardware issues in more detail](http://danluu.com/deconstruct-files/).* Thanks to Leah Hanson, Katerina Barone-Adesi, Jamie Brandon, Kamal Marhubi, Joe Wilder, David Turner, Benjamin Gilbert, Tom Murphy, Chris Ball, Joe Doliner, Alexy Romanov, Mindy Preston, Paul McJones, Evan Jones, and Jason Petersen for comments/corrections/discussion. [← Big companies v. startups](https://danluu.com/startup-tradeoffs/) [Why use ECC? →](https://danluu.com/why-ecc/) [Archive](https://danluu.com/) [Support this site (patreon)](https://www.patreon.com/danluu) [Twitter](https://twitter.com/danluu) [Files are hard](http://danluu.com/file-consistency/) # Can Matt Mullenweg save the internet? [image:C2C9EBD3-4224-446C-A43C-9EE355C31F86-31165-000003D3F99A3AA5/portrait-of-matt-mullenweg-ceo-of-automattic-and-founder-of-wordpress.jpg] In the early days of the pandemic, Matt Mullenweg didn't move to a compound in Hawaii, bug out to a bunker in New Zealand or head to Miami and start shilling for crypto. No, in the early days of the pandemic, Mullenweg bought an RV. He drove it all over the country, bouncing between Houston and San Francisco and Jackson Hole with plenty of stops in national parks. In between, he started doing some tinkering. The tinkering is a part-time gig: Most of Mullenweg’s time is spent as CEO of Automattic, one of the web’s largest platforms. It’s best known as the company that runs WordPress.com, the hosted version of the blogging platform that powers about 43% of the websites on the internet. Since WordPress is open-source software, no company technically owns it, but Automattic provides tools and services and oversees most of the WordPress-powered internet. It’s also the owner of the booming ecommerce platform WooCommerce, Day One, the analytics tool Parse.ly and the podcast app Pocket Casts. Oh, and Tumblr. And Simplenote. And many others. That makes Mullenweg one of the most powerful CEOs in tech, and one of the most important voices in the debate over the future of the internet. But before we get to that, you have to hear about this RV. "I really love networking equipment," he said, in an effort to explain the story he’s about to tell. He's always been the guy who goes over to friends' houses and upgrades their router or just rewires the whole system: "So when I get this RV, what I ended up doing was I set up a multiple-cell phone modem router." It connects to all three major U.S. carriers and combines them into a single Wi-Fi network. Suddenly, when Mullenweg signed on every morning to do his job as CEO of Automattic, one of the web's largest platforms and most powerful influences, he could do it from anywhere with a cell signal: like one time, last December, when he recorded a Web Summit panel from the side of Highway 97 in Northern California as logging trucks went by. Mullenweg, who is also an [insatiable gearhead,](https://ma.tt/2021/05/2021-streaming-kit/) had a solution for the truck noise, too: a Sennheiser headset mic with awesome noise-cancellation. The setup is ever-changing. "What we recently figured out was how to mount a Starlink on top," Mullenweg said. His SpaceX-built satellite internet receiver plugs right in and provides even faster speeds. "You can't drive around with it, and I think it's geo-locked to just the Wyoming region," but with two minutes of setup his RV gets broadband-quality internet. "And," Mullenweg said, already planning his next upgrade, "SpaceX has announced they're going to do a mobile version, so whenever that comes, I'll redo the whole thing. It'll be nice not to have to mount and dismount, and it'll work when I'm moving." From his always-connected RV, Mullenweg has continued to turn Automattic into a tech giant. He talks often about his desire to build "the Berkshire Hathaway of the internet," a holding company populated with the most ambitious and important products and services in tech. But there is one thing that binds the many products under the Automattic umbrella together: a bet on and belief in the open web and open-source software. In every way that matters, Automattic is a reflection of Mullenweg (you could say he puts the “Matt” in Automattic). He started building web software because he wanted a place to store and share his photos; he’s a blogger to the core, and loves anything that aids in the free expression of ideas on the internet. He loves jazz, which is why WordPress releases are named for jazz musicians. He loves to read and write and work from anywhere, so he turned Automattic into a company that supports bloggers and promotes remote work. He buys companies that make products he likes, and companies that have missions he believes in. Most of all, he believes that open-source software is the future of everything. And he’s betting on it every way he can. Eighteen years after he first started working on WordPress, Automattic is more powerful than ever. It’s a $7.5 billion company, one of the biggest private companies in the industry. And yet its founding idea — that software should be available to everyone and editable by anyone, that communities can build great things together, that walled gardens always eventually fall — seems more tenuous than ever. There’s another 17-year-old company named Facebook that flies in the face of everything Mullenweg believes in, and is threatening to own the future of the internet. Most people will tell you it feels like the future of tech hangs in the balance. But the way Mullenweg sees it, open is still going to win. It's not a matter of if, only when. And all he's trying to do is help make it happen a little faster. ### The builder If you were in San Francisco in the early days of the Web2 era, circa 2005, there’s a good chance you have a Matt Mullenweg story. Maybe a 21-year-old Mullenweg personally upgraded your WordPress installation at one of his “upgrade parties,” which he used to throw at his San Francisco apartment. Maybe you went to one of his Christmas ugly sweater parties. Or maybe you went to one of the countless Meetup events, at which Mullenweg would extol the virtues of WordPress, open source and blogging. Nearly everyone who knew Mullenweg in those days remembers the same three things: He looked like a kid, he was extremely nice and he had ridiculously big ideas. “WordPress, people knew,” said Scott Beale, the founder of Laughing Squid and a friend of Mullenweg since those early days. “And then you meet the guy, and it's like, he's so nice. No real ego, he’s ready to talk to anyone.” “I had just started using WordPress,” said Om Malik, a blogger and venture capitalist, as well as a longtime friend and mentor to Mullenweg, “and I got in touch with Matt. I had no idea who he was, or how young he was at the time.” Malik would send Mullenweg long emails every time he ran into trouble with WordPress, and Mullenweg would always help. Eventually, “Matt and I just became friends,” Malik said. “We would talk about the internet, the open internet.” Even now, he added, “I only talk to him about technology. We never talk about business.” [image:DAB1905D-7CF6-41DA-8710-D11CE6534EF9-31165-000003D3F9990471/four-people-in-a-coffee-shop-looking-at-their-computers.jpg] A young Matt Mullenweg (second from left) at a WordPress meetup in 2005.Photo: [Scott Beale](https://www.flickr.com/photos/laughingsquid/5975560/) Mullenweg had started WordPress two years earlier, alongside co-founder Mike Little, as a fork of software called b2/cafelog that Mullenweg noticed had been more or less abandoned by its creator. At that point, Mullenweg wasn’t trying to start a conglomerate; he was just trying to keep his blog online. He liked the idea that b2/cafelog was available through a General Public License, meaning anyone could fork and change the code and no one could take it away. “The work would never be lost,” Mullenweg [wrote on his blog](https://ma.tt/2003/01/the-blogging-software-dilemma/) as he pondered making the move, “as if I fell [off] the face of the planet a year from now, whatever code I made would be free to the world, and if someone else wanted to pick it up they could.” A few months later, that fork had a name — WordPress — and was released to the public. Even early on, Mullenweg used to tell people he wanted to work on WordPress for the rest of his career. He’d moved from Houston and taken a job at CNET in part because the company was going to pay him to work on WordPress, but as the platform took off he wanted to focus on it even more. But turning WordPress into a hard-charging, VC-backed startup designed for a nine-figure exit didn’t really interest him. “He said, ‘If I ever started a company, I’d want it to be a company that can be alongside the open-source project, and I’d want to work on it for decades,’” said Toni Schneider, a former Yahoo executive who eventually became the first CEO of Automattic. Schneider didn’t really take Mullenweg seriously for a while; who believes a 21-year-old kid when he tells you his plans for the rest of his life? But Schneider quickly realized that Mullenweg really did see WordPress as his life’s work: in part because he found it interesting, knew it was a huge project and could see where it was headed, and in part because he saw WordPress as a tool through which to build a better internet. A better world, even. And he knew it might take a lifetime to pull it off. ### The thinker The first time Mullenweg and I spoke for this story, I asked him what he thought about the state of the tech industry. It was early September, and conversations were raging about antitrust, misinformation, surveillance capitalism, Big Tech’s overreach, Facebook’s effect on democracy and in general the society wrought by the tech industry. Before he answered, Mullenweg changed the frame of the question. This happened constantly in our conversations: I’d ask about Instagram or the iPhone, he’d respond with Plato or Camus. Once, when I asked him about Facebook, he responded with a story about the printing press. In this case, he simply urged me to think more broadly. “I don’t think you have to limit yourself to looking at technology,” he said. “Zoom out to human history, or look at the current state of the world, and look at the tension and the pendulum swing between freedom and authoritarianism.” That back and forth has always existed, he said, and to expect a bunch of companies to suddenly fix it is unrealistic. The cycle plays out the same in tech, he said. Take the internet: built as an open platform, eventually colonized by a handful of dictatorial players. To them, Mullenweg says: Congratulations on all your accomplishments, but you’ll lose in the end. “You get folks who want to ride that openness, but then close people off,” he said. “Like Facebook using your contact books or your email to bootstrap its growth, but then not allowing anyone to do the same on Facebook.” That can work, Mullenweg acknowledges. Sometimes really, really well. “But it also contains the seeds of its own demise.” Users inevitably begin to feel hemmed in and controlled by the closed platforms, and yearn for open pastures. Then they go build something better. Something open. “People's natural desire for freedom starts to get more and more of the best and brightest in the world working on open, distributed, decentralized systems.” The seeds of this change are already everywhere, he said. Tesla has [open-sourced its patents](https://www.tesla.com/blog/all-our-patent-are-belong-you) in an effort to speed up innovation in electric vehicles, because as Elon Musk said, the company’s goal is not just to sell cars but “to accelerate the advent of sustainable transport.” There’s also the whole decentralized, Web3, blockchain community, which excites Mullenweg every time it comes up. “There’s an inevitable gravitational pull towards open source affecting literally every field: finance, health, politics,” he said. “All the things that currently happen in closed ways, what if they were open? What if they were transparent? What if you could copy and paste it? Do your own version? Remix it?” And then he offered the closest thing you’ll find to a Unified Theory of Matt Mullenweg. “As more and more of our lives start to be run and dictated by the technology we use, it's a human right to be able to see how that technology works and modify it. It’s as key to freedom as freedom of speech or freedom of religion. So that is what I plan to spend the rest of my life fighting for.” In his mind, WordPress isn’t just a blogging platform, and Automattic isn’t just a startup. Both are also statements of purpose, proof points of a worldview that says that quarterly results and year-over-year growth aren’t the only metrics that matter. (And that if you wait long enough, open wins at those, too.) Mullenweg has long traded hype cycles for the arc of history. And he hopes he can help bend it a little. ### The tycoon Let’s fast-forward a few years from those early days of WordPress to more recent history. By now WordPress is a behemoth. About 43% of websites on the internet run on WordPress’ open-source platform, which is maintained by thousands of contributors. Meanwhile, Automattic is running a thriving business selling services around the software. WooCommerce, a WordPress plug-in that Automattic acquired in 2015, has become a particular success story: It’s an open competitor to tools like Shopify or the Amazon Marketplace, and has become one of Automattic’s main growth and revenue engines. There are countless businesses run on top of WordPress, from theme makers to plug-in developers to hugely successful publishers and retailers. Because Automattic sees what happens on the platform, and because that platform is so large, it’s in a unique place to make educated bets on the future of the internet. Mullenweg became Automattic’s CEO in 2014, taking over the role from Schneider. Shortly thereafter, he launched the company into hyper-growth mode, and also got a crash course on how to run a business. “For me, the big transition was from coding every day to not coding every day,” he said. Schneider saw it the same way as he stepped down: “The product stuff kept going beautifully, but it took him a while to really ramp up on the business stuff and figure out: How do we organize this company in a way where each of these businesses can thrive?” But as he often does, Mullenweg learned to think bigger. “My big learning under Toni was that by changing code, I can affect that part of the program,” he said. “But [by] changing people, you can affect the world.” He came to love thinking about the architecture of Automattic and how to build a company with the same ideals and incentives as the community it came from. To sum up his style, Mullenweg offered a quote from Antoine de Saint-Exupéry, the author of “The Little Prince.” (Because of course he did.) “He said, ‘If you want to build a ship, don’t drum up people to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.’” As Automattic has grown in size and scale, the company has more freedom to take on different kinds of projects. “I can build something from scratch with our 1,700 people,” Mullenweg said (Automattic's staff is actually closer to 1,900 now), “or we can partner with a company. We can make a minority investment, we can make a majority investment, we can make it a division of the company, we can make it fully integrated.” He said he’s always tried to keep Automattic nimble, ready to make big moves at the right moment but never conjuring a sense of panic or desperation. [image:C295F141-A968-444B-8A06-05BDBFC227F8-31165-000003D3F997BE87/matt-mullenweg.jpg] Even early on, Mullenweg used to tell people he wanted to work on WordPress for the rest of his career. Photo: Arturo Olmos for Protocol There have been a few misses over the years: Automattic was one of Slack’s first customers but didn’t invest in the company, and WordPress was an early supporter of bitcoin but never held any of it. Now, Mullenweg said, he’s in a position to jump on almost anything, as long as it feels right. This year, in the midst of a huge uptick in M&A and fundraising around the industry, a lot has felt right: By Mullenweg's own count, the WordPress community acquired 42 companies and products in 2021, eight of which were bought by Automattic itself. And even he's not sure that captures everything. Over time, Automattic also gained a reputation as a good investor or acquirer in part because it doesn’t have rigid structures into which it needs to put things. “Every other company we talked to was telling us about their plans and what they wanted to do,” said Russell Ivanovic, the CPO of Pocket Casts, which Automattic acquired in July. Automattic was different. “They said, ‘Look, this is why we think you should join our company, this is the freedom you’re going to get, this is the kind of organizational structure that we have.’” “Matt tends to attract people that are like him, who have that kind of product-led thesis and are a little bit more mission-driven,” said Deven Parekh, managing director at Insight Partners, which has invested several times in Automattic. “They aren't necessarily optimizing for the last dollar at the time they sell the company.” People like Paul Mayne, the founder of Day One, who said he wasn’t really looking for an exit but knew he’d be crazy to ignore Mullenweg’s advances. “It’s their openness,” he said when I asked why he thought Automattic was the right home for his company. “It’s all open source-based and long-term focused, and about writing and publishing. I felt like we shared values there.” To truly be a platform, it has to be open. Otherwise it’s more like a trap. There’s an underlying trend to many of Automattic’s recent acquisitions, a reflex to try to build or buy open alternatives to increasingly closed systems. As social media falls increasingly under Facebook’s watch, Automattic buys Tumblr; as Spotify moves to control more of the audio and podcast ecosystem, Automattic buys Pocket Casts. Parse.ly promises to be analytics minus the gross data practices; Day One promises top-notch encryption to keep your important memories and journal entries private forever. Every Automattic product is both a bet on the future and a subtle rebuke of the present. “I think it’s crucially important to have alternatives that are creator-focused, versus advertiser-focused,” Mullenweg said. “I guess part of this is wanting alternatives to advertising business models as well.” That means betting on subscriptions, like Tumblr’s new Post+ service. It means making it easy for creators to sell things directly through WooCommerce. It means lots of other things, too, eventually. And if that’s the plan, there are plenty of places left for Automattic to explore. “I would have loved to have Instapaper or Pocket,” Mullenweg said when the topic of reading apps came up. He’s a Pocket user now, and loves the app, but it’s owned by Mozilla. Which, of course, brings up the idea of web browsers; if you want to preserve user agency and power on the internet, the browser is a place to start. “I would be very, very interested in Mozilla,” Mullenweg said. “Or maybe, like, a Brave.” For these new companies, joining Automattic can feel a bit like being dropped into Mullenweg’s frontal cortex. It’s a completely remote company, for one thing. And because Mullenweg is a blogger at heart, you’re likely to spend most of your first few days at the company reading. Automattic — like Mullenweg — defaults to transparency and flat hierarchies. Employees are encouraged to write about their ideas even in their very earliest stages, and everyone around the company is encouraged to comment. (That meant, for instance, that Pocket Casts’ Ivanovic could read back through chat logs to see the conversation that led to its acquisition, including the parts where some employees thought it was a bad idea.) It can feel strange at first, but multiple founders I spoke with said they quickly came to appreciate the Automattic way of doing things. “They have some internal document that just says, ‘embrace the chaos,’” Ivanovic said. Mullenweg leads an executive team called “Bridge,” which operates as the connective tissue of the company. Most other teams are named after something random, like a bird or a mythological creature. The idea is for everyone to feel like they’re part of Automattic, not part of a company owned by Automattic. “It helps a team not be too attached to whatever they’re currently working on,” Mullenweg said. Ultimately, the mission matters most of all. ### The titan At this point, few companies have more influence over the way the internet works than Automattic. And few people not named Zuckerberg have more influence than Mullenweg. Beyond the whole “43% of the internet” thing, there’s the fact that both WordPress and Automattic basically belong to him. When Automattic sells shares to new investors, all the voting power goes back to Mullenweg. When he wants to push Automattic or WordPress in a new direction, he tries to do it as gently and collaboratively as possible, but one way or another he usually gets his way. Mullenweg generally tends to downplay this authority, noting that users can always fork WordPress and do their own thing, but there’s no question that where Mullenweg goes, the community — and the internet — follows. In general, Mullenweg is hardly the chest-beating pundit type, but friends and foes alike describe a killer lying just under the surface. His vitriol has historically been reserved for those who violate the spirit of open software and open systems: He has, for instance, angry-blogged at website-builder Wix several times over the years, most recently responding to a Wix ad campaign by [calling its locked-in business model](https://ma.tt/2021/04/wix-dirty-tricks/) “like a roach motel where you can check in but never check out.” Wix CEO Avishai Abrahami didn’t respond to a request for comment, but did write [a blog post of his own](https://www.wix.com/blog/2021/04/letter-from-avishai-abrahami-to-matt-mullenweg/) refuting many of Mullenweg’s claims. (Years ago, in response to [another angry](https://ma.tt/2016/10/wix-and-the-gpl/) Mullenweg post, [he wrote another](https://www.wix.com/blog/2016/10/dear-matt-mullenweg-an-open-letter-from-wix-coms-ceo-avishai-abrahami/): “Wow, dude I did not even know we were fighting.”) Anil Dash, the CEO of Glitch who used to run Six Apart and its blogging platform Movable Type, remembers Mullenweg capitalizing on every Six Apart mistake to grow WordPress. Dash said he doesn’t harbor a grudge, and in fact gives Mullenweg credit for having the right strategy at the right moment, but there’s one thing that nags at him. “I wish he’d had that energy for Zuck,” Dash said, “not the people he did.” You could argue — and some do — that in this moment of reckoning over the effect of technology on our lives and society, Mullenweg should be a much louder force for good. He’s not shy about his beliefs, but he isn’t arguing for them in front of Congress. He could have slapped a “Facebook is bad” banner across every WordPress site on the internet, and he didn’t. He hasn’t been loudly shouting about Facebook’s misinformation problem or decrying Google’s data-collection systems. Even on the product side, WordPress is well-positioned to take on Substack, YouTube and so many others. Multiple people told me Automattic is leaving billions on the table, and should be doing more to produce and promote open alternatives to the internet’s most important tools. [image:B1D74F70-F669-4FED-A60B-4EDA62C7F174-31165-000003D3F995DDC3/matt-mullenweg-at-desk.jpg] Mullenweg's vitriol has historically been reserved for those who violate the spirit of open software and open systems. Photo: Arturo Olmos for Protocol The tech industry right now is riddled with villains and short of heroes, and Mullenweg fits the bill nicely. He’s got the quiet alter-ego thing down pat. So where’s the super suit? Mullenweg thinks about this for a minute. “I’m not sure where to start there.” Then, after a pause: “I do think you have to pick your battles, because you can’t fight all things at once.” He worries that changing Facebook and Google requires changing the ad-based business model of the internet, which is harder than it’s made out to be. But mostly, he thinks issues of data privacy and content moderation are big and complicated. “I have an appreciation for the challenge of moderation on Facebook,” he said. Yes, Facebook should be doing better. Of course. But Mullenweg seems more interested in solving problems than pointing fingers. “I really had to make a conscious effort to stay out of day-to-day things in the news,” he said, “just because there’s so much going on.” There’s just no hurrying Mullenweg, it seems. Even as the tech industry swirls around him, with regulatory fights and social media backlashes and the seemingly hourly shift in priorities, Mullenweg remains steadily on course. “We aspire to create the layer that every other application on the web can run on,” he said. “Hopefully one day, 85% or 90% of all websites have WordPress as their base layer.” Right now, the web operates largely on top of closed platforms owned by companies like Amazon and Facebook. “But to truly be a platform,” Mullenweg said, “it has to be open. Otherwise it’s more like a trap.” He plans to spend the rest of his career building the web’s one true platform, the open system the internet deserves. What exactly does that look like? Who knows. Mullenweg is increasingly fascinated by all things Web3 and crypto, and sees in that space much of the collaboration and community he loves about WordPress and open source in general. He proudly reminded me that WordPress.com began accepting bitcoin in 2012, and that Vitalik Buterin, who eventually created Ethereum, [wrote about Automattic](https://bitcoinmagazine.com/culture/wordpress-accepts-bitcoin-1353043485) for Bitcoin Magazine the same year. "To me, what Web3 embodies is two essential ideas: decentralization and individual ownership," Mullenweg said at [his recent annual State of the Word speech](https://www.youtube.com/watch?v=OpiH_P9aGhQ), where he updates the WordPress community on the year that passed. He preceded that by saying he didn't really know how to define Web3 at the moment — who does, really? — but supported the belief in an internet that anyone can help build, tweak to fit their own needs, and own themselves without paying rent to some large tech giant. He did issue a warning, though: "For every project which is asking for your money, dollars, for you to pay the cost of a house for a picture of an ape, you should ask: Does it apply the same freedoms which WordPress itself does? How closely does it apply to increasing your freedom and agency in the world?" The details do matter, to a point, but it’s not just about WordPress, and it’s definitely not just about Automattic. Those are just tools. For him, the lifelong work is about something much bigger than either one — bigger, even, than the tech industry. After we hung up our first Zoom call, Mullenweg sent me an email with the subject line “Freedom is central.” The body was a quote from Albert Camus, which worked as an explanation for just about everything Mullenweg believes in, fights for and plans to spend the rest of his life working on: “The only way to deal with an unfree world is to become so absolutely free that your very existence is an act of rebellion.” The email was just that, Mullenweg’s name and three links to WordPress sites. What else do you need to know? /Update: This story has been updated to better clarify the difference between Automattic, which runs WordPress.com, and the open-source WordPress software. Updated Dec. 21./ [Can Matt Mullenweg save the internet?](https://www.protocol.com/matt-mullenweg) # Review: Mobile Colloquy for iPhone does IRC right [image:6D2C3806-D6D9-42A3-8A9C-AD53930EED98-30426-000003C541F8ADA1/ars-logo-open-grey.png] [image:9988D6ED-DF9C-47D7-B329-C0706A0708E0-30426-000003C541F6D574/largeIcon.png] When Mobile Colloquy hit the App Store over the weekend, Twitter quickly became (appropriately enough) all a-twitter over the application. Many Mac-based IRC users use the desktop version of [Colloquy](http://colloquy.info/) as their client of choice; they were familiar with the name immediately and were curious to see what the iPhone version had to offer. Some were a little bit dismayed, however, as the desktop client is open source and free to use, but Mobile Colloquy is both open source and $1.99. How can that be? Open Source does not always equate to being free. Companies often charge for OSS to cover things like future development and support costs. Regardless, the software's source code is still freely available and compilable to do as a user sees fit. Mobile Colloquy is no different: the [source is available for download](http://colloquy.info/project/browser/trunk/Mobile), you can compile it, and if you have developer certificates, you can even install it on your iPhone for free. The license even says you can download the source, modify it, create your own application, and charge for it if that's what you want to do. With that out of the way, let's talk about what Mobile Colloquy brings to the table. This isn't the first time we have seen Colloquy on an iPhone. [Back in 2007](http://arstechnica.com/journals/apple.ars/2007/09/11/mobile-colloquy-irc-client-released-for-iphone), there was a version of Colloquy available for jailbroken iPhones. However, while the developer responsible for that is also on this team, this is clearly a more mature project. Mobile Colloquy makes great use of a two-tab interface that allows you to navigate the entire application by tapping either /Connections/ or /Colloquies/ in the tab bar. It is somewhat refreshing to not be inundated with a flooded tab bar, and this simple means of navigation throughout the app shows a refreshing attention to detail during the UI development process. It's easy to make more tabs; it's hard to make things work well on fewer tabs. [image:762F4CBD-713E-4504-B763-8C6BAD8D2533-30426-000003C541F5C746/colloquyserverconnections.png] You can add a connection by tapping on the /Connections/ tab and then tapping the '+' button in the navigation bar. From there, it's pretty straightforward if you have ever used an IRC client before. Here, we can set up our host, a description for our host, nickname, real name, set the connection to autoconnect, autojoin rooms, and change a variety of advanced settings. For example, you can also change the server port, turn SSL on or off, and set up authentication. Advertisement Some have argued that there should be a precompiled list of servers to choose from and the client should automatically display all the channels on a given server. When it comes right down to it, though, there are hundreds of IRC servers, some of which have hundreds of channels; I'm not sure the nitpick is all that realistic. Once your server information is all plugged in and you are connected, the /Connections/ tab shows you which servers you are connected to plus the amount of time connected. You can disconnect from a server by swiping or touching the "edit" button in the navigation bar and delete one with a second swipe. If you set the application to join a room automatically, it should already be there once you click on the /Colloquies/ tab; otherwise, you can add one by touching the '+' in the navigation bar. This gives you the opportunity to join a chat room or message a specific user. Once you join a room or message, the correspondence appears sorted by server connection in alphabetical order. Active conversations are set in a normal type, while disconnected conversations are faded out. Under each room or conversation, the last two things said are displayed, as well as the number of unread items since you last viewed the entire conversation. [image:E3535DA1-1890-48AC-AE5B-2267A7FAB874-30426-000003C541F45314/colloquyconnections.png] Just like server connections, you can leave channels and conversations by swiping or by touching the "manage" button in the navigation bar. Once you touch the desired channel, you are greeted with a pretty traditional IRC view. The great part about Mobile Colloquy is the fact that the entire application can be used in either landscape or portrait mode—something I have been clamoring for on all text-entering apps for some time. Turning your device into landscape orientation results in about a 50 percent (8 vs 17) loss in readable lines without the keyboard and almost 66 percent (3 vs 8) when the keyboard is out. The loss of reading space may be a deal breaker for some, but it works if you don't have the keyboard extended all the time. I consider it a small price to pay for text entry that doesn't force you to squeeze your hands into a tiny space. Once you are in a channel, a member list can be viewed by touching the icon on the right side of the navigation bar. Once you have the list, you can search it in realtime, get WHOIS information, or send a private message. Hitting the /Colloquies/ tab at any time will bring you back to the list of conversations. Advertisement Username autocomplete is handled very well in the application—Mobile Colloquy pops up a suggestion box when you begin typing a name, much like the word suggestion system Apple uses throughout the OS. Similarly, emoticons are handled the same way. The app offers more than just your standard emoticons and some of the Emoji icons are also available, but there is currently no list of supported ones. [image:275DDD9D-04CC-494B-A7CD-C1A39C4D051C-30426-000003C541F2CBF0/colloquyautocomplete.png] One of my favorite features is the built-in browser that allows you to click on a link and not leave the application, forcing you to lose all your connections. Mobile Colloquy's feature set doesn't end there. If you enter the Settings application, you will find you can further tweak your IRC experience. Here, you can change your default identity, quit message, toggle join events and leave events on and off, chose a transcript style from a list of seven, add highlighted words (your name is highlighted by default), autojoin on kick, turn off landscape mode, turn off autocorrection, and much more. -Unlike Rooms for iPhone (read our [minireview of Rooms](http://arstechnica.com/journals/apple.ars/2008/08/21/mini-review-rooms-brings-irc-to-the-iphone) ), Mobile Colloquy does not offer a way to stay connected to a server when the phone is asleep, but there are [ways around that](http://colloquy.info/project/wiki/MobileFAQs#HowcanIstayconnectedwhiledoingotherthings).- *(Edit: Mobile Colloquy stays connected while the device is asleep or locked.)* One feature that Rooms has and Mobile Colloquy does not, however, is the ability to save chat logs. For me, this isn't that big of a deal in a mobile IRC client, but some others feel differently. Overall, the UI in Mobile Colloquy is superior to Rooms, and the addition of landscape typing makes this my favorite of the two. If I had one complaint, it would be that the settings for the application reside outside the app; adjusting them forces you to lose your connection and then reconnect over and over if you want to do any tweaking (especially with transcript style). Still, Mobile Colloquy is certainly the best chat-related application I have used on this platform thus far. Name: Mobile Colloquy ( [iTunes Link](https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=302000478&mt=8) ) Publisher: [Multiple Developers (Original Colloquy Developer not involved)](http://colloquy.info/mobile/) Price: $1.99 Platform: iPhone and iPod touch [Review: Mobile Colloquy for iPhone does IRC right](https://arstechnica.com/gadgets/2009/01/review-mobile-colloquy-for-iphone-does-irc-right/) # Linkinus: All IRC Clients Should Be Like This. [image:B5B2F5BB-C41A-4F75-A9B8-B30AF519F98E-30426-000003C42CB49742/2417_892b3cac.png] For those looking for a decent IRC client for the Mac, it’s slim pickings. Certainly there are a couple of free solutions available, such as Colloquy, but if you’re interested in a single window IRC client that looks absolutely gorgeous, look no further than */[Linkinus](http://conceitedsoftware.com/products/linkinus)/*. /[This review was written by Cody Fink, an Apple enthusiast and college student out of the great American East Coast. He currently runs the/ *[Apple-Bits](http://apple-bits.com/)* /blog and tweets as/ *[@codyfink](http://twitter.com/codyfink)* /]/ Conceited Software’s Linkinus isn’t short on features, such as smart highlighting, embedding media, chat grouping, AppleScript support, an identity manager, advanced security settings, and even interface themes that make this a Mac IRC lovers dream. It’s packed with all kinds of settings you can tweak to your hearts desire, perfect for Mac fanatics. Linkinus is built with new IRC users in mind. From the moment you start the app, you’re walked through the process of creating an identify for yourself, connecting to a network, and joining new channels. Although I didn’t necessarily care for the hand holding, the interface presented to you is pretty enough where I let it slide. Besides, at least for network and channel options, they don’t deny you the ability to manually type your commands into the console. The initial setup process however, does concern me. For your Realname and Username, Linkinus pre-fills these spaces with your Mac identity, which new IRC users might find convenient. Linkinus should instead leave these spaces blank, if to somewhat dissuade this behavior. It should be made clear that it’s not recommended to use your real name online, especially if you’re going to venture the unknown world of IRC. You should instead, make an appropriate alias for yourself. My second issue with the setup process is that while it’s obvious you need a *Realname* and a *Username*, it’s not obvious that you should also input a Nickname. Your *nickname* (I think) is the most important piece of your online identity, and users will have to click an empty space in the panel to create one. Only through curiosity would a new user touch this. If you’re a previous IRC user and you have a registered nickname, you can also enter your password here. Once you’ve created your online identity, you’re presented with the console. From here, there’s a notifier on the bottom left hand corner of the screen that tells you to “click here to get started.” Easy enough. Clicking the button will drop down a list of all of the IRC servers available to you. Surprisingly, I wasn’t able to locate Moofspeak, which is the IRC network dedicated to anything Macintosh. Seriously? And despite a pretty pane, I felt confined to the default window sizing (even after pulling it down) due to the largeness of the network buttons. Instead of the “icon” view, I wish they provided me with a list view instead, or an option to change it. Anyway, to connect to Moofspeak, I ended up typing /server irc.moofspeak.net to connect. And the console comes through! Using the pane however, I was able to connect to Geekshed, which was pretty easy. Linkinus does pick favorites though, as it seems to lists the most popular IRC networks first in alphabetical order, before listing the remaining networks known. Once you’re in a network, you’re acquainted with a beautiful page that tells you you’ve successful connected to that network, and it gives you some options in the form of buttons where you can join a specific channel, browse the channel listing, or view your console activity. I prefer to view my console activity and use the /join command to connect to my channels, but new users will appreciate the ease of point and click. Because Moofspeak wasn’t initially listed, neither where the channels unfortunately, but I could still manually connect to any channel in existence. As for Geekshed, I was able to amass a huge list of channels to choose from (which sometimes took a while to aggregate), though scrolling through all of them quickly can get tiring. The most annoying though is if I typed the /list command in the console, I expected to receive a text list of all the channels on the network in the console. Instead, Linkinus intervened and used the channel pane. The chat view is welcoming, as there are plenty of features in this particular mode that I love (albeit with some tweaking in the settings). Here is where your themes are applied from the preferences, and here is where you’ll spend the majority of your time talking to other fellow IRC members. If you quit Linkinus, then return, the last few conversations are saved, followed by a spacer that defines your new chat session. It’s an easy way to recollect what you last talked about, especially if it pertains to the current channel topic. On the user pane to the right, hovering over a user’s name provides some basic information, such as their nickname and hostmask, preventing me from having to /whois an unknown user. You can then control click their name to initiate options like private chat. The status markers aren’t my favorite however, and I enabled the ability to see a user’s privileges (mode) in the preferences. At the bottom of the pane, the three buttons allow you to control user specific settings. The gear button allows you to invoke filters or view a buddy list, while the information button allows you to create and manage your identities. The last button (the bust) gives you options to assign privileges to highlighted users (if you have the required privileges yourself), add them to an ignore list, send them files, and more. One of my favorite features was the ability to star messages. Although Linkinus does sport the ability to sort through messages and show you what it considers the most important, being able to manually star messages is pretty cool. If someone posts a link, you can essentially bookmark that message off for later. Another really (and I mean really) cool chat feature is groups. If you command click multiple channels on the left sidebar, Linkinus divides your console into multiple panes, allowing you to view multiple channels at the same time. Then, you can press command-S to save that group of channels to the top right corner of the Linkinus window for easy access later. If you don’t feel like clicking, you can assign and invoke your own custom keyboard shortcut for viewing those channels later. Pretty sweet huh? You don’t have to group multiple channels - you could group just one for the sake of a keyboard shortcut - but it’s a nifty feature I found plenty of use for. Concerning the left sidebar, which displays your servers and channels, I did not like the default settings. By default, the sidebar not only shows you channels and servers, it shows you queries as well. I like my queries to be listed in the server’s console, and not as a separate entity. It can be easily disabled, and soon after that I was rocking. One pretty nifty feature I liked quiet a bit was the ability to individually set server & channel settings just by double clicking on the name (or the pencil at the bottom of the pane). Double clicking on the name presents you with a small floating window that is stuffed with options from running custom commands as you join, switching your identities, choosing your user modes, and defining custom “stalk” words that can be highlighted specifically in that server or channel instead of globally. [image:DB38C88E-67A5-4D77-83B9-25E112C9200A-30426-000003C42CB31D54/2417_5533758c.png] Linkinus Linkinus isn’t short on preferences, and it’s here where you may spend most of your time tweaking the IRC client to your desired needs. All of your preferences are arranged similarly like System Preferences, using the first tab to displays rows of icons prevalent to your needs in their own categories. Using this view, you can navigate the preferences pretty quickly if you’re looking for a specific setting, such as applying an AppleScript for example. If you want to skip right to customizing the interface, you’ll want to click on Styles, where you can change Linkinus’ chat view. Some themes have “sub-themes” that will alter color schemes, which is a nice touch if you want a particular look, but would rather have black than white. Once you’ve tackled styling, the colors options will provide you with a way to customize input field and user list font colors. Although those options are available, what might catch your eye is the transparency settings. Foreground transparency allows you to chance Linkinus’ opacity, resulting in nothing but the geekiest of giggles. Background transparency allows you to set the opacity for when Linkinus is not the active window. Linkinus allows you to customize the sounds it makes for most events, and even gives you the ability to point to your own sounds. I later opted to use AIM’s classic door opening and closing sounds to notify me when users entered and left a channel for example. You also have the option to set when you’ll hear the sounds (you can turn sounds off if you’re away for example). [image:4D4393CD-F21A-4ADC-A817-7FCF4B88EE9E-30426-000003C42CB18B52/2417_75496b2f.png] Linkinus Sounds Other settings include the abilities to rejoin after kick, manage plugins that increase functionality, enable scripts, create your own command aliases, choose how to display alerts, and more. It’s pretty incredible how much you can actually alter Linkinus from the preferences pane, so it should make most IRC users happy in knowing that there probably won’t be an option that’s missing. Linkinus is a great IRC client that lacks in some areas, but greatly excels in others. While searching for servers and channels can be a pain, chatting is brilliant and packed with plenty of features that allow you to manage content in any way you desire. With its abundance of customizable options and a stunning interface for an IRC client, it’s definitely one I’d take a seriously good look at, especially if you’d rather navigate IRC through point and click. While it isn’t cheap at about twenty euros ($30 USD), you can give it a */[fifteen day trial](http://conceitedsoftware.com/products/linkinus)/*. An education discount is also available for students looking to save a few bucks. [Linkinus: All IRC Clients Should Be Like This.](https://www.macstories.net/reviews/linkinus/) # Tweetbot 3.5: iPhone 6 Support, Interactive Notifications, and iOS 8 Extensions [image:9D96BF13-A29A-473F-8529-A822D448EC88-30426-000003C364BA0A4F/1412131592-2014-10-01-at-03-39-03-.jpeg] [image:CF5E9762-BDF4-448F-A270-8B0C786EBD88-30426-000003C364B8F5B6/_1412131592-2014-10-01-at-03-39-03-.jpeg] For the past two months, I’ve been switching back and forth between [Tweetbot](http://tapbots.com/software/tweetbot/) and Twitter’s official app for iOS in a personal quest to understand what’s the best Twitter client for me today. Tweetbot 3.5, [available today on the App Store](https://itunes.apple.com/us/app/tweetbot-3-for-twitter-iphone/id722294701?mt=8&at=10l6nh&ct=ms_inline), has given me the biggest incentive to keep using Tapbots’ app yet: integration with iOS 8 extensions in my Twitter timeline. Tapbots’ foray into iOS 8 is, on the surface, unsurprising: Tweetbot 3.5 has received layouts optimized for the iPhone 6/6 Plus and, [like the official Twitter app for iPhone](http://www.macstories.net/news/twitter-for-iphone-gets-redesigned-profiles-interactive-notifications-on-ios-8/), interactive notifications. [image:B62E5B9D-5AC1-4A68-99B7-367630EF8AA0-30426-000003C364B7D6BE/1412131645-2014-10-01-at-03-39-03-.jpeg] Tweetbot 3.5 looks great on the iPhone 6, and its new notifications allow me to quickly mark a tweet as favorite without opening the app. Unfortunately, third-party apps can’t access the quick reply feature [found in Apple’s Messages app](http://www.macstories.net/reviews/ios-8-messages-our-review/): like Twitter, tapping the Reply button in a notification won’t let you reply immediately but it’ll take you to Tweetbot instead. From a visual perspective, Tweetbot 3.5 looks and works the same, keeping the foundation that Tapbots [introduced with Tweetbot 3 last year](http://www.macstories.net/reviews/tweetbot-3-review-human-after-all/). The app hasn’t changed considerably – it has evolved in expected ways and within the limitations imposed by Twitter’s API for third-party apps. What’s changing today in Tweetbot is the action menu for tweets and links. With iOS 8, Tapbots has decided to fully embrace extensions (abandoning the custom contextual menu they had built for Tweetbot 3) by switching to Apple’s share sheet for action and share extensions. Every time you tap & hold a tweet/link or hit the share icon in your timeline or a web view, Tweetbot 3.5 will open the iOS 8 share sheet. I probably spend too much time on Twitter, but I can’t deny that the people and websites I follow give me a consistent amount of interesting links I use for articles, [MacStories Weekly](http://macstories.us8.list-manage1.com/subscribe?u=9f4b80a35728f7271fe3ea6ff&id=a3452fa91f), and podcasting. I discover apps, products, and great reads thanks to Twitter, but neither the old Tweetbot or Twitter’s app allowed me to act on those links right away with no friction. Tweetbot featured support for Instapaper, but its integrations stopped at read-later services. Over the years, I developed a habit of marking tweets I found interesting as favorites so I could later go through all of them and manually bookmark them on Pinboard, add them to Evernote, or save them to other apps. I turned Twitter favorites into an inbox because it was hard to share links quickly on iOS. In testing Tweetbot 3.5, I’ve noticed that I now tend to use Twitter favorites less as temporary bookmarks and more as /real/ favorites for tweets I like. With extensions available in my Twitter timeline, I can quickly save links to [Pinner](http://www.macstories.net/reviews/pinner-3-brings-pinboard-bookmarking-to-ios-8/), archive them in Evernote, and even pin Twitter photos to Pinterest – tap & hold a tweet with photos, bring up the Pinterest extension, and it’ll scan the tweet for images. [image:8C9B91B3-69E3-451A-8008-98EEB28558F3-30426-000003C364B68368/1412127673-2014-10-01-at-03-39-03-.jpeg] Extensions in Tweetbot 3.5. Any read-later app can now be integrated natively with Tweetbot thanks to the share sheet. If you follow recipe blogs, you could use the [AnyList extension](http://www.macstories.net/reviews/saving-recipes-with-the-anylist-extension/) to save recipes to your account without leaving the app. I can tweet with [Linky’s tweet panel](http://www.macstories.net/reviews/linky-adds-a-more-powerful-share-sheet-to-ios-8/) inside Tweetbot if I want – a testament to [the democratization of app features](http://www.macstories.net/stories/ios-8-changed-how-i-work-on-my-iphone-and-ipad/) that extensions bring to iOS 8. Tweetbot has always been better than Twitter’s own app for opening webpages thanks to non-modal web views, but extensions take Tapbots’ app to the next level for processing tweets and links. That, of course, comes with some trade-offs. Here’s one minor design detail that I mentioned in [my review of Tweetbot 3](http://www.macstories.net/reviews/tweetbot-3-review-human-after-all/): > If you tap & hold a long URL in the timeline, the contextual menu will intelligently resize the URL’s text to make it smaller so that you’ll be able to read the full URL without cut-off parts. I used that feature all the time to understand if URLs were worth opening or not, and it’s gone in Tweetbot 3.5. Extensions can only be activated from the share sheet, and Tapbots can’t add a URL preview to it as it can’t be modified by apps. I /loved/ that little feature, but from a user’s perspective having full access to extensions trumps the attention to detail for tap & hold on URLs. Thankfully, Tapbots is injecting its own buttons into the share sheet: my beloved “Copy link to tweet” is still available in the row dedicated to action extensions. [image:AA7A20EB-A5DD-4A67-B99E-DD6C8BBA6001-30426-000003C364B4A169/1412131111-2014-10-01-at-03-39-03-.jpeg] Different shades of Gray (and action sheets). The second minor issue with extensions is consistency. Because of Apple’s implementation of extensibility in iOS 8, Tweetbot now comes with two distinct action menus: the Tapbots one, and the share sheet. This isn’t a deal breaker, but it stands out in an app whose design has been carefully considered. Unfortunately, support for extensions hasn’t been added in the opposite direction: you won’t find a Tweetbot share extension that lets you send tweets with Tweetbot from outside the app. Linky [proved](http://www.macstories.net/reviews/linky-adds-a-more-powerful-share-sheet-to-ios-8/) that more powerful share sheets can be added to iOS, but Tapbots decided to go with the safest option for this 3.5 release. I would like to see further experimentation with extensions and Tweetbot in the future – integration with the native document picker to choose files and share them with Tweetbot would be, for instance, a fantastic addition for power users. In the months I’ve spent using the official Twitter app for iPhone, I’ve enjoyed several features that aren’t available to third-party apps. Interactive Cards, the redesigned profile view, sync of DM read status, and the Discover tab were much better than I expected them to be, and I wish that third-party apps could get access to all of these features. And yet I keep coming back to Tweetbot for the little things. Timeline sync with Tweet Marker, which allows me to comfortably read every tweet; easier access to Favorites with customizable tabs; the ability to switch my timeline to a list. And now, with version 3.5, action and share extensions for tweets and links. Tapbots may not be at the forefront of Twitter innovation because the company doesn’t let them, but Tweetbot still is a great client graced by a thoughtful design and, thanks to iOS 8, the kind of flexibility that can’t be found in Twitter’s app for iOS. Tweetbot 3.5 is [available on the App Store](https://itunes.apple.com/us/app/tweetbot-3-for-twitter-iphone/id722294701?mt=8&at=10l6nh&ct=ms_inline). [Tweetbot 3.5: iPhone 6 Support, Interactive Notifications, and iOS 8 Extensions](https://www.macstories.net/reviews/tweetbot-3-5-iphone-6-support-interactive-notifications-and-ios-8-extensions/) # Floraverse Palette ``` t.prefs_.set('color-palette-overrides',["#08002e", "#64002c", "#5d731a", "#cd751c", "#1d6da1", "#b7077e", "#42a38c", "#f3e0b8", "#331e4d", "#d02063", "#b4ce59", "#fac357", "#40a4cf", "#f12aae", "#62caa8", "#fff5db"]); t.prefs_.set('foreground-color', "#dbd1b9"); t.prefs_.set('background-color', "#0e0d15"); t.prefs_.set('cursor-color', 'rgba(187,187,187,0.5)'); ``` #08002e #64002c #5d731a #cd751c #1d6da1 # Man Page Palette ``` t.prefs_.set('color-palette-overrides',["#000000", "#cc0000", "#00a600", "#999900", "#0000b2", "#b200b2", "#00a6b2", "#cccccc", "#666666", "#e50000", "#00d900", "#e5e500", "#0000ff", "#e500e5", "#00e5e5", "#e5e5e5"]); t.prefs_.set('foreground-color', "#000000"); t.prefs_.set('background-color', "#fef49c"); t.prefs_.set('cursor-color', 'rgba(127,127,127,0.5)'); ``` #000000 #cc0000 #00a600 #999900 #0000b2 #b200b2 #00a6b2 #cccccc #666666 #e50000 #00d900 #e5e500 #0000ff #e500e5 #00e5e5 #e5e5e5 #fef49c # Mona Lisa Palette ``` t.prefs_.set('color-palette-overrides',["#351b0e", "#9b291c", "#636232", "#c36e28", "#515c5d", "#9b1d29", "#588056", "#f7d75c", "#874228", "#ff4331", "#b4b264", "#ff9566", "#9eb2b4", "#ff5b6a", "#8acd8f", "#ffe598"]); t.prefs_.set('foreground-color', "#f7d66a"); t.prefs_.set('background-color', "#120b0d"); t.prefs_.set('cursor-color', 'rgba(196,108,50,0.5)'); ``` #351b0e #9b291c #636232 # ENCOM ``` t.prefs_.set('color-palette-overrides',["#000000", "#9f0000", "#008b00", "#ffd000", "#0081ff", "#bc00ca", "#008b8b", "#bbbbbb", "#555555", "#ff0000", "#00ee00", "#ffff00", "#0000ff", "#ff00ff", "#00cdcd", "#ffffff"]); t.prefs_.set('foreground-color', "#00a595"); t.prefs_.set('background-color', "#000000"); t.prefs_.set('cursor-color', 'rgba(187,187,187,0.5)'); ``` #000000 #9f0000 #008b00 #ffd000 #0081ff #bc00ca #008b8b #bbbbbb #555555 #ff0000 #00ee00 #ffff00 #0000ff #ff00ff #00cdcd #ffffff #00a595 # Redesigning the Nail 🔨 From: Ernie Smith To: keys@extratone.com Date: Feb 22, 2022 Subject: Redesigning the Nail 🔨 On the ultimate failure of Apple’s Touch Bar as a laptop feature, contrasted with the unqualified suc Redesigning the Nail 🔨 By Ernie Smith • Issue #168 • View online On the ultimate failure of Apple’s Touch Bar as a laptop feature, contrasted with the unqualified success of the Elgato Stream Deck. Sponsored: Like smart morning reads, but not so much into bias? The daily digest 1440, which counts a million folks among its readership, is for you. It covers the news like you remember it growing up: Down the middle. Subscribe here. I guess it can be said that when you have a great hammer, everything looks like a nail. And the multitouch interface was a pretty good hammer for Apple as a company, changing the way that its users interacted with its technology solutions over time. But Apple is the kind of company that thinks differently about nails. Maybe Apple has been afraid of seeing the main interface of the Mac as a nail, which is why its screens haven’t made the leap to touch despite the technology being there for years and being good enough for said use case for quite some time. But that effort to try and thoughtfully limit how the touchscreen was used in its systems might have actually made the Touch Bar an even more questionable bit of kit. By attempting to winnow down its use case in a specific way, rather than give people the option to use it and let them decide how to work it into their workflow, the company ultimately stymied what the Touch Bar could be. By last fall, Apple had started to remove it from its latest MacBook Pros. (Kevin Lim/Flickr) Meanwhile, a company in a completely different space took a seed of the basic idea that the Touch Bar tried to represent and actually made it useful to a lot of people. The Stream Deck (not to be confused with this), a screen-plus-buttons interface, is intended for video streamers as a way of helping to control their machines at a time they are working with immediacy—in the middle of a stream—and then winnowing down what they do into the easy muscle-memory approach. In many ways, it’s very similar to the Touch Bar—it brings imagery to basic interfaces. But by trying not to define how the Stream Deck is used and instead making it simple and flexible and programmable for given use cases, the device has become an iconic product. It’s basically second to ring lighting as the official product of live streaming. Dan Hon @hondanhon The Macbook Pro Touchbar. But make it its own thing. And make it buttons. And more useful. And easier to reach. https://t.co/9V2kyPydeY 11:26 PM - 17 Feb 2022 Elgato, the AV tech company that had previously been best known for its video conversion equipment, released it just six months after the Touch Bar, and it will likely outlive it by many years; it might even become a mainstream consumer device soon enough. I think it’s one of those products that stands a real chance of breaking out with a bigger audience. (It should be noted that, while Elgato definitely deserves the flowers for making it a successful product, the designer Artemy Lebedev developed this general idea back in 2005. Apple was rumored to be working on that approach at the time.) Apple could have had success with a more narrow audience with something like the Touch Bar. It has a segment of its audience, video editors, that it really emphasizes in its marketing, as well as one focused on audio applications. Each of these audiences could have been pitched a specialized touch interface that largely worked as a trackpad but added in visual tools as was needed. (Magic Trackpad 4?) It could have been an external device, rather than something every consumer had to buy with the laptop. And it would have been more functional, solving the primary issue for the audience that needed it, while letting the audience that didn’t well enough alone. (Sumudu Mohottige/Unsplash) The reason the Stream Deck succeeded in the market, while the Touch Bar has been left to languish, is because of a mixture of two things: One, an intentionally narrowed market focus; and two, an understanding of how users actually use their devices. Muscle memory is a big thing when you own a laptop. And I think that a lot of the reason why the Touch Bar was ultimately rejected by much of its user base was because it actively competed with the way regular people work. It was built for a way Apple wanted people to work, but which hadn’t been tested in the market in a real way. (To be fair, we got the iPhone and iPad out of that approach.) Meanwhile, all of Apple’s qualms about touchscreens on laptops are basically non-issues, as proven by the fact that Windows has lovingly embraced multitouch for a decade now. The Stream Deck was a device built around the way people actually work in a live setting. It’s simple. It’s awesome. It probably makes the lives of its users a lot easier. And it might eventually become a huge product for people who don’t stream. Related Reads: Barred from the Bar: Apple's Touch Bar Gets Banned Apple’s Touch Bar is proving problematic for the North Carolina Bar. It’s the latest such example of tech’s drumbeat unwittingly making it easier to cheat. tedium.co  •  Share Thunderbolt Cable History: How Light Peak Somehow Became Boring How Thunderbolt, the ultra-fast connector that recently turned 10, started life with a completely different look. (Fun fact: $400 Thunderbolt 3 cables exist.) tedium.co  •  Share Time limit given ⏲: 30 minutes Time left on clock ⏲: 2 minutes, 33 seconds (Thanks Dan Hon for the inspiration for this one.) If you like this, be sure to check out more of my writing at Tedium: The Dull Side of the Internet. Do you own a newsletter? Want to try your hand at writing an entire article in 30 minutes or less? If so, let’s do a swap—reply to this email to see about setting something up. Dig this issue? Let me know! (And make sure you tell others about MidRange!) Did you enjoy this issue? By Ernie Smith Not quite short form, not quite tedious. A less ambitious newsletter by Ernie Smith. Not ten short items. Not one long item. One mid-range item. Three times a week (Monday, Tuesday, Thursday). With a time limit. ⏲ Tweet     Share In order to unsubscribe, click here. If you were forwarded this newsletter and you like it, you can subscribe here. Powered by Revue [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjYyMTRlNTY1M2Y4ZTdfNDJh%0D%0AZmI0ZTA2YTViYzExNDQxYUBhODIwYWU4OC1mNzhjLTQyYTEtYWYzOS03ZDZlNWY2%0D%0AMzU3OGMubWFpbDszOTIwNTM1ODU3) # Greyhound Colors 007aff #021105 #0c0c0c #0f0f0f #121212 #141414 #1c1c1d #1f1f1f #272728 #27292b #2a2a2a #2a9ef1 #2da32f #2f3135 #353539 #35393e #36393e #363945 #3b3b3b #3d3d40 #4867f8 #48f8d9 #4b5058 #4d4d4d #4f041c #525252 #5a5a5a #5a5a5e #5e5e5e #616365 #666666 #666667 #6c7179 #6d6d72 #72d5fd #737373 #767676 #77808c #7b7b7b #808080 #8b9197 #8e8e92 #8f8f8f #939597 #b2b2b2 #b6b6bb #c5c7cd #c7c7c7 #c8c7cc #cad4de #d0d0d0 #d2386c #e6f2ff #ec6608 #efe1ce #f2f1f7 #f2f2f2 #f2f2f7 #f39200 #f5f5fb #f88148 #f8d948 #fdefcd #fdf6f6 #ffe438 #fffcf2 #ffffff --- Next: [Overview](https://www.gnu.org/software/ed/manual/ed_manual.html#Overview), Up: [(dir)](https://www.gnu.org/software/ed/manual/ed_manual.html#dir) ## The GNU ed line editor This manual is for GNU ed (version 1.18, 4 February 2022). * [Overview](https://www.gnu.org/software/ed/manual/ed_manual.html#Overview): Overview of the ed command * [Introduction to line editing](https://www.gnu.org/software/ed/manual/ed_manual.html#Introduction-to-line-editing): Getting started with GNU ed * [Invoking ed](https://www.gnu.org/software/ed/manual/ed_manual.html#Invoking-ed): Command line interface * [Line addressing](https://www.gnu.org/software/ed/manual/ed_manual.html#Line-addressing): Specifying lines/ranges in the buffer * [Regular expressions](https://www.gnu.org/software/ed/manual/ed_manual.html#Regular-expressions): Patterns for selecting text * [Commands](https://www.gnu.org/software/ed/manual/ed_manual.html#Commands): Commands recognized by GNU ed * [The 's' Command](https://www.gnu.org/software/ed/manual/ed_manual.html#The-_0027s_0027-Command): Substitute command * [Limitations](https://www.gnu.org/software/ed/manual/ed_manual.html#Limitations): Intrinsic limits of GNU ed * [Diagnostics](https://www.gnu.org/software/ed/manual/ed_manual.html#Diagnostics): GNU ed error handling * [Problems](https://www.gnu.org/software/ed/manual/ed_manual.html#Problems): Reporting bugs * ``` ``` * Copyright © 1993, 1994, 2006-2022 Free Software Foundation, Inc. * Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. --- * Next: [Introduction to line editing](https://www.gnu.org/software/ed/manual/ed_manual.html#Introduction-to-line-editing), Previous: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 1 Overview [GNU ed](http://www.gnu.org/software/ed/ed.html) is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files, both interactively and via shell scripts. A restricted version of ed, red, can only edit files in the current directory and cannot execute shell commands. Ed is the 'standard' text editor in the sense that it is the original editor for Unix, and thus widely available. For most purposes, however, it is superseded by full-screen editors such as GNU Emacs or GNU Moe. GNU ed is based on the editor algorithm described in Brian W. Kernighan and P. J. Plauger's book "Software Tools in Pascal", Addison-Wesley, 1981. If invoked with a file argument, then a copy of file is read into the editor's buffer. Changes are made to this copy and not directly to file itself. Upon quitting ed, any changes not explicitly saved with a 'w' command are lost. In interactive mode, a non-existing file is reported but does not alter the exit status. Editing is done in two distinct modes: command and input. When first invoked, ed is in command mode. In this mode commands are read from the standard input and executed to manipulate the contents of the editor buffer. A typical command might look like: ``` ,s/old/new/g ``` which replaces all occurences of the string old with new. When an input command, such as 'a' (append), 'i' (insert) or 'c' (change), is given, ed enters input mode. This is the primary means of adding text to a file. In this mode, no commands are available; instead, the standard input is written directly to the editor buffer. A line consists of the text up to and including a character. Input mode is terminated by entering a single period ('.') on a line. All ed commands operate on whole lines or ranges of lines; e.g., the 'd' command deletes lines; the 'm' command moves lines, and so on. It is possible to modify only a portion of a line by means of replacement, as in the example above. However even here, the 's' command is applied to whole lines at a time. In general, ed commands consist of zero or more line addresses, followed by a single character command and possibly additional parameters; i.e., commands have the structure: ``` [address[,address]]command[parameters] ``` The addresses indicate the line or range of lines to be affected by the command. If fewer addresses are given than the command accepts, then default addresses are supplied. --- Next: [Invoking ed](https://www.gnu.org/software/ed/manual/ed_manual.html#Invoking-ed), Previous: [Overview](https://www.gnu.org/software/ed/manual/ed_manual.html#Overview), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 2 Introduction to line editing ed was created, along with the Unix operating system, by Ken Thompson and Dennis Ritchie. It is the refinement of its more complex, programmable predecessor, `QED`, to which Thompson and Ritchie had already added pattern matching capabilities (see [Regular expressions](https://www.gnu.org/software/ed/manual/ed_manual.html#Regular-expressions) ). For the purposes of this tutorial, a working knowledge of the Unix shell sh and the Unix file system is recommended, since ed is designed to interact closely with them. (See the [bash manual](http://www.gnu.org/software/bash/manual/) for details about bash). The principal difference between line editors and display editors is that display editors provide instant feedback to user commands, whereas line editors require sometimes lengthy input before any effects are seen. The advantage of instant feedback, of course, is that if a mistake is made, it can be corrected immediately, before more damage is done. Editing in ed requires more strategy and forethought; but if you are up to the task, it can be quite efficient. Much of the ed command syntax is shared with other Unix utilities. As with the shell, (the carriage-return key) enters a line of input. So when we speak of "entering" a command or some text in ed, is implied at the end of each line. Prior to typing , corrections to the line may be made by typing either to erase characters backwards, or -u (i.e., hold the CONTROL key and type u) to erase the whole line. When ed first opens, it expects to be told what to do but doesn't prompt us like the shell. So let's begin by telling ed to do so with the

(prompt) command: ``` $ ed P * ``` By default, ed uses asterisk ('*') as command prompt to avoid confusion with the shell command prompt ('$'). We can run Unix shell (sh) commands from inside ed by prefixing them with (exclamation mark, aka "bang"). For example: ``` *!date Mon Jun 26 10:08:41 PDT 2006 ! *!for s in hello world; do echo $s; done hello world ! * ``` So far, this is no different from running commands in the Unix shell. But let's say we want to edit the output of a command, or save it to a file. First we must capture the command output to a temporary location called a buffer where ed can access it. This is done with ed's command (mnemonic: read): ``` *r !cal -m 137 * ``` Here ed is telling us that it has just read 137 characters into the editor buffer - i.e., the output of the cal command, which prints a simple ASCII calendar. To display the buffer contents we issue the

(print) command (not to be confused with the prompt command, which is uppercase!). To indicate the range of lines in the buffer that should be printed, we prefix the command with <,> (comma) which is shorthand for "the whole buffer": ``` *,p June 2006 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 * ``` Now let's write the buffer contents to a file named 'junk' with the (write) command: ``` *w junk 137 * ``` Need we say? It's good practice to frequently write the buffer contents, since unwritten changes to the buffer will be lost when we exit ed. The sample sessions below illustrate some basic concepts of line editing with ed. We begin by creating a file, 'sonnet', with some help from Shakespeare. As with the shell, all input to ed must be followed by a character. Commands beginning with '' are just more input. ``` $ ed # The 'a' command is for appending text to the editor buffer. a No more be grieved at that which thou hast done. Roses have thorns, and filvers foutians mud. Clouds and eclipses stain both moon and sun, And loathsome canker lives in sweetest bud. . # Entering a single period on a line returns ed to command mode. # Now write the buffer to the file 'sonnet' and quit: w sonnet 183 # ed reports the number of characters written. q $ ls -l total 2 -rw-rw-r-- 1 alm 183 Nov 10 01:16 sonnet $ ``` In the next example, some typos are corrected in the file 'sonnet'. ``` $ ed sonnet 183 # Begin by printing the buffer to the terminal with the 'p' command. # The ',' means "all lines". ,p No more be grieved at that which thou hast done. Roses have thorns, and filvers foutians mud. Clouds and eclipses stain both moon and sun, And loathsome canker lives in sweetest bud. # Select line 2 for editing. 2 Roses have thorns, and filvers foutians mud. # Use the substitute command, 's', to replace 'filvers' with 'silver', # and print the result. s/filvers/silver/p Roses have thorns, and silver foutians mud. # And correct the spelling of 'fountains'. s/utia/untai/p Roses have thorns, and silver fountains mud. w sonnet 183 q $ ``` Since ed is line-oriented, we have to tell it which line, or range of lines we want to edit. In the example above, we do this by specifying the line's number, or sequence in the buffer. Alternatively, we could have specified a unique string in the line, e.g., '/filvers/', where the '/'s delimit the string in question. Subsequent commands affect only the selected line, a.k.a. the current line. Portions of that line are then replaced with the substitute command, whose syntax is 's/old/new/'. Although ed accepts only one command per line, the print command 'p' is an exception, and may be appended to the end of most commands. In the next example, a title is added to our sonnet. ``` $ ed sonnet 183 a Sonnet #50 . ,p No more be grieved at that which thou hast done. Roses have thorns, and silver fountains mud. Clouds and eclipses stain both moon and sun, And loathsome canker lives in sweetest bud. Sonnet #50 # The title got appended to the end; we should have used '0a' # to append "before the first line". # Move the title to its proper place. 5m0p Sonnet #50 # The title is now the first line, and the current address has been # set to the address of this line as well. ,p Sonnet #50 No more be grieved at that which thou hast done. Roses have thorns, and silver fountains mud. Clouds and eclipses stain both moon and sun, And loathsome canker lives in sweetest bud. wq sonnet 195 $ ``` When ed opens a file, the current address is initially set to the address of the last line of that file. Similarly, the move command 'm' sets the current address to the address of the last line moved. Related programs or routines are vi (1), sed (1), regex (3), sh (1). Relevant documents are: > Unix User's Manual Supplementary Documents: 12 -- 13 > B. W. Kernighan and P. J. Plauger: "Software Tools in Pascal", Addison-Wesley, 1981. --- Next: [Line addressing](https://www.gnu.org/software/ed/manual/ed_manual.html#Line-addressing), Previous: [Introduction to line editing](https://www.gnu.org/software/ed/manual/ed_manual.html#Introduction-to-line-editing), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 3 Invoking ed The format for running ed is: ``` ed [options] [file] red [options] [file] ``` file specifies the name of a file to read. If file is prefixed with a bang (!), then it is interpreted as a shell command. In this case, what is read is the standard output of file executed via sh (1). To read a file whose name begins with a bang, prefix the name with a backslash (\). The default filename is set to file only if it is not prefixed with a bang. ed supports the following [options](http://www.nongnu.org/arg-parser/manual/arg_parser_manual.html#Argument-syntax): * `-h` * `--help` * Print an informative help message describing the options and exit. * `-V` * `--version` * Print the version number of ed on the standard output and exit. This version number should be included in all bug reports. * `-E` * `--extended-regexp` * Use extended regular expressions instead of the basic regular expressions mandated by POSIX. * `-G` * `--traditional` * Forces backwards compatibility. This affects the behavior of the ed commands 'G', 'V', 'f', 'l', 'm', 't' and '!!'. If the default behavior of these commands does not seem familiar, then try invoking ed with this switch. * `-l` * `--loose-exit-status` * Don't exit with bad status if a command happens to "fail" (for example if a substitution command finds nothing to replace). This can be useful when ed is invoked as the editor for crontab. * `-p` string * `--prompt=` string * Specifies a command prompt string and turns prompting on. Showing the prompt string may be toggled on and off with the 'P' command. * `-r` * `--restricted` * Run in restricted mode. This mode disables editing of files out of the current directory and execution of shell commands. * `-s` * `--quiet` * `--silent` * Suppresses diagnostics, the printing of byte counts by 'e', 'E', 'r' and 'w' commands, and the '!' prompt after a '!' command. This option may be useful if ed's standard input is from a script. * `-v` * `--verbose` * Verbose mode; prints error explanations. This may be toggled on and off with the 'H' command. * `--strip-trailing-cr` * * Exit status: 0 if no errors occurred; otherwise >0. --- * Next: [Regular expressions](https://www.gnu.org/software/ed/manual/ed_manual.html#Regular-expressions), Previous: [Invoking ed](https://www.gnu.org/software/ed/manual/ed_manual.html#Invoking-ed), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 4 Line addressing An address represents the number of a line in the buffer. ed maintains a current address which is typically supplied to commands as the default address when none is specified. When a file is first read, the current address is set to the address of the last line of the file. In general, the current address is set to the address of the last line affected by a command. One exception to the rule that addresses represent line numbers is the address '0' (zero). This means "at the beginning of the buffer", and is valid wherever it makes sense. An address range is two addresses separated either by a comma (',') or a semicolon (';'). In a semicolon-delimited range, the current address ('.') is set to the first address before the second address is calculated. This feature can be used to set the starting line for searches if the second address contains a regular expression. The value of the first address in a range cannot exceed the value of the second. Addresses can be omitted on either side of the comma or semicolon separator. If only the first address is given in a range, then the second address is set to the given address. If only the second address is given, the resulting address pairs are '1,addr' and '.;addr' respectively. If a n-tuple of addresses is given where n > 2, then the corresponding range is determined by the last two addresses in the n-tuple. If only one address is expected, then the last address is used. It is an error to give any number of addresses to a command that requires zero addresses. A line address is constructed as follows: * `.` * The current line (address) in the buffer. * `$` * The last line in the buffer. * n * The nth line in the buffer, where n is a number in the range '0,$'. * `+` n * The nth next line, where n is a non-negative number. * `-` n * The nth previous line, where n is a non-negative number. * `+` * The next line. This is equivalent to '+1' and may be repeated with cumulative effect. * `-` * The previous line. This is equivalent to '-1' and may be repeated with cumulative effect. * `,` * The first through last lines in the buffer. This is equivalent to the address range '1,$'. * `;` * The current through last lines in the buffer. This is equivalent to the address range '.;$'. * `/` re `/[I]` * The next line containing the regular expression re. The search wraps to the beginning of the buffer and continues down to the current line, if necessary. The suffix 'I' is a GNU extension which makes ed match re in a case-insensitive manner. * `?` re `?[I]` * The previous line containing the regular expression re. The search wraps to the end of the buffer and continues up to the current line, if necessary. The suffix 'I' is a GNU extension which makes ed match re in a case-insensitive manner. * `'x` * * Addresses can be followed by one or more address offsets, optionally separated by whitespace. Offsets are constructed as follows: * '+' or '-' followed by a number adds or subtracts the indicated number of lines to or from the address. * '+' or '-' not followed by a number adds or subtracts 1 to or from the address. * * It is not an error if an intermediate address value is negative or greater than the address of the last line in the buffer. It is an error if the final address value is negative or greater than the address of the last line in the buffer. It is an error if a search for a regular expression fails to find a matching line. --- * Next: [Commands](https://www.gnu.org/software/ed/manual/ed_manual.html#Commands), Previous: [Line addressing](https://www.gnu.org/software/ed/manual/ed_manual.html#Line-addressing), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 5 Regular expressions Regular expressions are patterns used in selecting text. For example, the ed command ``` g/string/ ``` prints all lines containing string. Regular expressions are also used by the 's' command for selecting old text to be replaced with new text. In addition to specifying string literals, regular expressions can represent classes of strings. Strings thus represented are said to be matched by the corresponding regular expression. If it is possible for a regular expression to match several strings in a line, then the left-most match is the one selected. If the regular expression permits a variable number of matching characters, the longest sequence starting at that point is matched. An empty regular expression is equivalent to the last regular expression processed. Therefore '/re/s//replacement/' replaces re with replacement. As a GNU extension, a regular expression /re/ may be followed by the suffix 'I' which makes ed match re in a case-insensitive manner. Note that the suffix is evaluated when the regular expression is compiled, thus it is invalid to specify it together with the empty regular expression. The following symbols are used in constructing regular expressions using POSIX basic regular expression syntax: * c * Any character c not listed below, including '{', '}', '(', ')', '<' and '>', matches itself. * `\` c * Any backslash-escaped character c, other than '{', '}', '(', ')', '<', '>', 'b', 'B', 'w', 'W', '+' and '?', matches itself. * `.` * Matches any single character. * `[` char-class `]` * Matches any single character in char-class. To include a ']' in char-class, it must be the first character. A range of characters may be specified by separating the end characters of the range with a '-', e.g., 'a-z' specifies the lower case characters. The following literal expressions can also be used in char-class to specify sets of characters: ``` [:alnum:] [:cntrl:] [:lower:] [:space:] [:alpha:] [:digit:] [:print:] [:upper:] [:blank:] [:graph:] [:punct:] [:xdigit:] ``` * If '-' appears as the first or last character of char-class, then it matches itself. All other characters in char-class match themselves. * Patterns in char-class of the form: ``` [.col-elm.] [=col-elm=] ``` * where col-elm is a collating element are interpreted according to 'locale (5)'. See 'regex (7)' for an explanation of these constructs. * `[^` char-class `]` * Matches any single character, other than newline, not in char-class. char-class is defined as above. * `^` * If '^' is the first character of a regular expression, then it anchors the regular expression to the beginning of a line. Otherwise, it matches itself. * `$` * If '$' is the last character of a regular expression, it anchors the regular expression to the end of a line. Otherwise, it matches itself. * `\(` re `\)` * Defines a (possibly empty) subexpression re. Subexpressions may be nested. A subsequent backreference of the form '\n', where n is a number in the range [1,9], expands to the text matched by the nth subexpression. For example, the regular expression '\(a.c\)\1' matches the string 'abcabc', but not 'abcadc'. Subexpressions are ordered relative to their left delimiter. * `*` * Matches zero or more repetitions of the regular expression immediately preceding it. The regular expression can be either a single character regular expression or a subexpression. If '*' is the first character of a regular expression or subexpression, then it matches itself. The '*' operator sometimes yields unexpected results. For example, the regular expression 'b*' matches the beginning of the string 'abbb', as opposed to the substring 'bbb', since an empty string is the only left-most match. * `\{` n `,` m `\}` * `\{` n `,\}` * `\{` n `\}` * * The following extensions to basic regular expression operators are preceded by a backslash '\' to distinguish them from traditional ed syntax. They may be unavailable depending on the particular regex implementation in your system. * `\<` * `\>` * Anchors the single character regular expression or subexpression immediately following it to the beginning (in the case of '\<') or ending (in the case of '\>') of a word, i.e., in ASCII, a maximal string of alphanumeric characters, including the underscore (_). * `\`` * `\'` * Unconditionally matches the beginning '\ ` ' or ending '\'' of a line. * `\?` * Optionally matches the single character regular expression or subexpression immediately preceding it. For example, the regular expression 'a[bd]\?c' matches the strings 'abc', 'adc' and 'ac'. If '\?' occurs at the beginning of a regular expressions or subexpression, then it matches a literal '?'. * `\+` * Matches the single character regular expression or subexpression immediately preceding it one or more times. So the regular expression 'a\+' is shorthand for 'aa*'. If '\+' occurs at the beginning of a regular expression or subexpression, then it matches a literal '+'. * `\b` * Matches the beginning or ending (empty string) of a word. Thus the regular expression '\bhello\b' is equivalent to '\'. However, '\b\b' is a valid regular expression whereas '\<\>' is not. * `\B` * Matches (an empty string) inside a word. * `\w` * Matches any word-constituent character (letters, digits, and the underscore). * `\W` * --- * Next: [The 's' Command](https://www.gnu.org/software/ed/manual/ed_manual.html#The-_0027s_0027-Command), Previous: [Regular expressions](https://www.gnu.org/software/ed/manual/ed_manual.html#Regular-expressions), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 6 Commands All ed commands are single characters, though some require additional parameters. If a command's parameters extend over several lines, then each line except for the last must be terminated with a backslash ('\'). In general, at most one command is allowed per line. However, most commands accept a print suffix, which is any of 'p' (print), 'l' (list), or 'n' (enumerate), to print the last line affected by the command. It is not portable to give more than one print suffix, but ed allows any combination of non-repeated print suffixes and combines their effects. If any suffix letter is given, it must immediately follow the command. The 'e', 'E', 'f', 'r', and 'w' commands take an optional file parameter, separated from the command letter by one or more whitespace characters. An interrupt (typically ) has the effect of aborting the current command and returning the editor to command mode. ed recognizes the following commands. The commands are shown together with the default address or address range supplied if none is specified (in parenthesis). * `(.)a` * Appends text to the buffer after the addressed line. The address '0' (zero) is valid for this command; it places the entered text at the beginning of the buffer. Text is entered in input mode. The current address is set to the address of the last line entered or, if there were none, to the addressed line. * `(.,.)c` * Changes lines in the buffer. The addressed lines are deleted from the buffer, and text is inserted in their place. Text is entered in input mode. The current address is set to the address of the last line entered or, if there were none, to the new address of the line after the last line deleted; if the lines deleted were originally at the end of the buffer, the current address is set to the address of the new last line; if no lines remain in the buffer, the current address is set to zero. The lines deleted are copied to the cut buffer. * `(.,.)d` * Deletes the addressed lines from the buffer. The current address is set to the new address of the line after the last line deleted; if the lines deleted were originally at the end of the buffer, the current address is set to the address of the new last line; if no lines remain in the buffer, the current address is set to zero. The lines deleted are copied to the cut buffer. * `e` file * Edits file, and sets the default filename. If file is not specified, then the default filename is used. Any lines in the buffer are deleted before the new file is read. The current address is set to the address of the last line in the buffer. * If file is prefixed with a bang (!), then it is interpreted as a shell command whose output is to be read, (see [shell escape command](https://www.gnu.org/software/ed/manual/ed_manual.html#shell-escape-command) '!' below). In this case the default filename is unchanged. * A warning is printed if any changes have been made in the buffer since the last 'w' command that wrote the entire buffer to a file. * `E` file * Edits file unconditionally. This is similar to the 'e' command, except that unwritten changes are discarded without warning. * `f` file * Sets the default filename to file. If file is not specified, then the default unescaped filename is printed. * `(1,$)g/` re `/[I]` command-list * Global command. The global command makes two passes over the file. On the first pass, all the addressed lines matching a regular expression re are marked. The suffix 'I' is a GNU extension which makes ed match re in a case-insensitive manner. Then, going sequentially from the beginning of the file to the end of the file, the given command-list is executed for each marked line, with the current address set to the address of that line. Any line modified by the command-list is unmarked. The final value of the current address is the value assigned by the last command in the last command-list executed. If there were no matching lines, the current address is unchanged. The execution of command-list stops on the first error. * The first command of command-list must appear on the same line as the 'g' command. The other commands of command-list must appear on separate lines. All lines of a multi-line command-list except the last line must be terminated with a backslash ('\'). Any commands are allowed, except for 'g', 'G', 'v', and 'V'. The '.' terminating the input mode of commands 'a', 'c', and 'i' can be omitted if it would be the last line of command-list. By default, a newline alone in command-list is equivalent to a 'p' command. If ed is invoked with the command-line option '-G', then a newline in command-list is equivalent to a '.+1p' command. * `(1,$)G/` re `/[I]` * Interactive global command. Interactively edits the addressed lines matching a regular expression re. The suffix 'I' is a GNU extension which makes ed match re in a case-insensitive manner. For each matching line, the line is printed, the current address is set, and the user is prompted to enter a command-list. The final value of the current address is the value assigned by the last command executed. If there were no matching lines, the current address is unchanged. * The format of command-list is the same as that of the 'g' command. A newline alone acts as an empty command list. A single '&' repeats the last non-empty command list. * `h` * Help. Prints an explanation of the last error. * `H` * Toggles the printing of error explanations. By default, explanations are not printed. It is recommended that ed scripts begin with this command to aid in debugging. * `(.)i` * Inserts text in the buffer before the addressed line. The address '0' (zero) is valid for this command; it places the entered text at the beginning of the buffer. Text is entered in input mode. The current address is set to the address of the last line entered or, if there were none, to the addressed line. * `(.,.+1)j` * Joins the addressed lines, replacing them by a single line containing their joined text. If only one address is given, this command does nothing. If lines are joined, the lines replaced are copied to the cut buffer and the current address is set to the address of the joined line. Else, the current address is unchanged. * `(.)kx` * Marks a line with a lower case letter 'x'. The line can then be addressed as ''x' (i.e., a single quote followed by 'x') in subsequent commands. The mark is not cleared until the line is deleted or otherwise modified. The current address is unchanged. * `(.,.)l` * List command. Prints the addressed lines unambiguously. The end of each line is marked with a '$', and every '$' character within the text is printed with a preceding backslash. Special characters are printed as escape sequences. The current address is set to the address of the last line printed. * `(.,.)m(.)` * Moves lines in the buffer. The addressed lines are moved to after the right-hand destination address. The destination address '0' (zero) is valid for this command; it moves the addressed lines to the beginning of the buffer. It is an error if the destination address falls within the range of lines to be moved. The current address is set to the new address of the last line moved. * `(.,.)n` * Number command. Prints the addressed lines, preceding each line by its line number and a . The current address is set to the address of the last line printed. * `(.,.)p` * Prints the addressed lines. The current address is set to the address of the last line printed. * `P` * Toggles the command prompt on and off. Unless a prompt string is specified with the command-line option '-p', the command prompt is by default turned off. The default prompt string is an asterisk ('*'). * `q` * Quits ed. A warning is printed if any changes have been made in the buffer since the last 'w' command that wrote the entire buffer to a file. * `Q` * Quits ed unconditionally. This is similar to the 'q' command, except that unwritten changes are discarded without warning. * `($)r` file * Reads file and appends it after the addressed line. If file is not specified, then the default filename is used. If there is no default filename prior to the command, then the default filename is set to file. Otherwise, the default filename is unchanged. The address '0' (zero) is valid for this command; it reads the file at the beginning of the buffer. The current address is set to the address of the last line read or, if there were none, to the addressed line. * If file is prefixed with a bang (!), then it is interpreted as a shell command whose output is to be read, (see [shell escape command](https://www.gnu.org/software/ed/manual/ed_manual.html#shell-escape-command) '!' below). In this case the default filename is unchanged. * `(.,.)t(.)` * Copies (i.e., transfers) the addressed lines to after the right-hand destination address. If the destination address is '0' (zero), the lines are copied at the beginning of the buffer. The current address is set to the address of the last line copied. * `u` * Undoes the effect of the last command that modified anything in the buffer and restores the current address to what it was before the command. The global commands 'g', 'G', 'v', and 'V' are treated as a single command by undo. 'u' is its own inverse; it can undo only the last command. * `(1,$)v/` re `/[I]` command-list * This is similar to the 'g' command except that it applies command-list to each of the addressed lines not matching the regular expression re. * `(1,$)V/` re `/[I]` * This is similar to the 'G' command except that it interactively edits the addressed lines not matching the regular expression re. * `(1,$)w` file * Writes the addressed lines to file. Any previous contents of file are lost without warning. If there is no default filename, then the default filename is set to file, otherwise it is unchanged. If no filename is specified, then the default filename is used. The current address is unchanged. * If file is prefixed with a bang (!), then it is interpreted as a shell command and the addressed lines are written to its standard input, (see [shell escape command](https://www.gnu.org/software/ed/manual/ed_manual.html#shell-escape-command) '!' below). In this case the default filename is unchanged. Writing the buffer to a shell command does not prevent the warning to the user if an attempt is made to overwrite or discard the buffer via the 'e' or 'q' commands. * `(1,$)wq` file * Writes the addressed lines to file, and then executes a 'q' command. * `(1,$)W` file * Appends the addressed lines to the end of file. This is similar to the 'w' command, except that the previous contents of file are not clobbered. The current address is unchanged. * `(.)x` * Copies (puts) the contents of the cut buffer to after the addressed line. The current address is set to the address of the last line copied. * `(.,.)y` * Copies (yanks) the addressed lines to the cut buffer. The cut buffer is overwritten by subsequent 'c', 'd', 'j', 's', or 'y' commands. The current address is unchanged. * `(.+1)z` n * Scroll. Prints n lines at a time starting at addressed line, and sets window size to n. If n is not specified, then the current window size is used. Window size defaults to screen size minus two lines, or to 22 if screen size can't be determined. The current address is set to the address of the last line printed. * * `!` command * Shell escape command. Executes command via sh (1). If the first character of command is '!', then it is replaced by the text of the previous '!command'. Thus, '!!' repeats the previous '!command'. ed does not process command for backslash ('\') escapes. However, each unescaped '%' is replaced with the default filename, and the backslash is removed from each escaped '%'. When the shell returns from execution, a '!' is printed to the standard output. The current address is unchanged. * `(.,.)#` * Begins a comment; the rest of the line, up to a newline, is ignored. If a line address followed by a semicolon is given, then the current address is set to that address. Otherwise, the current address is unchanged. * `($)=` * Prints the line number of the addressed line. The current address is unchanged. * `(.+1)` * --- * Next: [Limitations](https://www.gnu.org/software/ed/manual/ed_manual.html#Limitations), Previous: [Commands](https://www.gnu.org/software/ed/manual/ed_manual.html#Commands), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 7 Substitute command The substitute command 's' replaces text in the addressed lines matching a regular expression re with replacement. By default, only the first match in each line is replaced. The syntax of the 's' command is: ``` (.,.)s/re/replacement/[suffixes] ``` The 's' command accepts any combination of the following optional suffixes: * `g` * 'global': replace every match in the line, not just the first. * count * A positive number causes only the countth match to be replaced. 'g' and 'count' can't be specified in the same command. * `l` * `n` * `p` * The usual print suffixes. See [print suffixes](https://www.gnu.org/software/ed/manual/ed_manual.html#print-suffixes). * `I` * `i` * * It is an error if no substitutions are performed on any of the addressed lines. The current address is set to the address of the last line on which a substitution occurred. If a line is split, a substitution is considered to have occurred on each of the new lines. If no substitution is performed, the current address is unchanged. The last line modified is copied to the cut buffer. * re and replacement may be delimited by any character other than , and the characters used by the form of the 's' command shown below. If the last delimiter is omitted, then the last line affected is printed as if the print suffix 'p' were specified. The last delimiter can't be omitted if the 's' command is part of a 'g' or 'v' command-list and is not the last command in the list, because the meaning of the following escaped newline would become ambiguous. * An unescaped '&' in replacement is replaced by the currently matched text. The character sequence '\m' where m is a number in the range [1,9], is replaced by the mth backreference expression of the matched text. If the corresponding backreference expression does not match, then the character sequence '\m' is replaced by the empty string. If replacement consists of a single '%', then replacement from the last substitution is used. * A line can be split by including a newline escaped with a backslash ('\') in replacement. Each backslash in replacement removes the special meaning (if any) of the following character. * ed can repeat the last substitution using the following alternative syntax for the 's' command: ``` (.,.)s[suffixes] ``` * This form of the 's' command accepts the suffixes 'g' and 'count' described above, and any combination of the suffixes 'p' and 'r'. The suffix 'g' toggles the global suffix of the last substitution and resets count to 1. The suffix 'p' toggles the print suffixes of the last substitution. The suffix 'r' causes the re of the last search to be used instead of the re of the last substitution (if the search happened after the substitution). --- * Next: [Diagnostics](https://www.gnu.org/software/ed/manual/ed_manual.html#Diagnostics), Previous: [The 's' Command](https://www.gnu.org/software/ed/manual/ed_manual.html#The-_0027s_0027-Command), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 8 Limitations If the terminal hangs up, ed attempts to write the buffer to the file ed.hup or, if this fails, to $HOME/ed.hup. ed processes file arguments for backslash escapes, i.e., in a filename, any character preceded by a backslash ('\') is interpreted literally. For example, 'ed 'hello\tworld'' will edit the file 'hellotworld'. If a text (non-binary) file is not terminated by a newline character, then ed appends one on reading/writing it. In the case of a binary file, ed does not append a newline on reading/writing. A binary file is one containing at least one ASCII NUL character. If the last line has been modified, reading an empty file, for example /dev/null, prior to writing prevents appending a newline to a binary file. In order to keep track of the text lines in the buffer, ed uses a doubly linked list of structures containing the position and size of each line. This results in a per line overhead of 2 'pointer's, 1 'long int', and 1 'int'. The maximum line length is INT_MAX - 1 bytes. The maximum number of lines is INT_MAX - 2 lines. --- Next: [Problems](https://www.gnu.org/software/ed/manual/ed_manual.html#Problems), Previous: [Limitations](https://www.gnu.org/software/ed/manual/ed_manual.html#Limitations), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 9 Diagnostics When an error occurs, if ed's input is from a regular file or here document, then it exits, otherwise it prints a '?' and returns to command mode. An explanation of the last error can be printed with the 'h' (help) command. If the 'u' (undo) command occurs in a global command list, then the command list is executed only once. Attempting to quit ed or edit another file before writing a modified buffer results in an error. If the command is entered a second time, it succeeds, but any changes to the buffer are lost. --- Next: [GNU Free Documentation License](https://www.gnu.org/software/ed/manual/ed_manual.html#GNU-Free-Documentation-License), Previous: [Diagnostics](https://www.gnu.org/software/ed/manual/ed_manual.html#Diagnostics), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 10 Reporting bugs There are probably bugs in ed. There are certainly errors and omissions in this manual. If you report them, they will get fixed. If you don't, no one will ever know about them and they will remain unfixed for all eternity, if not longer. If you find a bug in ed, please send electronic mail to [bug-ed@gnu.org](mailto:bug-ed@gnu.org). Include the version number, which you can find by running 'ed --version'. --- Previous: [Problems](https://www.gnu.org/software/ed/manual/ed_manual.html#Problems), Up: [Top](https://www.gnu.org/software/ed/manual/ed_manual.html#Top) ## 11 GNU Free Documentation License Version 1.3, 3 November 2008 ``` Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. http://fsf.org/ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. ``` 1. PREAMBLE 1. The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. 1. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. 1. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS 1. This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. 1. A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. 1. A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. 1. The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. 1. The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. 1. A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”. 1. Examples of suitable formats for Transparent copies include plain ascii without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. 1. The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. 1. The “publisher” means any person or entity that distributes copies of the Document to the public. 1. A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition. 1. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 1. VERBATIM COPYING 1. You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. 1. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 1. COPYING IN QUANTITY 1. If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. 1. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. 1. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. 1. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 1. MODIFICATIONS 1. You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: 1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. 1. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. 1. State on the Title page the name of the publisher of the Modified Version, as the publisher. 1. Preserve all the copyright notices of the Document. 1. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. 1. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. 1. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. 1. Include an unaltered copy of this License. 1. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. 1. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. 1. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. 1. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. 1. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. 1. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. 1. Preserve any Warranty Disclaimers. 1. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. 1. You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. 1. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. 1. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 1. COMBINING DOCUMENTS 1. You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. 1. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. 1. In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.” 1. COLLECTIONS OF DOCUMENTS 1. You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. 1. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 1. AGGREGATION WITH INDEPENDENT WORKS 1. A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. 1. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 1. TRANSLATION 1. Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. 1. If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 1. TERMINATION 1. You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. 1. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. 1. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. 1. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 1. FUTURE REVISIONS OF THIS LICENSE 1. The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See [http://www.gnu.org/copyleft/](http://www.gnu.org/copyleft/). 1. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 1. RELICENSING 1. “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site. 1. “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. 1. “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document. 1. An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. 1. ### ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: ``` Copyright (C) year your name. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. ``` If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with...Texts.” line with this: ``` with the Invariant Sections being list their titles, with the Front-Cover Texts being list, and with the Back-Cover Texts being list. ``` If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. # Borland ``` t.prefs_.set('color-palette-overrides',["#000001", "#ff3b30", "#77d572", "#ffe438", "#72d5fd", "#000da6", "#4892f2", "#cccccc", "#7e7e87", "#ed2521", "#ceffac", "#ff9500", "#4892f2", "#f09a37", "#327c7d", "#cccccc"]); t.prefs_.set('foreground-color', "#327c7d"); t.prefs_.set('background-color', "#bfc0c1"); t.prefs_.set('cursor-color', 'rgba(0,13,166,0.5)'); ``` #000001 #ff6c60 - #ff3b30 #a8ff60 - #77d572 #ffffb6 - #ffe438 #96cbfe - #72d5fd #ff73fd - #000da6 #c6c5fe - #4892f2 #eeeeee - #cccccc #7c7c7c - #7e7e87 #ffb6b0 - #ed2521 #bbde9f #ffffcc - #ff9500 #b5dcff - #4892f2 #ff9cfe - #f09a37 #dfdffe - #327c7d #ffffff - #cccccc ``` t.prefs_.set('foreground-color', "#ffff4e"); t.prefs_.set('background-color', "#0000a4"); t.prefs_.set('cursor-color', 'rgba(255,165,96,0.5)'); ``` # Blink Theme Test ``` t.prefs_.set('color-palette-overrides',["#20111b", "#be100e", "#858162", "#eaa549", "#426a79", "#97522c", "#989a9c", "#968c83", "#5e5252", "#be100e", "#858162", "#eaa549", "#426a79", "#97522c", "#989a9c", "#d5ccba"]); t.prefs_.set('foreground-color', "#45373c"); t.prefs_.set('background-color', "#d5ccba"); t.prefs_.set('cursor-color', 'rgba(69,55,60,0.5)'); ``` #20111b #be100e #858162 #eaa549 #426a79 #97522c #989a9c #968c83 #5e5252 #be100e #858162 #eaa549 [file:05A83138-2E58-4B0E-B893-6534E43A1533-8698-000001363FA088ED/1946] https://discuss.write.as/raw/1946 # Windows Eternal Drafts Theme — The Psalms [image:B94D2AED-340A-41CF-B1F4-9349A9701023-7807-000000E037D91CF7/154834066-b9aa651e-d71c-49a9-99ed-971f43ecce2e.png] ## I believe I have finally manifested the Drafts interpretation of Winders users’ dreams. If you still follow me [on Twitter](https://twitter.com/NeoYokel), you’ve seen me posting a lot of mockups and links related to Agile Tortoise’s [Drafts](https://apps.apple.com/us/app/drafts/id1435957248), lately. I know it probably seems like a phase – and I suppose it is, technically – but I’ve actually been using this darned application for the entirety of my adult life. It’s just that I’ve only recently (read: since 2020 or so) returned to Drafts as my primary text living space from Bear for what I’m sure you’ll regard as [silly reasons](https://beta.bear.app/t/the-line-width-slider-any-chance-i-ll-see-it-again/1945/8). In terms of themes for Drafts, I’ve already hit you with [one based on this very blog](https://actions.getdrafts.com/t/1km) and “ [Windows Iowa](https://actions.getdrafts.com/t/1kY) ” – both of which have faired far better than I would’ve ever expected on [the Drafts Directory](https://actions.getdrafts.com/theme_definitions?order=popular). [image:45412F4D-09CA-4C0D-A0F1-9DA568278C1B-7807-000000E037D7EED5/154833948-c5c271a9-ab72-4998-a84d-e2aeb5972f5c.png] Now, though, I would like to present “ [Windows Eternal](https://actions.getdrafts.com/t/1wT) ” – a celebratory theme of ye olde Winders™ Aesthetic, based on one of my very favorite themes for Telegram Messenger for iOS. ## Telegram Theme I’m actually not sure what it was called originally, but I’ve archived the Telegram theme as [Windows Eternal](https://t.me/addtheme/windowseternal), too. [image:700AD78F-2350-4600-9ED2-FE4E76830C1F-7807-000000E037D6A528/154834629-444dc630-4789-4a9b-9698-e7652294baaa.png] [image:AEEDC19E-F097-4A75-81F9-C51D290C0479-7807-000000E037D569B0/154834642-0fc9b9eb-23cc-431d-8496-d9d9b6981677.png] If you or someone you know might remember who the original creator was, please do [get in touch](https://davidblue.wtf/db.vcf) because they absolutely deserve to be credited here and elsewhere. [image:A15EBBC6-5AA4-4011-88C4-A4E39A67519F-7807-000000E037D3ECC3/154839440-4c97c59a-526a-4f48-bbac-251a8f553996.png] ## Details If you’re interested, [the full source of Windows Eternal](https://github.com/extratone/drafts/blob/main/Themes/Windows%20Eternal.json) is publicly available, though I would recommend using the “Open in Theme Builder” button on its [Drafts Directory page](https://actions.getdrafts.com/t/1wT) to view the details visually, especially if you’re a Drafts user who’s never tried it. You’ll note that I made heavy use of `#327c7d` (that darkish green color) as often as possible along with `#bfc0c1` (the main gray) and `#000DA6` (the main bright blue.) [image:54B323E6-32F8-474C-A9AC-C0FAF9C46FC0-7807-000000E037D1B036/154840096-495a527f-642b-422e-bcdd-91ca442d85d9.png] [#software](https://bilge.world/tag:software) [#configuration](https://bilge.world/tag:configuration) [Windows Eternal Drafts Theme — The Psalms](https://bilge.world/windows-eternal) # Windows Eternal Colors #000001 #000da6 #00207d #004bad #007aff #007ee5 #00a700 #00b12c #00c900 #26972c #2a9ef1 #2ca5e0 #2d2d2d #2da32f #2dba45 #323232 #327c7d #3fc33b #4892f2 #4cc91f #505050 #545454 #5e5e5e #6a6a6a #6d6d72 #72d5fd #737373 #77d572 #7b7b7b #7b7b81 #7e7e87 #818086 #868b8e #8d8e93 #8e8e93 #939393 #959595 #96979d #989898 #999999 #aeaeae #b0afaf #b3b3b3 #b4b4b4 #b5b5b5 #b6b6bb #b8b8b8 #b9b9b9 #bab9be #bbde9f #bcbcc3 #bec2c6 #c0c0c0 #c3c8cb #c5c6cc #c7c7cc #c8c7cc #c8c8ce #cacaca #cccccc #cecece #cf3030 #d0d0d0 #d2d2d2 #d6d6dc #d9d9d9 #dadade #dd4b39 #dedede #dedee5 #e0e0e0 #e3e3e7 #e4e4e4 #e5e5e5 #e5e5ea #e9e9e9 #ebebeb #ed2521 #eeeeee #f09a37 #f0f0f0 #f2f1f7 #f2f2f2 #f2f2f7 #f6f6f6 #fe3824 #ff3824 #ff3b30 #ff9500 #ffe438 #ffffff # David Blue on Twitter Blue — The Psalms [image:2688E794-7F97-4050-92E5-849CD9A22F4F-707-0000003EC9369CF8/XR4mJRCG.png] ## Gargantuan, ridiculously avoidable misses in Little Blue’s Blue. Incredibly, the second most powerful social media company in the world has finally managed to implement a paid subscription model, as I’ve been begging them to do for [at least 5 years](https://twitter.com/neoyokel/status/696094018862718976), now. For three U.S. Dollars a month, “ [Twitter Blue](https://blog.twitter.com/en_us/topics/company/2021/introducing-twitter-blue) ” is [now available](https://www.theverge.com/2021/11/9/22766286/twitter-blue-subscription-service-scroll-nuzzel-undo-tweets-ad-free-articles-us) for all United States users. Aside from [a relentless, rude, two and a half hour-long rant](https://apple.co/3wVZs3v) at two new friends on /End User/, I should confess that I haven’t spoken adequately to peers at length about their Twitter use – understandably, busy independent artists don’t seem to find themsevles with the spare time to hypothesize methodically about what they might want from the service, going forward. From the mass of commentary on Twitter Blue I /was/ able to gather, a resounding sentiment refrains: /these features should be available to everyone/. Frankly, after all these years, there’s not all that much to actually say about the product, itself. Thanks to Spaces, I happened to catch a chance to ask my favorite sage of late – Jason Scott, original creator of textfiles.com – for his thoughts. “Well, I bought it.” “Yeah, same.” [image:6D839241-0FE9-4F9D-9017-CC4AFDCC5AA9-707-0000003EC935A909/zp5uCNwa.png] Then, we talked for 45 minutes about self-actualization. As I’ve recently honed my understanding of the significance behind my own personal extraordinary dependence/investment in this one service, I have also – in parallel, ya might say – refined wholly a set of expectations which I do not ever again expect to be usurped in any way by Twitter, Incorporated’s decisions. Believe it not, these thoughts of mine really /do/ have real potential to add value to your life, especially if you’re still reading. The next time you find yourself wondering what Twitter might do next, try to internalize the utter inanity of that whole pursuit. Not one second can be concretely spent in that endeavor because the organization is defined singularly by its outrageous negligence. They are not villains or demons like [Big Blue](https://github.com/extratone/bigblue) – they are through and through a village of idiots, and no manner of user action can possibly budge them. Of course, this new development of mine hasn’t actually managed to delivery any peace upon my person. In fact, because it is impossible to be /constructively/ critical in such a situation, I am one of few I know who must continue to be critical, anyway, because my livelihood does not depend on the newsworthiness of my subject matter. I guess I should just be thankful my “must” represents so little time-sensitive consequence, if any, given how long it takes me to finish anything, these days. On that note, please [look elsewhere](https://www.theverge.com/2021/11/14/22778827/twitter-blue-undo-button-paywall-features-paid-free) for the bulletpoints… Come back for at least a second, though, because this Post /does/ eventually circle around to a handful of poignant, original comments on the Whats. The peeves aren’t new, but I’ve found my own redundancy within /The Psalms/ to be less and less… redundant, if that makes sense. This company’s software is bad and its continued prioritization of the two native mobile applications (neither of which it actually built) over any other clients for /all/ user considerations is a spectacular tedium to follow. Its world record breaking inability to understand anything about how its /whole shit/ fits into the lives of /any/ of its users continues to astound. My peak irritation about the whole situation, lately, is that /you fuckers/ continue to discuss alterations to social software, generally, as if they are /inevitable/ with a sense of complicity I will /not/ allow. I’m not going to argue that you’re /obligated/ to speak up and out in a labor sense, but beseeching that you *expect more* from these organizations as a customer, a citizen, and a human being. For your sake, I've spent the time to break Twitter Blue's offering down specifically, feature by feature, only because I have yet to see it done methodically in detail from the tech media sources you'd normally depend on. [image:43EE9775-E514-4B7A-B232-BC1697D6ACC9-707-0000003EC934B9CA/SAYPlThr.png] ## Thread Reader If I’m honest, the majority of the discourse I’ve picked up surrounding Twitter threads in the past few years has been negative. Vaguely, “getting lost” is something I recall being expressed. Twitter Blue’s Thread Reader offers a “reader view”-like experience in three different font sizes – none of which looked particularly optimal, to my eye. If there’s anything to say about it, really, it’s suggest this adjustment be made more variable, natively, though further adjustment is allowed at the moment by using `⌘ + =, -, and 0` for those iPhone keyboarders among you. [image:E4A81B96-9FB9-48B4-971F-0030F04C68DA-707-0000003EC933C331/1ia6xNyv.png] Also, the appearance of non text-only posts (especially Voice Tweets, which I, alone, continue to use) in this view feels like a bit of an afterthought. [image:6D446593-DEC0-4D50-BAE1-ED320C8B3659-707-0000003EC932BEEA/hu2p7mN2.png] Intentionally or not, the configuration of Twitter for iOS’ navigation tabs enabled by Twitter Blue membership is a revelation – or it would be, were it the only viable Twitter client on the platform. It’s perhaps the most celebratable feature included in Twitter Blue, if only because it suggests the Twitter team is finally paying attention to Tweetbot. (In case you weren’t aware, I spent a significant amount of time and words writing about just how valuable Tweetbot is, [earlier this year](https://bilge.world/tweetbot-6-ios-review).) Unfortunately for Twitter, [Tweetbot’s had an incredible year](https://www.macstories.net/ios/tweetbot-6-6-gets-support-for-creating-polls-limiting-who-can-reply-to-tweets/). The biggest possible miss, here, was adamantly missed: one /cannot/ customize away the “Home” timeline from the first nav bar position, which brings up another huge issue with expecting a monthly fee for an experience within Twitter’s iOS app: /persistence/. > a piece I started in mid-September and probably should’ve stuck with arguing/detailing how the native Twitter for iOS app could be omitted entirely… [pic.twitter.com/Bbq4S0RMBu](https://t.co/Bbq4S0RMBu) > — David Blue ※ (??????-???? ????) (@NeoYokel) [December 5, 2021](https://twitter.com/NeoYokel/status/1467393675579871234?ref_src=twsrc%5Etfw) In the clip of the Twitter feedback Space embedded above, my second point of note was that the app had not “randomly logged me out” in the seven days I’d then been subscribed to Twitter Blue. To be clear, this was referring to the experience of opening the Twitter for iOS app to the welcome screen instead of where one left off, which has indeed happened in the interim. The worst bit: after logging back in again, all one’s app preferences are reset to their respective defaults. Without a means of exporting or “backing up” one’s settings – like say, [Better Tweetdeck](https://better.tw) has – this means that one has to methodically explore every single Settings menu and re-select core essentials like posting the highest quality possible images, for instance, all with the knowledge that such a reset could happen again at any time. Suffice it to say, this is not the sort of quality one expects from a premium iOS app in 2021. > honestly the most bewildering thing is how thoroughly ALL of one’s preferences are reset every single time. > the way iOS/iCloud is built, you’ve actually got to put real effort into truly ridding your phone of (just about every other) app’s old settings with a reinstall… [pic.twitter.com/QJlnqfsncd](https://t.co/QJlnqfsncd) > — David Blue ※ (??????-???? ????) (@NeoYokel) [November 24, 2021](https://twitter.com/NeoYokel/status/1463658007791812608?ref_src=twsrc%5Etfw) As you’ll see in the screenshot embedded above, Custom Navigation offers one a choice of up to 6 tabs from a total of 10, which include [some Bluetooth keyboard shortcut considerations](https://github.com/ExtraKeys/keys/issues/31#issuecomment-986184090) I suspect you’ll not find detailed from any other source. ### Bluetooth Keyboard Shortcuts Support To start, `⌘ + F` will now reliably open the Explore tab and (most of the time) deliver one’s cursor directly to its search field. However, *this only functions when Explore has been selected as one of the bottom nav tabs*, which really misses out on an opportunity for the shortcut to be uniquely useful, in my view. Otherwise, `⌘ + 1-6` will open the bottom tabs you’ve chosen in order, which means – brace yourselves – that Twitter Blue’s Custom Navigation technically includes /configurable keyboard shortcuts/. > hope you're FUCKING READY for a SINGLE-TAKE RUNDOWN of Bluetooth keyboard shortcuts considerations in Twitter for iOS with Twitter Blue. [pic.twitter.com/hiP5Ks23Ww](https://t.co/hiP5Ks23Ww) > — David Blue ※ (??????-???? ????) (@NeoYokel) [December 6, 2021](https://twitter.com/NeoYokel/status/1467681892468154370?ref_src=twsrc%5Etfw) Also notable: when viewing the obligatory Home tab, one can navigate between their Lists with just the (unmodified) left and right arrow keys! `⌘ + ,` is now a dependable way of opening the app’s Settings menu, `⌘ + \` pulls up the account switcher, `⌘ + =,-,0` manipulates text size, app-wide. `⌘ + V` will open Tweets from links in one’s clipboard from anywhere in the app – not a new trick, I don’t think, but a clever one. As of this writing, [the public-facing document of Twitter for iOS’ Bluetooth keyboard shortcuts](https://help.twitter.com/en/using-twitter/twitter-ios-app) is quite inaccurate. For example, it lists `⌘ + M` as the command to switch between light and dark mode in the app, which is actually accomplished with `⌘ + ⇧ + D`. [image:DBF55A9A-72FE-40ED-A537-D47BC653F857-707-0000003EC931AC49/Qfb0rFvf.png] ## Undo Tweet Perhaps unlike you, /I/ have never had a problem understanding why “editable” Tweets will never exist, largely thanks to [my conversation with Eugen Rochko](https://hyp.is/znp7tEQJEeySOXvhkqI2DQ/bilge.world/eugen-rochko-interview) about implementing editable posts on Mastodon: > That won't happen. There's actually a good reason why they don't do that. It's simply because you could make a toot about one thing, have people favorite it and share it, link it from other places, and then suddenly, it says 'Heil Hitler,' or something. This, actually, is /not/ the reason I found it easy to understand, though I hope it makes a bit of a sense. It was when Eugen mentioned (unquoted) Twitter's original design around SMS[^1] that I first vaguely understood the depth of this limitation in the core architecture of the service. As far as I understand it, *the method in which a Tweet’s basic data is stored does not allow for revision*. It can be deleted or obfuscated, but never substituted for or replaced. As I noted all those years ago. *Delete & Re-Draft* – the answer Mastodon integrated natively and third-party social clients have featured for years – makes /a lot/ more sense than straight up “editable Tweets” /or/ the chosen answer at the top of Twitter Blue's feature list, “ [Undo Tweet](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet).” Here's the full text from [its subpage](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet) in Twitter's documentation: > *Undo Tweet* gives you the option to retract a Tweet after you send it, but before it’s visible to others on Twitter. It’s not an edit button, but a chance to preview and revise your Tweet before it’s posted for the world to see. Once the Undo period is over, the Tweet is viewable to your followers and you can either leave it or delete it, like you normally would on Twitter. * Tapping Undo sends you back to the Tweet composer where you can make changes before posting the Tweet, or deciding not to post at all. You can also select Send now to skip the Undo Tweet option and post your tweet immediately. * You can turn Undo Tweet settings on for all or some of the [different types of Tweets](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undodifftweets) including Original Tweets, Quote Tweets, threads, and replies. * When active, Undo Tweet displays a countdown of the time left until your default 30-second Tweet Undo period expires, and your Tweet appears on Twitter. Shorten or lengthen the expiration window to 5, 10, 20 or 60 seconds under the [Twitter Blue feature settings menu](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweetperiod). * If you turn off Undo Tweet, you won’t see the Undo Tweet prompt. * Read more about [how to adjust the settings of your Undo Tweet feature](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweet). > By default, Undo Tweet is turned on for every single post of any kind at 20 seconds' notice. This was my very first change to the default settings ( [other than the highlight color and app icon](https://twitter.com/NeoYokel/status/1459235983174639626) ): I turned it off for Original Tweets, Replies, and Threads. This makes it tolerable, but still useless, and honestly, I can think of only one instance in which I used it for its intended purpose. [image:CC0D9EDA-C49F-4CF2-AB66-5E24B7E33FEF-707-0000003EC930A97C/8aFbZdVQ.png] The only straight up “we’ll let you take up a bit more bandwidth since you’re paying us” feature addition included with Twitter Blue is its elongation of the time limit for posted videos from two to ten minutes. One of very few observations about Twitter Blue I could find from “regular” Twitter Users comes from [r/Twitter](https://reddit.com/r/Twitter) (which is uh…. a mess:) > the only reason i got it is because it allows 10 minutes of videos you can post and since I make content I no longer have to be restrained to the 2:20 video time on the “regular” Twitter. - [u/jdb825](https://reddit.com/r/Twitter/comments/qxygfb/_/hmddlli/?context=1) I personally feel this post wholeheartedly – especially since I’ve basically committed to single-take video content, personally, yet have been regularly sharing screencaps on my account. An anecdote I have not seen mentioned: for videos uploaded directly to Twitter’s “Media Studio” (a feature to which I have access because of my peak Periscope fame, years ago,) the two-minute limit still applies. Yet another beautifully absurd product oversight. From the screenshot embedded above, it’s quite obvious that I no longer use Twitter’s Direct Messages, but there was a time, many years ago, when I would have personally appreciated “ *Pinned Conversations* ” very much. [image:8029B1DE-B226-4420-BEBB-FCEADB2B1A62-707-0000003EC92F8D10/7RBw18tJ.png] ## Ad-Free Articles As much as I want to unabashedly celebrate the investment Twitter, Inc. is inexplicably now demonstrating in Lists – a feature I’ve [tirelessly advocated for](https://bilge.world/twitter-lists) out of perceived obscurity – with Twitter Blue, there’s at least one example which they’ve managed to fuck up such investment. The official list of publishers participating in Twitter Blue’s “Ad-Free Articles” rehash of Scroll is exclusively documented in the from of [@TwitterBlue’s singular Twitter List](https://twitter.com/i/lists/1448014243245150209), which makes it conveniently quite difficult to share. Aside from that anecdote, I have another which is both mostly personal and yet inexcludable. The day [Twitter acquired Scroll](https://www.theverge.com/2021/10/5/22711233/scroll-shutting-down-twitter-blue-standalone-subscription-ad-free-article-service), I had the bizarre, completely unexpected opportunity to ask Tony Haile – Scroll’s founder, who also played a substantial role in creating the Ad-Tech Hell it was founded to counter in creating Chartbeat, some years ago – /a question/. I’d been listening to a Twitter Space hosted by [Chris Messina](https://twitter.com/chrismessina) and [Brian McCullough](https://twitter.com/brianmcc) for /TechMeme/ featuring Haile while I’d been showering. Somehow, the two ran out of questions to ask Tony, so they turned to the audience. I requested to speak and Chris – who’d done so a few times before – let me in almost immediately. Nude and still very wet, standing in my bathroom, I suddenly found myself on a call, essentially, with certainly the most interesting media industry figure of the moment. Chris, who knew me well enough already as a regular in his Spaces to know my speech often includes long pauses, said something like “quickly.” I began by bringing back a topic from an hour before, at least, and noted that Twitter’s “Tips” feature was no more than a list of hyperlinks as it stood (it basically still is,) before (more or less verbatim:) “I just got out of the shower but uh… I forgot about Tony Haile. (yes, he was listening directly to the Space and I did say that) …but I would ask him to narrate how exactly he got from Chartbeat to Scroll to Twitter.” Yes, I spoke of him in the third person even though I could all but hear him breathing. I then retired from my speaking role, but – from what I could tell, passively listening as I finished getting ready for some time-sensitive engagement – my question basically sustained the rest of the interview. This experience, alone, wouldn’t necessarily be worth mentioning, but after discovering /The Kansas City Star/ – one of the oldest, most established local mastheads to my home state (Missouri,) to which I maintain a subscription – among the aforelinked List list of participating publishers in Twitter Blue’s Ad-Free Articles program, I reached out to the one /Star/ reporter I know, asking simply if she’d heard anything whatsoever about the program from editors or just ambiently in the newsroom. She had not. For an explanation, I dug just a bit further and found out the /Stars/ ’ corporate owner, McClatchy, had in fact [“tested” a “partnership” with Scroll before](https://www.niemanlab.org/2020/12/scroll-the-ad-free-news-startup-will-experiment-with-bundled-subscriptions-at-eight-mcclatchy-sites/), and appeared to have opted its whole handful of local American news institutions – including the /Star/ – in again, en masse, to its new, Twitter-owned form. Before I go on, I should note that one can indeed utilize Ad-Free articles’ benefit within your preferred web browser, but the process is very specific. On iOS, you’ll need to open an Ad-Free Article in the Twitter app first (marked with blue text) and then tap the Safari icon in the bottom right to open your default browser. You’ll know you’ve authenticated correctly when you see one of these two motherfuckers[^3] (depending on your system’s current light/dark theme setting) in the bottom right of your browser window: [image:1F0054D6-9AC2-4465-9A07-F2D1B205B00A-707-0000003EC92E648C/Qs5cIakt.png] For thoroughness’ sake, here’s what [the official help document](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles) has to say: > As long as you stay logged in to Twitter, and use the same browser each time, you should get ad-free reading when you subsequently visit that same Twitter Blue site. Have a peak at [The Kansas City Star’s Wikipedia page](https://en.wikipedia.org/wiki/The_Kansas_City_Star) and you’ll note that it’s over 150 years old, once claimed Ernest Hemingway on its masthead, has been awarded eight Pulitzer Prizes, and that it depends on a combination of advertising dollars and [possibly in duress](https://jimmycsays.com/2018/02/13/more-worrisome-circulation-figures-for-the-kansas-city-star/) subscription revenue to stay afloat. This in mind, note the screenshot I’ve embedded below, comparing how a Twitter Blue-participating /Star/ article appears within a desktop browser – without Twitter Blue vs Twitter Blue. [image:CC2D6E89-5C75-478E-BA9F-445EC390A44F-707-0000003EC92D2C3B/ATS5Q3ok.png] Captures of each respective webpage demonstrate that Twitter Blue exempts a reader from about half of the content weight of the non-Blue-authenticated render[^4]. Old school banner ads account for a portion of the missing content, but at least three elements for converting visiting readers to paying subscribers make up for most of it, I’d wager. None of what’s gone is content anyone on Earth /wants/ to see, mind you, but frankly, it’s disrespectful of the paper’s classically villainous, [recently bankrupt](https://www.nytimes.com/2020/07/16/business/media/hedge-fund-chatham-mcclatchy-postmedia-newspapers.html) corporate overloard to opt it in with a program fundamentally designed to /intentionally forgo advertising engagement/. [image:AFA8B5F2-7AE7-4B26-81B9-F17F5E503FA3-707-0000003EC92BCABC/144753270-c9687e0d-1307-41ba-b403-990923d70acf.png] Tony Haile, if you’re reading this, you can exhale now. Yes, [the theory behind Scroll, and now “Ad-Free Articles” in Twitter Blue](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles), suggests that the fifteen cents I’ve earned the /Star/ so far (the graphic above can be found in the “See Your Impact” selection within one’s Twitter Settings) will be paid directly /to/… Whom, exactly? The answer offered by Twitter, Inc. to the question of “How does my ad-free reading support journalism?” (asked of themselves:) > Each month, we pay publishers within the Twitter Blue Publishers Network based on the content you and other Twitter Blue subscribers read ad-free through Twitter Blue. Our model is designed to help publishers continue to fund the journalism you love to read. /Publishers/. I suspect that means cash-desperate McClatchy and /not/ /The Kansas City Star/. All to be done at the moment, at least, is to ask ourselves how much of that cash will ever be seen by the paper. [image:E61C1B21-86F9-4617-A4AD-55CBAA4BC632-707-0000003EC929F1F4/VyMNqr7V.png] Bookmarks and *Bookmark Folders* represent yet further evidence that someone at Twitter, Inc. /actually uses Twitter/ (or perhaps has a friend or family member.) Technically, they also represent one of few core functions exclusive to Twitter’s own clients. (Consider: Tweetbot even supports polls, now.) However, like the Thread Reader and “Custom Themes,” Bookmark Folders, too, feel like an afterthought shoved in the bundle an hour before a deadline. Specifically, their color-coded icons look like placeholders for custom images… which aren’t supported, and they represent 0 additional function as curatorial/archival tools (no exporting/aggregating/or sorting, even) beyond simply nesting bookmarks into… folders. [image:EE7059E0-3D8E-4CD8-9459-B98463CF4E54-707-0000003EC927CA97/935pp2QS.png] ## Icons & “Themes” Even greater heights of half-assery have been achieved by what Twitter describes as “ [exclusive app icons and colorful themes](https://blog.twitter.com/en_us/topics/product/2021/twitter-smarter--twitter-harder-with-twitter-blue).” Here, I must finally give in and compare Twitter Blue with Tweetbot directly. > in case I haven’t said it already… > I have missed [@tweetbot](https://twitter.com/tweetbot?ref_src=twsrc%5Etfw) desperately these past few weeks “testing” Twitter Blue in the native iOS app, which uh… says something important, I think. > new Tweetbot themes, even!!Twitter Blue: $2.99/monthTweetbot: $0.99/month > ? [pic.twitter.com/DHZRaXKmkH](https://t.co/DHZRaXKmkH) > — David Blue ※ (??????-???? ????) (@NeoYokel) [December 5, 2021](https://twitter.com/NeoYokel/status/1467422017527951366?ref_src=twsrc%5Etfw) Absolutely zero effort has been expended thus far in recharacterizing what Web Twitter still calls “Colors” as “Themes,” and the only /exclusivity/ in the icon options is that some are seasonal, or otherwise time-limited, for what possible purpose I cannot conceive. This from a company of more than 5000 full-time employees. In contrast, from a full-time team of two – both of whom suffered through bad COVID infections, this year – Tweetbot now includes an even further broadened spectrum of app-wide themes and 19 app icons in total, including, yes, at least two very cute, limited-time seasonal options. ## All Users are Should Be Powerusers The episode of /End User/ embedded above is one of the only podcast episodes I’ve ever made which I actually find /too painful/ to listen back to[^2], but I still think it’s valuable. There’s a specific bit of the conversation between [@alisonbuki](https://twitter.com/alisonbuki) and I in which the term “Poweruser” is actually thrown around regarding my own use of Twitter Lists, Tweetbot, and a few other /Hax/ to consume content /deliberately/. I think I failed somewhere in my portrayal of this curation and miscommunicated the nature of what I was trying to get at by “making use of the tools available to you.” Regarding the actual manhours involved in the configuration I was trying to evangelize, I think I’ve spent more time trying to describe the effort than I have actually configuring my own content intake. Long before I was [follow-limited](https://bit.ly/dbfollow) in 2017, I lived entirely in my [Twitter Lists]() [https://twitter.com/NeoYokel/lists)](https://twitter.com/NeoYokel/lists%29), the largest of which I built up “organically” over time, by adding appropriate accounts one by one as I came across them. Thanks to Tweetbot, my equivalent of the native apps’s Home timeline is a private List of ~200 accounts whose users represent the actual entirety of my adult social life, past to present. Then, there’s [The New](https://twitter.com/NeoYokel/lists/the-new), which – I must admit – has grown beyond its original scope and sortof become my follow list, with enough exceptions that I consider it worthwhile to keep public. Then, there’s the newest – [my Meta-Media List](https://twitter.com/i/lists/768458273141907456) – and the very oldest: my dear, weathered [Rolodex of Automotive Twitter](https://twitter.com/i/lists/43457439). I keep Tweetbot in my dock and the native app on my device just for notifications, Spaces, and now Communities. That’s it! Yet, using this configuration, I /never/ see content that seriously disturbs, shames, triggers, or otherwise upsets me beyond reason or expectation[^5], but am regularly exposed to a relatively diverse palette of perspectives, and just generally find my consumption/engagement time on the service meaningfully spent. The particular amalgamation of truly half-assed user experience features offered in Twitter Blue lend toward a narrative about this company which we collectively have continued to fall for literally /dozens/ of times – often in immediate succession – throughout the fewer years of its history: that it /finally/ has a morsel of what /might just become/ a cohesive vision. Clearly, I am as susceptible to this as anyone considering how quickly I jumped to celebrating the fact that /finally/, Twitter had seen the humongous value to be imparted to its userbase by simply adding basic configurables like custom navigation and especially refining the essential curatorial tool that is Lists. Were I still a person who wastes my energy speculating on the real happenings within Twitter, Inc, though, an entirely different, much more realistic sounding theory arises after the analysis we’ve trudged through together in this post: every single item on Twitter Blue’s feature list represents the absolute bare minimum resource investment possible. If I had any money, I’d go on to bet that [Shihab Mehboob](https://twitter.com/jpeguin) could have built from scratch every single developmental “addition” to the iOS app Twitter Blue includes in a matter of hours, though from experience, I seriously doubt he’d ever allow such lackluster work to reach even beta tester’s fingers. As far as Ad-Free Articles go, Twitter hasn’t even bothered to swap out all the Scroll branding. The fact that /I/ had to surface the concept of Delete and Re-Draft to Twitter Employee brains for what all appearances indicate was the first time in that “FeedbackFriday” Twitter Space represents a truly sickening lack of effort. No, the story that aligns much more succinctly in the grander context is that Twitter Blue just happened to be the first disjointed, scatterbrained subscription service pitch to finally fall out the rectum of this miraculously bunk organization, but all you motherfuckers can talk about is Japple Notes Dorsey walking out, and /what it could mean/. Since I have now actually been personally and explicitly invited to share feedback regarding Twitter Blue, I suppose I’ll make some effort to send them this hyperlink. In that vein, I think I’ll end with some advice addressed directly to Twitter, Incorporated: Hey Twitter! If you ever find yourself genuinely interested in selling a subscription product long term, as a mutual value exchange with your users, make all of Twitter Blue’s features available to all users, and ditch Scroll entirely. Instead of placing the bet on local newspapers like /The Kansas City Star/, it should be on /you/ to *take the financial risk yourself, and offer, simply, a completely ad-free Twitter experience*. That might just be worth $2.99 a month. [1] Despite the fact that Tweeting via SMS has [since been disabled](https://www.theverge.com/2019/9/4/20849865/twitter-disables-sms-text-message-tweeting-jack-dorsey-ceo-hack). [2] I was just… rude. Very rude. “Necessary” is not a term I’d apply to this rudeness, but… Just give me this once, please. [3] In the process of trying to capture a good image of this thing, I noticed that all the assets are still being loaded from static.scroll.com. Nice. [4] See for yourself via [this thread](https://t.me/extratone/8767) on my Telegram channel. [5] An obligatory note that I am of the most privileged sort of human there ever has been, or that one can be. [Discuss...](https://remark.as/p/bilge.world/twitter-blue) [#software](https://bilge.world/tag:software) [#media](https://bilge.world/tag:media) [David Blue on Twitter Blue — The Psalms](https://bilge.world/twitter-blue) # The LightRedDot Theme by jamiejenkins * [**Drafts Directory**](https://actions.getdrafts.com/t/1iH)) ## Images ![LightRedDot1](https://user-images.githubusercontent.com/43663476/154341108-675e8383-57d5-4a39-a04e-333ec3fe4eb6.png) ![LightRedDot2](https://user-images.githubusercontent.com/43663476/154341123-059dddfa-ac38-470a-ab48-4bb90a476d67.png) ![LightRedDot3](https://user-images.githubusercontent.com/43663476/154341140-5f586f4b-5b30-43dd-a237-8cd9f37f51c3.png) ![LightRedDot4](https://user-images.githubusercontent.com/43663476/154341162-84301391-5832-4c1d-b19a-46008942865b.png) ![LightRedDot5](https://user-images.githubusercontent.com/43663476/154341189-3b9237a2-f91b-4495-8bb8-f56ea46638bd.png) ```json { "name": "LightRedDot", "author": "Jamie Jenkins", "description": "Drafts Dots Light Red Theme", "isDark": false, "scopes": { "text.normal": { "name": "Normal Text", "settings": { "foreground": "foreground", "fontStyle": "normal" } }, "text.normal.large": { "name": "Large Text", "settings": { "foreground": "foreground", "fontSize": "large" } }, "text.normal.extraLarge": { "name": "Extra Large Text", "settings": { "foreground": "foreground", "fontSize": "extraLarge" } }, "text.normal.small": { "name": "Small Text", "settings": { "foreground": "foreground", "fontSize": "small" } }, "text.normal.extraSmall": { "name": "Extra Small Text", "settings": { "foreground": "foreground", "fontSize": "extraSmall" } }, "text.bold": { "name": "Bold", "settings": { "fontWeight": "bold" } }, "text.bold.large": { "name": "Large Bold", "settings": { "fontWeight": "bold", "fontSize": "large" } }, "text.bold.extraLarge": { "name": "Extra Large Bold", "settings": { "fontWeight": "bold", "fontSize": "extraLarge" } }, "text.bold.small": { "name": "Small Bold", "settings": { "fontWeight": "bold", "fontSize": "small" } }, "text.bold.extraSmall": { "name": "Extra Small Bold", "settings": { "fontWeight": "bold", "fontSize": "extraSmall" } }, "text.italic": { "name": "Italic", "settings": { "fontStyle": "italic" } }, "text.italic.large": { "name": "Large Italic", "settings": { "fontStyle": "italic", "fontSize": "large" } }, "text.italic.extraLarge": { "name": "Extra Large Italic", "settings": { "fontStyle": "italic", "fontSize": "extraLarge" } }, "text.italic.small": { "name": "Small Italic", "settings": { "fontStyle": "italic", "fontSize": "small" } }, "text.italic.extraSmall": { "name": "Extra Small Italic", "settings": { "fontStyle": "italic", "fontSize": "extraSmall" } }, "text.bolditalic": { "name": "Bold, Italic", "settings": { "fontStyle": "italic", "fontWeight": "bold" } }, "text.bolditalic.large": { "name": "Large Bold, Italic", "settings": { "fontStyle": "italic", "fontWeight": "bold", "fontSize": "large" } }, "text.bolditalic.extraLarge": { "name": "Extra Large Bold, Italic", "settings": { "fontStyle": "italic", "fontWeight": "bold", "fontSize": "extraLarge" } }, "text.bolditalic.small": { "name": "Small Bold, Italic", "settings": { "fontStyle": "italic", "fontWeight": "bold", "fontSize": "small" } }, "text.bolditalic.extraSmall": { "name": "Extra Small Bold, Italic", "settings": { "fontStyle": "italic", "fontWeight": "bold", "fontSize": "extraSmall" } }, "text.monospace": { "name": "Monospace", "settings": { "fontStyle": "monospace" } }, "text.monospace.large": { "name": "Large Monospace", "settings": { "fontStyle": "monospace", "fontSize": "large" } }, "text.monospace.extraLarge": { "name": "Extra Large Monospace", "settings": { "fontStyle": "monospace", "fontSize": "extraLarge" } }, "text.monospace.small": { "name": "Small Monospace", "settings": { "fontStyle": "monospace", "fontSize": "small" } }, "text.monospace.extraSmall": { "name": "Extra Small Monospace", "settings": { "fontStyle": "monospace", "fontSize": "extraSmall" } }, "text.monospace.bold": { "name": "Monospace Bold", "settings": { "fontStyle": "monospace", "fontWeight": "bold" } }, "text.monospace.bold.large": { "name": "Large Monospace Bold", "settings": { "fontStyle": "monospace", "fontWeight": "bold", "fontSize": "large" } }, "text.monospace.bold.extraLarge": { "name": "Extra Large Monospace Bold", "settings": { "fontStyle": "monospace", "fontWeight": "bold", "fontSize": "extraLarge" } }, "text.monospace.bold.small": { "name": "Small Monospace Bold", "settings": { "fontStyle": "monospace", "fontWeight": "bold", "fontSize": "small" } }, "text.monospace.bold.extraSmall": { "name": "Extra Small Monospace Bold", "settings": { "fontStyle": "monospace", "fontWeight": "bold", "fontSize": "small" } }, "text.monospace.italic": { "name": "Monospace Italic", "settings": { "fontStyle": "monospace", "foreground": "foreground" } }, "text.monospace.italic.large": { "name": "Large Monospace Italic", "settings": { "fontStyle": "monospace,italic", "fontSize": "large" } }, "text.monospace.italic.extraLarge": { "name": "Extra Large Monospace Italic", "settings": { "fontStyle": "monospace,italic", "fontSize": "extraLarge" } }, "text.monospace.italic.small": { "name": "Small Monospace Italic", "settings": { "fontStyle": "monospace,italic", "fontSize": "small" } }, "text.monospace.italic.extraSmall": { "name": "Extra Small Monospace Italic", "settings": { "fontStyle": "monospace,italic", "fontSize": "extraSmall" } }, "text.underline": { "name": "Underline", "settings": { "fontStyle": "underline" } }, "text.heading": { "name": "Heading", "settings": { "fontWeight": "bold", "foreground": "accent01" } }, "text.heading01": { "name": "Level 1 Heading", "settings": { "fontWeight": "bold", "foreground": "accent01" } }, "text.heading02": { "name": "Level 2 Heading", "settings": { "fontWeight": "bold", "foreground": "accent02" } }, "text.heading03": { "name": "Level 3 Heading", "settings": { "fontWeight": "bold", "foreground": "accent03" } }, "text.heading04": { "name": "Level 4 Heading", "settings": { "fontWeight": "bold", "foreground": "accent04" } }, "text.heading05": { "name": "Level 5 Heading", "settings": { "fontWeight": "bold", "foreground": "accent05" } }, "text.heading06": { "name": "Level 6 Heading", "settings": { "fontWeight": "bold", "foreground": "accent06" } }, "text.link": { "name": "Link", "settings": { "foreground": "link" } }, "text.activeLink": { "name": "Link which is tap/clickable", "settings": { "foreground": "activeLink" } }, "text.quotation": { "name": "Quotation block", "settings": { "fontStyle": "italic" } }, "text.url": { "name": "URL", "settings": { "foreground": "markup" } }, "text.linkModeLink": { "name": "Link Mode Link", "settings": { "foreground": "link", "fontStyle": "underline" } }, "text.strikethrough": { "name": "Strikethrough", "settings": { "fontStyle": "strikethrough", "foreground": "strikethrough" } }, "markup": { "name": "Markup", "settings": { "foreground": "markup" } }, "markup.heading": { "name": "Markup", "settings": { "foreground": "markup" } }, "markup.quotation": { "name": "Markup", "settings": { "foreground": "markup" } }, "markup.list": { "name": "Markup", "settings": { "foreground": "markup" } }, "markup.link": { "name": "Markup", "settings": { "foreground": "markup" } }, "markup.code": { "name": "Markup", "settings": { "foreground": "markup", "fontStyle": "monospace" } }, "markup.addition": { "name": "Addition", "settings": { "fontStyle": "italic", "foreground": "addition" } }, "markup.deletion": { "name": "Deletion", "settings": { "fontStyle": "italic", "foreground": "deletion" } }, "markup.highlight": { "name": "Highlight", "settings": { "background": "highlight" } }, "markup.substitution": { "name": "Substitution", "settings": { "fontStyle": "italic", "foreground": "substitution" } }, "code.comment": { "name": "Comment", "settings": { "foreground": "comment" } }, "code.inline": { "name": "Inline code", "settings": { "fontStyle": "monospace", "foreground": "code", "background": "codeBackground" } }, "code.block": { "name": "Code block", "settings": { "fontStyle": "monospace", "foreground": "code" } }, "code.literal": { "name": "Code block", "settings": { "foreground": "literal" } }, "code.keyword": { "name": "Keyword", "settings": { "foreground": "keyword" } }, "code.operator": { "name": "Operator", "settings": { "foreground": "markup" } }, "code.punctuation": { "name": "Operator", "settings": { "foreground": "comment" } }, "text.invisibles": { "name": "Invisible characters", "settings": { "fontStyle": "invisibles", "foreground": "invisibles" } }, "color.accent01": { "name": "Accent color", "settings": { "foreground": "accent01" } }, "color.accent02": { "name": "Accent color", "settings": { "foreground": "accent02" } }, "color.accent03": { "name": "Accent color", "settings": { "foreground": "accent03" } }, "color.accent04": { "name": "Accent color", "settings": { "foreground": "accent04" } }, "color.accent05": { "name": "Accent color", "settings": { "foreground": "accent05" } }, "color.accent06": { "name": "Accent color", "settings": { "foreground": "accent06" } }, "color.blue": { "name": "Blue color", "settings": { "foreground": "#007aff" } }, "color.indigo": { "name": "Indigo color", "settings": { "foreground": "#5856d6" } }, "color.purple": { "name": "Purple color", "settings": { "foreground": "#af52de" } }, "color.pink": { "name": "Pink color", "settings": { "foreground": "#ff2d55" } }, "color.red": { "name": "Red color", "settings": { "foreground": "#ff3b30" } }, "color.orange": { "name": "Orange color", "settings": { "foreground": "#ff9500" } }, "color.yellow": { "name": "Yellow color", "settings": { "foreground": "#ffcc00" } }, "color.green": { "name": "Green color", "settings": { "foreground": "#28cd41" } }, "color.black": { "name": "Black color", "settings": { "foreground": "#000000" } }, "color.white": { "name": "White color", "settings": { "foreground": "#FFFFFF" } }, "color.gray": { "name": "Gray color", "settings": { "foreground": "#8e8e93" } } }, "colors": { "editor": { "foreground": "#000000", "background": "#FFFFFF", "heading": "#600100", "strikethrough": "#444444", "comment": "#AEAEAE", "link": "#c20618", "activeLink": "#d70015", "code": "#444444", "codeBackground": "#ff6961", "literal": "#32812B", "keyword": "#813631", "markup": "#B8B4A4", "addition": "#46C139", "deletion": "#EE0000", "substitution": "#F3A536", "highlight": "#FFFD80", "invisibles": "#e5e5ea", "accent01": "#c20618", "accent02": "#d70015", "accent03": "#ff3025", "accent04": "#ff3b30", "accent05": "#ff6961", "accent06": "#ff4136" }, "interface": { "actionBarBackground": "#DEE2EA", "actionBarKeyBackground": "#feeae8", "actionBarKeyForeground": "#c20618", "background": "#FFFFFF", "backgroundCollection": "#feeae8", "border": "#c2c2c2", "caption": "#666666", "delete": "#CA2E26", "flagged": "#d70015", "foreground": "#000000", "messageError": "#EE6462", "messageForeground": "#FFFFFF", "messageInfo": "#A4ACB5", "messageSuccess": "#83D58B", "messageWarning": "#F7EF76", "move": "#42B8FF", "promptBackground": "#F2F2F2", "promptButtonBackground": "#538AEF", "promptButtonDestructiveBackground": "#C42429", "promptButtonDestructiveForeground": "#FFFFFF", "promptButtonForeground": "#FFFFFF", "tagAddHighlight": "#E9FFF4", "tagBackground": "#ffbdc0", "tagForeground": "#c20618", "tagRemoveHighlight": "#FFD5E1", "textBackground": "#feeeef", "textCaret": "#c20618", "textForeground": "#616165", "textHighlight": "#feeae8", "textSelection": "#ff3025", "tint": "#d70015", "tintAlternate": "#c20618", "tintBlue": "#007aff", "tintGray": "#8e8e93", "tintGreen": "#28cd41", "tintIndigo": "#5856d6", "tintOrange": "#ff9500", "tintPink": "#ff2d55", "tintRed": "#ff3b30", "tintViolet": "#af52de", "tintYellow": "#ffcc00", "widgetBackground": "#ff3b30", "widgetBackgroundAlternate": "#ff6961", "widgetForeground": "#1c1c1e", "widgetForegroundAlternate": "#2c2c2e" } } } ``` # iOS System Colors * color-pink: #ff2d55 * color-purple: #5856d6 * color-orange: #ff9500 * color-yellow: #ffcc00 * color-red: #ff3b30 * color-teal-blue: #5ac8fa * color-blue: #007aff * color-green: #4cd964 # Greyhound Colors 007aff #021105 #0c0c0c #0f0f0f #121212 #141414 #1c1c1d #1f1f1f #272728 #27292b #2a2a2a #2a9ef1 #2da32f #2f3135 #353539 #35393e #36393e #363945 #3b3b3b #3d3d40 #4867f8 #48f8d9 #4b5058 #4d4d4d #4f041c #525252 #5a5a5a #5a5a5e #5d5658 #5e5e5e #616365 #666666 #666667 #6c7179 #72d5fd #737373 #767676 #77808c #7b7b7b #808080 #8b9197 #8e8e92 #8f8f8f #939597 #b2b2b2 #b6b6bb #c7c7c7 #c8c7cc #d0d0d0 #d2386c #e6f2ff #ec6608 #efe1ce #f2f1f7 #f2f2f2 #f2f2f7 #f39200 #f88148 #f8d948 #fdefcd #fdf6f6 #ffe438 #fffcf2 #ffffff #ffffff # Using youtube-dl on iPad As part of my work advocating for special-needs orphans, I produce a (mostly) weekly podcast highlighting several of the children on our website. Whenever one of the featured children has a video posted on our site, I try to include an audio snippet of the child talking or, as in the case of one little boy, [jamming on his toy guitar](https://overcast.fm/+X4qWNmMM8/01:56). I record, edit, and publish this podcast entirely on my iPad (except for those rare occasions when the episode is an interview), and it’s been a challenge to figure out how to extract the audio from these kids’ videos, which are almost always hosted on YouTube or Vimeo. There are various apps for the Mac that’ll download YouTube videos, but there’s nothing comparable for the iPad. I discovered that it’s possible to download these videos using the iCab browser if you change the user agent, but I could never get this to work consistently. There is a command-line program you can run called `youtube-dl` that will download videos from YouTube (and other sites). The problem is, the iPad doesn’t ship with a Terminal app like the Mac does, so while I could do this on my Mac, I struggled to find a way to use this command on my iPad. During its beta period, the iOS/iPadOS app [iSH Shell](https://apps.apple.com/us/app/ish-shell/id1436902243) handled `youtube-dl` fine, but following its public, non-beta release and the [removal](https://freedom.press/news/riaa-github-youtube-dl-journalist-tool/) and subsequent [reinstatement](https://github.blog/2020-11-16-standing-up-for-developers-youtube-dl-is-back/) of `youtube-dl` from GitHub, I couldn’t get iSH Shell to work properly. Maybe that’s because I’m a command-line novice, but whatever the cause was, this was no longer working for me. I was close to giving up, but one last search last weekend proved to be unexpectedly fruitful. ## Solution The answer lies with another command-line app for the iPad: [a-Shell](https://apps.apple.com/us/app/a-shell/id1473805438). I’d heard about this app before in the context of `youtube-dl` —I think on an episode of the [Adapt](https://www.relay.fm/adapt) podcast—but I was never able to get it to work. Everything came together, though, when I found [this YouTube video](https://youtu.be/WqdmnbGGLSM) explaining how to install `ffmpeg` in a-Shell. That was the missing piece in my previous attempts. I highly recommend watching the video, but I’m going to list the steps below. Once `ffmpeg` has been installed, `youtube-dl` works great in a-Shell on the iPad. 1. Install a-Shell. 2. Run the command `pip install youtube-dl` to install the `youtube-dl` package. 3. Download `ffmpeg` from [this GitHub page](https://github.com/holzschu/a-Shell-commands). Follow that link, scroll down to the bottom section, and click the link for `ffmpeg`. Or, you can [click here](https://github.com/holzschu/a-Shell-commands/releases/download/0.1/ffmpeg.wasm) to download it directly on your iPad. This will put it in your default downloads folder, which, in my case, is the `Downloads` folder in iCloud Drive. 4. In the Files app, navigate to the `On My iPad` section and select the `a-Shell` folder. In that folder, create a folder called `bin`. 5. Move the `ffmpeg.wasm` file from the `Downloads` folder into the `bin` folder. Now that it’s inside of a-Shell’s folder, the app can call on that program when it runs `youtube-dl`. 6. Start using `youtube-dl`! [image:662E4D99-F61C-4F18-A896-3509C839B9BE-701-0000000DC9FB68DB/img_0684.png] The simplest thing to do is to type the command `youtube-dl `. That will create a video file, in that `bin` folder on your iPad, of the online video. *Be warned*, however, that by default `youtube-dl` will generate a .mkv video file, which is unplayable on the iPad without installing another app or converting it. I recommend telling a-Shell to download the best .mp4 version of a video by inserting `-f '(mp4)'` just before the video link. Give this one a try: `youtube-dl -f '(mp4)' [https://youtu.be/tEvXVJHTQAk](https://youtu.be/tEvXVJHTQAk)` For more information on what you can do with `youtube-dl`, [read this page](https://github.com/ytdl-org/youtube-dl/blob/master/README.md#options). I didn’t realize there was so much I could do with `youtube-dl`, and I’m glad to know that I can download only the audio, if that’s all I really want. All in all, I’m quite happy with this setup. I no longer have to use my Mac to download videos reliably and then transfer those files to my iPad. Everything can now be done directly on iPad, which is fantastic. *(Update 2020-12-01):* If the `a-Shell` folder doesn’t appear in the On My iPad section of the Files app, try issuing the following commands back-to-back: The first command makes sure that you’re in the main `a-Shell` folder, and the second creates the desired `bin` subfolder. Doing that should jog the Files app into showing all of this. If you still can’t see this in Files, reboot your iPad. *(Update 2020-12-02):* If you saw this post via the link on MacStories and tried Federico’s shortcut, you might be unable to find the downloaded files in the Files app. [According to a-Shell’s developer](https://twitter.com/a_Shell_iOS/status/1334010321875443712), files saved via the shortcut are saved to a `$SHORTCUTS` folder, which is invisible in the Files app. In a-Shell, use the command `cd $SHORTCUTS` to navigate to that folder, and then you can use UNIX commands like `ls` or `mv` to see, move, rename, etc. the files in that folder. Husband. Father of 9. (Yes, you read that right.) Sci-fi and fantasy fan. Student of reformed theology. I work for a non-profit to advocate for special-needs children—including orphans—from around the world. [View all posts by Greg](https://nonprofitworkflows.com/author/gregmgodwin/) [Using youtube-dl on iPad](https://nonprofitworkflows.com/2020/11/25/using-youtube-dl-on-ipad/) # Using Older Products [image:D4D15BD2-B100-4F2C-BC90-E5C62EB57DCE-4205-0000067602B3B980/long-logo-2.png] I’ve had enough thoughts on this idea to span a short book, but I had a moment today where I was just occupied with my thoughts, and I started contemplating using an iPhone 5 again. /A quick bit of a context: the iPhone 5 is my favourite phone to have existed, and I’m also a fan (nostalgically) of older technology./ Whenever I think about an older product like the iPhone 5, or whatever old product or service that I used in the past, I always end up watching YouTube videos like “Does X work in 2022?”. After going through a moment of nostalgia, I’m always left with the thought that “of course it should work”. Older products don’t magically stop working when newer versions come out. In the same way that if you buy a Game Boy Colour now, and Pokémon Yellow, you’ll have the same experience as you would have done 20 years ago. Surely as long as the hardware of a product remains functional, and any software updates keep the product working as expected, then technology should theoretically last forever? When the question whether an older product or technology is still viable in a certain moment, if the need/purpose is still the same, then it is as suitable and capable as it was originally. Of course, there are more specific arguments that could be made against this. For example, if you have an old iPhone and update it to the most modern version of iOS, while you may have newer features, your device is most likely going to run slower. There’s a potential argument here that keeping software updates isn’t always the best way to keep something working for a long period of time. But I’ll save that thought for another day. All I’m trying to say, is that when you think about older products, their capabilities aren’t usually what has changed. They can most likely perform the same function as they did originally. But what has changed is your expectations of what a certain product /should/ provide. My answer to every “Can you still use X in 2022?” question, is that if your needs have not changed and there aren’t any software compatibility issues, then of course you can. [Using Older Products](https://chrishannah.me/using-older-products/) # Using Siri with Text Case [image:0CB01120-5120-437A-B5CE-089BC62933F4-4205-0000066EADA00D24/long-logo-2.png] This is a guide related to my app, Text Case. It’s a utility app that lets you transform text into various different formats. You can [find all the guides in one place](https://blog.chrishannah.me/category/text-case-guides/), and Text Case [on the App Store](https://itunes.apple.com/us/app/text-case/id1407730596?mt=8). Everyone loves Siri. Well they don’t always, but sometimes it can be pretty useful. Fortunately, Text Case supports Siri so that you can convert text into any format using it! Unfortunately, there’s no way for apps to take any form of input from Siri, so Text Case uses your clipboard as a form of input and output. ## Siri Shortcuts The simplest way to open up Text Case to Siri, is to record a custom phrase for a specific format. [image:FD8EA39B-0937-437F-AAE6-21A35061E8F0-4205-0000066EAD7584F5/Siri-Shortcut.jpeg] To do this, you’ll need to navigate to the Setting screen, and tap on “Add to Siri”. That will bring up a list of every format in Text Case, and after tapping on one of these, the Siri Shortcut interface will appear, where you can record a phrase to use with this format. One a Siri Shortcut is set up, to format your text, all you need to do is to copy some text, say the phrase to Siri, and the formatted result will be ready to paste wherever you want. ## The Shortcuts App That’s not all you can do with Text Case though, as you can even use these actions within the Shortcuts app. However, as Text Case deals with the clipboard, you will need to make sure you set the clipboard to the text you want to be formatted, and then retrieve the clipboard when you want to use the results. Here is a basic example of how you can make use of Text Case inside a Shortcut: [image:78C2B100-D647-488F-A7C1-823AA01D2A20-4205-0000066EAD4FFD5C/Shortcut-Example.jpeg] You can download [Text Case on the App Store](https://itunes.apple.com/us/app/text-case/id1407730596?mt=8). [Using Siri with Text Case](https://chrishannah.me/using-siri-with-text-case/) # Bear 1.4 Brings Tag and Note Autocomplete, True Black Theme for iPhone X, and More [image:08339DB9-6558-43AF-8A9B-F58145BBAFB7-52345-0000659BD4B745D9/2017-12-13-13-02-06.jpeg] As [I noted last month in my iPad Diaries column](https://www.macstories.net/ios/ipad-diaries-working-with-drag-and-drop-bear-and-gladys/#bear), I’ve started using [Bear](https://itunes.apple.com/us/app/bear/id1016366447?mt=8&uo=4&at=10l6nh&ct=ms_inline) in addition to Apple Notes to research articles in Markdown and later convert them to drafts in [Ulysses](https://itunes.apple.com/us/app/ulysses/id1225571038?mt=8&uo=4&at=10l6nh&ct=ms_inline). I was impressed with Shiny Frog’s work on iOS 11 and how they brought advanced drag and drop to Bear, but I’m even more positively surprised by the improvements to tagging they released today as part of Bear’s 1.4 update. The marquee addition to Bear 1.4 is autocomplete, which is most notable when adding tags to a note. Now, instead of remembering which tags you’ve already added to your notes in Bear, you can start typing a pound sign and the first letter of a tag, and Bear will show you an inline popup with tag suggestions.[1](https://www.macstories.net/ios/bear-1-4-brings-tag-and-note-autocomplete-true-black-theme-for-iphone-x-and-more/#fn-52395-1) Tap one, and the tag immediately gets added to the note without typing it in full. This not only simplifies how you can organize your notes with tags, but it also ensures you always use consistent tag names as you won’t end up with duplicates (such as `#idea` and `#ideas`, which happened to me because I couldn’t remember which one I had originally created). I’m a fan of the contextual menu to choose tags, which I think works well on both the iPad and iPhone. What’s even better though is that the same menu is now used to autocomplete wiki-style links to cross-reference other notes in Bear. The app has long offered the option to create links to other notes, but, like tags, the feature was inconvenient as it required you to manually type the entire name of a note you wanted to link to. That annoyance is gone thanks to autocomplete. Now as soon as you type double brackets and the first letter of a note, Bear will show you a list of notes you can embed as links. Tap one, and you’ll create a reference link to the note in the document you’re working on. Alas, Bear still doesn’t include an option to compile linked notes upon exporting the master one (which would be terrific to work on longform articles in the app), but I appreciate the possibility to more easily create [TOC](https://en.m.wikipedia.org/wiki/Table_of_contents) -type notes in the app. [image:CCE99D62-C5A6-4431-9CEA-022B97DBF540-52345-0000659BD483A1A6/2017-12-13-13-02-49.jpeg] Custom tag icons in Bear 1.4. There are other improvements worth mentioning in this update. Bear now automatically assigns custom icons to popular tags: in the app, the `articles`, `games`, `ideas`, and `iPad` tags I was using before now carry delightful monochrome glyphs that add a touch of personality to the sidebar and also make tags easier to find. I’d be curious to know how many more popular icons are supported. You can disable this option in the Bear’s theme settings by turning off ‘Custom icons for tags’. Speaking of themes, Shiny Frog has added three new themes for Pro subscribers: Duotone Light, Duotone Snow, and Dieci. The latter (which means “ten” in Italian) is a true black theme that looks fantastic on the iPhone X’s OLED display as it seamlessly blends with the bezels of the device. In addition, Bear for Apple Watch now lets you scribble on notes by force pressing them, and you can also append todos to an existing note directly from your wrist. My favorite small tweak, however, is about using custom keyboards with Bear: the app now remembers custom keyboards you use for each note. For instance, the app will automatically show [Gboard](https://itunes.apple.com/us/app/gboard/id1091700242?mt=8&uo=4&at=10l6nh&ct=ms_inline) if you last used it in a note, but default to Apple’s system keyboard, or a different custom one, elsewhere. Bear’s subscription model seems to be working well for Shiny Frog: the indie studio is releasing substantial updates to Bear at a regular pace, iterating upon their original vision of a Markdown-flavored note-taking app that combines elegance with power-user features. Version 1.4 is another remarkable update for what is, arguably, [the best alternative to Apple Notes on iOS](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/). If you’ve never played around with Bear, now would be a great time to check it out. Bear 1.4 is [available on the App Store](https://itunes.apple.com/us/app/bear/id1016366447?mt=8&uo=4&at=10l6nh&ct=ms_inline). [Bear 1.4 Brings Tag and Note Autocomplete, True Black Theme for iPhone X, and More](https://www.macstories.net/ios/bear-1-4-brings-tag-and-note-autocomplete-true-black-theme-for-iphone-x-and-more/) # Automating Bear, Part 1 [Automating Bear, Part 1](https://club.macstories.net/posts/automating-bear-part-1) * /[image:0766BB2A-5A20-4A14-A681-949A0FF31627-52345-000064C5E308FC11/94a9aa7c70dbeb9440c6759bd2cebc2a.jpg] / [Federico](https://club.macstories.net/authors/federico) [Bear](https://itunes.apple.com/us/app/bear-beautiful-writing-app/id1016366447?mt=8&uo=4&at=10l6nh&ct=ms_weekly) , a new note-taking app for iOS and macOS [I reviewed last week](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/) , already offers [a solid selection of URL schemes](http://www.bear-writer.com/x-callback-url/) with x-callback-url support that can be used to automate different aspects of the app. While waiting for Workflow to implement native Bear actions, we can use these URL schemes “the old way” to integrate Bear with other iOS apps, and particularly Safari. Today, I’m going to highlight two URL schemes from Bear’s initial library. With the first scheme, Bear can grab the URL of a webpage, convert its contents to Markdown, and save it as a note. The primary purpose of this command is to turn web articles into readable Markdownified versions in plain text that preserve links and formatting. You might be familiar with existing web services that accomplish a similar goal, such as [Brett Terpstra’s excellent Marky](http://brettterpstra.com/2012/06/20/marky-the-markdownifier-reintroductions/) . [image:E8369E5C-A9F2-446C-A560-D98B5733389E-52345-000064C5E2D0A622/a2469f22-ad2a-46b5-a1ff-033dceb266bd.jpeg] The URL scheme is fairly easy to comprehend: *bear://x-callback-url/grab-url?url=* As you can see, all we need is a single url parameter where we’ll pass the URL of a webpage to convert to Markdown. This can be integrated with Workflow in four actions and run as an action extension from Safari or any other app that can share URLs with the share sheet. First, we can set the workflow to run as an action extension that accepts Safari web pages as well as URLs. This ensures the workflow will show up in the extension both in Safari and third-party apps like Tweetbot. Then, we can use ‘Get URLs from Input’ to isolate the input URL, expand it to the full domain as a precaution, and combine the URL with Bear’s URL scheme. Finally, using ‘Open URLs’ will launch Bear, which will grab the URL, convert it to Markdown, and save it as a note. [image:8A47C040-4AEE-4795-8719-82756F9387B7-52345-000064C5E29268F7/625e251c-5c7b-43fa-9313-f61a0bbefb54.jpeg] There are two optional parameters we could use to enhance the behavior of the URL-grabbing process. Including noimages would force Bear to exclude image URLs from the webpage’s source; tags would let us pass a comma-separated list of tags in case we want to save a webpage with some pre-defined tags. I don’t use these parameters, but you might find them useful. You can [get the workflow here](https://workflow.is/workflows/a3cc278a3e0d41fda05d1a90a55351ba) . In the other workflow I created, we can use Bear’s standard URL scheme to create a new note and integrate it with Safari’s webpage selections to turn whatever is selected in a webpage and save it as a Markdown note. The key idea is to take advantage of the Workflow extension’s ability to read what the user has selected on a webpage in Safari or Safari View Controller. Using the properties of a Safari web page, we can use the ‘Get Details of Safari Web Page’ action to specifically extract the Page Selection. This item will be returned as rich text directly from Safari; we need to use ‘Make Markdown from Rich Text’ if we want Bear to save the text with formatting intact. [image:696C78FC-2B75-4906-951D-1F1737E2F268-52345-000064C5E235FA1E/92bc779b-6350-4489-a8dc-e3600d7c4b7f.jpeg] From the same Safari web page item, we can also fetch the title of the webpage by isolating the ‘Name’ detail, saving it to a separate variable. At this point, we need to mix and match the Bear URL scheme with previously saved variables. Here, you can see one of the many advantages of using Workflow to manage URL schemes: we don’t have to encode anything because Workflow takes care of doing that for us. [image:0A3BAA87-2AF8-439D-94B2-D0667BE2B262-52345-000064C5E1EB3C40/ee5cbd48-0358-4686-86d3-b1d9de739293.jpeg] /Please note: the workflow has to be triggered from Safari with the action extension using the share icon in the Safari toolbar./ I’ve found myself using this workflow quite a bit to save snippets from webpages into the app while keeping their links and formatting intact – something I can’t do with Apple Notes’ extension. You can [get the workflow here](https://workflow.is/workflows/148730f7d1bb4dfbb3a5655d1c4545e4) . ## Saving Tasks with Files to Todoist Something I’ve recently noticed is that I waste a lot of time uploading files to Dropbox just to add their links as comments to tasks. I often need to refer back to files – usually spreadsheets and PDFs – for certain MacStories-related tasks, and I realized I could take advantage of [Todoist’s native attachment feature](https://support.todoist.com/hc/en-us/articles/205348311-Comments-and-Files) to create new tasks with files inside. Unfortunately, the Todoist extension on iOS doesn’t support creating tasks with files passed from the system share sheet. However, its shortcomings can be easily remedied with Workflow and its built-in Todoist integration. Obviously, a workflow running inside an action extension has no problem with interpreting whatever kind of file is passed to it as a variable. All it takes is setting a workflow to accept ‘Anything’ in the extension settings and then saving the input to a File variable at the beginning. Doing this will grab any kind of file you might share from any iOS app and put it aside as a variable. [image:F3196250-DB06-4B0A-9908-7B81A483FB60-52345-000064C5E1A9B659/147c7a2f-5c68-4aea-9ae3-497efd0297d4.jpeg] Thanks to Todoist’s natural language support for dates, we can be creative and try to type a due date in plain English in an ‘Ask for Input’ variable, which will also save its contents to a variable. You can try to type queries such as “next Monday at 2 PM” or “tomorrow at noon” and Todoist will parse the date and set it accordingly. Before invoking the ‘Add Todoist Item’ action at the end of the workflow, we need to get the File variable again. This way, Workflow will pass the file as input to the Todoist API, which will recognize it’s dealing with a file, and it’ll save it in the note area of the task. [image:3367F5C1-DFA5-4D12-89CF-B0DEF52C7547-52345-000064C5E169C340/285fd9ac-7012-4468-9678-7595c9ae02b2.jpeg] Speaking of which: in my workflow, I set the Content and Project fields of the new task to use an ‘Ask When Run’ token; this will prompt you to type and pick a task’s name and project every time. If you want these values to be fixed, you can use any other variable or select a project beforehand in the Todoist action. One last note: you might come across a bug in Todoist for iOS that will prevent you from tapping on the file attached to a task. [image:5A664C91-CF68-4B82-BADB-850F0394437A-52345-000064C5E128AAF1/aa16029a-e283-45ec-9fc2-fd20f3db9b34.jpeg] In my tests, opening the Todoist website in Safari confirmed that the file was attached successfully, and I could tap on it to open it in a new tab. Todoist will use its own CDN to host your file uploads – keep this in mind if you’re dealing with sensitive documents you don’t want to be uploaded anywhere else. With this system, I can now create new Todoist tasks with file attachments in any iOS app (but usually my email client) without having to upload to Dropbox first. You can [get the workflow here](https://workflow.is/workflows/e6979ee9de764f4483580cb6812c7d57) . ## Zapier: From MailChimp Newsletter to Twitter and Airtable I often get asked how and why I use [Zapier](https://zapier.com/app/explore) for web automation instead of IFTTT or native automation on iOS. Given my increased reliance on Zapier (I’m about to start paying for an Annual Business plan, which should give you an idea of how much I use the service), I thought the Workflow Corner section should be expanded to include Zapier as well. Starting with this issue, expect to find essential workflows and answers to members that include Zapier examples in addition to Workflow for iOS. Today, I’m going to cover a basic Zapier workflow that runs automatically every week and that should give you an initial idea of the differences between Workflow, IFTTT, and Zapier. Every week, I want the [@ClubMacStories](https://twitter.com/clubmacstories) Twitter account to tweet when a new issue of MacStories Weekly has been released. At the same time, I also want to build an archive of issues in [Airtable](https://airtable.com/) . This is a perfect task for Zapier, which, unlike IFTTT, supports multiple actions after a trigger. This enables us to build simple workflows that perform one action in response to a trigger, as well as more advanced workflows that perform /dozens/ of actions after a condition has been triggered. Today’s workflow uses one trigger and two actions. Zapier can connect to hundreds of web services natively, and MailChimp is one of them. Create a new zap (what Zapier calls its workflows), select MailChimp as a trigger, and then search for all supported MailChimp triggers. Like IFTTT, Zapier allows you to choose which kind of condition has to be met for a workflow to be triggered. In our case, we want to choose New Campaign, which triggers when a new campaign (like this issue of MacStories Weekly) is created or sent. [image:97492FD5-F24C-42EB-A57F-7E4B018A732A-52345-000064C5E0EAF168/7952bd3f-dc38-488b-84df-51f1ac3c8d6b.jpeg] In the Trigger Options step, you can choose which list Zapier has to monitor, as well as the sending status. I picked ‘Sent’ because I want Zapier to trigger this workflow when emails actually go out to subscribers, not when I create a campaign draft in the MailChimp backend. [image:F0A2193A-01A5-4B12-A5C8-7C56F41FDF0B-52345-000064C5E0AEC1C3/ca62e922-c24c-4990-a86c-931e9630365f.jpeg] With the trigger set, we can move to the actions Zapier should perform if there’s a positive match. The first action I added is Create Tweet, which sends a tweet on my behalf for a selected account. The text of the tweet can be edited in the action template, which reveals a major feature of Zapier: fields. [image:2F2AF700-E1A9-4F25-8ED8-A8573705A546-52345-000064C5E07188E5/ec10c823-501c-45c8-b9ae-2519b5f59294.jpeg] Like variables in Workflow and ingredients on IFTTT, fields in Zapier contain data that can be reused in actions. Fields can be generated by triggers and actions, and Zapier lets you mix and match fields from different steps with other fields and plain text, too. There is an incredible depth to Zapier fields, which I’ll touch upon in future issues of MacStories Weekly. One of the fields generated by the MailChimp trigger is the Subject of the campaign that triggered the workflow. Using this field, we can then compose a message that also uses my own text to send the tweets you might have seen on Twitter. [image:24452C9D-0C83-4457-914C-0C79346940C8-52345-000064C5E03AE220/7db88c39-d473-4cbf-9aed-c1b2accc2c39.jpeg] At this point, the workflow could be over here with a single action in response to a trigger, but Zapier lets us go further than that. We can add another action to the mix – in this case, Airtable’s Create Record action. [image:017C48A8-F925-4A31-B8D6-2784AF66625F-52345-000064C5DFEF2825/01f1a5ef-d438-41e7-992a-2fca40574cfc.jpeg] After connecting to an Airtable account, Zapier lets us pick a destination base and table, where we can create a record with Name and Time Sent fields. In the last two fields, we can also use variables automatically generated by Zapier in the first trigger, which will be used to name the record and give it a timestamp. [image:E545A4D3-E60B-4797-9730-65C4718CB1DF-52345-000064C5DFAAB0EE/b5d74f77-fdce-439d-bb5d-955a7502afc4.jpeg] I’ve been using this Zapier workflow for the past year, and it’s helped me build an automated log of campaign delivery times and a social feed that would have otherwise required manual interaction from me every week. However, this is only a rudimentary example of what Zapier can do and how we can use it to make web services work for us. I plan to explain and demonstrate lots more in future installments of the Workflow Corner. # Bear 1.9 is ready for iOS 15 with new shortcuts and widgets [image:6477F468-B021-429A-BCFE-FCC843D18F0B-52345-000064B5492EA439/img_0631.jpg] With fall arriving for many of us, so too do new releases from Apple like the iPad mini 6, iOS 15, and watchOS 15. We’re happy to say that is ready for all these new goodies! Check out what’s new in [Bear 1.9 for iOS](https://apps.apple.com/us/app/bear/id1016366447) in this post, then take a peek at [what we’re working on with Panda](https://beta.bear.app) —an upcoming, major redesign and expansion of what Bear can do for you. ## New Bear shortcuts We’ve added some great new shortcuts to Bear’s toolbelt such as *Pin note*, *Add files to a note*, and *Get files from a note*. You can [learn more about Shortcuts in Apple’s guide](https://support.apple.com/guide/shortcuts/welcome/ios). To help spark your creativity, we made a few new shortcuts you can download and customize to your needs: * [Share files from a note](https://www.icloud.com/shortcuts/de65551513eb45b59b195b5b7f1c0be1) – Automatically grabs all photos and files attached to a note, then sends them via iMessage to either a specific contact or a person you choose on-the-fly. Right-click or long-press a note in Bear’s Note List to copy its identifier * [Note from PDF](https://www.icloud.com/shortcuts/b3cd656b17f24beb977cace46d005da7) – Use this from the share sheet in Files or a similar app to copy all text from a PDF and paste it into a new Bear note * [A selfie for your thoughts](https://www.icloud.com/shortcuts/6e3fa61815a84ee5a534e10e20ca9dfe) – This journaling shortcut takes a new selfie and asks what you’re thinking about, then adds it all to a new note titled with the date For those wondering: yes, Bear shortcuts are also ready for the Mac! We’ll release that update once macOS Monterey launches, expected sometime this fall. ## New widgets Widgets are just the bee’s knees these days. Since bees make honey, and bears love honey, we made two more widgets for this release! Don’t question that one too much, just go with it: * *Create note* – Start a brand new note from anywhere widgets can be placed on your device * *Search notes* – Launch Bear straight into a search for a specific keyword or tag ## Com-paw-tible with new OSes Bear 1.9 is compatible with all the new devices and OSes Apple announced for fall 2021. That includes the new iPad mini 6, Apple Watch Series 7, iOS 15, iPadOS 15, watchOS 8.0, and macOS Monterey once it’s available. ## We’d love to hear from you How are you using Bear in your shortcuts? Is there a fuzzy-shaped widget on one of your home screens? We’d love to hear from you about these new releases or anything else on your mind on [Reddit](https://www.reddit.com/r/bearapp/), [Twitter](https://twitter.com/BearNotesApp), [Facebook](https://facebook.com/BearNotes/), or directly at [bear@shinyfrog.net](mailto:bear@shinyfrog.net). [Bear 1.9 is ready for iOS 15 with new shortcuts and widgets](https://blog.bear.app/2021/09/bear-1-9-is-ready-for-ios-15-with-new-shortcuts-and-widgets/) # How to automate Bear with Shortcuts and Siri [image:928CCA46-BE44-43D2-97B7-6863514F5203-52345-0000649502540BE8/machine-gears.jpeg] In iOS 12, Apple released [Shortcuts](https://itunes.apple.com/us/app/shortcuts/id915249334?mt=8), a powerful way to automate tasks on your iPhone and iPad. Bear supports Shortcuts, so we’d like to briefly explain what they are and how to start automating your work with Bear. ## What are Shortcuts? Shortcuts makes it easier and faster to perform multi-step tasks. For a simple example, let’s say you use Bear as a journal. A shortcut could create a new note in Bear, add today’s date as the title, apply specific tags, and insert template text so you can journal your day—all with just a tap. [image:3E5D3A58-6365-410E-8050-3B70E8DC6BB2-52345-0000649502171242/Bear-Shortcuts-example-473x1024.jpeg] Shortcuts can be created and used in a few different ways, starting with Apple’s new [dedicated Shortcuts app](https://itunes.apple.com/us/app/shortcuts/id915249334?mt=8). This allows you to build your own shortcuts and explore the options available from other apps on your device. If you could use some inspiration to get started, check out the built-in gallery of free, curated shortcuts for all kinds of situations. It’s a great way to learn how shortcuts are built and how their individual actions interact. You can use shortcuts from within the Shortcuts app, a 3D Touch on the app’s icon, a widget on the Today screen, an app extension, or you can create Home Screen icons for them. There is also Siri Shortcuts, a way to trigger them with your delightful voice. Apps can create Siri Shortcuts for you to trigger a feature or look up information. For example, a travel app can show an “Add to Siri” button on your hotel booking. This allows you to quickly set a vocal command for Siri to display that piece of information or open the app directly to it. Finally, anyone can share a shortcut online (there’s an action sheet on the edit screen). They will live at icloud.com links, like this one that can [create a new Bear note based on an upcoming calendar event](https://www.icloud.com/shortcuts/df2b2b3c1d154613b257fb081c4052fb). ## What does Bear support? Bear has strong support for Shortcuts and Siri Shortcuts, and we list the core available commands in [our support doc](https://bear.app/faq/How%20to%20use%20Bear%20with%20Siri%20on%20iOS/). You can also find them in the Shortcuts app. As of this writing, Bear and shortcuts can: * Create a new note with a title, body, and specific tags * Access a specific note * Access a specific tag * Access your ToDo notes * Access your Today notes * Access your Untagged notes * Search for notes created last week, month, etc. (learn more about [Bear’s Special Search options](https://bear.app/faq/Advanced%20search%20options%20in%20Bear/) ) ## Some examples You can do a /lot/ with Shortcuts and Bear, and exponentially more once you bring other apps into the mix. Here are some examples from us and our wonderfully clever Bear community. Note that you might need to modify some of these to fill in credentials or fit your workflow. * [Create a Bear note from an upcoming calendar event](https://www.icloud.com/shortcuts/df2b2b3c1d154613b257fb081c4052fb) – From Redditor [u/tileeater](https://www.reddit.com/r/bearapp/comments/9hlszj/i_made_an_ios_12_shortcut_to_make_a_new_bear_note/) * [Open a Bear note](https://www.icloud.com/shortcuts/05e632f3a1024d4789a2ba2f3b9bc8ec) – This is great for notes you frequently open or edit. You’ll have to copy the note’s identifier and paste it into this shortcut for it to work. If you want to use this with multiple notes, you can duplicate this shortcut from its action sheet * [PDF a website and email it](https://www.icloud.com/shortcuts/d878d1a8969046feb1c3a1493bcb0769) – This is a simple shortcut that doesn’t necessarily involve Bear. You have to add your email account to Shortcuts for this to work. But you can customize a few things like number of pages, add recipients, set a subject, and more * [Create a gear checklist](https://www.icloud.com/shortcuts/1e2d46665e3141008322960c0ae8a2c1) – From [Stu Maschwitz](https://www.proloststore.com/products/gearchecklist), this is a great way to create a reusable checklist for situations like travel or work projects. The list can be added to Bear or Things, so [check out Stu’s blog post](https://www.proloststore.com/products/gearchecklist) to learn more about how it works * [Create meeting notes in Bear](https://www.icloud.com/shortcuts/66297078252b41e6827b63f9227c4165) – From [Ivaylo Kabakov](https://twitter.com/ivaylokabakov/status/1053245318802882561), this shortcut creates a Bear note using the details of a meeting. It includes participants and adds the event’s notes field to Bear in an Agenda section * [Bear tasks to Things](https://www.icloud.com/shortcuts/dcbe0b1c6db140c8934ad45f31b1f9a6) – This checks the Todo section in Bear for notes with incomplete tasks, then adds those tasks to [Things from Cultured Code](https://culturedcode.com). This is a good shortcut to sink your teeth into, as it deals with some of the more complex actions in Shortcuts like x-callback-URLs and parsing text. You can also toggle some switches for the tasks sent to Things, such as setting a due date, tags, and a project * [Create a day log note](https://www.icloud.com/shortcuts/a62d603fda314618a8e58ee3b6e41784) – [See this Reddit thread](https://www.reddit.com/r/bearapp/comments/av6692/more_auto_daily_note_generation_with_shortcuts/) for the full explanation and example of what this workflow does. In short: this shortcut creates a note with the title of the current day, then adds a variety of information like the weather, the day’s top news headlines, reminders to review certain projects, and timed placeholders to record the day’s notes and thoughts * [Media2Do](https://routinehub.co/shortcut/2117) – Via [this Reddit thread](https://www.reddit.com/r/bearapp/comments/avaxhq/media2do_a_media_diary_built_for_bear_using/), Media2Do makes it easy to create a Bear note for a new movie, game, book, or TV show you want to check out. It can also create a reminder in Things or Reminders about it Did you create a useful Bear shortcut? Want to share it? Let us know! On [Twitter](https://twitter.com/BearNotesApp) and [Facebook](https://www.facebook.com/BearNotes/), use the hashtags #BearNotesTips and #BearShortcuts to help people find them. You can also post them to [our subreddit](https://www.reddit.com/r/bearapp/), but they don’t really do the hashtag thing. [How to automate Bear with Shortcuts and Siri](https://blog.bear.app/2018/11/how-to-automate-bear-with-shortcuts-and-siri/) # About free and Pro themes in Bear | FAQ & Support [image:D6FD37EF-8369-449B-AA00-592465248C0E-52345-0000646234A939A2/themes.jpg] We design bear to be a comfortable, beautiful place to write and collect notes. But because everyone likes to write a little differently, we include a growing selection of themes that change the mood and color of Bear’s text, styling, and background. Some Bear themes are inspired by or based on the work of designers in the industry. Scroll down a bit to find credit and shoutouts to the muses for those themes. ## Free themes Bear offers a few themes for free. These should get most users started with the idea of changing Bear to suit the writing mood: * Red Graphite * High Contrast * Dark Graphite (this goes great with Dark Mode on macOS!) ## Pro themes You can subscribe to [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) to unlock over a dozen more themes, with more on the way. These include dark, light, and various color themes to fit all kinds of writing moods. There is also Dieci—Italian for “ten”—designed specifically for the iPhone X line and their unique, deep-black OLED displays. The Shiny Frog team would like to thank the following designers and developers for inspiring some of our theme designs: [About free and Pro themes in Bear | FAQ & Support](https://bear.app/faq/Themes/About%20free%20and%20Pro%20themes%20in%20Bear/) * [Bear](https://bear.app/) * [Features](https://bear.app/#features) * [Community](https://bear.app/#community) * [Pricing](https://bear.app/#pricing) * [Faq](https://bear.app/faq/) * [Blog](https://blog.bear-writer.com) * [Eng](https://bear.app/) / [中](https://bear.app/cn/) Hey there, how can we help? Popular searches: [Sync](https://bear.app/faq/?q=sync), [Bear Pro](https://bear.app/faq/?q=bear%20pro), [Migrate](https://bear.app/faq/?q=migrate) # TagCons Keywords List In Bear's TagCons are associated with a specific set of keywords. The keywords set is chosen in accord with the languages used by the operative system. A minor set of Universal Keywords is used for every language and you can find them at the bottom of this page. ## Languages Specific Keywords Click on a language to change the table: English, 简化字 (Simplified Chinese), 正體字 (Traditional Chinese), 日本語 (Japanese), 한국어 (Korean), Français (French), Deutsch (German), Español (Spanish), Русский язык (Russian), Italiano (Italian), Português do Brasil (Brazilian Portuguese). 1. no one 2. nobody 3. none 4. nothing 5. zero 1. 1st 2. first 3. one 1. 2nd 2. second 3. two 1. 3rd 2. third 3. three 1. 4th 2. four 3. fourth 1. 5th 2. fifth 3. five 1. 6th 2. six 3. sixth 1. 7th 2. seven 3. seventh 1. 8th 2. eight 3. eighth 1. 9th 2. nine 3. ninth 1. ai 2. artificial intelligence 3. automation 4. deep learning 5. machine learning 6. ml 7. neural networks 8. robot 9. robotics 10. robots 11. skynet 1. animals 2. pets 3. wildlife 1. app 2. apps 3. software 1. art 2. creativity 3. drawing 4. drawings 5. illustration 6. illustrations 7. painting 8. paintings 9. sketch 10. sketches 1. abstract 2. abstracts 3. article 4. articles 5. blog 6. blog post 7. blog posts 8. blogs 9. bookmark 10. bookmarked 11. bookmarks 12. links 13. meeting minutes 14. paper 15. papers 16. posts 17. web pages 18. webpages 1. autumn 2. fall 3. leaf 4. leaves 1. baseball 1. beauty 1. beer 2. beers 3. breweries 4. brewery 1. bicycle 2. bicycles 3. cycling 4. cyclist 5. cyclists 6. cyclocross 7. downhill 8. mountain bike 9. mountain biking 1. boat 2. boats 3. cruise 4. navigate 5. sail 6. sailboat 7. sailboats 8. sailing 9. ship 10. ships 11. yacht 12. yachts 1. book 2. books 3. diaries 4. diary 5. essay 6. essays 7. journal 8. journaling 9. journals 10. literature 11. novel 12. novels 13. publication 14. publications 15. reading 16. reference 17. references 18. script 19. scripts 20. stories 21. storytelling 22. textbook 23. textbooks 24. vocabulary 1. bug 2. bug report 3. bug reports 4. bugs 1. bus 2. buses 1. birthday 2. birthdays 3. cake 4. cakes 1. appointment 2. appointments 3. calendar 4. calendars 5. deadline 6. deadlines 7. due date 8. due dates 9. event 10. events 11. expiry date 12. someday 13. today 1. camera 2. cameras 3. photographer 4. photographers 5. photos 6. pics 7. pictures 8. reflex 1. base camp 2. basecamp 3. camp 4. campfire 5. campground 6. camping 7. camps 8. campsite 9. encampment 10. scouting 11. tent 1. car 2. cars 3. mobility 4. taxi 1. cat 2. cats 3. kitten 4. kittens 5. kitties 6. kitty 1. cinema 2. entertainment 3. film 4. films 5. flick 6. flicks 7. movie 8. video 9. videos 1. architecture 2. cities 3. city 4. downtown 5. metropolis 6. metropolitan 7. skyline 8. town 9. urban 10. urbanism 1. attachment 2. attachments 3. clippings 4. ews clippings 5. web clippings 1. cloud 2. cloud computing 3. cloud storage 4. clouds 5. cloudy 1. cocktail 2. cocktail recipes 3. cocktails 1. coffee 1. anime 2. cartoon 3. cartoons 4. comic book 5. comic books 6. comicbook 7. comicbooks 8. comics 9. graphic novel 10. graphic novels 11. manga 1. accomplished 2. approved 3. complete 4. completed 5. concluded 6. done 7. ended 8. finished 9. settled 1. conference 2. conference call 3. conference calls 4. meeting 5. meetings 6. workshop 7. workshops 1. contact 2. contacts 3. networking 4. party 5. people 6. person 7. persons 1. chat 2. chats 3. chatter 4. comment 5. comments 6. conversation 7. conversations 8. discussion 9. discussions 10. feedback 11. feedbacks 1. breakfast 2. cooking 3. cuisine 4. dinner 5. food 6. foodie 7. foodies 8. kitchen 9. lunch 10. recipe 11. recipes 12. restaurant 13. restaurants 1. cricket 1. role playing 2. role playing games 3. role-playing 4. role-playing games 5. rpg 6. rpgs 1. board game 2. board games 3. board gaming 4. dice 5. dices 6. party game 7. party games 1. ballet 2. ballroom 3. choreography 4. classic dance 5. dance 6. dancer 7. dancers 8. dances 9. dancing 1. admin 2. db 1. design 2. designer 3. designers 1. coworking 2. cubicle 3. desk 4. employment 5. office 6. office building 7. openspace 8. workplace 1. code 2. coding 3. dev 4. developer 5. developers 6. development 7. programming 8. project 1. bricolage 2. diy 3. do it yourself 1. biology 2. gene 3. genes 4. genetic 5. genetics 6. heredity 7. natural science 1. doc 2. doctor 3. m.d. 4. md 5. medic 6. medical doctor 7. physician 8. surgeon 1. doctor who 1. docs 2. document 3. documentation 4. documents 5. page 6. pages 7. report 8. reports 1. dog 2. doggies 3. doggy 4. dogs 5. puppies 6. puppy 1. cash 1. draft 2. drafts 3. my drafts 4. rough draft 1. daydreaming 2. dream 3. dreaming 4. dreams 1. cure 2. cures 3. drug 4. drugs 5. medical 6. medicament 7. medication 8. medicine 9. meds 10. pharmaceutical 11. pill 12. pills 13. prescription 14. prescriptions 1. drum 2. drum set 3. drum sets 4. drummer 5. drummers 6. drumming 7. drums 1. bank 2. chart 3. charts 4. data science 5. economy 6. finance 7. financial 8. investments 9. marketing 10. statistics 11. stats 12. stocks 13. trend 14. trends 1. electric 2. electric bills 3. electrical 4. electrician 5. electricians 6. electricity 7. lightning 8. lightning bolt 1. exercise 2. exercising 3. fitness 4. marathon 5. run 6. running 7. training 8. workout 1. children 2. childrens 3. daughter 4. daughters 5. family 6. father 7. household 8. kids 9. parenting 10. son 11. twins 1. dragon 2. dragons 3. drake 4. drakes 5. folklore 6. magic 7. myth 8. mythology 9. myths 10. witch 11. witchcraft 12. witches 13. wizard 14. wizardry 15. wizards 16. wyrm 17. wyrms 18. wyvern 19. wyverns 1. attire 2. clothes 3. clothing 4. fashion 5. outfit 6. outfits 1. essential 2. flag 3. flagged 4. important 1. american football 2. football 1. flying spaghetti monster 2. pastafarian 3. pastafarianism 4. pastafarians 1. emoji 2. emojis 3. fun 4. funny 5. humor 6. humour 7. joke 8. jokes 1. game 2. gamer 3. games 4. gaming 5. video game 6. video games 7. videogame 8. videogames 1. alum 2. alumnus 3. diploma 4. diplomate 5. graduate 6. graduation 7. student 8. students 1. errands 2. groceries 3. mall 4. shopping 5. shopping center 6. shopping mall 7. to buy 1. acoustic bass 2. acoustic guitar 3. bass 4. bass guitar 5. classical guitar 6. eight-string 7. electric bass 8. electric guitar 9. guitar 10. guitar lessons 11. guitar songs 12. seven-string 13. twelve-string 1. bodybuilder 2. bodybuilding 3. gym 4. gymnasium 5. muscle 6. muscles 7. powerlifting 8. strength training 9. weight training 10. weightlifting 11. weights 1. diet 2. health 3. healthy 4. nutrition 5. vitality 1. holiday 2. holidays 3. outdoor 4. trip 5. trips 6. vacation 7. vacations 1. home 2. house 1. brainstorming 2. brainstormings 3. idea 4. ideas 5. inspiration 6. inspirations 7. thoughts 1. inbox 2. incoming 1. info 2. information 1. crying 2. sad 3. scary 1. classical 2. classical music 3. composing 4. jazz 5. opera 6. orchestra 7. piano 8. piano lessons 9. piano music 10. piano songs 11. symphony 1. crochet 2. crocheting 3. knit 4. knitting 5. sew 6. sewing 1. advocate 2. attorney 3. constitution 4. judge 5. juridical 6. jury 7. law 8. lawful 9. lawsuit 10. lawyer 11. legal 12. legislation 1. booze 2. distillates 3. distilled beverage 4. hard alcohol 5. hard liquor 6. liquor 7. liquors 1. list 2. listing 3. lists 4. program 5. schedule 1. hobbit 2. lord of the rings 3. the hobbit 1. dating 2. love 3. lovelife 4. valentine 5. valentine's day 1. computer 2. computer science 3. computers 4. pc 5. software engineering 1. email 2. emails 3. mail 4. mails 1. geometry 2. math 3. mathematics 1. i 2. me 3. myself 4. personal 5. self 1. comet 2. comets 3. meteor 4. meteoroid 5. meteors 6. shooting star 7. shooting stars 1. metro 2. subway 1. concert 2. concerts 3. live 4. lyrics 5. mic 6. microphone 7. public speaking 8. recording 9. singer 10. singers 11. singing 12. song 13. songs 14. speaking 15. speakings 16. vocal 17. voice 1. minimal 2. minimalism 1. budget 2. money 3. payment 4. payments 5. savings 6. tax 7. taxes 8. wallet 1. midnight 2. moon 3. night 1. chopper 2. motorbike 3. motorbikes 4. motorcycle 5. motorcycles 1. mushroom 2. mushrooms 3. shroom 4. shrooms 1. music 2. tracks 3. tunes 1. environment 2. environmental 3. gardening 4. landscaping 5. nature 6. plant 7. planting 8. plants 9. sustainability 10. sustainable 1. reading list 2. readings 3. to read 1. after 2. afterward 3. next 4. next one 1. annotation 2. annotations 3. note 4. notes 5. pen 6. pens 1. peace 1. pear 2. pears 1. call 2. call up 3. calls 4. phone 5. phone call 6. phone calls 7. phones 8. telephone 9. telephone call 10. telephone calls 11. telephones 1. image 2. images 3. memories 4. photo 5. photography 6. pic 7. picture 1. pipe 2. plumber 3. plumbing 4. sewer 5. sewer bill 6. sewer bills 1. location 2. map 3. maps 4. must see 5. mustsee 6. place 7. places 8. visit 1. layers 2. plan 3. plans 4. resolutions 1. add 2. plus 3. surplus 4. to add 1. podcast 2. podcasting 3. podcasts 1. poem 2. poems 3. poetry 4. writing 5. writings 1. pokemon 1. blowhorn 2. bullhorn 3. campaigning 4. megaphone 5. politics 6. rallies 7. rally 1. poo 2. poop 3. shit 4. shitty 1. gift 2. gifts 3. present 4. presents 5. wish list 6. wishlist 1. critical 2. follow-up 3. follow-up needed 4. follow-up required 5. followup 6. priorities 7. priority 8. urgent 1. privacy 1. award 2. awards 3. champion 4. champions 5. championship 6. competition 7. competitions 8. prize 9. prizes 10. trophy 11. tropies 1. meditation 2. psychiatrist 3. psychoanalyst 4. psychologist 5. psychology 6. psychotherapist 7. therapist 8. therapy 1. handbag 2. handbags 3. purse 4. purses 1. doubt 2. doubts 3. misc 4. miscellaneous 5. other 6. q&a 7. question 8. questions 9. random 1. citation 2. citations 3. quote 4. quotes 1. rainbow 2. rainbows 1. rasberries 2. raspberry 1. bills 2. invoice 3. invoices 4. receipt 5. receipts 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 1. rodent 2. rodents 1. duck 2. ducks 3. rubber duck 4. rubber duckies 5. rubber ducking 6. rubber ducks 7. rubber ducky 8. rubberduck 9. rubberduckies 10. rubberducks 11. rubberducky 1. diamond 2. diamonds 3. gems 1. rugby 2. six nations 1. academics 2. academy 3. class 4. classes 5. college 6. education 7. educational 8. instruction 9. school 10. schools 11. studies 12. study 13. teacher 14. teachers 15. teaching 16. thesis 17. universities 18. university 1. alien 2. alien invasion 3. aliens 4. conspiracy 5. conspiracy theories 6. conspiracy theory 7. extraterrestrial life 8. flying saucer 9. reptilians 10. sci fi 11. sci-fi 12. science fiction 13. space travel 14. spacecraft 15. spacecrafts 16. spaceship 17. spaceships 18. syfy 19. ufos 20. universe 1. research 2. researches 3. science 1. porn 2. pornography 3. sex 1. boots 2. footwear 3. shoes 4. sneakers 1. retail 2. shop 3. shops 4. store 5. stores 1. skate 2. skateboard 3. skateboarding 4. skateboards 1. cigarette 2. cigarettes 3. smokes 4. smoking 5. tobacco 1. cold 2. frost 3. snow 4. snowfall 5. snowflake 6. winter 1. soccer 1. basketball 2. hockey 3. sport 4. sports 1. fav 2. favorite 3. favorites 4. favourite 5. favourites 6. star 7. starred 1. star wars 2. starwars 1. sun 1. swim 2. swimming 3. swimming lessons 4. swimming pool 1. tea 1. hardware 2. hw 3. tech 4. techie 5. techies 6. technologies 7. technology 1. tennis 1. theater 2. theaters 3. theatre 4. theatrical 1. awful 2. bad 3. dislike 4. negative 5. thumb down 6. thumbs down 1. awesome 2. excellent 3. good 4. great 5. like 6. positive 7. thumb up 8. thumbs up 1. book index 2. chapters 3. index 4. table of contents 1. checklist 2. checklists 3. goal 4. goals 5. task 6. tasks 7. to do 8. to dos 9. todo 10. todo list 11. todo lists 12. todolist 13. todolists 14. todos 1. gadget 2. gadgets 3. gizmo 4. gizmos 5. gtd 6. how to 7. howto 8. productivity 9. projects 10. repair 11. repairs 12. tool 13. tools 14. utilities 15. utility 1. railroad 2. railway 3. train 4. train station 5. trains 6. transit 1. travel 2. travels 1. backpacking 2. climb 3. climbing 4. hike 5. hiking 6. trekking 1. triangle 1. television 2. tv 3. tv series 4. tv show 5. tv shows 6. tvseries 7. tvshow 8. tvshows 1. grammar 2. typography 1. character set 2. charset 3. encoding 1. dark side 2. dark sith 3. enemies 4. enemy 5. evil 6. lord vader 7. villain 1. blank 2. emptiness 3. empty 4. null 5. void 1. beach volley 2. volley 3. volleyball 1. interrupted 2. on hold 3. pause 4. paused 5. waiting 6. waitings 1. watch 1. rain 2. raindrop 3. running water 4. water 5. water bill 6. water bills 1. cobweb 2. cobwebs 3. internet 4. net 5. network 6. networks 7. spider web 8. spider webs 9. web 10. world wide web 1. bride 2. groom 3. husband 4. marriage 5. matrimony 6. rings 7. spouse 8. wedding 9. weddings 10. wife 1. red wine 2. white wine 3. wine 4. wines 1. baggage 2. baggages 3. business 4. career 5. job 6. jobs 7. luggage 8. luggages 9. work 10. working 1. earth 2. global 3. globe 4. international 5. multinational 6. planet 7. planets 8. world 9. worldwide 1. mindfullness 2. personal development 3. self development 4. spiritual 5. yoga 1. 0 2. 无 3. 没有 4. 虚无 5. 零 1. 1 2. 一 3. 第一 1. 2 2. 二 3. 第二 1. 3 2. 三 3. 第三 1. 4 2. 四 3. 第四 1. 5 2. 五 3. 第五 1. 6 2. 六 3. 第六 1. 7 2. 七 3. 第七 1. 8 2. 八 3. 第八 1. 9 2. 九 3. 第九 1. 人工智能 2. 天网 3. 机器人 4. 机器学习 5. 深度学习 6. 神经网络 7. 自动化 1. 安卓 2. 安卓机 1. 动物 2. 宠物 3. 小动物 4. 自然基金会 5. 野生动物 1. app 2. 应用 3. 应用程序 4. 程序 5. 软件 1. apple 2. 苹果 3. 苹果机 4. 苹果设备 1. 油画 2. 画图 3. 画画 4. 素描 5. 绘图 6. 绘画 7. 艺术 8. 速写 1. po文 2. 书签 3. 会议纪要 4. 作文 5. 写作 6. 博客 7. 博客文章 8. 博文 9. 帖子 10. 摘要 11. 文稿 12. 文章 13. 纸张 14. 网络日记 15. 网页 16. 贴子 17. 链接 1. 入秋 2. 初秋 3. 深秋 4. 秋天 5. 秋季 6. 落叶 7. 落叶归根 1. 复仇者联盟 2. 复联 3. 漫威 1. mlb 2. 棒球 3. 美国职业棒球 4. 美国职棒 5. 野球 1. 熊掌记 1. 动人 2. 漂亮 3. 美丽 4. 美人 5. 美女 1. 啤酒 2. 啤酒厂 3. 酿酒 4. 酿酒厂 1. 单车 2. 山地车 3. 死飞 4. 脚踏车 5. 脚踏车手 6. 自行车 7. 自行车手 8. 骑车 1. 冒牌老爸 1. 区块链 2. 密码货币 3. 比特币 4. 莱特币 1. 乘船游览 2. 乘船航行 3. 导航 4. 帆船 5. 游艇 6. 航海 7. 航行 8. 船 9. 轮船 1. book 2. 书 3. 书单 4. 书籍 5. 出版 6. 剧本 7. 参考数据 8. 图书 9. 小说 10. 小说集 11. 故事书 12. 教材 13. 散文 14. 散文集 15. 文集 16. 日记 17. 期刊 18. 杂志 19. 红宝书 20. 论文 21. 词汇表 22. 读库 23. 附录 1. bug 2. 漏洞 3. 程序错误 4. 错误报告 1. 公交车 2. 公共汽车 3. 巴士 1. 生日 2. 生日蛋糕 3. 蛋糕 1. deadline 2. 今天 3. 保质期 4. 截止日期 5. 日历 6. 日程 7. 某天 8. 过期 1. 摄影师 2. 照片 3. 照相机 4. 相册 5. 相机 6. 相片 1. 大本营 2. 帐篷 3. 童军 4. 童子军 5. 篝火 6. 野营 7. 露营 8. 露营地 1. car 2. 出租车 3. 汽车 4. 的士 5. 计程车 6. 赛车 7. 赛车总动员 8. 车 9. 车辆 1. cat 2. kitty 3. 咪咪 4. 喵 5. 喵喵 6. 喵星人 7. 小猫 8. 小猫咪 9. 猫 10. 猫咪 1. 大片 2. 娱乐圈 3. 影院 4. 电影 5. 票房 6. 视频 1. cbd 2. 城市 3. 天际线 4. 市中心 5. 市区 6. 建筑 7. 摩天大楼 8. 都市 1. 大眼夹 2. 附件 1. 云 2. 云储存 3. 云彩 4. 云数据 5. 云朵 6. 云盘 7. 云计算 8. 多云 1. 激情海岸 2. 特基拉日出 3. 玛格丽特 4. 白俄罗斯 5. 纯真玛丽 6. 自由古巴 7. 莫吉托 8. 血腥玛丽 9. 金汤力 10. 长岛冰茶 11. 鸡尾酒 12. 龙舌兰日出 1. coffee 2. 咖啡 3. 咖啡壶 4. 星巴克 1. anime 2. manga 3. 二次元 4. 动漫 5. 动画 6. 卡通 7. 插图小说 8. 漫画 9. 漫画书 10. 漫画连载 11. 连载漫画 1. 做完 2. 完工 3. 完成 4. 完毕 5. 正确 6. 终止 7. 结束 8. 许可 1. 会议 2. 工作室 3. 开会 4. 电话会议 5. 研讨会 6. 讨论会 1. 人脉 2. 人际网络 3. 关系 4. 名片 5. 联系人 6. 联络 7. 通讯录 1. 会话 2. 反馈 3. 回帖 4. 回贴 5. 对话 6. 聊q 7. 聊天 8. 讨论 9. 评论 1. 做饭 2. 午餐 3. 厨房 4. 小吃 5. 早餐 6. 晚餐 7. 烹调 8. 烹饪 9. 美食 10. 舌尖 11. 食物 12. 食谱 13. 餐厅 14. 餐馆 15. 饭馆 1. 板球 1. rpg 2. 角色扮演游戏 1. 三国杀 2. 桌游 3. 桌面游戏 4. 狼人杀 5. 聚会游戏 6. 色子 7. 骰子 1. 原住民舞 2. 古典舞 3. 民族舞 4. 舞厅 5. 舞池 6. 舞者 7. 舞蹈家 8. 芭蕾 9. 跳舞 1. db 2. 数据库 1. 设计 2. 设计师 1. 书桌 2. 写字楼 3. 办公室 4. 合作 5. 工作场所 6. 开放空间 7. 雇用 1. dev 2. 代码 3. 企划 4. 工程 5. 开发 6. 开发者 7. 程序员 8. 编程 9. 项目 1. diy 2. 自己动手 1. dna 2. 基因 3. 基因工程 4. 脱氧核糖核酸 5. 自然科学 6. 遗传 7. 遗传因子 8. 遗传病 1. dr. 2. m.d. 3. 医师 4. 医生 5. 大夫 6. 治疗师 7. 药师 8. 郎中 1. doctor who 2. the doctor 3. 神秘博士 1. doc 2. docx 3. 报告 4. 文书 5. 文件 6. 文档 7. 文献 8. 档案 1. dog 2. doggy 3. 单身狗 4. 小狗 5. 犬 6. 狗 7. 狗狗 1. 美元 2. 美金 1. 草稿 2. 起草 1. 做梦 2. 梦 3. 梦想 4. 白日梦 5. 空想 1. 医务 2. 医疗 3. 医药 4. 处方 5. 急救 6. 治疗 7. 疗效 8. 疗程 9. 胶囊 10. 药 11. 药品 12. 药片 13. 药物 1. 击鼓 2. 打鼓 3. 敲鼓 4. 架子鼓 5. 鼓 6. 鼓手 7. 鼓点 1. gdp 2. 华尔街 3. 宏观调控 4. 市场营销 5. 打新 6. 投资 7. 数据 8. 新股 9. 涨停 10. 涨跌 11. 理财 12. 生产总值 13. 经济 14. 经济数据 15. 统计 16. 统计数据 17. 股市 18. 股票 19. 营销 20. 跌停 21. 金融 22. 银行 1. 停电 2. 灯泡 3. 电力 4. 电工 5. 电线 6. 电网 7. 电能 8. 电费 9. 电费单 1. 以太坊 2. 以太币 3. 加密货币 4. 虚拟货币 1. 欧元 2. 欧洲 3. 欧盟 1. 健身 2. 练习 3. 训练 4. 赛跑 5. 跑步 6. 马拉松 1. 脸书 1. 侄子 2. 儿子 3. 双胞胎 4. 外甥 5. 女儿 6. 孩子 7. 家庭 8. 家教 9. 户口 1. dragon 2. 巫师 3. 巫术 4. 江湖传说 5. 神话 6. 魔术 7. 魔法师 8. 龙 1. 时尚 2. 时髦 3. 流行 4. 穿搭 1. 必备 2. 必要 3. 必须 4. 标记 5. 立flag 6. 重点 1. 美式橄榄球 2. 美式足球 3. 超级碗 1. 面神 2. 飞天意面神 3. 飞天意面神怪物信仰 4. 飞天意面神教 5. 飞天面条神教 6. 飞面大神 1. 好玩 2. 好笑 3. 幽默 4. 有趣 5. 段子 6. 笑话 1. 毛绒绒 2. 毛茸茸 1. 游戏 2. 玩家 3. 电子游戏 4. 电子竞技 5. 电竞 6. 电竞选手 7. 电脑游戏 1. 学位 2. 学历 3. 文凭 4. 校友 5. 校友会 6. 校友录 7. 毕业 1. 买东西 2. 买菜 3. 商场 4. 杂货 5. 购物 6. 购物中心 7. 超市 1. 乌克丽丽 2. 六弦琴 3. 古典吉他 4. 吉他 5. 吉他歌曲 6. 吉他课程 7. 夏威夷吉他 8. 尤克里里 9. 民谣吉他 10. 电吉他 1. 举重 2. 体操 3. 健美 4. 减脂 5. 力量训练 6. 大力士 7. 抓举 8. 挺举 9. 肌肉 10. 肌肉锻炼 11. 重量训练 12. 锻炼 1. jk罗琳 2. 伏地魔 3. 哈利波特 4. 拉文克劳 5. 斯莱特林 6. 格兰芬多 7. 赫奇帕奇 8. 霍格沃茨 1. 健体 2. 健康 3. 康健 4. 强壮 5. 活力 6. 节食 1. 休假 2. 假日 3. 假期 4. 度假 5. 户外 6. 放假 7. 节假日 1. 到家 2. 回家 3. 家 4. 家居 5. 居家 1. 主意 2. 创意 3. 头脑风暴 4. 奇思 5. 奇思妙想 6. 妙想 7. 想法 8. 灵感 9. 点子 1. 收件夹 2. 收件箱 3. 收入 1. 信息 2. 资讯 1. 平板 2. 平板电脑 1. 苹果手机 1. 以撒 2. 以撒的结合 3. 伤心 4. 吓人 5. 哭泣 6. 惊吓 1. 交响乐 2. 古典乐 3. 巴赫 4. 歌剧 5. 爵士 6. 贝多芬 7. 钢琴 8. 钢琴曲 1. 织 2. 织毛衣 3. 编织 1. 司法 2. 宪法 3. 律师 4. 正义 5. 法学 6. 法官 7. 法律 8. 法规 9. 立法 10. 诉讼 11. 陪审团 1. 烈性酒 2. 烈酒 3. 蒸馏酒 4. 酒精饮料 1. 列表 2. 名单 3. 日程表 4. 清单 1. 指环王 2. 霍比特人 3. 魔戒 1. amore 2. love 3. 七夕 4. 恋爱 5. 情人 6. 情人节 7. 最喜欢 8. 爱 9. 爱情 10. 珍爱人生 11. 约会 1. macbook 2. pc 3. 电脑 4. 计算机 5. 计算机科学 6. 软件工程 1. 发邮件 2. 电子邮件 3. 电邮 4. 邮件 1. 化妆 2. 化妆品 3. 口红 4. 唇膏 5. 唇釉 6. 彩妆 7. 粉底 8. 美妆 1. 超级玛丽 2. 超级马里奥 3. 超级马里奥世界 4. 超级马里奥兄弟 5. 超级马里奥奥德赛 6. 马里奥 7. 马里奥派对 8. 马里奥赛车 1. 圆周率 2. 数学 3. 算术 4. 自然对数 1. 个人的 2. 俺 3. 我 4. 我自己 5. 本人 6. 笔者 7. 自己 8. 自我 1. 彗星 2. 彗星尾 3. 流星 4. 流星体 1. 地铁 1. mic 2. 录音 3. 歌唱 4. 歌声 5. 歌手 6. 歌星 7. 歌曲 8. 歌词 9. 演唱会 10. 演讲 11. 演说 12. 现场音乐 13. 直播 14. 话筒 15. 配音 16. 音乐会 17. 麦克风 1. 最小 2. 最小化 1. 交税 2. 储蓄 3. 国税 4. 地税 5. 存款 6. 拮据 7. 支付 8. 现金 9. 税务 10. 税收 11. 缴税 12. 资金 13. 金币 14. 金钱 15. 钞票 16. 预算 1. 午夜 2. 夜晚 3. 晚上 4. 晚间 5. 月亮 6. 月球 7. 月食 1. 哈雷 2. 川崎摩托 3. 摩托 4. 摩托车 5. 机车 6. 杜卡迪 7. 胡思瓦纳 8. 阿普利亚 9. 雅马哈摩托 1. 木耳 2. 草菇 3. 菇 4. 菌类 5. 蘑菇 6. 香菇 1. 云音乐 2. 听歌 3. 流行歌 4. 流行歌曲 5. 音乐 1. 可持续发展 2. 园艺 3. 树木 4. 植物 5. 植物园 6. 环保 7. 环境 8. 自然 9. 花园 1. 书呆子 2. 读书 3. 读书列表 4. 读书清单 5. 阅读 1. 下一个 2. 之后 3. 后续 4. 后面 5. 然后 6. 随后 1. 任天堂 1. 笔 2. 笔记 3. 记录 4. 附注 1. 密码 1. peace 2. 和平 1. 梨 2. 梨子 3. 梨视频 4. 水果梨 5. 鸭梨 6. 黄梨 7. 黄鸭梨 1. 座机 2. 手机 3. 打电话 4. 电话 1. 像片 2. 回忆 3. 大头照 4. 大头贴 5. 头像 6. 拍照 7. 照相 8. 记忆 1. 水管 2. 水管工 3. 管道 4. 管道工 1. 披萨 2. 披萨饼 3. 比萨 4. 比萨饼 1. 位置 2. 到访 3. 地图 4. 地点 5. 场所 6. 景区 7. 景点 8. 访问 9. 造访 1. 方案 2. 步骤 3. 解决方案 4. 计划 1. 游戏机 1. 剩余 2. 加 3. 盈余 4. 过剩 5. 阳性 6. 顺差 1. podcast 2. 播客 1. 古诗 2. 李白 3. 杜甫 4. 诗 5. 诗人 6. 诗情画意 7. 诗歌 8. 诗词 1. pokemon 2. 口袋妖怪 3. 口袋怪兽 4. 宝可梦 5. 宠物小精灵 6. 神奇宝贝 7. 精灵宝可梦 1. 政治 2. 竞选 3. 选举 4. 选民 5. 选票 1. shit 2. 便便 3. 大便 4. 屎 1. av 2. av女优 3. a片 4. porn 5. 小电影 6. 日本av 7. 色情 8. 色情片 9. 黄片 1. 英镑 1. 心愿清单 2. 愿望清单 3. 礼物 4. 送礼 1. 优先事项 2. 紧急 3. 至关重要 4. 重要 5. 重要事项 6. 需要关注 7. 需要跟进 1. 私密 2. 私隐 3. 隐私 1. 冠军 2. 奖励 3. 奖品 4. 奖杯 5. 比赛 6. 竞赛 7. 锦标赛 1. 命令提示符 2. 终端 1. 冥想 2. 心理 3. 心理医生 4. 心理学 5. 心理治疗 1. 包包 2. 手提包 3. 钱包 1. faq 2. q&a 3. 提问 4. 疑惑 5. 疑虑 6. 问题 1. 古人云 2. 名言 3. 子曰 4. 曾说过 5. 警句 6. 谚语 1. 彩虹 1. 树莓 2. 树莓派 1. 发票 2. 回执 3. 小票 4. 收据 5. 账单 1. 红迪 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 7. 瑞克与莫蒂 8. 瑞克和莫蒂 1. 啮齿动物 2. 老鼠 3. 耗子 1. 大黄鸭 2. 小黄鸭 3. 橡皮鸭 4. 橡胶鸭 5. 鸭 6. 鸭子 1. 珠宝 2. 钻石 3. 首饰 1. 橄榄球 2. 橄榄球六国赛 3. 橄榄球联盟 4. 英式橄榄球 1. 专科 2. 中学 3. 初中 4. 博士 5. 博士后 6. 大学 7. 学术 8. 学术研究 9. 学校 10. 学院 11. 小学 12. 幼儿园 13. 托儿所 14. 教学 15. 教导 16. 教育 17. 本科 18. 班主任 19. 班级 20. 研究所 21. 研究生 22. 硕士 23. 私塾 24. 老师 25. 高中 26. 高校 1. et 2. sci-fi 3. syfy 4. ufo 5. 外星人 6. 外星生命 7. 太空旅行 8. 太空梭 9. 太空船 10. 宇宙 11. 科幻 12. 阴谋论 1. 实验 2. 研究 3. 科学 4. 科学家 5. 科学研究 6. 科研 7. 试验 1. sex 2. 做爱 3. 啪啪啪 4. 性 5. 性爱 1. 旅游鞋 2. 球鞋 3. 运动鞋 4. 靴子 5. 鞋 6. 鞋子 1. shopping 2. 专卖 3. 商店 4. 小店 5. 工厂店 6. 血拼 1. 滑板 1. 卷烟 2. 吸烟 3. 抽烟 4. 烟草 5. 禁烟 6. 雪茄 7. 香烟 1. 下雪 2. 冬天 3. 冰雪 4. 冰雪节 5. 冷 6. 冻 7. 大雪 8. 寒冷 9. 小雪 10. 暴风雪 11. 白雪 12. 结冰 13. 雪 14. 雪花 15. 霜冻 1. 英式足球 2. 足球 1. 喷射战士 2. 漆弹大作战 1. cba 2. fiba 3. fifa 4. fivb 5. nba 6. nfl 7. super bowl 8. 三对三 9. 世界杯 10. 中网 11. 中超 12. 亚冠 13. 亚洲杯 14. 亚足联 15. 体育 16. 体育比赛 17. 加拿大足球 18. 国足 19. 国际足联 20. 垒球 21. 女排 22. 女曲 23. 姚明 24. 德甲 25. 意甲 26. 斗牛 27. 曲棍球 28. 欧洲杯 29. 法甲 30. 法网 31. 温网 32. 澳网 33. 篮球 34. 美网 35. 美职篮 36. 职棒 37. 腰旗橄榄球 38. 英超 39. 西甲 40. 运动 1. 收藏 2. 明星 3. 星星 4. 星标 5. 最爱 1. 星舰迷 2. 星际迷航 1. star wars 2. 星战 3. 星球大战 1. 打雷 2. 暴风雨 3. 闪电 4. 雷劈 5. 雷电 6. 风暴 1. 太阳 2. 日光 3. 阳光 1. 泳池 2. 游泳 3. 游泳课 1. 喝茶 2. 沏茶 3. 泡茶 4. 茶 5. 茶叶 6. 茶水 7. 茶道 1. tech 2. 技术 3. 科技 1. 网球 1. 剧场 2. 剧院 3. 电影院 1. 不喜欢 2. 不好 3. 不行 4. 不赞成 5. 反对 6. 差 7. 差评 8. 烂 1. 同意 2. 好 3. 好评 4. 拇指向上 5. 正面 6. 特别好 7. 真棒 8. 赞 9. 赞成 10. 超棒 11. 超赞 1. 目录 2. 章节 3. 索引 1. 事项列表 2. 任务 3. 待办事项 4. 待办列表 5. 目标 6. 计划任务 1. gadget 2. 创造力 3. 实用工具 4. 小工具 5. 小组件 6. 工具 7. 教程 8. 维修 9. 说明书 1. 火车 2. 火车站 3. 铁路 4. 铁轨 1. 之旅 2. 旅游 3. 旅行 1. 攀岩 2. 攀登 3. 爬山 4. 登山 5. 背包旅行 1. 三角 2. 三角形 1. 汤不热 1. 台剧 2. 国产剧 3. 娱乐节目 4. 日剧 5. 港剧 6. 电视 7. 电视剧 8. 电视节目 9. 美剧 10. 英剧 11. 连续剧 12. 韩剧 1. 推特 1. 凸版印刷 2. 排印 3. 排版 4. 版式 5. 语法 1. 字符编码 2. 字符集 3. 编码 1. 原力黑暗面 2. 坏蛋 3. 安纳金·天行者 4. 敌人 5. 维达 6. 达斯·维达 7. 黑暗面 1. blank 2. null 3. void 4. 引用 5. 摘抄 6. 无效 7. 空白 8. 缺少 1. 排球 2. 沙排 3. 沙滩排球 1. 中断 2. 待机 3. 打扰 4. 暂停 5. 等一下 6. 等待 1. 手表 2. 表 1. 水 2. 水费 3. 水费单 4. 自来水 5. 雨 6. 雨水 1. 网 2. 网络 3. 网路 4. 蜘蛛网 1. 丈夫 2. 内人 3. 妻子 4. 婚姻 5. 婚礼 6. 新娘 7. 新郎 8. 爱人 9. 结婚 10. 老公 11. 老婆 12. 配偶 1. 维基 2. 维基百科 1. 白葡萄酒 2. 红葡萄酒 3. 红酒 4. 葡萄酒 1. kpi 2. 事业 3. 工作 4. 应聘 5. 打工 6. 招聘 7. 求职 8. 生产力 9. 绩效 10. 职业生涯 11. 职位 12. 行李 13. 行李箱 1. 世界 2. 全球 3. 国际 4. 地球 5. 星球 6. 行星 7. 跨国 1. 日元 1. 打坐 2. 瑜伽 3. 精神 4. 自我提升 5. 自身发展 1. 油管 1. 塞尔达 2. 塞尔达传说 1. 沒有 2. 無 3. 虛無 1. 1 2. 一 3. 第一 1. 2 2. 二 3. 第二 1. 3 2. 三 3. 第三 1. 4 2. 四 3. 第四 1. 5 2. 五 3. 第五 1. 6 2. 六 3. 第六 1. 7 2. 七 3. 第七 1. 8 2. 八 3. 第八 1. 9 2. 九 3. 第九 1. 人工智慧 2. 天網 3. 機器人 4. 機器學習 5. 深度學習 6. 神經網絡 7. 終結者 8. 自動化 1. 安卓 2. 安卓手機 1. 動物 2. 寵物 3. 小動物 4. 自然基金會 5. 野生動物 1. app 2. 應用 3. 應用程式 4. 程式 5. 軟件 6. 軟體 1. 蘋果 1. 油畫 2. 畫圖 3. 畫畫 4. 素描 5. 繪圖 6. 繪畫 7. 藝術 8. 速寫 1. po文 2. 作文 3. 寫作 4. 帖子 5. 摘要 6. 文稿 7. 文章 8. 書簽 9. 會議紀要 10. 紙張 11. 網路日記 12. 網頁 13. 貼子 14. 連結 15. 部落客 16. 部落格 17. 部落格文章 1. 落葉 1. 復仇者聯盟 2. 復聯 3. 漫威 1. mlb 2. 中華職棒 3. 棒球 4. 美國職棒 5. 美國職業棒球 6. 職棒 7. 野球 1. 熊掌記 1. 動人 2. 漂亮 3. 美麗 1. 啤酒 2. 啤酒廠 3. 釀酒 4. 釀酒廠 1. 單車 2. 山地車 3. 死飛 4. 腳踏車 5. 腳踏車手 6. 自行車 7. 自行車手 8. 騎車 1. 冒牌老爸 1. 區塊鏈 2. 密碼貨幣 3. 比特幣 4. 萊特幣 1. 乘船航行 2. 導航 3. 帆船 4. 搭船遊覽 5. 航海 6. 航海術 7. 航行 8. 船 9. 輪船 10. 遊艇 1. book 2. 出版 3. 劇本 4. 參考資料 5. 圖書 6. 小說 7. 小說集 8. 故事書 9. 教材 10. 散文 11. 散文集 12. 文集 13. 日記 14. 書 15. 書籍 16. 期刊 17. 紅寶書 18. 詞彙表 19. 論文 20. 讀庫 21. 附錄 22. 雜誌 1. bug 2. 漏洞 3. 程式錯誤 4. 錯誤報告 1. 公共汽車 2. 公車 3. 客車 4. 客運 5. 巴士 1. 生日 2. 生日蛋糕 3. 蛋糕 1. deadline 2. 今天 3. 保質期 4. 截止日期 5. 日曆 6. 日程 7. 某天 8. 賞味期限 9. 過期 1. 影集 2. 攝影 3. 攝影機 4. 照片 5. 照相機 6. 相機 7. 相片 1. 大本營 2. 帳篷 3. 童子軍 4. 童軍 5. 篝火 6. 野營 7. 露營 8. 露營地 1. 出租車 2. 汽車 3. 汽車總動員 4. 的士 5. 計程車 6. 賽車 7. 車 8. 車輛 1. cat 2. neko 3. 咪咪 4. 喵 5. 喵喵 6. 貓 7. 貓咪 1. 國片 2. 大片 3. 娛樂圈 4. 影院 5. 票房 6. 視頻 7. 金馬獎 8. 電影 1. cbd 2. 城市 3. 天際線 4. 天際線綫 5. 市中心 6. 市區 7. 建築 8. 摩天大樓 9. 都市 1. 大眼夾 2. 附件 1. 多雲 2. 雲 3. 雲朵 4. 雲端 5. 雲端儲存 1. 特基拉日出 2. 瑪格麗特 3. 純真瑪麗 4. 血腥瑪麗 5. 長島冰茶 6. 雞尾酒 1. 咖啡 2. 咖啡壺 3. 星巴克 1. anime 2. manga 3. 動漫 4. 動畫 5. 卡通 6. 插圖小說 7. 漫畫 8. 漫畫書 9. 漫畫連載 10. 連載漫畫 1. 做完 2. 同意 3. 完工 4. 完成 5. 完畢 6. 正確 7. 終止 8. 結束 9. 許可 1. 工作室 2. 會議 3. 研討會 4. 討論會 5. 開會 6. 電話會議 1. party 2. 人脈 3. 人脈網絡 4. 人際網絡 5. 人際網路 6. 聚會 7. 聯絡 8. 通信錄 9. 通訊錄 10. 連絡人 11. 關係 1. 回帖 2. 回貼 3. 回饋 4. 對話 5. 會話 6. 聊q 7. 聊天 8. 討論 9. 評論 1. 做飯 2. 午餐 3. 小吃 4. 廚房 5. 早餐 6. 晚餐 7. 烹調 8. 烹飪 9. 美食 10. 舌尖 11. 食物 12. 食譜 13. 飯館 14. 餐廳 15. 餐館 1. 板球 1. rpg 2. 角色扮演遊戲 1. 三國殺 2. 桌遊 3. 桌面遊戲 4. 狼人殺 5. 聚會遊戲 6. 色子 7. 骰子 1. 原住民舞 2. 古典舞 3. 民族舞 4. 舞廳 5. 舞池 6. 舞者 7. 舞蹈家 8. 芭蕾 9. 跳舞 1. 資料庫 1. 設計 2. 設計師 1. 合作 2. 寫字樓 3. 工作場所 4. 書桌 5. 辦公室 6. 開放空間 7. 雇用 1. dev 2. 代碼 3. 企劃 4. 工程 5. 程式師 6. 程式設計 7. 開發 8. 開發者 9. 項目 1. diy 2. 自己動手 1. dna 2. 去氧核糖核酸 3. 基因 4. 基因工程 5. 自然科學 6. 遺傳 7. 遺傳因子 8. 遺傳病 1. dr. 2. m.d. 3. 大夫 4. 治療師 5. 藥師 6. 郎中 7. 醫師 8. 醫生 1. doctor who 2. the doctor 3. 神秘博士 1. doc 2. docx 3. 報告 4. 文件 5. 文書 6. 文檔 7. 文獻 8. 檔案 1. dog 2. doggy 3. 小狗 4. 犬 5. 狗 6. 狗狗 1. 美元 2. 美金 1. 草稿 2. 起草 1. 做夢 2. 夢想 3. 白日夢 4. 空想 1. 急救 2. 治療 3. 療效 4. 療程 5. 膠囊 6. 藥品 7. 藥片 8. 藥物 9. 處方 10. 醫務 11. 醫療 12. 醫藥 1. 打鼓 2. 擊鼓 3. 敲鼓 4. 架子鼓 5. 鼓手 6. 鼓點 1. gdp 2. 宏觀調控 3. 市場行銷 4. 投資 5. 數據 6. 漲跌 7. 理財 8. 生產總值 9. 統計 10. 統計資料 11. 經濟 12. 經濟資料 13. 股市 14. 股票 15. 華爾街 16. 行銷 17. 金融 18. 銀行 1. 停電 2. 燈泡 3. 電力 4. 電工 5. 電綫 6. 電網 7. 電線 8. 電能 9. 電費 10. 電費單 1. 以太幣 2. 加密貨幣 3. 虛擬貨幣 1. 歐元 2. 歐洲 3. 歐盟 1. 健身 2. 練習 3. 訓練 4. 賽跑 5. 跑步 6. 鍛煉 7. 馬拉松 1. 臉書 1. 侄子 2. 兒子 3. 外甥 4. 女兒 5. 孩子 6. 家庭 7. 家教 8. 戶口 9. 雙胞胎 1. dragon 2. 巫師 3. 巫術 4. 江湖傳說 5. 神話 6. 魔法師 7. 魔術 8. 龍 1. 時尚 2. 時髦 3. 流行 1. 必備 2. 必要 3. 必須 4. 標記 5. 重點 1. 美式橄欖球 2. 美式足球 3. 超級碗 1. 飛天意粉怪 2. 飛天意麵神教 3. 飛天義大利麺怪物 4. 飛天麵條神教 5. 飛面神教 6. 飛麵大神 7. 麺神 1. 好玩 2. 好笑 3. 幽默 4. 有趣 5. 段子 6. 笑話 1. 毛絨絨 2. 毛茸茸 1. 玩家 2. 遊戲 3. 電子競技 4. 電子遊戲 5. 電競 6. 電競選手 7. 電腦遊戲 8. 電視遊戲 1. 同鄉會 2. 學位 3. 學歷 4. 文憑 5. 校友 6. 校友會 7. 校友錄 8. 畢業 9. 縣友會 1. 商場 2. 大潤發 3. 買東西 4. 購物 5. 購物中心 6. 超市 7. 超級市場 8. 雜貨 1. 六弦琴 2. 古典吉他 3. 吉他 4. 吉他歌曲 5. 吉他課程 6. 夏威夷吉他 7. 尤克里里 8. 民謠吉他 9. 烏克麗麗 10. 電吉他 1. 健美 2. 力量訓練 3. 大力士 4. 抓舉 5. 挺舉 6. 肌肉 7. 肌肉鍛煉 8. 舉重 9. 重量訓練 10. 體操 1. jk羅琳 2. 佛地魔 3. 史萊哲林 4. 哈利波特 5. 格蘭芬多 6. 赫夫帕夫 7. 雷文克勞 8. 霍格華茨 1. 健康 2. 健體 3. 康健 4. 強壯 5. 活力 6. 節食 1. 休假 2. 假日 3. 假期 4. 度假 5. 戶外 6. 放假 7. 節假日 1. 到家 2. 回家 3. 家居 4. 居家 1. 主意 2. 創意 3. 奇思 4. 奇思妙想 5. 妙想 6. 想法 7. 靈感 8. 頭腦風暴 9. 點子 1. 收件匣 1. 信息 2. 資訊 1. 平板 2. 平板電腦 1. 蘋果手機 1. 傷心 2. 哭泣 3. 嚇人 4. 驚嚇 1. 交響樂 2. 古典樂 3. 巴哈 4. 歌劇 5. 爵士 6. 貝多芬 7. 鋼琴 8. 鋼琴曲 1. 紡織 2. 編織 3. 織 4. 織毛衣 1. 司法 2. 律師 3. 憲法 4. 正義 5. 法學 6. 法官 7. 法律 8. 法規 9. 立法 10. 訴訟 11. 陪審團 1. 烈性酒 2. 烈酒 3. 蒸餾酒 4. 酒精飲料 1. 列表 2. 名單 3. 日程表 4. 清單 1. 哈比人 2. 指環王 3. 霍比特人 4. 魔戒 1. amore 2. love 3. 七夕 4. 情人 5. 情人節 6. 愛情 7. 戀愛 8. 最喜歡 9. 珍愛人生 10. 約會 1. mac 2. pc 3. 軟體工程 4. 電腦 5. 電腦科學 1. 發郵件 2. 郵件 3. 電子郵件 4. 電郵 1. 化妝 2. 化妝品 3. 口紅 4. 唇膏 5. 唇釉 6. 彩妝 7. 粉底 8. 美妝 1. 瑪利歐 2. 超級瑪利歐 3. 超级玛丽 4. 超级马里奥世界 5. 超级马里奥兄弟 6. 超级马里奥奥德赛 7. 马里奥派对 8. 马里奥赛车 1. 圓周率 2. 數學 3. 算術 4. 自然對數 1. 俺 2. 個人的 3. 我 4. 我自己 5. 本人 6. 筆者 7. 自己 8. 自我 1. 彗星 2. 彗星尾 3. 流星 4. 流星体 1. 地下鐵路 2. 地鐵 3. 捷運 1. mic 2. 歌唱 3. 歌手 4. 歌星 5. 歌曲 6. 歌聲 7. 歌詞 8. 演唱會 9. 演說 10. 演講 11. 現場音樂 12. 直播 13. 話筒 14. 配音 15. 錄音 16. 音樂會 17. 麥克風 1. 最小 2. 最小化 1. 交稅 2. 儲蓄 3. 國稅 4. 地稅 5. 存款 6. 拮据 7. 支付 8. 現金 9. 稅務 10. 稅收 11. 繳稅 12. 行動支付 13. 資金 14. 金幣 15. 金錢 16. 鈔票 17. 預算 1. 午夜 2. 夜晚 3. 晚上 4. 晚間 5. 月亮 6. 月球 7. 月食 1. 摩托車 2. 機車 1. 木耳 2. 草菇 3. 菇 4. 菌類 5. 蘑菇 6. 香菇 1. 流行歌 2. 流行歌曲 3. 聽歌 4. 音樂 1. 可持續發展 2. 園藝 3. 植物 4. 植物園 5. 樹木 6. 環保 7. 環境 8. 自然 9. 花園 1. 書呆子 2. 讀書 3. 讀書列表 4. 讀書清單 5. 閱讀 1. 下一個 2. 之後 3. 後續 4. 後面 5. 然後 6. 而後 7. 隨後 1. 任天堂 1. 筆 2. 筆記 3. 記錄 4. 附注 1. 密碼 1. peace 2. 和平 1. 座機 2. 手機 3. 打電話 4. 電話 1. 像片 2. 回憶 3. 大頭照 4. 大頭貼 5. 拍照 6. 照相 7. 相冊 8. 記憶 9. 頭像 1. 水管 2. 水管工 3. 管道 4. 管道工 1. 披薩 2. 比薩 1. 位置 2. 到訪 3. 地圖 4. 地點 5. 場所 6. 景區 7. 景點 8. 訪問 9. 造訪 1. 方案 2. 步驟 3. 解決方案 4. 計畫 1. 遊戲機 1. 加 2. 有餘 3. 正面 4. 盈餘 5. 過剩 6. 陽性 7. 順差 1. podcast 2. podcasting 3. 播客 1. 古詩 2. 李白 3. 杜甫 4. 詩人 5. 詩情畫意 6. 詩歌 1. pokemon 2. 口袋妖怪 3. 口袋怪獸 4. 寵物小精靈 5. 寶可夢 6. 神奇寶貝 7. 精靈寶可夢 1. 政治 2. 競選 3. 選民 4. 選票 5. 選舉 1. shit 2. 便便 3. 大便 4. 屎 1. porn 2. 小電影 3. 日本av 1. 英鎊 1. 禮物 2. 送禮 3. 願望清單 1. 優先事項 2. 緊急 3. 至關重要 4. 重要 5. 重要事項 6. 需要跟進 7. 需要關注 1. 私隱 2. 隱私 1. 冠軍 2. 比賽 3. 獎勵 4. 獎品 5. 獎盃 6. 競賽 7. 錦標賽 1. 命令提示字元 2. 終端 1. 冥想 2. 心理 3. 心理學 4. 心理治療 5. 心理醫師 6. 心理醫生 1. 包包 2. 手提包 3. 錢包 1. faq 2. q&a 3. 問題 4. 提問 5. 疑惑 6. 疑慮 1. 古人雲 2. 名言 3. 子曰 4. 曾說過 5. 諺語 6. 警句 1. 彩虹 2. 霓 1. 樹莓 2. 樹莓派 1. 回執 2. 小票 3. 帳單 4. 收據 5. 發票 1. 紅迪 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 7. 瑞克和莫蒂 1. 齧齒動物 1. 大黃鴨 2. 小黃鴨 3. 橡皮鴨 4. 橡膠鴨 5. 鴨 6. 鴨子 1. 鑽石 1. 橄欖球 2. 橄欖球六國賽 3. 橄欖球聯盟 4. 英式橄欖球 1. 中學 2. 初中 3. 博士 4. 博士後 5. 國中 6. 大學 7. 學校 8. 學術 9. 學術研究 10. 學院 11. 專科 12. 小學 13. 幼兒園 14. 幼稚園 15. 托兒所 16. 教學 17. 教導 18. 教育 19. 班主任 20. 班級 21. 研究所 22. 碩士 23. 私塾 24. 老師 25. 高中 26. 高校 1. et 2. sci-fi 3. syfy 4. ufo 5. 外星人 6. 外星生命 7. 太空旅行 8. 太空梭 9. 太空船 10. 宇宙 11. 科幻 12. 陰謀論 1. 研究 2. 科學 3. 科學家 4. 科學研究 5. 科研 1. av 2. av女優 3. a片 4. sex 5. 做愛 6. 嘿咻 7. 性愛 8. 色情 9. 色情片 1. 旅遊鞋 2. 球鞋 3. 運動鞋 4. 靴子 5. 鞋子 1. shopping 2. 商店 3. 專賣 4. 小店 5. 工廠店 6. 血拼 1. 滑板 1. 吸煙 2. 抽煙 3. 捲煙 4. 煙草 5. 禁煙 6. 雪茄 7. 香煙 1. 英式足球 2. 足球 1. 噴射戰士 2. 漆彈大作戰 1. fiba 2. fifa 3. fivb 4. nba 5. nfl 6. sbl 7. super bowl 8. 三對三 9. 世界盃 10. 中超 11. 亞冠 12. 亞洲盃 13. 亞足聯 14. 加拿大足球 15. 國際足協 16. 國際足總 17. 國際足聯 18. 壘球 19. 女排 20. 女曲 21. 德甲 22. 意甲 23. 成棒 24. 曲棍球 25. 歐洲盃 26. 法甲 27. 法網 28. 溫布頓 29. 溫網 30. 澳網 31. 瓊斯盃 32. 籃球 33. 美網 34. 美職籃 35. 腰旗橄欖球 36. 英超 37. 西甲 38. 運動 39. 體育 40. 體育比賽 41. 鬥牛 1. 收藏 2. 明星 3. 星星 4. 星標 5. 最愛 1. 星艦迷 2. 星艦迷航記 3. 星際爭霸戰 1. star wars 2. 星戰 3. 星球大戰 4. 星際大戰 1. 暴風雨 2. 閃電 3. 雷電 4. 風暴 1. 太陽 2. 陽光 1. 泳池 2. 游泳 3. 游泳課 1. 喝茶 2. 沏茶 3. 泡茶 4. 茶水 5. 茶葉 6. 茶道 1. tech 2. 技術 3. 科技 1. 網球 1. 劇場 2. 劇院 3. 電影院 1. 不讚成 2. 不贊成 3. 反對 4. 失望 5. 差評 1. 好勁 2. 好嘢 3. 好犀利 4. 好評 5. 按贊 6. 正 7. 翹起大拇指 8. 贊 9. 超讚 1. 目錄 2. 章節 3. 索引 1. 事項列表 2. 任務 3. 待辦事項 4. 待辦列表 5. 目標 6. 計畫任務 1. gadget 2. 創造力 3. 實用工具 4. 小工具 5. 小組件 6. 工具 7. 教程 8. 維修 9. 說明書 1. 列車 2. 台鐵 3. 火車 4. 火車站 5. 鐵路 6. 鐵軌 1. 之旅 2. 旅行 3. 旅遊 1. 攀岩 2. 攀登 3. 爬山 4. 登山 5. 背包旅行 1. 三角形 1. 湯不熱 1. tvb 2. 內地劇 3. 大陸劇 4. 娛樂節目 5. 日劇 6. 港劇 7. 美劇 8. 英劇 9. 連續劇 10. 電視 11. 電視劇 12. 電視節目 13. 韓劇 1. 推特 1. 凸版印刷 2. 排印 3. 排版 4. 版式 5. 語法 1. 字元編碼 2. 字元集 3. 字符編碼 4. 字符集 5. 編碼 1. 原力黑暗面 2. 壞蛋 3. 安納金·天行者 4. 敵人 5. 維達 6. 達斯·維達 7. 黑暗面 1. blank 2. null 3. void 4. 無效 5. 空白 6. 缺少 1. 排球 2. 沙排 3. 沙灘排球 1. 中斷 2. 待機 3. 打擾 4. 暫停 5. 等一下 6. 等待 1. 手錶 1. 水 2. 水費 3. 水費單 4. 自來水 5. 雨 6. 雨水 1. 網 2. 網絡 3. 網路 4. 蜘蛛網 1. 丈夫 2. 內人 3. 妻子 4. 婚姻 5. 婚禮 6. 愛人 7. 新娘 8. 新郎 9. 結婚 10. 老公 11. 老婆 12. 配偶 1. 維基 2. 維基百科 1. 白葡萄酒 2. 紅葡萄酒 3. 紅酒 4. 葡萄酒 1. kpi 2. 事業 3. 工作 4. 應聘 5. 打工 6. 招聘 7. 求職 8. 生產力 9. 績效 10. 職位 11. 職業生涯 12. 行李 13. 行李箱 1. 世界 2. 全球 3. 國際 4. 地球 5. 星球 6. 行星 7. 跨國 1. 日元 2. 日圓 3. 日幣 1. 打坐 2. 瑜伽 3. 精神 4. 自我提升 5. 自身發展 1. 塞爾達 2. 塞爾達傳說 1. なし 2. ゼロ 3. ナシ 4. 無 1. 一 2. 最初 3. 第一 1. 二 2. 第二 1. 三 2. 第三 1. 四 2. 第四 1. 五 2. 第五 1. 六 2. 第六 1. 七 2. 第七 1. 八 2. 第八 1. 九 2. 第九 1. ai 2. ml 3. オートメーション 4. スカイネット 5. ディープラーニング 6. ニューラルネットワーク 7. ロボット 8. ロボット工学 9. ロボティクス 10. 人工知能 11. 機械学習 1. アニマル 2. ペット 3. 動物 4. 自然 1. アプリ 2. アプリケーション 3. ソフト 4. ソフトウェア 1. お絵かき 2. アート 3. イラスト 4. イラストレーション 5. クリエイティビティ 6. スケッチ 7. 創造性 8. 油絵 9. 絵画 10. 美術 11. 芸術 1. webページ 2. しおり 3. アブスト 4. アブストラクト 5. アーティクル 6. ウェブページ 7. ブックマーク 8. ブログ 9. ブログ投稿 10. ホームページ 11. リンク 12. 投稿 13. 栞 14. 記事 15. 議事録 1. もみじ 2. 秋 3. 紅葉 4. 落ち葉 1. 野球 1. ビューティー 2. 美 3. 美しさ 1. ビール 2. ブルワリー 3. 醸造所 4. 麦酒 1. mtb 2. サイクリスト 3. サイクリング 4. サイクル 5. サイクロクロス 6. スロープ 7. マウンテンバイク 8. 自転車 1. クルーザー 2. クルーズ 3. シップ 4. セーリング 5. セールボート 6. ナビゲーション 7. ボート 8. ヨット 9. 小型船 10. 小舟 11. 帆船 12. 船 1. エッセイ 2. ジャーナル 3. スクリプト 4. ストーリー 5. ストーリーテリング 6. ダイアリー 7. テキストブック 8. ノベル 9. ブック 10. ボキャブラリー 11. リファレンス 12. レファレンス 13. 出版 14. 出版物 15. 参考文献 16. 小説 17. 教科書 18. 文学 19. 文献 20. 日記 21. 書籍 22. 本 23. 物語 1. バグ 2. バグレポート 3. バグ報告 1. バス 1. ケーキ 2. バースデイ 3. バースデー 4. バースデーケーキ 5. 誕生日 1. 〆切り 2. いつか 3. イベント 4. カレンダー 5. 今日 6. 有効期限 7. 期日 8. 期限 9. 締め切り 1. カメラ 2. ピクチャー 3. フォト 4. フォトグラファー 5. レフレックス 6. 写真 7. 写真家 8. 画像 1. アウトドア 2. アクティビティ 3. キャンプ 4. キャンプファイヤー 5. キャンプ場 6. テント 7. ベースキャンプ 8. ボーイスカウト 9. 野外 1. カー 2. タクシー 3. 機動性 4. 移動 5. 移動性 6. 自動車 7. 車 1. ねこ 2. キャット 3. ネコ 4. 子猫 5. 猫 1. エンタメ 2. エンターテイメント 3. シネマ 4. トレイラー 5. ビデオ 6. フィルム 7. ムービー 8. ロードショー 9. 動画 10. 映画 11. 映画館 1. シティ 2. スカイライン 3. タウン 4. ダウンタウン 5. メトロポリタン 6. 大都市 7. 建築 8. 都市 9. 都市主義 1. ウェブクリップ 2. クリップ 3. 切り抜き 4. 新聞切り抜き 5. 添付ファイル 1. クラウド 2. クラウドコンピューティング 3. クラウドサービス 4. クラウドストレージ 1. カクテル 2. カクテルレシピ 1. コーヒー 2. 珈琲 1. アニメ 2. アニメーション 3. アメコミ 4. グラフィックノベル 5. コミック 6. コミック本 7. マンガ 8. 漫画 9. 漫画本 1. コンプリート 2. 完了 3. 承認 4. 決定 5. 決着 6. 終わり 7. 終了 8. 結末 9. 達成 1. ミーティング 2. ワークショップ 3. 会議 4. 電話カンファレンス 5. 電話会議 1. コンタクト 2. ネットワーキング 3. パーソン 4. パーティー 5. 人 6. 会合 7. 接触 8. 連絡先 1. コメント 2. チャット 3. フィードバック 4. 会話 5. 対話 6. 討論 7. 議論 1. キッチン 2. クッキング 3. グルメ 4. ディナー 5. ランチ 6. レシピ 7. レストラン 8. 料理 9. 朝食 10. 調理 11. 食べ物 12. 食堂 13. 食通 1. クリケット 1. rpg 2. ロールプレイングゲーム 3. ロール・プレイング 1. サイコロ 2. ダイス 3. パーティーゲーム 4. ボードゲーム 1. クラシックダンス 2. ダンサー 3. ダンシング 4. ダンス 5. バレエ 6. ボールルーム 7. 振り付け 8. 舞踏家 9. 踊り 1. admin 2. db 3. sqlサーバー 4. コアデータ 1. デザイナー 2. デザイン 1. オフィスビル 2. オープンスペース 3. キュービクル 4. コワーキング 5. デスク 6. 事務所 7. 職場 8. 雇用 1. コーディング 2. コード 3. スニペット 4. デベロッパー 5. プログラミング 6. 案件 7. 開発 8. 開発者 1. diy 2. ブリコラージュ 3. 日曜大工 4. 自作 1. 生物学 2. 自然科学 3. 遺伝 4. 遺伝子 5. 遺伝学 1. ドク 2. ドクター 3. メディカル 4. 内科医 5. 医師 6. 医療従事者 7. 医者 8. 外科医 1. doctor who 2. ドクター・フー 1. ドキュメント 2. ページ 3. ペーパー 4. レポート 5. 文書 6. 書類 7. 紙 1. ドック 2. パピー 3. 子犬 4. 犬 1. ドラフト 2. ラフ 3. 下書き 4. 草案 1. ドリーム 2. 予知夢 3. 夢 4. 正夢 5. 空想 1. ドラッグ 2. ピル 3. 丸薬 4. 処方 5. 処方箋 6. 医学 7. 医療 8. 医薬品 9. 投薬 10. 治す 11. 治癒 12. 薬 13. 薬物 1. ドラマー 2. ドラミング 3. ドラム 4. ドラムセット 5. 和太鼓 6. 太鼓 7. 太鼓セット 8. 太鼓演奏 1. エコノミー 2. チャート 3. データサイエンス 4. トレンド 5. ファイナンス 6. フィナンシャル 7. マーケティング 8. 投資 9. 株 10. 株価 11. 経済 12. 統計 13. 統計解析 14. 銀行 1. 稲妻 2. 雷 3. 電動 4. 電気 5. 電気代 6. 電気工事 7. 電気式 8. 電気技師 1. エクササイズ 2. ジョギング 3. フィットネス 4. マラソン 5. ランニング 6. ワークアウト 7. 運動 1. ファミリー 2. 双子 3. 娘 4. 子供 5. 子育て 6. 孫 7. 家庭 8. 家族 9. 息子 10. 祖母 11. 祖父 1. ウィザード 2. ウィザードリィ 3. トロール 4. ドラゴン 5. マジック 6. ワイバーン 7. 伝説 8. 冒険 9. 剣 10. 神話 11. 魔女 12. 魔法 13. 魔術 14. 魔術師 15. 黒魔術 16. 龍 1. ファッション 2. 服 3. 洋服 4. 衣服 1. フラグ 2. 重要 1. アメフト 2. アメリカンフットボール 3. フットボール 1. 空飛ぶスパゲッティ・モンスター 2. 空飛ぶスパゲッティ・モンスター教 3. 空飛ぶスパゲッティ・モンスター教信者 1. おもしろ 2. ジョーク 3. ユーモア 4. 冗談 5. 楽しい 6. 面白い 1. ゲーマー 2. ゲーミング 3. ゲーム 4. ビデオゲーム 1. 修士 2. 卒業 3. 卒業式 4. 卒業生 5. 博士号 6. 大学 7. 学士 8. 学生 1. ショッピング 2. ショッピングセンター 3. ショッピングモール 4. モール 5. 買い物 6. 買う 7. 食料品 1. 12弦 2. 7弦 3. 8弦 4. アコースティックギター 5. アコースティックベース 6. エレキギター 7. エレクトリックベース 8. ギター 9. ギターレッスン 10. ギター曲 11. クラシックギター 12. ベース 13. ベースギター 1. ウェイトトレーニング 2. ウエイト 3. ジム 4. トレーニング 5. パワーリフティング 6. ボディービルダー 7. ボディービルディング 8. マッスル 9. 筋力トレーニング 10. 筋肉 11. 重量挙げ 1. ダイエット 2. バイタリティ 3. ヘルシー 4. ヘルス 5. 健康 6. 栄養 1. トラベル 2. トリップ 3. バケーション 4. ホリデイ 5. ホリデー 6. 休み 7. 休暇 8. 旅 9. 旅行 1. ハウス 2. ホーム 3. 家 1. ひらめき 2. アイデア 3. インスピレーション 4. ブレインストーミング 5. ブレスト 6. 発想 1. 受信 2. 受信トレイ 3. 受信箱 1. インフォメーション 2. インフォーメーション 3. 情報 1. 怖い 2. 悲しい 3. 泣く 1. オペラ 2. オーケストラ 3. クラシック 4. ジャズ 5. ピアノ 6. ピアノレッスン 7. ピアノ曲 8. ピアノ音楽 9. 交響曲 10. 作曲 11. 古典 1. クロッシェ 2. クロッシェ編み 3. ソーイング 4. ニッティング 5. ニット 6. 手芸 7. 編み物 1. 主張する 2. 合法的 3. 弁護士 4. 憲法 5. 法人 6. 法律 7. 法的 8. 立法 9. 裁判官 10. 訴訟 11. 陪審 1. アルコール 2. ハードリカー 3. リキュール 4. 蒸留酒 5. 酒 6. 酒類 1. スケジュール 2. プログラム 3. リスト 4. 一覧 1. ホビット 2. ロード・オブ・ザ・リング 1. デート 2. バレンタイン 3. バレンタインデー 4. ラブ 5. ラブライフ 6. 好き 7. 愛 1. pc 2. コンピュータ 3. コンピュータサイエンス 4. ソフトウェアエンジニアリング 5. パソコン 6. マック 1. eメール 2. メール 3. 電子メール 1. 幾何学 2. 数学 3. 算数 1. あたし 2. わたし 3. オレ 4. パーソナル 5. 俺 6. 個人 7. 私 8. 自分 9. 自己 1. 彗星 2. 流れ星 3. 隕石 1. サブウェイ 2. メトロ 3. 地下鉄 1. コンサート 2. シンガー 3. スピーキング 4. トーク 5. パブリックスピーキング 6. ボーカル 7. マイク 8. マイクロフォン 9. ライブ 10. 曲 11. 歌 12. 歌う 13. 歌詞 14. 録音 15. 音声 1. ミニマリズム 2. ミニマル 1. お金 2. ウォレット 3. キャッシュ 4. ファイナンシャル 5. マネー 6. 予算 7. 支払い 8. 現金 9. 税金 10. 納税 11. 諸税 12. 貯金 13. 金融 1. ムーン 2. 夜 3. 夜中 4. 月 5. 月夜 6. 深夜 7. 真夜中 1. オートバイ 2. チョッパー 3. バイク 4. モーターサイクル 5. モーターバイク 1. きのこ 2. キノコ 3. マッシュルーム 1. ソング 2. トラック 3. ミュージック 4. 楽曲 5. 音楽 1. ガーデニング 2. サスティナブル 3. サステナビリティ 4. ネイチャー 5. プラント 6. 園芸 7. 植木 8. 植物 9. 環境 1. 読む 2. 読書 3. 読書リスト 1. 後方 2. 後続 3. 次 4. 次へ 1. アノテーション 2. ノート 3. ペン 4. メモ 5. 注釈 1. ピース 2. 平和 1. コール 2. テレフォン 3. テレホン 4. 発信 5. 着信 6. 通話 7. 電話 1. イメージ 2. フォトグラフ 3. フォトグラフィー 4. メモリー 5. 思い出 1. 下水道 2. 下水道料 3. 水道管 4. 配管 1. スポット 2. マップ 3. ロケーション 4. 人気エリア 5. 人気スポット 6. 地図 7. 場所 8. 観光地 9. 訪問 1. プラン 2. プランニング 3. 予定 4. 計画 1. プラス 2. ポジティブ 3. 加算 4. 正 5. 追加 6. 黒字 1. ポッドキャスト 1. ポエム 2. 執筆 3. 書く 4. 詩 1. ポケモン 1. キャンペーン 2. メガホン 3. ラリー 4. 政治 5. 選挙 6. 集会 1. うんこ 2. うんち 3. クソ 4. 糞 1. アダルト 1. ウィッシュリスト 2. ギフト 3. プレゼント 4. 贈り物 5. 贈答品 1. ファローアップ 2. 優先 3. 優先順位 4. 緊急 5. 至急 1. プライバシー 1. アワード 2. チャンピオン 3. チャンピオンシップ 4. トロフィー 5. 大会 6. 賞 7. 賞品 1. セラピスト 2. セラピー 3. 心理学 4. 心理学者 5. 心理療法士 6. 瞑想 7. 精神分析者 8. 精神科医 1. サイフ 2. ハンドバッグ 3. 財布 1. q&a 2. その他 3. ランダム 4. 疑問 5. 疑念 6. 質問 7. 質疑応答 1. 名言 2. 引用 1. レインボー 2. 虹 1. ラズベリー 1. インボイス 2. レシート 3. 紙幣 4. 請求書 5. 領収書 1. リック 2. リック&モーティ 3. リック+モーティ 4. リックとモーティ 5. リック・アンド・モーティ 6. リック・サンチェス 1. げっ歯類 2. ネズミ 3. 齧歯類 1. アヒル 2. ゴムアヒル 3. ゴム製アヒル 4. ラバーアヒル 5. ラバーダッキー 6. ラバーダック 1. ダイヤモンド 2. 宝石 3. 貴金属 1. ラグビー 2. 六カ国 1. アカデミック 2. アカデミー 3. カレッジ 4. クラス 5. ユニバーシティ 6. 先生 7. 勉強 8. 学問 9. 学校 10. 学科 11. 学習 12. 指導 13. 教育 14. 教育機関 15. 論文 16. 講師 1. alien invasion 2. conspiracy 3. conspiracy theories 4. conspiracy theory 5. flying saucer 6. reptilians 7. sci fi 8. sf 9. spacecraft 10. spacecrafts 11. syfy 12. ufo 13. エイリアン 14. スペースシップ 15. 地球外生命 16. 宇宙 17. 宇宙人 18. 宇宙旅行 19. 宇宙船 20. 未確認飛行物体 1. サイエンス 2. リサーチ 3. 研究 4. 研究機関 5. 科学 1. セックス 2. ポルノ 3. ポルノグラフィー 4. 性 1. シューズ 2. スニーカー 3. ブーツ 4. 靴 1. お店 2. ショップ 3. 小売 4. 店 5. 店舗 1. スケボー 2. スケート 3. スケートボーディング 4. スケートボード 1. たばこ 2. シガレット 3. タバコ 4. パイプ 5. 喫煙 6. 煙草 7. 葉巻 1. スノー 2. 冬 3. 寒い 4. 降雪 5. 雪 6. 雪の結晶 7. 雪印 8. 霜 1. サッカー 1. スポーツ 2. バスケ 3. バスケットボール 4. ビーチバレーボール 5. ベースボール 6. ホッケー 7. 庭球 8. 籠球 9. 蹴球 1. お気に入り 2. スター 3. スター付き 4. 星 5. 星付き 1. スターウォーズ 2. スター・ウォーズ 1. 太陽 1. スイマー 2. スイミングプール 3. 水泳 4. 泳ぐ 1. お茶 2. ティー 3. 紅茶 1. テクノロジー 2. 技術 1. テニス 1. シアター 2. 劇場 3. 演劇 1. ひどい 2. ダメ 3. ネガティブ 4. バッド 5. マイナス 6. 低評価 7. 嫌い 8. 残念 1. いいね 2. すばらしい 3. エクセレント 4. グッジョブ 5. グレート 6. ナイス 7. 最高 8. 高評価 1. 目次 2. 章 3. 索引 1. to do 2. todo 3. todoリスト 4. やること 5. やることリスト 6. ゴール 7. タスク 8. タスクリスト 9. チェッスリスト 10. 目標 1. gtd 2. ガジェット 3. ギズモ 4. ツール 5. ハウツー 6. プロジェクト 7. ユーティリティ 8. ユーティリティー 9. リペア 10. 生産性 11. 能率 12. 道具 13. 高膣 1. トレイン 2. 乗り換え 3. 乗換 4. 列車 5. 線路 6. 路線 7. 鉄道 8. 電車 9. 駅 1. ウォーキング 2. クライミング 3. トレッキング 4. ハイキング 5. バックパッキング 6. 登山 1. トライアングル 1. tv 2. tvシリーズ 3. テレビ 4. テレビシリーズ 5. テレビジョン 6. テレビ番組 1. タイポグラフィ 2. タイポグラフィー 3. 文法 1. エンコーディング 2. キャラクターセット 3. 文字セット 1. ダークシス 2. ロードベイダー 3. 悪 4. 悪役 5. 敵 6. 暗黒面 1. ヌル 2. ブランク 3. ボイド 4. 空白 1. バレー 2. バレーボール 3. ビーチバレー 1. 一時停止 2. 中断 3. 保留 4. 停止 5. 待ち合わせ 6. 待つ 1. ウォッチ 1. 水 2. 水道代 3. 水道料 4. 流れる水 5. 雨 6. 雨滴 1. www 2. インターネット 3. ウェブ 4. クモの巣 5. スパイダー 6. スパイダーウェブ 7. ネット 8. ネットワーク 9. ワールドワイドウェブ 10. 蜘蛛の巣 1. ウェディング 2. ウェディングリング 3. エンゲージリング 4. 夫 5. 妻 6. 指輪 7. 新郎 8. 結婚 9. 結婚式 10. 花嫁 11. 配偶者 1. ぶどう酒 2. ワイン 3. 白ワイン 4. 葡萄酒 5. 赤ワイン 1. キャリア 2. バゲージ 3. ビジネス 4. ラゲージ 5. ワーキング 6. ワーク 7. 仕事 8. 手荷物 9. 荷物 1. インターナショナル 2. グローバル 3. ワールド 4. 世界 5. 国際 6. 地球 7. 多国籍 8. 多言語 9. 惑星 1. スピリチュアル 2. マインドフルネス 3. ヨガ 4. 能力開発 5. 自己啓発 1. aucun 2. personne 3. rien 4. zéro 1. 1er 2. first 3. un 1. 2ème 2. deux 3. deuxième 1. 3ème 2. trois 3. troisième 1. 4ème 2. quatre 3. quatrième 1. 5ème 2. cinq 3. cinquième 1. 6ème 2. six 3. sixième 1. 7ème 2. sept 3. septième 1. 8ème 2. huit 3. huitième 1. 9ème 2. neuf 3. neuvième 1. automatisation 2. ia 3. intelligence artificielle 4. robot 5. robotique 6. robots 7. réseaus neurologiques 8. skynet 1. animal 2. animal domestique 3. animaux 4. vie sauvage 1. app 2. appli 3. logiciel 1. art 2. croquis 3. créativité 4. dessin 5. illustration 6. illustrations 7. peinture 1. article 2. articles 3. blog 4. blogueur 5. compte-rendu de réunion 6. docs 7. ecriture 8. extrait 9. extraits 10. lien 11. page web 12. papier 13. papiers 14. publication 1. automne 2. feuille 3. feuilles 1. baseball 1. beauté 1. bière 2. bières 3. brasserie 1. bicyclette 2. bicyclettes 3. cyclisme 4. cycliste 5. cyclistes 6. cyclocross 7. downhill 8. mountain bike 9. mountain biking 1. bateau 2. bateaux 3. croisière 4. naviguer 5. voile 6. voilier 7. voiliers 8. yacht 9. yachts 1. carnet 2. essai 3. histoires 4. journal 5. journaux 6. lecture 7. lire 8. littérature 9. livre 10. livres 11. narration 12. roman 13. référence 14. références 15. script 16. vocabulaire 1. bogue 2. bug 3. rapport de bogue 4. rapport de bug 1. autocar 2. bus 3. car 1. anniversaire 2. anniversaires 3. gâteau 4. gâteaux 1. aujourd'hui 2. calendrier 3. calendriers 4. date d'expiration 5. date d'échéance 6. dates d'échéance 7. un jour 8. événement 9. événements 1. appareil 2. appareil photo 3. cliché 4. image 5. photo 6. photographe 7. photographes 8. photos 9. reflex 10. shooting 1. camp de base 2. campeur 3. campeurs 4. campeuse 5. campeuses 6. camping 7. feu de camp 8. scoutisme 9. scouts 10. tente 11. terrain de camping 1. bagnole 2. mobilité 3. taxi 4. voiture 1. chaton 2. matou 3. minou 1. cinéma 2. divertissement 3. film 4. films 5. vidéo 6. vidéos 1. architecture 2. centre ville 3. métropolis 4. métropolitain 5. skyline 6. urbain 7. urbanisme 8. ville 9. villes 1. coupure 2. coupure web 3. pièce jointe 4. pièces jointes 1. calcul en cloud 2. nuage 3. nuages 4. stockage cloud 1. cocktail 2. cocktails 3. recettes de cocktail 1. café 2. cappuccino 3. espresso 1. bande dessinée 2. bd 3. dessin animé 4. manga 1. accompli 2. accomplie 3. accomplies 4. accomplis 5. complété 6. complétée 7. complétées 8. complétés 9. fini 10. finie 11. finies 12. finis 13. réussi 14. réussie 15. réussies 16. réussis 17. terminé 18. terminée 19. terminées 20. terminés 1. atelier 2. ateliers 3. conférence 4. conférence téléphonique 5. conférences téléphoniques 6. réunion 7. réunions 1. contact 2. contacts 3. fête 4. gens 5. personnes 6. socialiser 1. chat 2. chats 3. commentaire 4. commentaires 5. conversation 6. conversations 7. discussion instantanée 1. cafetéria 2. cuisine 3. déjeuner 4. dîner 5. nourriture 6. petit-déjeuner 7. recettes 8. restaurant 1. cricket 1. jeu de rôle 2. jeux de rôle 3. jouer un rôle 1. dé 2. dés 3. jeu de plateau 4. jeux de plateau 1. ballet 2. chorégraphie 3. danse 4. danse classique 5. danses 6. danseur 7. danseurs 8. danseuse 9. danseuses 1. admin 2. base de données 3. bdd 4. données core 5. serveur sql 1. design 2. designer 1. bureau 2. emploi 3. openspace 4. travail 1. code 2. coder 3. dév 4. développement 5. développeur 6. programmation 7. projet 1. a faire soi-même 2. bricolage 3. diy 4. do it yourself 1. adn 2. biologie 3. gènes 4. génétique 5. héréditaire 6. hérédité 7. science 8. scientifique 1. chirurgien 2. docteur 3. docteur en médecine 4. dr 5. medical doctor 6. praticien 1. doctor who 2. the doctor 1. document 2. documentation 3. documents 4. fichier 5. fichiers 6. page 7. pages 8. rapport 9. rapports 1. chien 2. chiot 1. brouillon 2. brouillon rapide 3. brouillons 4. mes brouillons 1. rêvasser 2. rêve 3. rêver 4. rêves 1. cure 2. cures 3. médical 4. médicament 5. médoc 6. médocs 7. ordonnance 8. ordonnances 9. pharmaceutique 10. pilule 11. pilules 1. batterie 2. batteries 3. batteur 4. batteurs 5. caisse claire 6. solo de batterie 7. tambour 8. tambours 9. tom 1. actions 2. banque 3. data science 4. economie 5. finance 6. graphique 7. graphiques 8. investissements 9. marketing 10. statistics 11. stats 12. tendance 13. tendances 14. économie 1. facture d'électricité 2. factures d'électricité 3. foudre 4. éclair 5. électricien 6. électriciens 7. électricité 8. électrique 1. course à pied 2. entraînement 3. exercice 4. marathon 5. running 1. enfants 2. famille 3. fille 4. filles 5. fils 6. foyer 7. jumeaux 8. jumelles 1. dragon 2. dragons 3. guivre 4. guivres 5. magie 6. mythe 7. mythes 8. mythologies 9. sorcellerie 10. sorcier 11. sorciers 12. sorcière 13. sorcières 1. ensemble 2. fashion 3. mode 4. vêtements 1. drapeau 2. essential 3. marquage 4. marqué 1. football américain 1. pastafarien 2. pastafariens 3. pastafarisme 1. blague 2. blagues 3. drôle 4. fun 5. humour 6. rigolo 1. gamer 2. gaming 3. jeu 4. jeu vidéo 5. jeux 6. jeux vidéo 1. diplôme 2. diplômé 3. diplômée 4. université 5. étudiant 6. étudiante 7. étudiantes 8. étudiants 1. acheter 2. centre commercial 3. commissions 4. courses 5. shopping 1. basse 2. basse acoustique 3. basse électrique 4. chansons guitare 5. cours de guitare 6. douze cordes 7. guitare 8. guitare acoustique 9. guitare basse 10. guitare classique 11. guitare électrique 12. huit cordes 13. sept cordes 1. bodybuilding 2. fitness 3. gym 4. gymnase 5. muscle 6. muscles 7. musculation 8. ppg 1. nutrition 2. perdre du poids 3. régime 4. santé 5. vitalité 1. congés 2. extérieur 3. vacances 4. voyage 5. voyages 1. maison 1. brainstorming 2. idée 3. idées 4. inspiration 5. pensées 1. boîte de réception 2. entrant 1. info 2. information 1. effrayant 2. pleurer 3. pleurs 4. triste 1. chansons piano 2. classique 3. composition 4. cours de piano 5. jazz 6. musique classique 7. musique piano 8. opéra 9. orchestre 10. piano 11. symphonie 1. coudre 2. couture 3. crochet 4. tricot 5. tricoter 1. avocat 2. constitution 3. juge 4. juridiction 5. juridique 6. jury 7. loi 8. légal 9. législation 10. procès 1. alcool 2. alcool fort 3. boissons distillée 4. distillats 5. liqueur 6. liqueur forte 7. liqueurs 1. liste 2. listes 3. listing 4. planification 5. programme 1. hobbit 2. le hobbit 3. le seigneur des anneaux 1. amour 2. cupidon 3. dating 4. favorite 5. rancard 6. rendez-vous 7. saint valentin 8. valentin 9. valentine 10. vie amoureuse 1. développement logiciel 2. informatique 3. ordinateur 4. ordinateurs 5. pc 1. courrier 2. courrier électronique 3. e-mail 1. géométrie 2. math 3. mathématiques 4. trigonométrie 1. moi 2. moi-même 3. personnel 1. comète 2. comètes 3. météore 4. météores 5. météorite 6. étoile filante 7. étoiles filantes 1. métro 1. chanson 2. chansons 3. chanter 4. chanteur 5. chanteurs 6. chanteuse 7. chanteuses 8. concert 9. concerts 10. enregistrement 11. live 12. micro 13. microphone 14. paroles 15. voix 1. minimal 2. minimalisme 3. minimum 1. argent 2. budget 3. economies 4. espèces 5. impôt 6. impôts 7. paiement 8. paiements 9. portefeuille 10. taxe 11. taxes 1. lune 2. minuit 3. nuit 4. nuits 1. chopper 2. moto 3. motocyclette 4. motocyclettes 5. motos 1. champignon 2. champignons 1. musique 1. durabilité 2. durable 3. environnement 4. environnemental 5. jardinage 6. nature 7. paysagiste 8. plante 9. planter 10. plantes 1. lectures 2. liste de lecture 3. à lire 1. après 2. ensuite 3. suivant 1. annotation 2. annotations 3. note 4. notes 5. stylo 6. stylos 1. paix 1. appel 2. appel téléphonique 3. appeler 4. appels 5. appels téléphoniques 6. tél 7. téléphone 8. téléphones 1. photographie 2. souvenirs 1. facture d'égout 2. factures d'égout 3. plomberie 4. plombier 5. tuyau 6. égout 1. a voir 2. carte 3. cartes 4. emplacement 5. endroits 6. lieu 7. lieux 8. visiter 1. plan 2. plans 3. résolutions 1. ajout 2. ajouter 3. plus 4. surplus 1. podcast 2. podcasts 1. poème 2. poésie 3. écriture 1. pikatchu 2. pokemon 1. mégaphone 2. politique 3. porte-voix 4. rassemblement 5. rassemblements 1. caca 2. merde 3. merdique 1. cadeau 2. liste de vœux 1. critique 2. important 3. priorité 4. priorités 5. suivi 6. suivi nécessaire 7. urgent 1. confidentialité 2. vie privée 1. champion 2. championnat 3. championnats 4. compétition 5. compétitions 6. coupe 7. coupes 8. prix 9. récompense 10. récompenses 11. trophée 12. trophées 1. méditation 2. psychiatre 3. psychologie 4. psychologue 5. psychothérapeute 6. thérapeute 7. thérapie 1. portemonnaie 2. sac à main 1. aléatoire 2. autre 3. divers 4. doute 5. doutes 6. question 7. question/réponse 8. questions 1. citation 1. arc-en-ciel 2. arcs-en-ciel 1. framboise 2. framboises 1. facture 2. factures 3. reçu 4. reçus 1. rick 2. rick & morty 3. rick + morty 4. rick et morty 5. rick sanchez 6. rick+morty 1. rat 2. rongeurs 3. souris 1. canard 2. canard en caoutchouc 3. canard en plastique 4. canards 5. canards en caoutchouc 6. canards en plastique 1. diamant 2. diamants 3. gemmes 4. pierre précieuse 5. pierre précieuses 1. rugby 2. six nations 1. apprentissage 2. classe 3. collège 4. ecole 5. education 6. enseignement 7. instruction 8. lycée 9. professeur 10. professeurs 11. scolaire 12. thèse 13. thésard 14. unversitaires 15. école 16. écoles 17. éducation 18. étude 19. études 1. alien 2. aliens 3. conspiration 4. invasion alien 5. ovni 6. reptiles 7. sci fi 8. sci-fi 9. science fiction 10. théorie du complot 11. univers 12. vaisseau spatial 13. vaisseaux spatiaux 14. vie extraterrestre 15. voyage dans l'espace 1. recherche 2. recherches 1. porno 2. pornographie 3. sexe 4. sexuel 1. basekts 2. bottes 3. chaussures 4. sneakers 1. magasin 2. revendeur 1. skate 2. skateboard 3. skateboarding 4. skateboards 1. cigare 2. cigares 3. cigarette 4. cigarettes 5. fumer 6. fumeur 7. fumeurs 8. fumeuse 9. fumeuses 10. fumée 11. pipe 12. tabac 1. chute de neige 2. flocon 3. frais 4. gel 5. hiver 6. neige 1. football 1. basketball 2. bate 3. hockey 4. sport 1. fav 2. favori 3. favoris 4. star 1. star wars 2. starwars 1. soleil 1. leçons de natation 2. nager 3. natation 4. piscine 1. thé 1. tech 2. technologie 3. technologies 4. techos 1. tennis 1. théâtral 2. théâtre 3. théâtres 1. horrible 2. mauvais 3. ne plus aimer 4. négatif 5. pouce vers le bas 6. pouces vers le bas 1. bon 2. excellent 3. fantastique 4. j'aime 5. positif 6. pouce vers le haut 7. pouces vers le haut 8. super 1. chapitres 2. index 3. table des matières 1. a faire 2. but 3. buts 4. checklist 5. checklists 6. liste de choses à faire 7. liste de tâches 8. todo 9. tâche 10. à faire 1. gadget 2. gadgets 3. outil 4. outils 5. productivité 6. réparer 7. utilitaire 8. utilitaires 1. chemin de fer 2. gare 3. rails 4. train 5. trains 6. transit 1. escalade 2. escalader 3. rando 4. randonnée 5. sac à dos 1. triangle 1. emission tv 2. emission télé 3. show tv 4. show télé 5. série tv 6. série télé 7. tv 8. télévision 1. grammaire 2. typographie 1. codage 2. ensemble de caractères 1. côté obscur 2. ennemi 3. ennemis 4. méchant 5. palpatine 6. seigneur sith 7. seigneur vador 8. vilain 1. nul 2. vide 1. beach volley 2. volley 3. volleyball 1. attente 2. attentes 3. en attente 4. en pause 5. interrompu 6. pause 1. montre 1. eau 2. eau courante 3. facture d'eau 4. factures d'eau 5. goutte de pluie 6. pluie 1. internet 2. net 3. réseau 4. réseaux 5. toile d'araignée 6. toiles d'araignée 7. web 8. world wide web 1. alliances 2. femme 3. mari 4. mariage 5. mariages 6. marié 7. mariée 8. matrimonial 9. épouse 10. époux 1. vin 2. vin blanc 3. vin rouge 4. vins 1. bagage 2. bagages 3. carrière 4. job 5. profession 1. global 2. globale 3. globales 4. globaux 5. globe 6. international 7. internationale 8. internationales 9. internationaux 10. monde 11. mondial 12. mondiale 13. mondiales 14. mondiaux 15. planète 16. planètes 17. terre 1. développement personnel 2. pleine conscience 3. spirituel 4. yoga 1. keine 2. keiner 3. leer 4. nichts 5. niemand 6. null 1. eins 2. erster 1. zwei 2. zweiter 1. drei 2. dritter 1. vier 2. vierter 1. fünf 2. fünfter 1. sechs 2. sechster 1. sieben 2. siebter 1. acht 2. achter 1. neun 2. neunter 1. ai 2. automation 3. deep learning 4. ki 5. künstliche intelligenz 6. machine learning 7. roboter 8. robotik 9. singularität 10. skynet 1. säugetier 2. tier 3. tierchen 4. tiere 5. tierisch 1. app 2. applikation 3. apps 4. software 1. bild 2. gemälde 3. illustration 4. kreativ 5. kreativität 6. kunst 7. kunstvoll 8. künstler 9. künstlerisch 10. maler 11. malerei 1. absatz 2. abstrakt 3. artikel 4. blog 5. blog post 6. blog-posting 7. bookmark 8. dokumente 9. geschriebenes 10. papers 1. blatt 2. blätter 3. herbst 1. baseball 2. baseballteam 1. beauty 2. eitelkeit 3. schönheit 1. bier 2. bierbrauerei 3. bierschenke 4. brauerei 5. gerstensaft 6. schenke 1. damenrad 2. fahrrad 3. fahrradfahren 4. fahrräder 5. mountainbike 6. radfahren 1. boot 2. boote 3. kreuzfahrt 4. navigation 5. navigieren 6. schiff 7. schiffe 8. seefahrt 9. segel 10. segelboot 11. segelboote 12. segeln 13. yacht 14. yachten 1. buch 2. buchrücken 3. buchseiten 4. bücher 5. geschichten 6. journal 7. lektüre 8. lesestoff 9. literatur 10. publikation 11. roman 12. romane 13. skriptum 14. tagebuch 15. tagebuchführung 16. tagebücher 17. vokabel 18. vokabular 1. bug 2. käfer 1. bus 2. busse 1. feier 2. geburtstag 3. geburtstage 4. kerze 5. kuchen 6. party 1. abgabedaten 2. heute 3. kalender 4. termin 5. termine 6. terminkalender 1. bilder 2. fotoapparat 3. fotograf 4. fotografen 5. fotografien 6. fotos 7. kamera 8. kameras 9. photo 10. photos 11. reflex 1. camping 2. campinglager 3. campingplatz 4. lagerfeuer 5. zelt 6. zelten 7. zeltplatz 1. auto 2. autofahrt 3. automobil 4. coupé 5. fahrzeug 6. fortbewegung 7. limousine 8. mobilität 9. taxi 1. fellnase 2. katze 3. kätzchen 4. mieze 5. samtpfote 6. stubentiger 1. film 2. kinofilm 3. leinwand 4. spielfilm 5. video 1. architektur 2. großstadt 3. kleinstadt 4. metropole 5. stadt 6. städte 7. städtisch 1. ausschnitte 2. clippings 3. papierschnitzel 4. schnipsel 5. zeitungsschnipsel 6. zeitungsschnitzel 1. cloud 2. cloud speicher 3. computer cloud 4. wolke 5. wolken 6. wolkig 1. cocktail 2. cocktail-empfang 3. cocktails 4. mischgetränk 1. kaffee 2. kaffeetasse 1. cartoon 2. comicheft 3. comics 4. manga 1. abgeschlossen 2. beendet 3. concluded 4. erreicht 5. fertig 6. fertiggestellt 7. zu ende gebracht 1. besprechung 2. besprechungen 3. konferenz 4. meeting 5. skype-konferenz 6. telefonkonferenz 7. workshop 1. bekanntschaften 2. kontakte 3. network 4. networking 5. personen 1. feedback 2. kommentar 3. konversation 4. konversationen 5. tratsch 6. tratschen 7. unterhaltung 8. unterhaltungen 1. essen 2. kochbuch 3. kochen 4. küche 5. pfanne 6. rezept 7. rezepte 1. cricket 2. cricket-team 3. cricketteam 4. kricket 5. kricket-team 6. kricketteam 1. d-20 2. d20 3. rollenspiel 4. rollenspieler 5. rpg 6. rpgs 1. brettspiel 2. brettspiele 3. d6 4. glücksspiel 5. partyspiele 6. würfel 1. ballett 2. ballsaal 3. choreographie 4. dance 5. dancer 6. danve moves 7. tanz 8. tänze 9. tänzer 1. datenbank 2. datenregister 3. db 4. mysql 5. oracle 6. recherchedatenbank 7. sql 8. sql server 9. zugriffsdatenbank 1. design 2. designer 1. arbeitsplatz 2. arbeitstisch 3. büro 4. bürotisch 5. pult 6. schreibpult 7. schreibtisch 8. tisch 1. code 2. coden 3. coding 4. developer 5. development 6. entwerfen 7. entwickler 8. entwicklung 9. programmieren 10. programmiersprache 11. programmierung 12. projekte 1. diy 2. do it yourself 3. selbstgemacht 4. selfmade 1. dna 2. dns 3. gene 4. genetik 5. genetisch 6. rna 7. vererblich 8. vererbt 1. arzt 2. chirurg 3. doktor 4. dr. 1. doctor who 2. the doctor 1. bericht 2. berichte 3. dokument 4. dokumentation 5. seite 6. seiten 7. unterlagen 1. hund 2. hunde 3. hündchen 1. ausarbeitung 2. entwurf 3. entwürfe 4. grober entwurf 5. konzept 6. skizze 7. zeichnung 1. tagtraum 2. tagträumer 3. traum 4. träumer 5. träumerei 6. wunschtraum 1. drogen 2. medikamente 3. medizin 4. pharma 5. pharmazeutisch 6. pillen 1. drummer 2. drums 3. schlagzeug 4. schlagzeuger 5. trommel 6. trommeln 7. trommler 1. bank 2. finanzgeschäft 3. geldwirtschaft 4. grafik 5. investment 6. konjunktur 7. marketing 8. marktwirtschaft 9. sparsam 10. spekulation 11. statistik 12. statistiken 13. statistiker 14. tabelle 15. trend 16. trends 17. wachstum 18. wirtschaft 19. wirtschaften 20. wirtschaftlich 21. wirtschaftliche lage 22. wirtschaftlichkeit 23. wirtschaftswachstum 24. Ökonomie 1. elektrisch 2. elektrizität 3. elektro 4. spannung 5. strom 6. stromfluss 7. stromstärke 8. widerstand 1. lauf 2. laufen 3. leichtathletik 4. marathon 5. training 6. workout 7. übung 1. eltern 2. familie 3. familienleben 4. familienverband 5. familienverbund 6. familiär 7. kinder 1. drachen 2. fantasy 3. fantasy-game 4. fantasy-spiel 5. hexen 6. hexerei 7. magie 8. zauberei 9. zauberer 1. fashion 2. kleidung 3. kleidungsstück 4. kleidungsstücke 5. mode 6. modisch 1. fahne 2. flagge 3. kennzeichnung 1. american football 2. football 1. fliegendes spaghettimonster 2. pastafari 3. pastafarianismus 1. gelächter 2. humor 3. lachen 4. lustig 5. scherz 6. spaß 7. witz 8. witzig 1. games 2. gaming 3. spiel 4. videospiel 5. videospiele 1. abitur 2. abschluss 3. bachelor 4. diplom 5. graduierung 6. master 7. schüler 8. student 9. studenten 1. einkauf 2. einkaufen 3. essenseinkauf 4. lebensmitteleinkauf 5. shopping mall 6. shoppingcenter 7. täglicher einkauf 1. akustische gitarre 2. bassgitarre 3. e-gitarre 4. elektrische gitarre 5. gitarren 6. gitarrensolo 7. gitarrenverstärker 1. bodybuilder 2. bodybuilding 3. fitnessstudio 4. gewichtheben 5. hanteln 6. krafttraining 7. muckibude 8. muskelaufbau 1. agilität 2. ernährung 3. gesund 4. gesundheit 5. gesundheitssystem 6. lebhaftigkeit 7. vitalität 1. feiertag 2. reisen 3. trip 4. trips 5. urlaub 6. urlauben 7. urlaubsreise 1. haus 2. nach hause 3. zu hause 4. zuhause 1. ahnung 2. brainstorming 3. gedanken 4. geistesblitz 5. idee 6. ideen 7. inspiration 8. inspiriert 1. brief 2. eingehend 3. nachricht 4. nachrichten 5. posteingang 1. information 2. informationen 3. infos 1. isaac 2. isaak 1. keyboard 2. klassik 3. klaviatur 4. klavier 5. klavierstunden 6. pianostunden 1. häkeln 2. knüpfen 3. nähen 4. stricken 1. anwalt 2. anwaltlich 3. legal 4. legislation 5. recht 6. rechtens 7. rechtlich 8. rechtsprechend 9. richter 10. richterlich 11. verfassung 1. destillat 2. destilliertes getränk 3. fusel 4. likör 5. liköre 6. schnaps 1. auflistung 2. aufzählung 3. liste 4. listen 5. register 6. verzeichnis 1. bilbo 2. der herr der ringe 3. der hobbit 4. gollum 5. hdr 6. herr der ringe 7. lord of the rings 1. daten 2. hingabe 3. leidenschaft 4. liebe 5. lieben 6. liebesleben 7. liebespaar 8. mag 9. mögen 10. passion 11. pärchen 12. verehrer 13. verehrerin 14. vergötterung 15. verliebt 16. verliebtheit 17. zuneigung 1. apple 2. computer 3. it 4. macintosh 5. pc 6. rechner 1. email 2. emails 3. mail 4. mails 5. post 1. geometrisch 2. mathematik 3. mathematisch 1. ich 2. mich 3. mir 4. persönlich 5. selbst 1. komet 2. kometen 3. meteor 4. meteore 5. meteoroid 6. sternschnuppe 7. sternschnuppen 1. metro 2. straßenbahn 3. u-bahn 1. lautsprechen 2. mic 3. mikro 4. mikrofon 5. singen 6. songs 7. stimme 1. minimal 2. minimalismus 3. minimalistisch 1. bargeld 2. budget 3. cash 4. einkommen 5. einnahmen 6. finanz 7. finanzen 8. finanziell 9. gehalt 10. geld 11. geldangelegenheiten 12. steuern 13. währung 14. zahlung 15. zahlungen 16. zahlungsmittel 1. mitternacht 2. mond 3. mondaufgang 4. mondlicht 5. mondschein 6. mondsichel 7. nacht 8. sichel 1. bike 2. biker 3. chopper 4. motorrad 5. motorradfahrer 1. mushroom 2. pilz 3. pilze 4. schwammerl 5. shroom 1. gesang 2. lied 3. musik 4. musiker 1. fauna 2. flora 3. freien 4. gartenarbeit 5. im freien 6. nachhaltig 7. natur 8. pflanze 9. pflanzen 10. umwelt 1. brillenschlange 2. lesen 3. nerd 4. techie 1. danach 2. folgende 3. nächste 4. nächster 5. vor 6. weiter 1. anmerkung 2. anmerkungen 3. mitschrift 4. mitschriften 5. notieren 6. notiz 7. notizen 8. vermerk 9. vermerke 1. friede 1. anruf 2. anrufe 3. anrufen 4. handy 5. handyanruf 6. handyanrufe 7. handys 8. mobiltelefon 9. smartphone 10. telefon 11. telefonanruf 12. telefonanrufe 13. telefone 1. aufnahme 2. aufnahmen 3. aufnehmen 4. foto 5. fotografie 1. installateur 2. leitung 3. rohr 4. rohrleitung 5. röhre 6. schlauch 1. karte 2. ort 3. orte 4. platz 5. position 6. standort 7. stelle 8. Örtlichkeit 1. bauplan 2. baupläne 3. grundriss 4. plann 5. pläne 6. vorgenommenes 1. hinzufügen 2. plus 3. rechnen 4. überschuss 1. podcast 2. podcasts 1. dichter 2. dichterkunst 3. gedicht 4. poesie 5. schreiben 1. pokemon 1. botschafter 2. diplomat 3. diplomatie 4. politik 5. politiker 6. wahlkampf 1. exkremente 2. häufchen 3. kacke 4. scheiße 1. geburtstagsgeschenk 2. geschenk 3. geschenke 4. schenken 5. weihnachtsgeschenk 1. dringend 2. priorität 3. prioritäten 4. wichtig 1. geheimnis 2. privat 3. privatsphäre 1. auszeichnung 2. belohnung 3. gewinn 4. gewinner 5. preis 6. preisgeld 7. sieger 8. trophäe 9. trophäen 10. wettbewerb 1. freud 2. meditation 3. psychiater 4. psychoanalyse 5. psychologie 6. seelenkunde 7. seelsorger 8. theraopie 1. handtasche 2. tasche 3. umhängetasche 1. anzweifeln 2. anzweiflung 3. frage 4. fragen 5. hinterfragen 6. zweifel 1. zitat 2. zitate 1. regenbogen 1. raspberry 1. empfang 2. erhalt 3. rechnung 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 1. nagen 2. nager 3. nagetiere 1. badeente 2. badeenten 3. gummiente 4. gummienten 1. edelstein 2. roter edelstein 3. rubin 4. rubinrot 1. rugby 2. rugbyspiel 1. akademie 2. akademisch 3. ausbildungsstätte 4. bildung 5. bildungsstätte 6. einschreiben 7. inskribieren 8. kurs 9. lehre 10. lehren 11. lehrer 12. lehrpersonal 13. lernanstalt 14. lernen 15. matrikel 16. schulbücher 17. schule 18. schulen 19. schulgebäude 20. schulisch 21. studien 22. uni 23. universität 24. vorlesung 1. alien 2. fliegende untertasse 3. fremd 4. raumschiff 5. sci-fi 6. science fiction 7. ufo 8. unerklärt 9. verschwörung 1. empirisch 2. forscher 3. forschung 4. wissen 5. wissenschaft 6. wissenschafter 7. wissenschaftlich 1. bumsen 2. ficken 3. porno 4. porno-video 5. pornografie 6. sex 1. fußbekleidung 2. schuh 3. schuhe 1. geschäft 2. shop 3. shopping 4. verhandeln 1. skateboard 2. skaten 3. skater 1. rauch 2. rauchen 3. raucher 4. zigaretten 5. zigarre 1. eis 2. frost 3. kalt 4. schnee 5. schneefall 6. schneeflocke 7. winter 1. fußball 2. fußballfeld 3. fußballplatz 4. fußballteam 1. basketball 2. bewegung 3. bundesliga 4. champions league 5. hallenhockey 6. hockey 7. liga 8. pokal 9. quarterback 10. sport 11. sportlich 12. tennisspielen 13. tennisspieler 14. volley 1. favorisieren 2. favorit 3. favoriten 4. lesezeichen 5. stern 6. sternbild 1. krieg der sterne 2. star wars 3. starwars 1. solar 2. sonne 3. sonnen 1. bademeister 2. schwimmen 3. schwimmer 4. schwimmerin 5. schwimmlehrer 6. schwimmstunden 7. schwimmunterricht 8. swimming pool 1. früchtetee 2. kräutertee 3. tee 1. tech 2. technik 3. technologie 1. tennis 2. tennisball 3. tennisplatz 1. aufführung 2. kino 3. schauspielhaus 4. theater 5. theateraufführung 6. theatersaal 1. daumen runter 2. dislike 3. furchtbar 4. negativ 5. schlecht 1. daumen hoch 2. exzellent 3. genial 4. gut 5. like 6. positiv 7. toll 1. index 2. inhaltsangabe 3. inhaltsverzeichnis 4. inhaltsverzeichnisse 5. inhaltsübersicht 1. agenda 2. checkliste 3. fertigstellen 4. to do 5. to-do-liste 6. todo 7. todo-liste 8. ziel 9. ziele 10. zu tun 1. arbeitsmittel 2. handwerk 3. handwerker 4. handwerkszeug 5. hilfsmittel 6. instrumente 7. projekt 8. werkzeug 9. werkzeuge 1. bahnhof 2. gleis 3. reise 4. schienen 5. transit 6. zug 7. zugfahrt 8. züge 1. bereisen 2. exkursion 3. weltreise 1. campen 2. klettern 3. rucksackreisen 4. rucksacktour 5. trekken 6. trekking 7. wandern 8. wanderung 1. dreieck 2. triangel 1. fernsehen 2. serie 3. tv 4. tv-serie 1. buchdruck 2. druck 3. grammatik 4. typographie 1. codieren 2. codierung 3. kodieren 4. kodierung 5. textcodierung 6. textkodierung 7. unicode 1. anakin skywalker 2. darth vader 3. dunkle seite der macht 4. dunkler sith 5. sith lord 1. blank 2. hohl 3. leere 4. leeregefühl 1. beachvolleyball 2. volleyball 3. volleyballfeld 4. volleyballplatz 1. einhalt 2. pause 3. unterbrechung 4. warten 5. warterei 1. armbanduhr 2. schweizer uhrwerk 3. uhr 1. flüssig 2. flüssigkeit 3. regen 4. tropfen 5. wasser 6. wasserstoff 1. internet 2. net 3. netz 4. netze 5. netzwerk 6. netzwerke 7. spinnennetz 8. spinnennetze 9. web 10. world wide web 1. braut 2. bräutigam 3. ehe 4. ehefrau 5. ehemann 6. ehering 7. eheringe 8. heirat 9. hochzeit 10. hochzeiten 1. rotweine 2. weingut 3. weinkeller 4. weinkellerei 5. weißweine 6. winzerei 1. angestellte 2. angestellter 3. arbeit 4. arbeiten 5. arbeitsstelle 6. ausbildung 7. beruf 8. beschäftigung 9. job 10. karriere 11. produktivität 12. tätigkeit 1. erdball 2. erde 3. global 4. globus 5. international 6. planet 7. welt 8. weltweit 1. ausgeglichenheit 2. persönliche entwicklung 3. selbstfindung 4. spirituell 5. yoga 1. cero 2. nada 3. nadie 4. ninguna 5. ningunas 6. ningunos 1. 1.er 2. 1.ª 3. 1.º 4. 1er 5. 1ª 6. primer 7. primera 8. primeras 9. primero 10. primeros 11. uno 1. 2.ª 2. 2ª 3. 2º 4. dos 5. segunda 6. segundas 1. 3.ª 2. 3ª 3. 3º 4. tercer 5. tercera 6. terceras 7. tercero 8. terceros 9. tres 1. 4.ª 2. 4ª 3. 4º 4. cuarta 5. cuartas 6. cuatro 1. 5.ª 2. 5ª 3. 5º 4. cinco 5. quinta 6. quintas 7. quinto 8. quintos 1. 6.ª 2. 6ª 3. 6º 4. seis 5. sexta 6. sextas 7. sexto 8. sextos 1. 7.ª 2. 7ª 3. 7º 4. siete 5. séptima 6. séptimas 7. séptimo 8. séptimos 1. 8.ª 2. 8ª 3. 8º 4. ocho 5. octavo 6. octavos 1. 9.ª 2. 9ª 3. 9º 4. novena 5. novenas 6. noveno 7. novenos 8. nueve 1. aprendizaje automático 2. aprendizaje profundo 3. automatización 4. deep learning 5. ia 6. inteligencia artificial 7. machine learning 8. ml 9. red neural 10. red neuronal 11. redes neurales 12. redes neuronales 13. robot 14. robots 15. robótica 16. skynet 1. animal 2. animales 3. animales salvajes 4. mascota 5. mascotas 1. aplicaciones 2. aplicación 3. app 4. apps 5. software 1. arte 2. boceto 3. creatividad 4. dibujo 5. ilustración 6. pincel 7. pincelada 8. pintura 9. pinturas 10. trazo 1. abstract 2. acta 3. artículo 4. artículos 5. blog 6. blogs 7. docs 8. enlace 9. enlace web 10. enlaces 11. enlaces web 12. entrada de blog 13. escribir 14. escrito 15. escritura 16. marcar 17. paper 18. post 19. post de blog 20. publicaciones 21. redacción 22. reseña 1. otoñal 2. otoñales 3. otoño 4. otoños 1. baseball 2. béisbol 1. belleza 2. estética 1. birra 2. birras 3. caña 4. cañas 5. cervecería 6. cervecerías 7. cerveza 8. cervezas 1. bici 2. bicicleta 3. bicicletas 4. bicis 5. ciclista 6. ciclistas 7. cyclocross 8. mountain bike 9. mtb 1. barca 2. barcas 3. barcos 4. crucero 5. cruceros 6. embarcaciones 7. embarcación 8. remar 9. remo 10. velero 11. veleros 12. yate 13. yates 1. cuento 2. cuentos 3. diario 4. diarios 5. ejemplar 6. guion 7. guiones 8. guión 9. historias 10. impreso 11. lectura 12. libro 13. libros 14. literatura 15. manual 16. manuales 17. novela 18. novelas 19. obra 20. publicación 21. referencia 22. referencias 23. vocabulario 24. volumen 1. bicho 2. bichos 3. insecto 4. insectos 1. autobús 2. autobúses 3. autocar 4. autocares 5. bus 6. buses 1. cumpleaños 2. pastel 3. pasteles 4. tarta 5. tartas 1. algún día 2. calendario 3. calendarios 4. en algún momento 5. evento 6. eventos 7. fecha de entrega 8. fecha límite 9. fechas límite 10. hoy 1. cámara 2. cámaras 3. fotografía 4. fotografías 5. fotos 6. fotógrafa 7. fotógrafas 8. fotógrafo 9. fotógrafos 10. imagen 11. imágenes 12. reflex 13. réflex 1. acampando 2. acampar 3. campamento 4. campamentos 5. camping 6. campista 7. campistas 8. tienda de campaña 1. auto 2. automovilismo 3. automóvil 4. automóviles 5. carro 6. coche 7. coches 8. movilidad 9. taxi 10. vehículo 11. vehículos 1. felino 2. felinos 3. gatito 4. gatitos 5. gato 6. gatos 7. minino 8. mininos 1. cine 2. cinema 3. film 4. gran pantalla 5. peli 6. pelis 7. película 8. películas 9. video 10. videos 11. vídeo 12. vídeos 1. arquitectura 2. ciudad 3. ciudades 4. metrópolis 5. panorama urbano 6. skyline 7. urbana 8. urbanas 9. urbanismo 10. urbano 11. urbanos 1. adjunto 2. adjuntos 3. clippings 4. news clippings 5. press clippings 6. recorte de prensa 7. recortes de prensa 8. web clippings 1. almacenamiento en la nube 2. nube 3. nubes 4. nublado 1. cocktail 2. cocktails 3. cóctel 4. cócteles 5. receta de cóctel 6. recetas de cócteles 1. café 1. anime 2. cómic 3. cómics 4. dibujos 5. historieta 6. manga 7. novela gráfica 8. novelas gráficas 9. tebeo 10. tebeos 1. aprobada 2. aprobadas 3. aprobado 4. aprobados 5. completada 6. completadas 7. completado 8. completados 9. finalizada 10. finalizadas 11. finalizado 12. finalizados 13. terminada 14. terminadas 15. terminado 16. terminados 1. conferencia 2. conferencias 3. reuniones 4. reunión 5. teleconferencia 6. teleconferencias 1. contactar 2. contactos 3. gente 4. networking 5. persona 6. personas 1. chat 2. chats 3. comentario 4. comentarios 5. conversaciones 6. conversación 7. opiniones 8. opinión 1. alimento 2. alimentos 3. cena 4. cocina 5. cocinar 6. comida 7. desayuno 8. gastronomía 9. receta 10. recetas 11. rentaurantes 12. restaurante 1. cricket 2. críquet 1. juego de rol 2. juegos de rol 3. rol 4. rpg 5. rpgs 1. cubilete 2. cubiletes 3. dado 4. dados 5. juego de mesa 6. juegos de mesa 1. bailar 2. bailarina 3. bailarinas 4. bailarines 5. bailarín 6. baile 7. ballet 8. coreografía 9. danza 10. danza clásica 11. danzas 12. sala de fiestas 13. salón de baile 1. admin 1. diseñador 2. diseñadores 3. diseño 4. diseños 1. coworking 2. edificio de oficinas 3. empleo 4. escritorio 5. escritorios 6. espacio de trabajo 7. lugar de trabajo 8. mesa de trabajo 9. oficina 10. oficinas 1. desarrollo 2. escribir código 3. programación 4. programador 5. programadores 6. programar 7. proyecto 8. proyectos 1. bricolaje 2. manualidad 3. manualidades 1. biología 2. ciencias naturales 3. gen 4. genes 5. genética 6. genéticas 7. genético 8. genéticos 9. hereditaria 10. hereditarias 11. hereditario 12. hereditarios 1. cirugía 2. cirujana 3. cirujanas 4. cirujano 5. cirujanos 6. doctor 7. doctora 8. doctoras 9. doctores 10. dr. 11. medicina 12. mir 13. médica 14. médicas 15. médico 16. médicos 1. doctor misterio 2. doctor who 1. documentación 2. documento 3. documentos 4. informe 5. informes 6. página 7. páginas 1. cachorro 2. cachorros 3. perrito 4. perritos 5. perro 6. perros 1. borrador 2. borradores 3. mis borradores 1. ensoñación 2. soñar 3. sueño 4. sueños 1. farmacia 2. farmacéutico 3. fármaco 4. medicación 5. medicamento 6. medicamentos 7. pastilla 8. pastillas 9. prescripciones 10. prescripción 11. píldora 12. píldoras 13. receta médica 14. recetas médicas 1. baqueta 2. baquetas 3. baterista 4. bateristas 5. bombo 6. bombos 7. percusionista 8. percusionistas 9. percusión 10. tambor 11. tambores 12. tamboril 13. tamboriles 1. banca 2. banco 3. bancos 4. ciencia de datos 5. economía 6. estadística 7. estadísticas 8. financiera 9. financieras 10. financiero 11. financieros 12. inversiones 13. inversión 14. marketing 15. mercado 16. mercados 1. electricidad 2. electricista 3. electricistas 4. eléctrica 5. eléctricas 6. eléctrico 7. eléctricos 8. rayo 9. rayos 10. relámpago 11. relámpagos 1. correr 2. deportes 3. ejercicio 4. ejercicios 5. entrenamiento 6. entrenamientos 7. entrenar 8. maratón 9. runner 1. familia 2. gemelas 3. gemelos 4. hija 5. hijas 6. hijo 7. hijos 8. mellizas 9. mellizos 10. niños 11. parentesco 1. bruja 2. brujería 3. brujo 4. dragones 5. dragón 6. duende 7. duendes 8. folklore 9. lamia 10. lamias 11. leyenda 12. leyendas 13. magia 14. mago 15. magos 16. mito 17. mitología 18. mitológico 19. mitos 1. atuendo 2. atuendos 3. estilo 4. moda 5. modelito 6. modelitos 7. modelo 8. modelos 9. ropa 1. importante 2. importantes 1. fútbol americano 1. espagueti volador 2. pastafari 3. pastafaris 4. pastafarismo 5. spaghetti volador 1. broma 2. bromas 3. chiste 4. chistes 5. comedia 6. cómico 7. diversión 8. divertido 9. gracioso 10. humor 1. gamer 2. juego 3. juegos 4. jugador 5. jugadores 6. videojuego 7. videojuegos 1. alumna 2. alumnas 3. alumno 4. alumnos 5. diploma 6. diplomada 7. diplomadas 8. diplomado 9. diplomados 10. estudiante 11. estudiantes 12. graduaciones 13. graduación 14. licenciada 15. licenciadas 16. licenciado 17. licenciados 18. licenciatura 1. centro comercial 2. centros comerciales 3. compra 4. comprar 5. compras 6. grandes almacenes 1. 12 cuerdas 2. 7 cuerdas 3. 8 cuerdas 4. bajo 5. bajo acústico 6. bajo eléctrico 7. canciones de guitarra 8. clases de guitarra 9. doce cuerdas 10. guitarra 11. guitarra acústica 12. guitarra clásica 13. guitarra eléctrica 14. guitarra española 15. ocho cuerdas 16. siete cuerdas 1. bodybuilder 2. bodybuilding 3. culturismo 4. culturista 5. entrenamiento de fuerza 6. entrenamiento de pesas 7. gimnasio 8. gym 9. levantamiento de potencia 10. musculación 11. músculo 12. músculos 13. pesas 14. powerlifting 1. dieta 2. nutrición 3. nutritivo 4. salud 5. saludable 6. sanidad 7. vitalidad 1. aire libre 2. fiesta 3. fiestas 4. vacaciones 5. vacación 6. viaje 7. viajes 1. casa 2. domicilio 3. hogar 4. residencia 5. vivienda 1. brainstorming 2. brainstormings 3. idea 4. ideas 5. imaginación 6. inspiraciones 7. inspiración 8. lluvia de ideas 9. lluvias de ideas 10. pensamiento 11. pensamientos 1. bandeja de entrada 2. buzón de correo 3. buzón de entrada 1. info 2. informaciones 3. información 1. atemorizado 2. aterrorizado 3. llorando 4. llorar 5. miedo 6. triste 1. canciones de piano 2. clases de piano 3. clásica 4. componer 5. jazz 6. música clásica 7. música de piano 8. orquesta 9. piano 10. sinfonía 11. ópera 1. coser 2. costura 3. crochet 4. punto de cruz 5. tejer 1. abogado 2. constitución 3. jueces 4. juez 5. jueza 6. juezas 7. jurídica 8. jurídicas 9. jurídico 10. jurídicos 11. legal 12. legales 13. legislación 14. legislar 15. ley 16. leyes 17. litigar 18. litigio 19. litigios 1. alcohol fuerte 2. bebida destilada 3. destilada 4. destiladas 5. destilado 6. destilados 7. licor 8. licor fuerte 9. licores 1. lista 2. listas 1. el hobbit 2. esdla 3. hobbit 4. lord of the rings 5. lotr 6. señor de los anillos 7. tolkien 1. afecto 2. amor 3. cariño 4. citas 5. querer 6. san valentín 7. vida amorosa 1. computadora 2. computadoras 3. informática 4. ingeniería de software 5. ordenador 6. ordenadores 7. pc 1. correo 2. correo electrónico 3. correos 4. correos electrónicos 5. e-mail 6. e-mails 1. geometría 2. matemática 3. matemáticas 4. mates 5. pi 1. mi 2. mí 3. personal 4. yo 5. yo misma 6. yo mismo 1. estrella fugaz 2. estrellas fugaces 3. meteorito 4. meteoritos 5. meteoroide 6. meteoroides 1. estación de metro 2. línea de metro 3. red de metro 1. canciones 2. canción 3. cantante 4. cantantes 5. cantar 6. charla 7. charlas 8. concierto 9. conciertos 10. en directo 11. grabar 12. micrófono 13. voz 1. minimalismo 1. ahorro 2. ahorros 3. dinero 4. efectivo 5. finanzas 6. impuesto 7. impuestos 8. metálico 9. pago 10. pagos 11. presupuesto 12. presupuestos 1. luna 2. lunas 3. medianoche 4. noche 5. noches 6. nocturna 7. nocturnas 8. nocturno 9. nocturnos 1. chopper 2. moto 3. motocicleta 4. motocicletas 5. motos 1. campiñones 2. champiñón 3. seta 4. setas 1. composiciones 2. composición 3. letra 4. melodía 5. melodías 6. música 7. tema 8. temas 1. environment 2. jardinería 3. medio ambiente 4. medioambiental 5. medioambientales 6. naturaleza 7. nature 8. paisajismo 9. planta 10. plantar 11. plantas 12. sostenibilidad 13. sostenible 14. world 1. lecturas 2. lista de libros 3. para leer 1. a continuación 2. después 3. siguiente 4. siguientes 1. anotaciones 2. anotación 3. boli 4. bolis 5. bolígrafo 6. bolígrafos 7. nota 8. notas 1. armonía 2. paz 3. unión 1. llamada 2. llamada de teléfono 3. llamada telefónica 4. llamadas 5. llamadas de teléfono 6. llamadas telefónicas 7. llamar 8. teléfono 9. teléfonos 1. foto 2. instantánea 3. instantáneas 4. recuerdo 5. recuerdos 6. retrato 7. retratos 1. alcantarilla 2. alcantarillado 3. alcantarillas 4. fontanero 5. fontaneros 6. fontanería 7. tubería 8. tuberías 9. tubo 1. lugar 2. lugares 3. mapa 4. mapas 5. rincones 6. rincón 7. sitio 8. sitios 9. turismo 10. ubicaciones 11. ubicación 12. visitar 1. plan 2. planes 3. resoluciones 1. añadir 2. plus 3. sumar 1. emisiones 2. emisión 3. emisión multimedia 4. podcast 5. retransmisión 6. transmisión 1. poema 2. poemas 3. poesía 4. rima 5. rimas 1. pokemon 1. campaña electoral 2. megáfono 3. megáfonos 4. política 5. políticas 6. político 7. políticos 1. caca 2. cacas 1. presente 2. regalo 3. regalos 1. crucial 2. cruciales 3. importantísima 4. importantísimas 5. importantísimo 6. importantísimos 7. prioridad 8. prioridades 9. prioritaria 10. prioritarias 11. prioritario 12. prioritarios 13. urgente 14. urgentes 1. confidencialidad 2. privacidad 1. campenatos 2. campeona 3. campeonas 4. campeonato 5. campeones 6. campeón 7. competiciones 8. competición 9. premiada 10. premiadas 11. premiado 12. premiados 13. premio 14. premios 15. trofeo 16. trofeos 1. meditación 2. psicología 3. psicóloga 4. psicólogas 5. psicólogo 6. psicólogos 7. psiquiatra 8. psiquiatras 9. psiquiatría 10. sicología 11. sicóloga 12. sicólogas 13. sicólogo 14. sicólogos 15. siquiatra 16. siquiatras 17. siquiatría 18. terapeuta 19. terapeutas 20. terapia 21. terapias 1. bolso 2. bolsos 3. cartera 4. monedero 1. duda 2. dudas 3. pregunta 4. preguntas 1. cita 2. declaraciones 3. declaración 1. arco iris 2. arcoíris 1. frambuesa 2. frambuesas 1. factura 2. facturas 3. recibo 4. recibos 1. rick 2. rick & morty 3. rick + morty 4. rick sanchez 5. rick sánchez 6. rick y morty 7. rick+morty 1. roedor 2. roedores 1. patito 2. patito de goma 3. patitos 4. patitos de goma 5. pato 6. pato de goma 7. patos 8. patos de goma 1. diamante 2. diamantes 3. gema 4. gemas 1. 6 naciones 2. rugby 3. seis naciones 1. academia 2. academias 3. académica 4. académicas 5. académico 6. académicos 7. clase 8. clases 9. colegio 10. colegios 11. educación 12. escuela 13. escuelas 14. estudiar 15. estudios 16. instituto 17. institutos 18. profesor 19. profesora 20. profesoras 21. profesores 22. tesis 23. universidad 24. universidades 1. alien 2. aliens 3. ciencia ficción 4. conspiración 5. espacial 6. espaciales 7. espacio 8. extraterrestre 9. invasión alien 10. nave espacial 11. naves espaciales 12. ovni 13. ovnis 14. reptiliano 15. reptilianos 16. sci fi 17. sci-fi 18. teoría conspirativa 19. teoría de la conspiración 20. teorías conspirativas 21. teorías de la conspiración 1. ciencia 2. ciencias 3. investigaciones 4. investigación 1. porno 2. pornografía 3. sexo 1. calzado 2. depotivos 3. zapatilla 4. zapatillas 5. zapato 6. zapatos 1. ir de compras 2. shopping 3. tienda 4. tiendas 1. monopatín 2. patinaje 3. patines 4. patín 1. cigarro 2. cigarros 3. fumador 4. fumadora 5. fumadoras 6. fumadores 7. fumando 8. fumar 9. pipa 10. pipas 11. tabaco 1. escarcha 2. frío 3. helada 4. invierno 5. nevada 6. nevadas 7. nieve 8. nieves 1. fútbol 1. balompié 2. baloncesto 3. balómpie 4. basket 5. beisbol 6. deporte 7. football 8. hockey 9. tenis 10. voleibol 11. vólibol 1. destacado 2. estrella 3. estrellas 4. fav 5. favorita 6. favoritas 7. favorito 8. favoritos 1. star wars 2. starwars 1. sol 2. solar 1. clases de natación 2. nadar 3. natación 4. piscina 1. té 1. tecnología 2. tecnológico 3. tegnologías 4. técnico 5. técnicos 1. ténis 1. teatral 2. teatrales 3. teatro 4. teatros 1. horrible 2. horribles 3. mal 4. malas 5. malo 6. malos 7. negativa 8. negativas 9. negativo 10. negativos 1. bien 2. buena 3. buenas 4. bueno 5. buenos 6. estupenda 7. estupendas 8. estupendo 9. estupendos 10. excelente 11. excelentes 12. genial 13. maravillosa 14. maravillosas 15. maravilloso 16. maravillosos 17. me gusta 18. me gustan 19. positiva 20. positivas 21. positivo 22. positivos 1. capítulos 2. tabla de contenidos 3. índice 1. a hacer 2. lista de tareas 3. listas de tareas 4. objetivo 5. objetivos 6. quehacer 7. quehaceres 8. recado 9. recados 10. tarea 11. tarea pendiente 12. tareas 1. aparato 2. aparatos 3. dispositivo 4. dispositivos 5. gtd 6. herramienta 7. herramientas 8. productividad 9. reparaciones 10. reparación 11. reparar 1. estación de tren 2. estación de trenes 3. ferrocarril 4. ferroviaria 5. ferroviario 6. tren 7. trenes 1. escapada 2. escapadas 3. excursiones 4. excursión 5. viajar 1. acampada 2. escalada 3. escalar 4. mochilero 5. senderismo 6. trekking 1. triángulo 1. programa de televisión 2. serie de televisión 3. tele 4. teles 5. televisiones 6. televisión 1. gramática 2. tipografía 1. codificación 2. juego de caracteres 3. set de caracteres 1. enemiga 2. enemigas 3. enemigo 4. enemigos 5. lado oscuro 6. lord vader 7. malvado 8. sith 9. villano 1. en blanco 2. nulo 3. vacío 1. balonvolea 2. voleivol 3. voley playa 4. volley 5. volley playa 6. volleyball 7. vóleibol 8. vóley playa 1. espera 2. esperando 3. esperar 4. interrumpida 5. interrumpidas 6. interrumpido 7. interrumpidos 8. pausa 1. hora 2. reloj 3. relojes 1. agua 2. agua corriente 3. factura del agua 4. facturas del agua 5. gota de lluvia 6. lluvia 1. internet 2. red 3. redes 4. tela de araña 5. telaraña 6. telarañas 7. telas de araña 8. web 9. world wide web 1. anillo 2. boda 3. bodas 4. esposa 5. esposo 6. esposos 7. marido 8. matrimonio 9. matrimonios 10. novia 11. novias 12. novio 13. novios 1. vino blanco 2. vino tinto 3. vinos 1. carrera profesional 2. equipaje 3. equipajes 4. labor 5. maleta 6. maletas 7. maletines 8. maletín 9. negocios 10. ocupación 11. trabajar 12. trabajo 13. trabajos 1. internacional 2. internacionales 3. multinacional 4. multinacionales 5. mundial 6. mundiales 7. mundo 8. planeta 9. planetas 1. desarrollo personal 2. espiritual 3. mindfullness 4. yoga 1. нет 2. никто 3. ничего 4. ноль 5. нуль 6. пусто 1. единственный 2. лидер 3. один 4. одиночка 5. однократный 6. первый 1. второй 2. два 3. двоечник 4. двойка 5. двукратный 6. пара 1. третий 2. три 3. трижды 4. трое 5. троекратно 6. троекратный 7. троица 8. тройка 1. четверка 2. четверо 3. четвертый 4. четыре 5. четырехкратный 1. пятерка 2. пятеро 3. пятикратно 4. пятикратный 5. пятый 6. пять 1. шестерка 2. шестеро 3. шестикратно 4. шестикратный 5. шестой 6. шесть 1. седьмой 2. семерка 3. семеро 4. семикратно 5. семикратный 6. семь 1. восемь 2. восьмерка 3. восьмеро 4. восьмикратно 5. восьмикратный 6. восьмой 1. nine 2. девятеро 3. девятикратно 4. девятикратный 5. девятка 6. девять 1. ai 2. ml 3. skynet 4. автоматизация 5. андроид 6. глубокое обучение 7. искусственный интеллект 8. машинное чтение 9. нейральные сети 10. робот 11. роботизация 12. роботы 1. биоразнообразие 2. вымирающие 3. животное 4. животные 5. зверь 6. зверюшки 7. красная книга 8. млекопитающее 9. млекопитающие 10. потомство 11. природа 12. самец 13. самка 14. щенки 1. программе 1. вдохновение 2. выставка 3. графика 4. живопись 5. иллюстрация 6. инсталляция 7. искусство 8. картина 9. креативность 10. рисование 11. скульптура 12. эмаль 1. абзац 2. блог 3. блоги 4. блогпост 5. блогпосты 6. веб-страница 7. веб-страницы 8. журналистика 9. закладка 10. закладки 11. очерк 12. пост 13. посты 14. статьи 15. статья 16. тема 1. листва 2. листопад 3. листья 4. осень 1. база 2. бейсбол 3. бита 4. бэттер 5. игрок 6. кепка 7. куртка 8. питчер 9. страйк 10. удар 1. депиляция 2. косметология 3. массаж 4. наращивание 5. педикюр 6. салон 7. стрижка 8. укладка 1. безалкогольное 2. вобла 3. крафт 4. пивко 5. пивная 6. пивной зал 7. пивной ресторан 8. пивнушка 9. пиво 10. пивоварня 1. байкер-кросс 2. велосипед 3. велосипедист 4. велотриал 5. гоночный велосипед 6. горный велосипед 7. даунхилл 8. кросс-кантри 9. маунтинбайк 10. под гору 11. равнинный велосипед 12. спуск 13. фрирайд 1. гонки 2. корабли 3. корабль 4. круиз 5. лодка 6. лодки 7. навигация 8. парус 9. паруса 10. плавание 11. яхта 12. яхты 1. глава 2. дневник 3. дневники 4. журнал 5. журналы 6. иллюстрации 7. истории 8. картинки 9. книга 10. книги 11. литература 12. повести 13. повесть 14. публикации 15. рассказ 16. рассказы 17. роман 18. романы 19. сборник 20. словарь 21. собрание сочинений 22. ссылка 23. ссылки 24. суперобложка 25. учебник 26. учебники 27. эссе 1. диагностика 2. зависание 3. останов 4. ошибка 5. ошибки 1. автобус 2. автобусы 3. пассажир 4. пассажиры 5. шоссе 6. шофер 1. день рождения 2. дни рождения 3. маффин 4. пирожное 5. пирожные 6. торт 7. эклер 1. аппойнтмент 2. в будущем 3. встреча 4. дата встречи 5. дата окончания 6. календари 7. календарь 8. плановая дата 9. сегодня 10. событие 11. события 12. срок завершения 13. сроки завершения 1. зеркалка 2. камера 3. камеры 4. снимки 5. снимок 6. фото 7. фотограф 8. фотографии 9. фотографы 1. кемпинг 2. кемпинги 3. костер 4. лагерь 5. лагеря 6. ночевка 7. палатка 8. палатки 9. привал 10. стоянка 11. трейлер 12. фургон 1. авария 2. авто 3. автомобили 4. автомобиль 5. водитель 6. выбросы 7. гибдд 8. зимние шины 9. каршеринг 10. машина 11. машины 12. механик 13. мобильность 14. обслуживание 15. отпуск 16. права 17. такси 18. техник 19. техосмотр 20. убер 1. кот 2. котенок 3. коты 4. котята 5. кошка 6. кошки 1. видео 2. видеофильм 3. кино 4. киножурнал 5. кинокартина 6. кинокартины 7. кинотеатр 8. развлечение 9. сеанс 10. сеансы 11. фильм 12. фильмы 1. архитектура 2. выбросы транспорта 3. город 4. города 5. городской 6. грязный воздух 7. магистрали 8. небоскреб 9. сити 10. скайлайн 11. столица 12. столичный 13. урбанизм 14. центральный район 1. вырезки 2. вырезки из интернета 3. жесткие ограничения 4. приложение 5. приложения 1. вычисления в облаке 2. облака 3. облако 4. облачный 5. хранение в облаке 1. бар 2. бармен 3. коктейли 4. коктейль 5. коктейль-бар 6. кюрасао 7. рецепты коктейлей 8. ёрш 1. зерновой 2. кофе 3. кофемашина 4. кофемашины 5. растворимый 1. аниме 2. книга комиксов 3. книги комиксов 4. комиксы 5. манга 6. мультфильм 7. мультфильмы 1. выполненный 2. готово 3. готовый 4. завершенный 5. завершено 6. закончен 7. законченный 8. исполненный 9. окончен 10. оконченный 11. полный 1. беседа 2. воркшоп 3. вызов на конференцию 4. вызовы на конференцию 5. конференции 6. конференция 7. обмен мнениями 8. прения 9. рабочая встреча 10. собеседование 11. собрание 12. собрания 1. контакт 2. контактировать 3. контакты 4. люди 5. пользователь 6. сети 7. сторона контакта 8. человек 1. болтовня 2. диалог 3. дискуссии 4. комментарии 5. комментарий 6. отзыв 7. отклик 8. разговор 9. разговоры 10. чат 11. чатиться 1. готовка 2. еда 3. завтрак 4. кафе 5. кулинария 6. ланч 7. обед 8. полдник 9. рестораны 10. ужин 11. фастфуд 1. ворота 2. игроки 3. крикет 4. шары 1. живое действие 2. конвент 3. косплей 4. реконструкция 5. ролевые игры 1. party game 2. командная игра 3. кубик 4. настольная игра 5. настольные игры 6. салонная игра 7. участник игры 1. балет 2. брейк 3. вальс 4. зал для танцев 5. классический танец 6. танго 7. танец 8. танцевальный 9. танцор 10. танцоры 11. танцы 12. хореография 1. dbms 2. БД 3. админ 4. данные 5. сервер 6. субд 1. дизайнер 2. дизайнеры 1. босс 2. занятость 3. коворкинг 4. кофейный столик 5. опенспейс 6. офис 7. офисное здание 8. рабочее место 9. рабочее пространство 10. стол 1. код 2. кодирование 3. программирование 4. проектант 5. проектанты 6. проектирование 7. разработчики 8. сниппет 9. сниппеты 1. выжигание 2. вышивка 3. керамика 4. модель 5. мозаика 6. сделай сам 7. схемы 8. умелые руки 9. шитье 1. ГМО 2. аллели 3. биология 4. ген 5. генетика 6. генетический 7. гены 8. закрепление 9. мутация 10. наследственность 11. признаки 12. происхождение 13. скрещивание 14. уродство 1. адьюнкт 2. врач 3. гастроэнтеролог 4. доктор 5. интерн 6. кардиолог 7. невролог 8. окулист 9. пневмолог 10. проктолог 11. профессор 12. рентгенолог 13. терапевт 14. травматолог 15. трансплантолог 16. уролог 17. хирург 1. доктор кто 1. бумаги 2. доклад 3. доклады 4. документ 5. документация 6. документы 7. записка 8. отчет 9. отчеты 10. страница 11. страницы 1. кобель 2. пес 3. песик 4. псы 5. собака 6. собаки 7. сука 8. щенок 1. набросок 2. правка 3. черновик 4. черновики 5. черновой вариант 1. грезы 2. мечтания 3. мечтатели 4. мечтатель 5. мечтать 6. сны 7. сон 8. фантазирование 1. дозировка 2. излечение 3. лекарственный 4. лекарство 5. лечение 6. медикаменты 7. медицина 8. пилюли 9. рецепт 10. рецепты 11. снадобья 12. фармацевтика 13. фармацевтический 1. барабан 2. барабанщик 3. барабанщики 4. барабаны 5. ритм 6. тарелки 7. том 8. томы 9. ударник 10. ударники 11. ударные 1. акции 2. банкротство 3. безработица 4. благосостояние 5. бум 6. внешнее управление 7. гистограмма 8. график 9. деньги 10. депрессия 11. инвестиции 12. крах 13. кризис 14. курс 15. маржа 16. маркетинг 17. наука о данных 18. оборот 19. прибыль 20. реклама 21. ресурсы 22. сверхприбыль 23. слияние 24. статданные 25. статистика 26. таблица 27. тенденция 28. тренд 29. финансы 30. экономика 31. эластичность 1. искра 2. молния 3. напряжение 4. предохранители 5. предохранитель 6. разряд 7. сила тока 8. счет за электричество 9. шаровая молния 10. электрик 11. электрики 12. электрический 13. электрический разряд 14. электричество 15. электро 16. электросчетчик 17. электротравма 1. бег 2. воркаут 3. задачи 4. кросс 5. марафон 6. тренинг 7. упражение 8. упражения 9. упражнения 10. упражняться 11. фитнес 1. близнецы 2. воспитание 3. дети 4. домашнее хозяйство 5. дочери 6. дочь 7. ребенок 8. семейный 9. семьи 10. семья 11. сын 12. сыновья 1. witchcraft 2. Виверна 3. Змей 4. Колдовство 5. астролог 6. дракон 7. драконы 8. заклинатель 9. магия 10. миф 11. мифология 12. мифы 13. фольклор 1. комплект одежды 2. мода 3. наряд 4. одежда 5. показ 6. убор 7. шоу 1. Важное 2. включено 3. галочка 4. исполнено 5. отметка 6. отмечено 7. пометка 8. существенное 9. флажок 10. чекбокс 1. afl 2. nfl 3. Национальная футбольная лига 4. американская футбольная лига 5. американский футбол 6. лига 7. овертайм 8. пантер 9. сейфти 10. тачдаун 11. филд-гол 12. фуллбэк 13. футбол 14. холтер 1. pastafarian 2. летающий макаронный монстр 3. пастафариане 4. пастафарианство 5. секта 1. веселье 2. забавный 3. забавы 4. комический 5. развлечения 6. сатира 7. смех 8. смешной 9. улетный 10. шутка 11. шутки 12. юмор 1. видеоигра 2. видеоигры 3. игры 1. аспирант 2. аспирантура 3. бакалавр 4. бакалавриат 5. выпускник 6. диплом 7. дипломник 8. коллоквиум 9. магистр 10. магистратура 11. мастер 12. практикум 13. семинар 14. студент 15. ученик 1. бакалея 2. молл 3. поручения 4. продовольственные товары 5. список покупок 6. торговый центр 7. что купить 8. шоппинг 1. акустическая гитара 2. бас 3. басовая акустическая гитара 4. басовая гитара 5. басовая электрогитара 6. восьмиструнная 7. гитара 8. двенадцатиструнная 9. классическая гитара 10. песни под гитару 11. семиструнная 12. уроки гитары 13. электрическая гитара 1. бодибилдер 2. бодибилдинг 3. вес 4. зал 5. культурист 6. мускул 7. мускулы 8. пауэрлифтинг 9. поднятие тяжестей 10. силовая тренировка 11. спортзал 12. тренировка поднятия тяжестей 13. тяжелая атлетика 1. диета 2. живучесть 3. заболевание 4. зарядка 5. здоровый 6. здоровье 7. питание 8. профилактика 9. энергичность 1. выходные дни 2. каникулы 3. отдых 4. пикник 5. подарки 6. поездка 7. поездки 8. поход 9. праздник 10. праздники 11. пробежка 12. путешествия 13. ресторан 14. шашлык 15. экскурсия 1. дом 2. дома 3. жилище 1. дискуссия 2. замысел 3. идеи 4. идея 5. изобретения 6. мозговой штурм 7. мысли 8. мысль 9. обсуждение 10. публикация 11. развенчание 12. револющионная 13. творчество 14. теория 15. яркая 1. входящие 2. поступления 1. бит информации 2. зашифрованные 3. защита данных 4. информация 5. истинная 6. конфиденциальные 7. криптография 8. ложная 9. объем 10. скомпроментированные 1. Исаак 2. айзек 3. грустный 4. испуган 5. плачущий 1. джаз 2. клавесин 3. клавикорды 4. классика 5. классическая музыка 6. компьютер 7. мелодии на фортепьяно 8. опера 9. орган 10. оркестр 11. пианино 12. симфония 13. синтезатор 14. сочинение музыки 15. уроки фортепьяно 16. фортепьянная музыка 17. фортепьяно 1. вязание 2. клубок 3. крючок 4. нить 5. пряжа 6. спицы 1. адвокат 2. закон 3. законный 4. законодательство 5. иск 6. коллегия судей 7. конституция 8. поверенный 9. подзаконный 10. правовой 11. приговор 12. процесс 13. судебный 14. судпебный процесс 15. судья 16. юридический 17. юрист 1. выпивка 2. дистиллированный напиток 3. качество очистки 4. крепкий алкоголь 5. крепкое спиртное 6. крепость спиртного 7. ликёр 8. ликёры 9. примеси 10. спиртное 1. номенклатура 2. перечень 3. план работы 4. программа 5. программы 6. расписание 7. распорядок 8. реестр 1. Толкин 2. братство 3. ведьма 4. властелин колец 5. волшебник 6. колдун 7. кольцо 8. мордор 9. орки 10. темный 11. хоббит 1. аморальность 2. близость 3. блуд 4. болезнь 5. валентин 6. верность 7. гетеросексуал 8. день св.валентина 9. измена 10. личная жизнь 11. любовь 12. перверт 13. презерватив 14. противозачаточное 15. развод 16. разврат 17. распущенность 18. ревность 19. свидание 20. сексуальная жизнь 21. ссора 22. страсть 23. транссексуал 24. эротика 1. вычислительная техника 2. инновации 3. инновация 4. интерфейс 5. компьютеры 6. красота 7. лэптоп 8. любимый 9. настольный 10. ноутбук 11. премиум-качество 12. программное обеспечение 13. фанат 1. email 2. отправить 3. письма 4. почта 5. электронное письмо 1. арифметика 2. геометрия 3. математика 4. пи 5. планиметрия 6. теоремы 1. достоинства 2. душа 3. индивидуальность 4. конфиденциальное 5. мое 6. поведение 7. пороки 8. приватное 9. привычки 10. самосознание 11. сознание 12. сущность 13. характер 14. частное 15. я 16. я сам 1. комета 2. кометы 3. метеор 4. метеорит 5. метеориты 6. метеоры 7. поток 8. радиант 1. метро 2. подземка 3. станция 4. тоннель 5. турникет 6. эскалатор 1. беседы 2. вживую 3. вокал 4. голос 5. запись 6. концерт 7. концерты 8. микрофон 9. певец 10. певцы 11. пение 12. песни 13. песня 14. публичная речь 15. речь 16. текст песни 1. аскетический 2. лапидарный 3. минимализм 4. минимальный 1. банк 2. биткойн 3. бюджет 4. вклад 5. займ 6. зарплата 7. кошелек 8. кредит 9. криптовалюта 10. наличные 11. налог 12. налоги 13. перевод 14. платеж 15. платежи 16. сбережение 17. сбережения 18. чек 19. чеки 20. эфир 1. восход 2. затмение 3. заход 4. краснолуние 5. кратер 6. луна 7. месяц 8. новолуние 9. ночь 10. полнолуние 11. полночь 12. растущая 13. серп 14. суперлуние 15. убывающая 1. жертвы 2. мотоцикл 3. мотоциклист 4. мотоциклы 5. скорость 6. трасса 7. чоппер 1. белый 2. гриб 3. грибница 4. грибной 5. грибы 6. лес 7. лисичка 8. ложный белый 9. мухомор 10. поганка 11. подберезовик 12. подосиновик 13. поляна 14. съедобный 15. сыроежка 16. ядовитый 1. мелодии 2. мелодия 3. музыка 4. текст 5. треки 1. болото 2. дизайн 3. загрязнение 4. звери 5. окружающая среда 6. пустыня 7. растение 8. растения 9. саванна 10. садоводство 11. устройчивое 12. уход 13. цветы 1. ботаник 2. знаток 3. нелепый 4. необщительный 5. непрактичный 6. сосредоточенный 7. список чтения 8. углубленный 9. читать 10. чтение 1. далее 2. дальше 3. после 4. следующий 1. авторучка 2. аннотации 3. аннотация 4. заметка 5. заметки 6. карандаш 7. паста 8. перо 9. ручка 10. ручки 11. чернила 1. дружба 2. сотрудничество 1. айфон 2. айфоны 3. вызов 4. звонки 5. звонок 6. мобильный 7. сотовый 8. телефон 9. телефоны 10. трубка 1. альбом 2. воспоминания 3. группа 4. изображение 5. изображения 6. картинка 7. контраст 8. крупный план 9. ландшафт 10. ломо 11. негатив 12. поделиться 13. позитив 14. портрет 15. селфи 16. съемка 17. фотография 1. водоотведение 2. залив 3. затопление 4. канализация 5. подтопление 6. сантехнические работы 7. счет за водоотведение 8. счет за канализацию 9. счета за канализацию 10. труба 1. визит 2. геолокация 3. геопозиция 4. геотег 5. геотеги 6. достопримечательности 7. карта 8. карты 9. локация 10. места 11. место 12. местонахождение 13. надо видеть 14. посетить 1. план 2. планы 3. разрешения 4. решения 5. связанные события 6. слои 7. сроки 8. факторы 9. черновые решения 10. этапы 1. добавить 2. добавление 3. избыток 4. плюс 5. положительный 1. подкаст 2. подкасты 1. записать 2. писать 3. поэзия 4. поэма 5. поэмы 6. поэт 7. рифма 8. стих 9. стихи 1. игра 2. покемон 1. бюллетень 2. выборная гонка 3. выборы 4. демагогия 5. кандидаты 6. мегафон 7. наблюдатели 8. подсчет голосов 9. политика 10. политическая кампания 11. списки 1. покакал 2. покакать 3. совок 4. экскременты 1. подарок 2. список желаний 3. список пожеланий 4. юбиляр 1. важно 2. завершение 3. исполнение 4. критический 5. необходимо завершение 6. преимущество 7. приоритет 8. срочно 9. требуется доработка 1. закрытость 2. конфиденциально 3. приватно 4. приватность 5. секретность 1. кубки 2. кубок 3. медали 4. медаль 5. первенство 6. приз 7. призы 8. соревнование 9. соревнования 10. состязание 11. состязания 12. чемпион 13. чемпионат 14. чемпионаты 15. чемпионы 16. эстафета 1. личность 2. медитация 3. переживания 4. познание себя 5. психиатр 6. психика 7. психоаналитик 8. психолог 9. психология 10. психотерапевт 11. терапия 1. сумка 2. сумки 3. сумочка 4. сумочки 1. вопрос 2. вопросы 3. вопросы и ответы 4. другие 5. другое 6. разное 7. разные 8. случайно 9. случайные 10. сомнение 11. сомнения 1. цитата 2. цитаты 3. цитировать 1. радуга 2. радуги 3. радужный 1. варенье 2. джем 3. малина 4. малинка 5. малиновый 6. ягода 7. ягоды 1. банковский чек 2. вексель 3. долг 4. кассовый чек 5. накладная 6. накладные 7. оплата 8. счет 9. счета 10. счета-фактуры 11. фискальный счет 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 1. грызун 2. грызуны 3. крыса 4. крысы 5. мыши 6. мышь 7. хомяк 8. хомяки 1. duck 2. ducks 3. rubber duck 4. rubber duckies 5. rubber ducking 6. rubber ducks 7. rubber ducky 8. rubberduck 9. rubberduckies 10. rubberducks 11. rubberducky 1. бриллиант 2. бриллианты 3. изумруд 4. карат 5. огранка 6. оправа 7. рубин 8. самоцветы 9. топаз 10. цвет 11. чистота 1. дроп-гол 2. замена 3. захват 4. коридор 5. мол 6. попытка 7. реализация 8. регби 9. схватка 10. шесть наций 11. штрафной 1. академики 2. академия 3. занятие 4. занятия 5. зачетка 6. изучение 7. класс 8. колледж 9. лаборатория 10. образование 11. образовательный 12. обучение 13. университет 14. университеты 15. уроки 16. учеба 17. учебные занятия 18. ученые 19. учитель 20. учителя 21. школа 22. школы 23. школьник 24. школьница 1. братья по разуму 2. внеземная жизнь 3. вселенная 4. вторжение марсиан 5. галактика 6. звездолет 7. инопланетяне 8. исследование космоса 9. космические путешествия 10. космолет 11. космонавт 12. научная фантастика 13. планетолет 14. поиск цивилизаций 15. пришелец 16. пришельцы 17. рептилоиды 18. солнечная система 19. тарелка 1. знание 2. исследование 3. исследователь 4. наука 5. научный 6. ученый 1. порно 2. порнография 3. секс 1. босоножки 2. ботинки 3. кеды 4. кроссовки 5. обувь 6. сандалии 7. сникерсы 8. тапочки 9. туфли 1. магазин 2. магазины 3. ретейл 4. ритейл 5. супермаркет 1. катание 2. скейтборд 3. скейтбордист 1. зажигалка 2. затяжка 3. курение 4. легкие 5. папироса 6. папиросы 7. рак 8. сигара 9. сигарета 10. сигареты 11. сигарилла 12. сигариллы 13. сигары 14. табак 1. заснеженный 2. зима 3. колотун 4. мороз 5. снег 6. снега 7. снеговик 8. снегопад 9. снежинка 10. снежок 11. стужа 12. холод 1. дополнительное время 2. защитник 3. мяч 4. нападающий 5. полузащитник 6. свободный 7. тайм 8. угловой 1. beach volley 2. volley 3. баскетбол 4. баскетболист 5. баскетболисты 6. бейсболист 7. бейсболисты 8. матч 9. спорт 10. спортивный 11. теннисист 12. теннисистка 13. футболист 14. футболистка 15. хоккеист 16. хоккеистка 17. хоккей 1. звезда 2. звезды 3. избранный 4. фаворит 5. фаворитка 6. фаворитки 7. фавориты 1. джедаи 2. джедай 3. звездные войны 4. империя 1. светило 2. солнце 1. баттерфляй 2. брасс 3. дорожка 4. костюм 5. кроль 6. купальник 7. очки 8. плавательный бассейн 9. плавать 10. плавки 11. уроки плавания 12. шапочка 1. заварка 2. чай 3. чайник 1. инженер 2. проект 3. разработчик 4. технолог 5. технология 1. atp 2. wta 3. гейм 4. корт 5. кубок Дэвиса 6. лаун-теннис 7. матчболл 8. покрытие 9. ракетка 10. сет 11. тай-брейк 12. теннис 13. турнир 1. актеры 2. антреприза 3. аплодисменты 4. билет 5. буфет 6. контрамарка 7. кулисы 8. ложа 9. ложи 10. на бис 11. партер 12. пьесы 13. режиссер 14. театр 15. театральный 16. театры 1. не нравится 2. негативно 3. отвратительно 4. отрицательно 5. плохо 6. ужасно 1. здорово 2. изумительно 3. круто 4. лайк 5. нравится 6. одобрение 7. отлично 8. позитивно 9. согласен 1. введение 2. главы 3. заключение 4. контент 5. оглавление 6. содержание 7. содержимое 8. список 9. список книг 10. структура книги 1. выполненные 2. дела 3. дело 4. задача 5. список дел 6. список заданий 7. цели 8. цель 1. инструмент 2. инструменты 3. как починить 4. починка 5. прибор 6. приборы 7. приспособления 8. проекты 9. производительность 10. ремонт 11. устройства 1. вагон 2. железная дорога 3. поезд 4. поезда 5. рельсы 6. скоростной 7. скорый 8. транзит 9. экспресс 10. электричка 1. путешествие 1. автостоп 2. альпинизм 3. бэкпэкинг 4. лекгоходство 5. прогулка 6. скалолазание 7. трекинг 8. туризм 9. хайкинг 10. хостел 1. треугольник 1. передача 2. передачи 3. тв 4. телевидение 5. телесериал 6. телесериалы 7. телефильм 8. телефильмы 9. телешоу 1. грамматика 2. интервалы 3. лигатура 4. лигатуры 5. набор 6. оттиск 7. печать 8. проба 9. редактирование 10. типографика 11. типография 12. тираж 13. шрифты 1. глиф 2. кодировка 3. набор символов 4. символы 5. стандарт символов 6. стрингсдикт 1. Обиван 2. враг 3. враги 4. зло 5. злодей 6. лорд Вейдер 7. сила 8. сторона силы 9. темная сторона 10. темный ситх 1. истекший 2. недействительный 3. ничто 4. потерявший силу 5. пустое поле 6. пустой 7. пустота 1. Гран-при 2. Евролига 3. блок 4. волейбол 5. диагональный 6. доигровщик 7. либеро 8. пляжный волейбол 9. подача 10. принимающий 11. связующий 1. в паузе 2. выжидающий 3. дожидающийся 4. ожидание 5. ожидающий 6. пауза 7. перемена 8. перерыв 9. прекращен 10. прерван 1. будильник 2. время 3. часы 1. бассейн 2. бочка 3. вентиль 4. вода 5. дождь 6. капающая вода 7. перекрыть 8. протечка 9. разлив 10. сантехник 11. слесарь 12. счет за воду 13. счета за воду 14. текущая вода 1. глобальная сеть 2. интернет 3. локальная сеть 4. паутина 5. паутинка 6. сетка 7. сеть 1. брак 2. брачный союз 3. жена 4. женитьба 5. жених 6. кольца 7. невеста 8. новобрачная 9. новобрачный 10. свадьба 11. свадьбы 12. свидетели 13. супружество 1. алкоголизм 2. белое вино 3. вина 4. вино 5. выдержка 6. дегустация 7. кагор 8. красное вино 9. крепленое 10. портвейн 11. шампанское 1. багаж 2. бизнес 3. грузчик 4. задание 5. задания 6. карьера 7. кладь 8. работа 9. тачка 10. труд 11. чемоданы 1. глобальный 2. земля 3. земной шар 4. международный 5. мир 6. мировой 7. многонациональный 8. планета 9. планеты 10. транснациональный 1. асана 2. асаны 3. бездумное 4. духовное 5. йога 6. личное 7. развитие 8. саморазвитие 1. nessuno 2. niente 3. nulla 4. zero 1. prima 2. primo 3. uno 1. due 2. seconda 3. secondo 1. terza 2. terzo 3. tre 1. quarta 2. quarto 3. quattro 1. cinque 2. quinta 3. quinto 1. sei 2. sesta 3. sesto 1. sette 2. settiman 3. settimo 1. ottava 2. ottavo 3. otto 1. nona 2. nono 3. nove 1. ai 2. automazione 3. ia 4. machine learning 5. ml 6. rete neurale 7. robot 8. robotica 1. animale 2. animali 3. animali da compagnia 4. animali domestici 1. app 2. apps 3. software 1. arte 2. creativita 3. creatività 4. dipinti 5. dipinto 6. disegni 7. disegno 8. illustrazione 9. illustrazioni 10. schizzi 11. schizzo 1. articoli 2. articolo 3. astratti 4. astratto 5. blog 6. blog post 7. blog posts 8. bookmark 9. bookmarks 10. collegamenti 11. pagine web 12. riassunti 13. riassunto 14. saggi 15. saggio 16. scritti 17. scritto 18. segna libri 19. segnalibri 20. sommari 21. sommario 1. autunno 2. foglia 3. foglie 4. inverno 1. baseball 1. beauty 2. bellezza 1. birra 2. birre 3. birreria 4. birrerie 5. birrifici 6. birrificio 7. pub 1. bici 2. bicicletta 3. bicyclette 4. ciclismo 5. ciclista 6. ciclisti 7. downhill 8. mountain bike 1. barca 2. barche 3. crociera 4. flotta 5. gondola 6. gondole 7. imbarcazione 8. imbarcazioni 9. motoscafo 10. nave 11. navi 12. navigare 13. traghetto 14. yacht 1. copione 2. copioni 3. diari 4. diario 5. letteratura 6. libri 7. libri di testo 8. libro 9. libro di testo 10. pubblicazione 11. pubblicazioni 12. romanzi 13. romanzo 14. sceneggiatura 15. sceneggiature 16. storie 17. storytelling 18. tema 19. temi 20. vocabolario 1. bug 2. bugs 1. atac 2. atm 3. autobus 4. bus 5. corriera 6. corriere 7. pullman 8. pullmino 9. pulmino 10. tram 1. compleanni 2. compleanno 3. torta 4. torte 1. appuntamenti 2. appuntamento 3. calendari 4. calendario 5. data di scadenza 6. domani 7. evento 8. oggi 9. scadenze 10. scandenza 11. termine ultimo 1. accampamento 2. campeggio 3. camping 4. campo base 5. scount 6. scouting 7. tenda 1. automobile 2. automobili 3. car 4. mobilità 5. taxi 6. vettura 7. vetture 1. cat 2. gatti 3. gattini 4. gattino 5. gatto 6. mici 7. micio 1. cinema 2. film 3. intrattenimento 4. video 1. artchitetture 2. citta 3. città 4. metropoli 5. metropolitani 6. metropolitano 7. urbano 1. allegati 2. allegato 3. ritagli 4. web clipping 1. cloud 2. cloud computing 3. cloud storage 4. nuvola 5. nuvole 1. cocktail 1. caffe 2. caffè 1. anime 2. cartoni 3. cartoni animati 4. comics 5. fumetti 6. fumetto 7. graphic novel 8. manga 1. approvate 2. approvati 3. completate 4. completati 5. completato 6. complete 7. completi 8. concluse 9. conclusi 10. finite 11. finiti 12. sistemate 13. sistemati 1. conference call 2. conferenza 3. conferenze 4. meeting 5. presentazione 6. presentazioni 7. workshop 8. workshops 1. contatti 2. contatto 3. gente 4. networking 5. persone 1. chat 2. commenti 3. commento 4. conversazione 5. conversazioni 6. dibattito 7. discussione 8. discussioni 9. feedback 1. cena 2. cibo 3. colazione 4. cucina 5. pranzo 6. ricetta 7. ricette 8. ristorante 9. ristoranti 1. cricket 1. gdr 2. gioco di ruolo 3. rpg 1. giochi da tavolo 2. giochi di società 3. gioco da tavolo 4. gioco di societa 5. gioco di società 1. ballare 2. ballerini 3. ballerino 4. balletto 5. balli 6. ballo 7. coreografia 8. danza 9. danza classica 10. danzare 11. danze 1. base dati 2. basi dati 3. db 1. design 2. designer 1. coworking 2. impiego 3. posto di lavoro 4. scrivania 5. uffici 6. ufficio 1. code 2. codice 3. developer 4. piani di lavoro 5. piano di lavoro 6. programmazione 7. sviluppatore 8. sviluppatori 9. sviluppo 1. bricolage 2. diy 3. fai da te 1. biologia 2. gene 3. genetica 4. geni 5. scienze naturali 1. chirurgo 2. dottore 3. medico 4. medico di famiglia 1. doctor who 2. the doctor 1. docs 2. documentazione 3. documenti 4. documento 5. pagina 6. pagine 7. report 8. reports 1. cane 2. cani 3. canidi 1. abbozzi 2. abbozzo 3. bozza 4. bozze 5. tracce 6. traccia 1. sognare 2. sogni 3. sogno 1. cura 2. cure 3. droga 4. droghe 5. farmacia 6. farmacie 7. medical 8. medicazione 9. medicazioni 10. medicina 11. medicinali 12. medicine 13. pillola 14. pillole 15. prescrizioni 1. batteria 2. batterista 3. batteristi 4. tamburi 5. tamburo 1. banca 2. economia 3. finanze 4. grafici 5. grafico 6. investimenti 7. marketing 8. statistiche 9. trend 1. bolletta corrente elettrica 2. bolletta elettrica 3. eelttricita 4. elettricista 5. elettricisti 6. elettricità 7. elettrico 8. fulmine 1. allenamenti 2. allenamento 3. atletica 4. correre 5. esercizio 6. maratona 7. run 8. runners 9. running 1. casa 2. famiglia 3. familiari 4. figli 5. figlia 6. figlie 7. figlio 8. gemelle 9. gemelli 10. genitori 11. padre 12. parentela 13. parenti 1. draghi 2. drago 3. dragone 4. folclore 5. magia 6. mago 7. miti 8. mitologia 9. strega 10. streghe 11. stregone 12. stregoneria 13. stregoni 14. viverna 15. viverne 1. abbigliamento 2. fashion 3. moda 4. vestiario 5. vestiti 6. vestito 1. importante 2. importanti 1. football 2. football americano 1. pastafarianesimo 2. pastafariani 3. pastafpariano 1. barzelletta 2. barzellette 3. beffa 4. beffe 5. fun 6. humor 7. ridere 8. risate 9. scherzi 10. scherzo 1. gaming 2. giochi 3. video game 4. video games 5. video giochi 6. video gioco 7. videogame 8. videogames 1. alunna 2. alunne 3. alunni 4. alunno 5. diploma 6. diplomata 7. diplomato 8. laurea 9. laureata 10. laureato 11. studente 12. studenti 1. commissioni 2. da acquistare 3. drogheria 4. shopping 5. spesa 6. supermarket 7. supermercato 1. basso 2. basso elettrico 3. canzoni chitara 4. canzoni per chitarra 5. chitarra acustica 6. chitarra classica 7. chitarra elettrica 8. chitatta 9. lezioni chitarra 10. lezioni di chitarra 1. bodybuilder 2. bodybuilding 3. ginnastica 4. muscoli 5. palestra 6. pesi 7. powerlifting 8. sollevamento pesi 1. dieta 2. diete 3. in salute 4. salutare 5. salute 6. vitalità 1. fuori porta 2. gita 3. gite 4. vacanza 5. vacanze 6. viaggi 7. viaggio 1. brainstorming 2. idea 3. idee 4. ispirazione 5. ispirazioni 6. pensieri 1. in entrata 1. info 2. informazioni 1. infelice 2. sconsolata 3. sconsolato 4. scontenta 5. scontento 6. spaventosa 7. spaventoso 8. triste 1. classical 2. classical music 3. composing 4. jazz 5. opera 6. orchestra 7. piano 8. piano lessons 9. piano music 10. piano songs 11. symphony 1. cucire 2. cucito 3. fare a maglia 4. lavorare a maglia 5. lavoro a maglia 6. maglia 7. maglieria 8. uncinetto 1. avvocati 2. avvocato 3. causa 4. cause 5. costituzione 6. diritto 7. giudice 8. giudice di pace 9. legale 10. legge 11. leggi 12. notai 13. notaio 1. amari 2. amaro 3. distillati 4. distillato 5. grappa 6. liquore 7. liquori 1. elenchi 2. elenco 3. lista 4. liste 5. programma 6. programmi 1. hobbit 2. lo hobbit 3. signore degli anelli 1. affetti 2. affetto 3. amore 4. dating 5. favorita 6. favorito 7. love 8. morosa 9. moroso 10. san valentino 1. computer 2. computer science 3. ingegneria del software 4. pc 1. email 2. emails 3. mail 4. mails 1. geometria 2. matematica 3. pi greco 1. io 2. me 3. me stesso 4. personale 5. personali 1. cometa 2. comete 3. meteora 4. meteorite 5. meteoriti 6. stella cadende 7. stelle cadenti 1. metro 2. metropolitana 1. cantante 2. cantanti 3. cantare 4. canzone 5. canzoni 6. concerti 7. concerto 8. microfono 9. parlare 10. registrazione 11. registrazioni 12. testi 13. voce 1. minimal 2. minimalismo 1. bilancio 2. budget 3. finanza 4. fondi 5. pagamenti 6. pagamento 7. portafogli 8. portafoglio 9. risparmi 10. risparmio 11. soldi 12. tassa 13. tasse 1. luna 2. mezzanotte 3. notte 1. biker 2. moto 3. motocicletta 4. motociclette 1. funghi 2. fungo 1. music 2. musica 1. abientale 2. ambiente 3. giardinaggio 4. natura 5. paesaggistica 6. piantare 7. piante 8. sostenibile 9. sostenibilita 10. sostenibilità 1. da leggere 2. letture 3. lista di lettura 1. dopo 2. in seguito 3. poi 4. prossimo 5. successivamente 1. annotazione 2. annotazioni 3. appunti 4. appunti sparsi 5. nota 6. note 7. penna 8. penne 1. pace 1. chiamata 2. chiamate 3. da chiamare 4. telefoni 5. telefono 1. foto 2. fotografia 3. fotografie 4. immagine 5. immagini 6. memorie 7. photo 8. photos 9. pics 1. bolletta gas 2. bollette gas 3. fognature 4. fogne 5. idraulica 6. idraulico 7. tubature 8. tubi 1. pizzeria 2. pizzerie 1. da vedere 2. da visitare 3. luoghi 4. luogo 5. mappa 6. mappe 7. posti 8. posto 1. livelli 2. piani 3. progetti 4. progetto 1. aggiunta 2. aggiunte 3. da aggiungere 4. piu 5. più 6. positivi 1. podcast 2. podcasts 1. poema 2. poemi 3. poesia 4. poesie 5. scrittura 1. pokemon 1. comizi 2. comizio 3. manifestazione 4. manifestazioni 5. megafono 6. politica 7. politico 1. cacca 2. merda 3. merdosi 4. merdoso 5. popo 1. doni 2. dono 3. lista dei regali 4. lista regali 5. regali 6. regalo 1. attenzione 2. critici 3. critico 4. nota bene 5. priorita 6. priorità 7. urgente 8. urgenti 1. privacy 2. riservato 1. campionato 2. campione 3. campioni 4. competizione 5. competizioni 6. premi 7. premio 8. riconoscimenti 9. riconoscimento 10. trofei 11. trofeo 1. meditazione 2. meditazione trascendentale 3. psichiatra 4. psicoanalista 5. psicologia 6. psicologo 7. psicoterapia 8. psicoterapie 9. psicoterapista 10. terapia 11. terapie 1. borsa 2. borse 1. altro 2. casuale 3. domanda 4. domande 5. dubbi 6. dubbio 7. misto 8. random 1. citazione 2. citazioni 1. arcobaleni 2. arcobaleno 1. lampone 2. lamponi 1. contabilità 2. conti 3. fattura 4. fatture 5. ricevuta 6. ricevute 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 1. roditore 2. roditori 1. papera 2. paperella 3. rubber duck 4. rubber ducking 5. rubberduck 1. diamante 2. diamanti 3. gemme 1. 6 nazioni 2. rugby 3. sei nazioni 1. accademia 2. corsi 3. corso 4. educazione 5. insegnamento 6. insegnante 7. insegnanti 8. istruzione 9. lezione 10. lezioni 11. liceo 12. maestri 13. maestro 14. professore 15. professori 16. school 17. scuola 18. scuole 19. studi 20. studio 21. tesi 22. università 1. alieni 2. alieno 3. astronave 4. astronavi 5. complotti 6. cospirazione 7. cospirazioni 8. disco volante 9. extraterrestri 10. fantascienza 11. invasione aliena 12. rettiliani 13. teoria del complotto 14. ufo 15. viaggio spaziale 1. ricerca 2. ricerche 3. scienza 1. porno 2. pornografia 3. sesso 1. calzature 2. scarpe 1. acquistare 2. da comprare 3. negozi 4. negozio 1. skateboard 1. fumare 2. fumo 3. sigarette 4. sigari 5. tabacco 6. tabagismo 1. fiocco di neve 2. freddo 3. gelo 4. ghiaccio 5. neve 6. nevicata 1. calcetto 2. calcio 1. basketball 2. champions league 3. hockey 4. hockey su ghiaccio 5. pallacanestro 6. serie a 7. serie b 8. sport 1. costellazione 2. favoriti 3. star 4. stella 5. stelle 1. guerre stellari 2. star wars 3. starwars 1. sole 1. lezione di nuoto 2. lezioni di nuoto 3. nuotare 4. nuoto 5. piscina 1. tea 2. tè 1. tech 2. technology 3. tecnologia 4. tecnologie 1. tennis 1. anfiteatro 2. arena 3. commedia 4. dramma 5. recita 6. recitazione 7. teatri 8. teatro 9. tragedia 1. bad 2. cattivo 3. negativo 4. non mi piace 5. terribile 1. buono 2. eccellente 3. mi piace 4. positivo 1. capitoli 2. indice 3. indice libro 4. toc 1. checklist 2. checklists 3. compiti 4. compito 5. da fare 6. obiettivi 7. obiettivo 8. to do 9. todo 10. todos 1. gadget 2. produttivita 3. produttività 4. riparazioni 5. strumenti 6. strumento 7. utile 8. utilita 9. utilità 1. alta velocità 2. eurostar 3. ferrovia 4. frecciargento 5. frecciarossa 6. intercity 7. italo 8. stazione 9. treni 10. trenitalia 11. treno 1. arrampicata 2. arrampicate 3. escursione 4. escursioni 5. scalata 6. scalate 7. trekking 1. triangolo 1. serie 2. serie tv 3. televisione 4. tv 5. tv shows 1. grammatica 2. tipografia 1. codifica 2. simboli 3. simbolo 1. dark sith 2. lato oscuro 3. lord vader 4. nemici 5. nemico 1. blank 2. svuotato 3. vacuo 4. vuoto 1. beach volley 2. pallavolo 3. volley 1. in attesa 2. in pausa 3. interrotto 1. orologio 1. acqua 2. acqua corrente 3. bolletta acqua 4. bollette acqua 5. goccia di pioggia 6. pioggia 1. internet 2. network 3. ragnatela 4. web 1. anelli 2. anello 3. fedi 4. marito 5. matrimoni 6. matrimonio 7. moglie 8. nozze 9. sposa 10. sposo 1. vini 2. vino 3. vino bianco 4. vino rosso 1. bagagli 2. bagaglio 3. business 4. carriera 5. lavoro 6. valigia 7. valigie 8. work 1. globale 2. globo 3. intercontinentale 4. internazionale 5. mondiale 6. mondo 7. multinazionale 8. pianeta 9. pianeti 10. terra 1. crescita personale 2. mindfullness 3. spiritualità 4. yoga 1. 없음 2. 영 3. 제로 1. 일 2. 첫 번째 3. 하나 1. 두 번째 2. 둘 3. 이 1. 삼 2. 세 번째 3. 셋 1. 네 번째 2. 넷 3. 사 1. 다섯 2. 다섯 번째 3. 오 1. 여섯 2. 여섯 번째 3. 육 1. 일곱 2. 일곱 번째 3. 칠 1. 여덟 2. 여덟 번째 3. 팔 1. 구 2. 아홉 3. 아홉 번째 1. ai 2. ai 스피커 3. 딥러닝 4. 로보틱스 5. 로봇 6. 머신러닝 7. 스카이넷 8. 알파고 9. 오토베이션 10. 인공신경망 11. 인공지능 12. 자동화 1. 동물 2. 동물 왕국 3. 동물원 4. 동물의왕국 5. 애니멀 6. 애완동물 7. 야생 8. 야생동물 9. 야수 10. 육상동물 11. 육식동물 12. 조류 13. 짐승 14. 채식동물 15. 초식동물 16. 파충류 17. 포유동물 18. 포유류 19. 해양동물 1. 애플리케이션 2. 앱 3. 앱스토어 4. 어플 5. 어플리케이션 6. 응용 소프트웨어 7. 응용 프로그램 8. 응용프로그램 1. 그리기 2. 도안 3. 드로잉 4. 미술 5. 스케치 6. 스케칭 7. 아트 8. 아트워크 9. 예술 10. 예술가 11. 예술품 12. 일러스트레이션 13. 창의 14. 창의력 15. 창의성 16. 창작 17. 페인팅 1. 개요 2. 개인 블로그 3. 게시글 4. 게시물 5. 게시판 6. 글 7. 기사 8. 링크 9. 문장 10. 박사논문 11. 블로거 12. 블로그 13. 블로그 게시글 14. 블로그 게시물 15. 블로그 광고 16. 블로그 마케팅 17. 블로그 사이트 18. 블로그 서비스 19. 사이트 20. 석사논문 21. 소논문 22. 신문기사 23. 연구논문 24. 웹 브라우저 25. 웹 페이지 26. 웹사이트 27. 웹페이지 28. 작문 29. 작성 30. 잡지기사 31. 졸업논문 32. 파워블로거 33. 학술논문 34. 학위논문 35. 홈페이지 1. 가을 2. 낙엽 3. 낙엽잎 1. 베이스볼 2. 야구 3. 야구경기 4. 야구공 5. 야구방망이 6. 야구시합 7. 주자 8. 타자 9. 투수 10. 포수 1. 미 2. 미백 3. 뷰티 4. 뷰티 모델 5. 뷰티 서비스 6. 뷰티 카메라 7. 뷰티 화보 8. 뷰티 화장품 9. 아름다움 10. 화장 1. 맥주 2. 밀맥주 3. 브루어리 4. 비어 5. 소맥 6. 애주가 7. 양조장 8. 치맥 9. 호프집 10. 흑맥주 1. mtb 2. 사이클 3. 사이클로크로스 4. 사이클리스트 5. 사이클링 6. 산악자전거 7. 세발자전거 8. 자전거 9. 자전거 안장 10. 자전거 헬멧 1. 돛단배 2. 범선 3. 보트 4. 선박 5. 요트 6. 유람선 7. 출항 8. 크루즈 9. 항해 10. 항해가 11. 항해술 1. 간행물 2. 교재 3. 단행본 4. 도서 5. 도서관 6. 문학 7. 발췌 8. 발행 9. 서재 10. 서적 11. 서점 12. 소설 13. 수필 14. 스크립 15. 스토리 16. 스토리텔링 17. 시나리오 18. 어휘 19. 에세이 20. 열람 21. 인용 22. 인용문 23. 일기 24. 잡지 25. 저널 26. 참고 27. 참조 28. 책 29. 책꽂이 30. 책방 31. 책장 32. 출판 33. 출판물 34. 텍스트북 1. 디버거 2. 디버깅 3. 버그 4. 버그 리포트 5. 버그 발견 6. 버그 보고서 7. 버그 신고 8. 버그 신고서 9. 오류 1. 고속 버스 2. 광역 버스 3. 마을 버스 4. 버스 5. 시내 버스 6. 시외 버스 7. 장거리 버스 1. 생일 2. 생일 잔치 3. 생일 케이크 4. 생일 파티 5. 케이크 1. 기한 2. 달력 3. 데드라인 4. 만기 5. 만료일 6. 약속 7. 예정일 8. 오늘 9. 이벤트 10. 일정 11. 캘린더 1. 사진 2. 사진 작가 3. 사진가 4. 사진기 5. 사진사 6. 촬영 7. 카메라 8. 포토 1. 베이스 캠프 2. 야영 3. 야영지 4. 여영객 5. 캠프 6. 캠프파이어 7. 캠핑 8. 캠핑객 9. 캠핑장 10. 캠핑카 11. 텐트 1. 경차 2. 대형차 3. 렌터카 4. 상용차 5. 새차 6. 세단 7. 소형차 8. 스포츠카 9. 승용차 10. 승합차 11. 신차 12. 운전 13. 자가용 14. 자동차 15. 전기자동차 16. 중고차 17. 중형차 18. 차 19. 차량 20. 택시 21. 트럭 22. 화물차 1. 고양이 2. 고양이 먹이 3. 길고양이 4. 들고양이 5. 새끼 고양이 6. 아기 고양이 7. 야생고양이 8. 야옹 9. 야옹이 10. 집고양이 1. 개봉 2. 단편 3. 동영상 4. 무비 5. 비디오 6. 상영 7. 에피소드 8. 엔터테인먼트 9. 영상 10. 영화 11. 영화시사회 12. 예고편 13. 장편 14. 필름 15. 후속편 1. 다운타운 2. 대도시 3. 도시 4. 메트로폴리스 5. 메트로폴리탄 6. 소도시 7. 스카이라인 8. 시내 9. 시티 10. 중소도시 1. 별첨 2. 부록 3. 웹 클립 4. 첨부 5. 첨부 목록 6. 첨부 사진 7. 첨부 서류 8. 첨부파일 9. 클리핑 10. 클립 1. 가산 2. 구름 3. 덧셈 부호 4. 먹구름 5. 뭉게구름 6. 첨가 7. 클라우드 스토리지 8. 클라우드 컴퓨팅 1. 목테일 2. 무알콜 칵테일 3. 바텐더 4. 칵테일 5. 칵테일 가니쉬 6. 칵테일 레시피 7. 칵테일 바 8. 칵테일 베이스 9. 칵테일 쉐이커 10. 혼합주 1. 무카페인 2. 생두 3. 아메리카노 4. 에스프레소 5. 원두 6. 카페라떼 7. 카페인 8. 커피 9. 커피빈 10. 커피숍 11. 커피콩 1. 만화 2. 만화방 3. 만화영화 4. 만화책 5. 망가 6. 아니메 7. 애니메이션 8. 카툰 9. 코믹 10. 코믹북 1. 달성 2. 마무리 3. 성취 4. 승인 5. 완료 6. 완벽 7. 완성 8. 종결 9. 종료 1. 미팅 2. 세미나 3. 워크숍 4. 웹세미나 5. 컨퍼런스 6. 컨퍼런스 콜 7. 콘퍼런스 8. 콘퍼런스 콜 9. 포럼 10. 회의 1. 글로벌 인맥 2. 네트워킹 3. 사람 4. 연락 5. 연락처 6. 연락처 목록 7. 인맥 8. 인맥관리 9. 주소록 10. 지인 1. 대화 2. 댓글 3. 상의 4. 의견 5. 이야기 6. 채팅 7. 채팅방 8. 채팅실 9. 코멘트 10. 토론 11. 토의 12. 피드백 1. 레스토랑 2. 레시피 3. 미식 4. 부엌 5. 식당 6. 식품 7. 아침식사 8. 요리 9. 요리법 10. 음식 11. 저녁식사 12. 점심식사 13. 주방 1. 바운드 2. 배팅 3. 볼러 4. 크리켓 5. 크리켓 경기 6. 크리켓 경기장 7. 크리켓 배트 8. 크리켓 볼 9. 크리켓 선수 10. 크리켓 시합 1. mmorpg 2. rpg 3. rpg 게임 4. 롤플레잉 5. 롤플레잉 게임 6. 롤플레잉 비디오 게임 7. 롤플레잉 컴퓨터 게임 8. 역할분담 9. 온라인 롤플레잉 게임 10. 테이블탑 롤플레잉 게임 1. 게임판 2. 루미큐브 3. 모노폴리 4. 보드 게임 5. 보드게임 6. 부루마불 7. 시타델 8. 우노 9. 주사위 10. 파티 게임 1. 댄서 2. 댄스 3. 무도회장 4. 무용 5. 무용수 6. 발레 7. 사교 댄스 8. 안무 9. 춤 10. 탈춤 1. sql 서버 2. 어드민 3. 오라클 4. 코어 데이터 1. 공업 디자인 2. 디자이너 3. 디자인 4. 디자인 공모전 5. 디자인 콘셉 6. 디자인 패턴 7. 디자인권 8. 산업 디자인 9. 웹 디자인 10. 인테리어 디자인 1. 고용 2. 공동 작업 3. 사무실 4. 사업장 5. 오피스 6. 오피스 빌딩 7. 작업실 8. 작업장 9. 책상 10. 협업 1. 개발 2. 개발자 3. 개발진 4. 개발팀 5. 개발팀원 6. 개발팀장 7. 과제 8. 기획자 9. 디버그 10. 사업 계획 11. 소프트웨어 개발 12. 스니펫 13. 예비 계획 14. 컴파일 15. 코드 16. 코딩 17. 통합개발환경 18. 프로그래머 19. 프로그래밍 20. 프로그램 개발 21. 프로젝트 관리 22. 프로젝트 관리자 23. 프로젝트 기획 1. diy 2. diy 가구 3. diy 제품 4. diy 키트 5. 디아이와이 6. 디아이와이 키트 7. 브리콜라주 8. 셀프 세차 9. 직접 수리 10. 직접 조립 1. dna 2. 생명공학 3. 생물화 4. 염색체 5. 유전 6. 유전자 7. 유전자 조작 8. 유전체 9. 유전학 10. 자연과학 1. 군의관 2. 닥터 3. 명의 4. 보건의 5. 외과의사 6. 의과대학 7. 의대 8. 의료진 9. 의사 10. 의학박사 1. bbc 드라마 2. doctor who 3. sf 드라마 4. 닥터 후 5. 영국 드라마 6. 영드 7. 타임로드 8. 해외걸작드라마 9. 후박사의 모험 1. 기록 2. 도큐멘트 3. 리포트 4. 문건 5. 문서 6. 보고서 7. 서류 8. 파일 9. 페이지 1. 강아지 2. 개 3. 견공 4. 도그 5. 멍멍 6. 불독 7. 사냥개 8. 셰퍼드 9. 애완견 10. 진돗개 1. 계약서 초안 2. 기획안 3. 드래프트 4. 법률 초안 5. 시안 6. 초고 7. 초본 8. 초안 9. 초안 작성 10. 헌법 초안 1. 개꿈 2. 꿈 3. 꿈나라 4. 낮잠 5. 드림 6. 루시드드림 7. 밤잠 8. 수면 9. 해몽 1. 가루약 2. 복용 3. 알약 4. 약 5. 약국 6. 약사 7. 약품 8. 의료 9. 의학 10. 처방 11. 처방약 12. 처방전 13. 치료 14. 치유 1. 드러머 2. 드럼 3. 드럼 세트 4. 드럼 연주 5. 드럼 연주자 6. 드럼스틱 7. 드럼통 8. 베이스 드럼 9. 북 1. 거시경제 2. 경제 3. 경제력 4. 경제발전 5. 경제성장 6. 경제정책 7. 경제학 8. 경제활동 9. 금융 10. 금융감독원 11. 금융시장 12. 금융업 13. 데이터 과학 14. 마케팅 15. 마케팅 리서치 16. 마케팅 전략 17. 무역 18. 미시경제 19. 세계 경제 20. 세계경제 21. 시장경제 22. 시장출시 23. 영업 24. 외환 25. 유통 26. 은행 27. 주식 28. 증권거래소 29. 채권 30. 통계 31. 투자 32. 판매 33. 판촉 34. 환율 1. 발전소 2. 번개 3. 전기 4. 전기 요금 5. 전기공사 6. 전기기사 7. 전기세 8. 전류 9. 전선 10. 전압 1. 달리기 2. 러닝 3. 런닝 4. 레이스 5. 마라톤 6. 윗몸일으키기 7. 자전거타기 8. 조깅 9. 체력단련 10. 턱걸이 11. 트랙 12. 트레이닝 13. 팔굽혀펴기 1. 가계도 2. 가구 3. 가정 4. 가족 5. 가족모임 6. 가족여행 7. 가족파티 8. 딸 9. 부모 10. 세대 11. 쌍둥이 12. 아들 13. 아버지 14. 아이 15. 어머니 16. 온가족 17. 자녀 18. 패밀리 1. 드래곤 2. 마녀 3. 마법 4. 마법사 5. 매직 6. 소서러 7. 신화 8. 와이번 9. 용 10. 위자드 11. 판타지 12. 환타지 1. 모델 2. 복장 3. 옷 4. 유행 5. 의류 6. 의복 7. 의상 8. 코스튬 9. 트렌드 10. 패션 1. 마크 2. 중요 3. 표시 4. 표식 5. 플래그 6. 플래그 목록 7. 플래그 지정 8. 플래그 추가 9. 플래그 표시 10. 핵심 1. 미식축구 2. 미식축구 헬멧 3. 미식축구공 4. 미식축구장 5. 숄더패드 6. 슈퍼볼 7. 아메리칸 풋볼 8. 전진 패스 9. 터치다운 10. 필드골 1. 날아다니는 스파게티 괴물 2. 비행 스파게티 괴물 3. 파스타파리안 1. 개그 2. 개그 작가 3. 개그맨 4. 농담 5. 말장난 6. 신남 7. 유머 8. 익살 9. 장난 10. 재미 11. 재미있음 12. 조크 13. 즐거움 14. 코미디 15. 코미디언 16. 콩트 17. 흥겨움 18. 흥미 19. 흥미로움 20. 희극 1. 게이머 2. 게이밍 3. 게임 4. 게임 대회 5. 게임기 6. 비디오 게임 7. 아케이드 게임 8. 액션 게임 9. 앱 게임 10. 전략 게임 1. 동창 2. 동창회 3. 수료증 4. 졸업 5. 졸업 사진 6. 졸업 앨범 7. 졸업식 8. 졸업장 9. 학사모 10. 학생 1. 구매 2. 대형마트 3. 쇼핑몰 4. 쇼핑센터 5. 슈퍼 6. 슈퍼마켓 7. 식품점 8. 신부름 9. 장바구니 10. 카트 1. 12현 기타 2. 7현 기타 3. 8현 기타 4. 기타 5. 기타 노래 6. 기타 레슨 7. 베이스 8. 베이스 기타 9. 아쿠스틱 베이스 10. 어쿠스틱 기타 11. 일렉트릭 기타 12. 일렉트릭 베이스 13. 클래식 기타 1. 근력 강화 운동 2. 근력 운동 3. 근육 4. 보디빌더 5. 보디빌딩 6. 복근 7. 웨이트 8. 웨이트 트레이닝 9. 체육관 10. 헬스 11. 헬스장 1. 건강 2. 건강보험 3. 건강식 4. 건강식품 5. 다이어트 6. 생기 7. 영양 8. 영양사 9. 영양식 10. 영양제 11. 운동 12. 정신건강 13. 체력 14. 피트니스 15. 활기 16. 활력 1. 공휴일 2. 관광 3. 국경일 4. 기념일 5. 명절 6. 명절휴가 7. 바캉스 8. 설연휴 9. 실외 10. 아웃도어 11. 야외 12. 여행 13. 여행객 14. 연말연시 15. 연차 16. 연휴 17. 월차 18. 추석연휴 19. 홀리데이 20. 황금 연휴 21. 휴가 22. 휴가여행 23. 휴가지 24. 휴가철 25. 휴무 26. 휴일 1. 귀가 2. 새집 3. 우리집 4. 자택 5. 집 6. 집 주소 7. 집들이 8. 하우스 9. 헌집 10. 홈 1. 가치관 2. 고민 3. 관념 4. 관점 5. 마음 6. 발명 7. 발상 8. 방안 9. 브레인스토밍 10. 사색 11. 생각 12. 숙고 13. 술책 14. 신념 15. 아이디어 16. 아이디어 공모 17. 아이디어 상품 18. 영감 19. 전략 20. 정신 활동 21. 지각 22. 지성 23. 집단 사고 24. 책략 1. 메일박스 2. 메일함 3. 받은 편지함 4. 수신함 5. 우편함 1. 인포메이션 2. 정보 3. 정보 센터 4. 정보 지식 5. 정보원 6. 정보제공자 7. 정보처리 8. 정보통신 9. 정보화 10. 지식 1. 눈물 2. 눈물샘 3. 비애 4. 비애감 5. 비탄 6. 슬픔 7. 애통 8. 우울 9. 울음 10. 울음소리 1. 심포니 2. 오케스트라 3. 오페라 4. 작곡 5. 재주 6. 클래식 7. 클래식 뮤직 8. 피아노 9. 피아노 곡 10. 피아노 레슨 11. 피아노 음악 1. 뜨개질 2. 바느질 3. 바느질감 4. 손바느질 5. 코바느질 6. 코바늘 7. 크로셰 1. 배심원 2. 법 3. 법규 4. 법률 5. 변호사 6. 소송 7. 입법 8. 재판 9. 재판관 10. 판사 11. 합법 12. 헌법 1. 고량주 2. 독주 3. 소주 4. 술 5. 약주 6. 양조주 7. 양주 8. 위스키 9. 주류 10. 증류주 1. 계획 2. 등록 3. 등재 4. 리스트 5. 목록 6. 스케줄 7. 일정표 8. 프로그램 1. 곤도르 2. 두 개의 탑 3. 로드오브더링 4. 로한 5. 반지원정대 6. 반지의 제왕 7. 왕의 귀환 8. 절대 반지 9. 톨킨 10. 호빗 1. 교제 2. 구애 3. 내리사랑 4. 데이트 5. 러브 6. 러브라인 7. 발렌타인 8. 발렌타인 데이 9. 사랑 10. 사랑놀이 11. 사랑싸움 12. 소개팅 13. 애정 14. 애정행각 15. 애착 16. 연애 17. 연인 18. 이성교제 19. 좋아함 20. 짝사랑 21. 참사랑 22. 첫사랑 23. 카리타스 24. 하트 25. 호감 1. pc 2. 개인용컴퓨터 3. 노트북 4. 랩탑 5. 맥 6. 맥컴퓨터 7. 소프트웨어 8. 소프트웨어 엔지니어링 9. 슈퍼컴퓨터 10. 애플 11. 컴퓨터 12. 컴퓨터 공학 13. 퍼스널 컴퓨터 14. 퍼스컴 15. 피시 16. 하드웨어 1. 레터 2. 메시지 3. 메일 4. 우체통 5. 우편 6. 우편주소 7. 이메일 8. 편지 9. 편지지 1. 곱셈 2. 기하학 3. 나눗셈 4. 도형 5. 뺄셈 6. 산수 7. 수학 8. 연산 9. 파이 1. 개성 2. 나 3. 본인 4. 셀프 5. 셀프컨트롤 6. 에고 7. 자기 8. 자기 자신 9. 자기 주도 10. 자기관리 11. 자기만족 12. 자기반성 13. 자기소개 14. 자기중심 15. 자신 16. 자아 17. 자아도취 18. 자아발견 19. 자아비판 20. 자아성찰 21. 자아의식 22. 정체성 1. 별똥별 2. 슈팅스타 3. 운석 4. 유성 5. 유성우 6. 혜성 1. 메트로 2. 지하철 3. 지하철역 1. 가사 2. 가수 3. 곡 4. 노래 5. 녹음 6. 라이브 7. 마이크 8. 보이스 9. 보컬 10. 음성 11. 인기곡 12. 작곡가 13. 콘서트 1. 간소 2. 간소화 3. 미니멀 4. 미니멀 룩 5. 미니멀 뮤직 6. 미니멀 시어터 7. 미니멀 아트 8. 미니멀 음악 9. 미니멀리스트 10. 미니멀리즘 1. 결제 2. 납부 3. 대금 4. 돈 5. 동전 6. 비상금 7. 세금 8. 송금 9. 수표 10. 암호화폐 11. 어음 12. 예금 13. 예산 14. 외화 15. 우편환 16. 이체 17. 자금 18. 재산 19. 저금 20. 저축 21. 적금 22. 지급 23. 지불 24. 지폐 25. 캐시 26. 현금 27. 화폐 28. 환전 1. 깊은 밤 2. 달 3. 달나라 4. 달빛 5. 대보름 6. 만월 7. 반달 8. 밤 9. 보름달 10. 상현달 11. 월식 12. 자정 13. 저녁 14. 초승달 15. 하현달 16. 한밤중 1. 모터사이클 2. 모터크로스 3. 모토바이크 4. 바이커 5. 바이크 6. 산악 오토바이 7. 스쿠터 8. 오토바이 9. 이륜차 10. 전기 오토바이 1. 느타리버섯 2. 독버섯 3. 버섯 4. 버섯 요리 5. 송로버섯 6. 송이버섯 7. 식용 버섯 8. 양송이 9. 팽이버섯 10. 표고버섯 1. 곡조 2. 뮤직 3. 음악 4. 작사 5. 히트곡 1. 경치 2. 대자연 3. 보호 4. 월드 5. 자연 6. 자연 법칙 7. 자연 보호 8. 자연 보호 구역 9. 자연 요법 10. 자연 탐사 11. 자연 환경 12. 자연법칙 13. 자연재해 14. 자연현상 15. 자연환경 16. 정원 17. 정원손질 18. 조경 19. 지속가능성 20. 천연 21. 초자연 22. 친환경 23. 풍경 24. 환경 1. 공부 2. 공부벌레 3. 독서 4. 독서 목록 5. 모범생 6. 샌님 7. 우등생 8. 책읽기 9. 학습 10. 학업 1. 그 다음 2. 그 뒤 3. 그 후 4. 넥스트 5. 다음 6. 이후 1. 각주 2. 노트 3. 메모 4. 메모용지 5. 메모지 6. 비고 7. 스티커 메모 8. 주석 9. 펜 10. 회람 1. 우호 2. 평안 3. 평온함 4. 평화 5. 평화 지수 6. 평화로움 7. 평화주의자 8. 피스메이커 9. 화목 10. 화평 1. 공중 전화 2. 유선 전화 3. 전화 4. 전화 걸기 5. 전화 통화 6. 전화기 7. 전화벨 8. 통화 1. 그림 2. 사진 촬영 3. 사진술 4. 사진작가 5. 사진전 6. 사진첩 7. 이미지 8. 촬영술 9. 추억 10. 포토그래피 1. 배관 2. 배관 공사 3. 배관공 4. 상수도 요금 5. 상하수도 6. 수도관 7. 파이프 8. 하수도 9. 하수도 요금 1. 관광지 2. 도착지 3. 맵 4. 명소 5. 목적지 6. 방문 7. 볼거리 8. 여행지 9. 위치 10. 유적지 11. 장소 12. 지도 13. 출발지 14. 현장 15. 휴양지 1. 단계 2. 레이어 3. 플랜 1. 더하기 2. 덧셈 3. 양수 4. 추가 5. 플러스 1. 팟빵 2. 팟캐스트 3. 팟캐스트 구독 4. 팟캐스트 다운로드 5. 팟캐스트 방송 6. 팟캐스트 사이트 7. 팟캐스트 스튜디오 8. 팟캐스트 앱 9. 팟캐스트 어플 10. 팟캐스팅 1. 글쓰기 2. 낭만시 3. 산문시 4. 삼행시 5. 서정시 6. 시 7. 시인 8. 시집 9. 운문 10. 자유시 11. 정형시 1. 라이츄 2. 포케몬 3. 포켓몬 4. 포켓몬 도감 5. 포켓몬 듀얼 6. 포켓몬고 7. 포켓몬스터 8. 포켓몬스터 게임 9. 포켓몬스터 캐릭터 10. 피차츄 1. 구호 2. 데모 3. 사전집회 4. 선거운동 5. 유세 6. 유세차 7. 정치 8. 집회 9. 캠페인 10. 확성기 1. 대변 2. 똥 3. 말똥 4. 배변 5. 변 6. 변비 7. 설사 8. 소똥 9. 응가 10. 토끼똥 1. 외설 1. 기프트 2. 생일 선물 3. 선물 4. 선물 상자 5. 선물 포장 6. 소망목록 7. 위시리스트 8. 졸업 선물 9. 추석 선물 10. 크리스마스 선물 1. 급행 2. 긴급 3. 우선사항 4. 우선순위 5. 최우선 6. 최우선순위 7. 후속 8. 후속조치 1. 개인정보 2. 개인정보 보호 3. 개인정보 침해 4. 사생활 5. 사생활 보호 6. 사생활 침해 7. 사적 권리 8. 프라이버시 9. 프라이버시 보호 10. 프라이버시 침해 1. 경쟁 2. 대상 3. 대회 4. 상 5. 상품 6. 수상 7. 시합 8. 우승자 9. 챔피언 10. 챔피언십 11. 트로피 12. 포상 1. 명상 2. 세라피 3. 심리치료 4. 심리치료사 5. 심리학 6. 심리학자 7. 요법 8. 정신과 9. 정신분석 10. 정신분석가 1. 가방 2. 단지갑 3. 돈주머니 4. 동전 지갑 5. 서류가방 6. 장지갑 7. 전자지갑 8. 주머니 9. 지갑 10. 핸드백 1. q&a 2. 기타 사항 3. 무작위 4. 문의 5. 의문 6. 임의 7. 자주 묻는 질문 8. 질문 9. 질의 1. 구절 인용 2. 따옴표 3. 발췌문 4. 예증 5. 인용 문헌 6. 인용 부호 7. 인용구 1. 레인보우 2. 무지개 3. 무지갯빛 1. 라즈베리 2. 래즈베리 3. 산딸기 1. 계산서 2. 명세서 3. 세금계산서 4. 송장 5. 영수증 6. 이체증 7. 인보이스 8. 청구서 9. 확인증 1. 릭 2. 릭 + 모티 3. 릭 산체스 4. 릭 앤 모티 5. 릭+모티 6. 릭과 모티 1. 기니피그 2. 뉴트리아 3. 다람쥐 4. 비버 5. 설치 동물 6. 설치류 7. 저빌 8. 쥐 9. 카피바라 10. 햄스터 1. 고무 오리 2. 고무 오리 경주 3. 고무 오리 인형 4. 고무 오리 장난감 5. 고무오리 6. 러버 덕 7. 러버덕 8. 러버덕 인형 9. 러버덕 장난감 10. 오리 1. 다이아몬드 2. 루비 3. 마노 4. 보석 5. 보석광물 6. 사파이어 7. 에메랄드 8. 오팔 9. 젬스톤 10. 주얼리 1. 대학 럭비 2. 럭비 3. 럭비 리그 4. 럭비 선수 5. 럭비 월드컵 6. 럭비 유니언 7. 럭비 풋볼 8. 럭비공 9. 럭비팀 10. 식스 네이션스 1. 강사 2. 고등학교 3. 교감 4. 교사 5. 교수 6. 교육 7. 교육적 8. 교장 9. 논문 10. 단과대학 11. 대학 12. 대학교 13. 대학원 14. 선생님 15. 수업 16. 아카데미 17. 아카데이 18. 전문대학 19. 종합대학 20. 중학교 21. 초등학교 22. 칼리지 23. 학과 24. 학교 25. 학급 26. 학원 1. sf 2. ufo 3. 공상과학 4. 미확인비행체 5. 비행접시 6. 외계 생명체 7. 외계인 8. 외계인 친공 9. 우주 10. 우주 여행 11. 우주선 1. 공학 2. 과기대 3. 과기부 4. 과학 5. 과학 논문 6. 과학계 7. 과학고등학교 8. 과학관 9. 과학기술부 10. 과학박물관 11. 과학실험 12. 과학자 13. 물리 14. 사이언스 15. 생명과학 16. 생물 17. 지구과학 18. 첨단과학 19. 화학 1. 사이버섹스 2. 성관계 3. 성교 4. 성욕 5. 성적 행위 6. 섹스 7. 외설물 8. 음란물 9. 정사 10. 카섹스 11. 포르노 12. 포르노 배우 13. 포르노 영화 14. 포르노그래피 15. 포르노물 16. 혼외정사 1. 고무신 2. 구두 3. 부츠 4. 샌들 5. 스니커즈 6. 슬리퍼 7. 신발 8. 운동화 9. 장화 10. 하이힐 1. 가게 2. 구입 3. 상점 4. 소매 5. 쇼핑 6. 스토어 7. 홈쇼핑 1. 빙상장 2. 스케이트 3. 스케이트 경기 4. 스케이트 보드 5. 스케이트 선수 6. 스케이트 타기 7. 스케이트보드 8. 스케이트보딩 9. 스케이트장 10. 아이스링크 1. 간접흡연 2. 궐연 3. 금연 4. 담배 5. 담배꽁초 6. 담뱃대 7. 애연가 8. 줄담배 9. 흡연 10. 흡연가 1. 강설 2. 겨울 3. 눈덩이 4. 눈송이 5. 첫눈 6. 추위 7. 폭설 8. 혹한 1. 골키퍼 2. 롱슛 3. 오버헤드킥 4. 월드컵 5. 축구 6. 축구 선수 7. 축구공 8. 축구장 9. 축구화 10. 페널티킥 1. 3점슛 2. 경기 3. 경기장 4. 경주 5. 골대 6. 농구 7. 농구공 8. 농구선수 9. 농구장 10. 덩크 11. 덩크슛 12. 드리볼 13. 레이업슛 14. 미드필더 15. 배구 경기 16. 배구 시합 17. 백핸드 18. 비치 발리볼 19. 스타디움 20. 스트라이커 21. 스포츠 22. 아시안게임 23. 아이스하키 24. 야구장 25. 야구장갑 26. 여자배구 27. 올림픽 28. 유격수 29. 유니버시아드 30. 족구 31. 축구 경기 32. 축구 시합 33. 축구 중계 34. 축구 평가전 35. 축구협회 36. 크리스 37. 크리켓 게임 38. 크리켓 공 39. 크리켓 월드컵 40. 테니스라켓 41. 테니스선수 42. 테니스장 43. 테니스코트 44. 퍽 45. 포핸드 46. 풋볼 47. 피치 48. 필드하키 49. 하드 코트 50. 하키 51. 하키 경기 52. 하키 리그 53. 하키 선수 54. 하키 시합 55. 하키스틱 56. 하키장 1. 1등성 2. 2등성 3. 3등성 4. 별 5. 별나라 6. 별빛 7. 별자리 8. 북마크 9. 선호 10. 선호 대상 11. 스타 12. 애호 13. 즐겨찾기 14. 즐겨찾기 추가 15. 책갈피 16. 천체 17. 항성 1. bb8 2. 광선검 3. 다스베이다 4. 로그원 5. 스카이워커 6. 스타워즈 7. 요다 8. 제다이 9. 조지 루커스 10. 포스 1. 석양 2. 일몰 3. 일출 4. 태양 5. 태양 에너지 6. 태양광 7. 태양풍 8. 해 9. 햇빛 10. 햇살 1. 수영 2. 수영 강사 3. 수영 강습 4. 수영 레슨 5. 수영경기 6. 수영모자 7. 수영복 8. 수영장 9. 풀장 10. 해수욕장 1. 녹차 2. 다도 3. 보리차 4. 보이차 5. 쌍화차 6. 우롱차 7. 찻잔 8. 찻집 9. 홍차 1. 과학기술 2. 기술 3. 기술자 4. 기술중심 5. 선진기술 6. 첨단기술 7. 테크 8. 테크놀로지 9. 하이테크 10. 혁신 1. 단식 2. 복식 3. 윔블던 4. 테니스 5. 테니스 경기장 6. 테니스 라켓 7. 테니스 시합 8. 테니스공 9. 테니스화 10. 혼합 복식 1. 공연장 2. 극장 3. 멀티플렉스 4. 상영관 5. 소극장 6. 시네마 7. 씨어터 8. 영화관 9. 오페라 극장 10. 자동차 극장 1. 나빠요 2. 못 했어요 3. 부정적 4. 싫어요 5. 안 좋아요 6. 형편없어요 1. 긍정적 2. 대단해요 3. 뛰어나요 4. 멋져요 5. 잘 됐어요 6. 잘 했어요 7. 좋아요 8. 훌륭해요 1. 구분 2. 구성 3. 목차 4. 분류 5. 색인 6. 순서 7. 인덱스 8. 차례 9. 챕터 10. 항목 1. 기획 2. 목적 3. 목표 4. 스케줄 관리 5. 스케줄링 6. 시간 관리 7. 일정 관리 8. 작업 9. 작업 관리 10. 작업 목록 11. 작업 시간 12. 작업 항목 13. 작업관리 목록 14. 작업목록 15. 할 것 16. 할 일 17. 할 일 목록 18. 해야 할 일 19. 해야할 일 20. 해야할일 1. 가젯 2. 공구 3. 도구 4. 도구 모음 5. 생산성 6. 유틸리티 7. 툴 8. 툴박스 9. 툴킷 10. 패치 11. 프로젝트 1. ktx 2. 기차 3. 기차 시간표 4. 기차 여행 5. 기차역 6. 여객 열차 7. 열차 8. 철길 9. 철도 10. 철로 11. 화물 열차 1. 나그네 2. 배낭여행 3. 여행가 4. 여행사 5. 투어 6. 트래블 7. 해외여행 1. 등반 2. 등산 3. 백패킹 4. 산책 5. 암석등반 6. 올레길 7. 트레킹 8. 트레킹화 9. 하이킹 1. 삼각형 2. 트라이앵글 1. tv 2. tv 쇼 3. tv 프로그램 4. 드라마 5. 방송 6. 시리즈 7. 연속극 8. 텔레비전 9. 편성표 1. 문법 2. 오타 3. 인쇄 4. 인쇄물 5. 인쇄술 6. 조판 7. 철자 8. 철자법 9. 타이포그라피 10. 활자 11. 활자법 12. 활판 13. 활판 기술 14. 활판 인쇄 15. 활판 인쇄술 16. 활판술 1. 문자 세트 2. 문자 집합 3. 문자 체계 4. 문자 코드 5. 부호화 6. 유니코드 7. 인코더 8. 인코딩 9. 캐릭터 세트 10. 코드화 1. 다스베이더 2. 다크사이드 3. 시스 4. 시스의 복수 5. 아나킨 6. 아나킨 스카이워커 7. 악 8. 악당 9. 악인 10. 적 1. null 2. 공백 3. 공백기 4. 공허 5. 누락 6. 부재 7. 빈자리 8. 빔 9. 여백 1. 네트 2. 드라이브 서브 3. 배구 4. 배구 선수 5. 배구공 6. 배구장 7. 비치발리볼 8. 서브 9. 센터 10. 언더핸드 서브 1. 기다림 2. 대기 3. 대기 중 4. 대기자 명단 5. 보류 6. 보류 중 7. 유보 8. 일시 중지 9. 중단 10. 중지 1. 벽시계 2. 삼성 기어 3. 손목시계 4. 스마트워치 5. 시계 6. 알람시계 7. 애플워치 8. 와치 9. 워치 10. 탁상시계 1. 물 2. 비 3. 빗물 4. 상수도 5. 생수 6. 수도 요금 7. 수돗물 8. 식수 9. 워터 10. 정수기 1. www 2. 거미줄 3. 네트워크 4. 서브넷 5. 월드와이드웹 6. 웹 7. 인터넷 8. 통신망 1. 결혼 2. 결혼반지 3. 결혼식 4. 남편 5. 들러리 6. 배우자 7. 부인 8. 신랑 9. 신부 10. 웨딩 11. 웨딩홀 1. 레드와인 2. 백포도주 3. 아이스와인 4. 와이너리 5. 와인 6. 와인오프너 7. 와인잔 8. 적포도주 9. 포도주 10. 화이트와인 1. 경력 2. 고리짝 3. 근로 4. 근무 5. 노동 6. 비즈니스 7. 사업 8. 생산 9. 선반 10. 수화물 11. 업무 12. 운반칸 13. 일자리 14. 직업 15. 직장 16. 짐 17. 짐꾼 18. 짐칸 19. 책무 20. 트렁크 21. 하물 22. 회사 23. 휴대 가능 수화물 1. 국제 2. 국제화 3. 글로벌 4. 다국적 5. 세계 6. 세계화 7. 전 세계 8. 지구 9. 지구촌 1. 비크람 2. 빈야사 3. 수양 4. 스트레칭 5. 심신단련 6. 아쉬탕가 7. 요가 8. 요가 강사 9. 요가 동작 10. 요가 레깅스 11. 요가 매트 12. 요가 자세 13. 요가복 14. 자기개발 15. 정신 16. 집중 17. 집중력 18. 호흡 1. nada 2. nenhum 3. ninguém 4. zero 1. 1.º 2. primeiro 3. um 1. 2.º 2. segundo 3. to 1. 3.º 2. terceiro 3. três 1. 4.º 2. quarto 3. quatro 1. 5.º 2. cinco 3. quinto 1. 6.º 2. seis 3. sextio 1. 7.º 2. sete 3. sétimo 1. 8.º 2. oitavo 3. oito 1. 9.º 2. nono 3. nove 1. automação 2. automático 3. deep learning 4. ia 5. inteligência artificial 6. machine learning 7. ml 8. redes neurais 9. robótica 10. robô 11. robôs 12. skynet 1. animais 2. animais de estimação 3. animal 4. bicho 5. bichos 6. pets 7. vida selvagem 1. aplicativo 2. aplicativos 3. app 4. apps 5. programa de computador 6. software 1. arte 2. artista 3. artistas 4. artístico 5. criatividade 6. criação 7. desenhos 8. ilustração 9. ilustrações 10. pintura 11. pinturas 12. quadro 13. quadros 1. artido 2. artigo 3. artigo no blog 4. artigos 5. ata de reunião 6. blog 7. blogs 8. blogueira 9. blogueiro 10. bookmarks 11. diário online 12. diários online 13. favoritar 14. jornalista 15. jornalistas 16. links 17. marca-página 18. marcador de livro 19. marcadores de página 20. matéria 21. post de blog 22. posts 23. posts blog 24. posts de blogs 25. publicações de blogs 26. páginas web 27. redação 28. resumo 29. texto 30. textos 31. trecho 1. folha 2. folhas 3. outono 1. base 2. beisebol 3. taco 1. bela 2. belas 3. beleza 4. belo 5. belos 6. bonita 7. bonitas 8. bonito 9. bonitos 10. estética 1. ale 2. cerveja 3. cerveja artesanal 4. cervejada 5. cevejaria 6. lúpulo 7. pilsen 8. red ale 9. stout 10. weiss 1. bicicleta 2. bicicletas 3. bike 4. ciclista 5. ciclistas 6. downhill 7. mountain bike 8. mountain biking 9. pedal 10. pedalar 1. barco 2. barcos 3. cruzeiro 4. iate 5. iates 6. navegar 7. navio 8. navios 9. vela 10. veleiro 11. veleiros 12. velejar 1. consulta 2. consultas 3. diário 4. diários 5. editor 6. editora 7. escrita 8. escritas 9. histórias 10. jornais 11. jornal 12. literatura 13. livro 14. livro didático 15. livros 16. livros didáticos 17. publicação 18. publicações 19. romance 20. romances 21. vocabulário 1. bug 2. bugs 3. correção de bug 4. correção de bugs 5. depuração de bugs 6. depuração de erros 7. erro de programa 8. relatório de bugs 9. relatórios de bugs 1. coletivo 2. ônibus 1. aniversário 2. aniversários 3. bolo 4. bolos 1. agenda 2. agendas 3. algum dia 4. compromisso 5. compromissos 6. data de expiração 7. data final 8. datas de vencimento 9. evento 10. eventos 11. hoje 12. prazo final 13. prazos 1. câmera 2. câmeras 3. dslr 4. fotografias 5. fotos 6. fotógrafo 7. fotógrafos 8. imagens 9. reflex 1. acampamento 2. acampamento base 3. acampamentos 4. barraca 5. camping 6. campo de base 7. escotismo 8. fogueira 9. local de camping 10. área de camping 1. automobilismo 2. automóveis 3. automóvel 4. carro 5. carros 6. estrada 7. mobilidade 8. motorista 9. multa de trânsito 10. taxi 1. bichano 2. felino 3. gatinho 4. gato 5. gatos 6. miau 1. cinema 2. entretenimento 3. filme 4. filmes 5. vídeo 6. vídeos 1. arquitetura 2. centro da cidade 3. cidade 4. cidades 5. metropolitano 6. metrópolis 7. urbanismo 8. urbano 1. anexos 2. anexos da web 3. trechos da web 1. armazenamento em nuvem 2. computação em nuvem 3. nublado 4. nuvem 5. nuvens 1. caipirinha 2. caipirinhas 3. caipivodka 4. caipivodkas 5. cocktail 6. cocktails 7. coquetel 8. coquetéis 9. drink 10. receitas de coquetéis 11. receitas de drinks 1. cafeína 2. café 3. café com leite 4. café expresso 5. café gelado 6. cafés 7. capuccino 1. gibi 2. história em quadrinho 3. histórias em quadrinho 4. hq 5. mangá 6. mangás 7. quadrinhos 8. revistinha 1. aprovado 2. completado 3. concluído 4. conquistado 5. definido 6. feito 7. finalizado 8. pronto 9. terminado 1. conference call 2. conference calls 3. conferência 4. oficina 5. oficinas 6. reunião 7. reuniões 8. workshop 9. workshops 1. contato 2. contatos 3. festa 4. pessoa 5. pessoas 1. bate-papo 2. bate-papos 3. chat 4. cmentário 5. comentários 6. conversa 7. conversação 8. discussão 9. discussões 10. tagarela 1. alimentos 2. almoço 3. comida 4. cozinha 5. cozinhar 6. culinária 7. gastronomia 8. gastronômico 9. jantar 10. lanchonete 11. restaurante 1. cricket 2. críquete 1. equipe 2. jogo de rpg 3. narrativa 4. personagem 5. regra 6. rpg 7. rpgs 1. dado 2. dados 3. damas 4. gamão 5. jogo de tabuleiro 6. jogos de tabuleiro 7. jogos em festas 8. regras 9. war 10. xadrez 1. bailar 2. balé 3. coreografia 4. dança 5. dança clássica 6. dançar 7. dançarina 8. dançarinos 9. danças 10. salão de baile 1. admin 1. design 2. design gráfico 3. designer 4. designer gráfico 5. designers 6. layout 1. baia 2. colega de trabalho 3. coworking 4. divisória 5. emprego 6. escritório 7. escrivaninha 8. espaço aberto 9. local de trabalho 10. prédio de escritórios 1. depuração de código 2. desenvolvedor 3. desenvolvedores 4. desenvolvimento 5. dev 6. empreendimento 7. empreendimentos 8. esboço 9. esboços 10. planejamentos 11. programador de computadores 12. programadores 13. projeto 14. trecho de código 15. trechos de código 1. faça você mesmo 2. hobby 3. trabalho manual 4. trabalhos manuais 1. biologia 2. ciências naturais 3. gene 4. genes 5. genética 6. genético 7. hereditário 1. cirurgião 2. clínico 3. doutor 4. dr 5. médico 1. doctor who 2. the doctor 1. docs 2. documentação 3. documento 4. documentos 5. página 6. páginas 7. relatório 8. relatórios 1. cachorrinho 2. coleira 3. coleiras 4. cães 5. cão 6. pet 7. pet shop 8. ração canina 1. meus manuscritos 2. prmeiro manuscrito 3. rascunho 4. rascunhos 1. devaneio 2. sonho 3. sonhos 1. cura 2. curas 3. drogas 4. farmacêuticos 5. medicamento 6. medicação 7. pílulas 8. receita 9. receitas 10. remédio 1. batera 2. bateria 3. baterista 4. bateristas 5. kit de bateria 6. kits de bateria 7. tambor 1. ações 2. banco 3. bancário 4. bitcoin 5. bolsa de valores 6. ciências de dados 7. contas 8. economia 9. estat 10. estatística 11. finanças 12. fundos de investimento 13. gráfico 14. gráficos 15. investimentos 16. juros 17. marketing 18. orçamento 19. planejamento 20. poupança 21. publicidade 22. tendência 23. tendências 1. contas de energia 2. contas de luz 3. eletricidade 4. eletricista 5. eletricistas 6. elétrico 7. raio 8. relâmpago 1. boa forma 2. correr 3. corrida 4. exercício 5. exercícios 6. malhar 7. maratona 8. treinamento 1. criançada 2. crianças 3. familiares 4. família 5. filha 6. filhas 7. filho 8. filhos 9. gêmeos 10. irmão 11. irmãos 12. lar 13. mãe 14. pai 15. pais 16. sobrinho 17. tia 18. tio 1. bruxa 2. bruxo 3. dragão 4. dragões 5. drake 6. drakes 7. feiticeira 8. feiticeiro 9. feitiçaria 10. folclore 11. magia 12. mago 13. magos 14. mito 15. mitologia 16. mitos 17. mágica 18. serpente marinha 1. fashion 2. moda 3. modas 4. roupa 5. roupas 6. traje 7. trajes 1. destacado 2. destacados 3. importante 4. importantes 5. relevante 6. relevantes 7. sinalizado 8. sinalizados 1. futebol americano 1. flying spaghetti monster 2. pastafarian 3. pastafarianism 4. pastafarians 1. comédia 2. comédias 3. diversão 4. engraçado 5. engraçados 6. humor 7. humorístico 8. piada 9. piadas 1. console de jogo 2. game 3. gamer 4. games 5. gaming 6. video game 7. video games 8. videogame 9. videogames 1. aluno 2. alunos 3. diploma 4. estudante 5. estudantes 6. faculdade 7. formado 8. graduado 9. graduação 1. armazém 2. comprar 3. compras 4. mall 5. mercadinho 6. shopping 7. shopping center 8. shopping mall 1. aulas de guitarra 2. aulas de violão 3. baixo 4. baixo acústico 5. baixo elétrico 6. canções na guitarra 7. doze cordas 8. guitarra 9. guitarra base 10. guitarra elétrica 11. oito cordas 12. sete cordas 13. violão 14. violão clássico 1. academia 2. crossfit 3. ginástica 4. halteres 5. levantamento de peso 6. malhação 7. músculo 8. músculos 9. pesos 10. treino 11. treino de força 1. diet 2. dieta 3. dietas 4. dietético 5. energético 6. light 7. nutritivo 8. nutrição 9. saudáveis 10. saudável 11. saúde 12. vitalidade 1. ar livre 2. descanso 3. feriado 4. feriados 5. feriadão 6. festas de fim de ano 7. férias 8. viagem 9. viagens 1. cafofo 2. casa 3. domicílio 4. residência 1. brainstorm 2. idealizador 3. idealizadora 4. idealizadores 5. idealizar 6. ideia 7. ideias 8. inspiração 9. inspirações 10. intuição 11. intuições 12. pensamentos 1. caixa de entrada 2. entrada 3. recebidas 1. info 2. informação 3. informações 1. assustador 2. chorando 3. triste 1. aulas de piano 2. canções ao piano 3. clássico 4. composição 5. jazz 6. música clássica 7. música no piano 8. orquestra 9. piano 10. sinfonia 11. ópera 1. costura 2. costurar 3. crochê 4. tricotar 5. tricô 1. advogado 2. constituição 3. defensor 4. defesa 5. juiz 6. juridico 7. júri 8. legislação 9. lei 10. processo legal 1. bebida alcoólica 2. bebida destilada 3. bebida forte 4. birita 5. brandy 6. destilados 7. licor 8. licores 1. lista 2. listagem 3. listagens 4. listas 5. programa 6. programação 7. programações 1. condado 2. gandalf 3. golum 4. hobbit 5. o hobbit 6. orc 7. saruman 8. senhor dos anéis 9. tolkien 1. amar 2. amor 3. apaixonada 4. apaixonadas 5. apaixonado 6. apaixonados 7. ciúmes 8. desejo 9. dia dos namorados 10. favorita 11. favoritas 12. namorada 13. namorado 14. namorando 15. namoro 16. noivado 17. paixão 18. vida amorosa 1. ciências da computação 2. computador 3. computadores 4. entenharia de software 5. pc 6. ti 1. carta 2. cartas 3. cartão postal 4. cartões postais 5. correio 6. correios 7. email 8. emails 9. encomenda 10. selo postal 1. geometria 2. matemática 1. ego 2. eu 3. eu mesmo 4. mim 5. pessoal 6. self 7. selfie 8. sozinho 1. cometa 2. cometas 3. estrela cadente 4. estrelas cadentes 5. meteoro 6. meteoros 7. meteoróide 1. metrô 1. ao vivo 2. canto 3. cantor 4. cantores 5. canção 6. canções 7. concerto 8. concertos 9. falar 10. falar em público 11. gravação 12. letras de música 13. locuções 14. mic 15. microfone 16. vocal 17. voz 1. minimalismo 2. minimalista 3. minimalistas 4. mínimo 5. simples 6. simplicidade 7. simplicidades 1. carteira 2. conta bancária 3. cédula 4. dinheiro 5. dinheiro vivo 6. economias 7. imposto 8. impostos 9. moeda 10. pagamento 11. pagamentos 12. porta-níqueis 1. lua 2. luar 3. luau 4. lunar 5. meia-noite 6. noite 1. moto 2. motoboy 3. motocicleta 4. motocicletas 5. motoqueira 6. motoqueiras 7. motoqueiro 8. motoqueiros 9. motorbike 10. motorbikes 1. champignon 2. cogumelo 3. cogumelos 4. fungi 5. shiitake 1. cantora 2. corais 3. coral 4. música 5. músicas 1. ambiental 2. ambiente 3. cachoeira 4. ecologia 5. ecológica 6. ecológico 7. ecológicos 8. floresta 9. jardinagem 10. meio ambiente 11. natural 12. natureza 13. paisagismo 14. planta 15. plantar 16. plantas 17. sustentabilidade 18. sustentável 1. leitura 2. lista de leitura 3. para ler 1. depois 2. posterior 3. próximo 4. seguinte 1. anotado 2. anotação 3. anotações 4. bloco 5. caneta 6. canetas 7. lápis 8. nota 9. notas 1. apaziguar 2. pacificado 3. pacífico 4. paz 1. chamada 2. chamada telefônica 3. chamadas 4. chamadas telefônicas 5. fone 6. fones 7. ligação telefônica 8. ligações telefônicas 9. telefone 10. telefones 1. câmera fotográfica 2. filtro fotográfico 3. foto 4. fotografia 5. fotógrafa 6. imagem 7. lembranças 8. lente fotográfica 9. memórias 1. bombeiro 2. cano 3. conta de esgoto 4. contas de esgoto 5. encanador 6. esgoto 1. bairro 2. locais 3. local 4. localização 5. localizações 6. lugar 7. lugares 8. mapa 9. mapas 10. paisagem 11. parque 12. praça 13. visita 14. visitar 1. decisões 2. plano 3. planos 4. resoluções 1. adicionar 2. excedente 3. mais 1. podcast 2. podcasts 1. escrevendo 2. estrofes 3. poema 4. poemas 5. poesia 6. poeta 7. poetas 8. poetiza 9. poetizas 10. poético 11. versos 1. pokemon 1. campanha 2. carreata 3. megafone 4. militância 5. politica 1. bosta 2. coco 3. merda 4. titica 1. lista de desejos 2. presente 3. presenteado 4. presentes 1. asap 2. crítico 3. imediato 4. prioridade 5. prioridades 6. urgente 1. particular 2. particulares 3. privacidade 4. privadas 5. privado 6. privados 1. campeonato 2. campeã 3. campeão 4. campeãs 5. campeões 6. competição 7. competições 8. prêmio 9. prêmios 10. troféu 11. troféus 1. mediação 2. psicoanalista 3. psicologia 4. psicoterapeuta 5. psicólogo 6. psiquiatra 7. terapeuta 8. terapia 1. bolsa 2. bolsa de mão 3. bolsas 4. bolsas de mão 5. mochila 1. aleatório 2. dúvida 3. dúvidas 4. miscelânea 5. misto 6. outros 7. pergunta 8. perguntas 9. q&a 1. citar 2. citação 3. citações 1. arco-íris 2. arcos-íris 1. framboesa 2. framboesas 1. boleto 2. cobrança 3. fatura 4. faturas 5. recibo 6. recibos 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 1. capivara 2. coelho 3. ratazana 4. rato 5. roedor 6. roedores 1. boneco 2. pato de borracha 1. diamante 2. diamantes 3. gemas 4. pedra preciosa 5. pedras preciosas 6. rubi 7. rubis 1. rúgby 1. acadêmico 2. aula 3. aulas 4. educacional 5. educação 6. ensinar 7. escola 8. escolas 9. estudo 10. estudos 11. instrução 12. professor 13. professores 14. sala de aula 15. tese 16. universidade 17. universidades 1. aliens 2. alienígena 3. conspiração 4. disco voador 5. et 6. ficção científica 7. invasão alienígena 8. nave espacial 9. naves espaciais 10. reptilian 11. sci-fi 12. teoria da conspiração 13. ufos 14. universo 15. viagem espacial 16. vida extraterrestre 1. artigo científico 2. cientista 3. cientistas 4. científico 5. científicos 6. ciência 7. laboratório científico 8. pesquisa 9. pesquisas 10. pseudo-ciência 1. pornografia 2. pornográfica 3. pornográfico 4. pornográficos 5. pornô 6. relação sexual 7. sexo 8. sexual 9. transa 1. botas 2. calçado 3. calçados 4. sandália 5. sandálias 6. sapatilha 7. sapatilhas 8. sapato 9. sapatos 1. bazar 2. brechó 3. feira 4. loja 5. lojas 6. varejo 1. skate 2. skateboard 3. skateboarding 4. skateboards 1. cigarro 2. cigarros 3. fumante 4. fumar 5. fumo 6. tabaco 1. floco de neve 2. frio 3. geada 4. inverno 5. nevasca 6. neve 1. balisa 2. bola 3. escanteio 4. futebol 5. jogador 6. pênalti 1. baseball 2. basketball 3. basquete 4. basquetebol 5. bola ao cesto 6. bola de tênis 7. desportivo 8. desportos 9. esporte 10. esportes 11. esportiva 12. esportivas 13. esportivo 14. esportivos 15. goleiro 16. hockey 17. jogador de futebol 18. jogo de futebol 19. juiz de futebol 20. partida de futebol 21. quadra de tênis 22. raquete de tênis 23. rede de vôlei 24. saque de vôlei 25. voleibol 1. astro 2. astros 3. estrela 4. estrela do mar 5. estrelado 6. fav 7. favorito 8. favoritos 9. preferido 10. preferidos 1. guerra nas estrelas 2. star wars 3. starwars 1. ensolarado 2. sol 1. aula de natação 2. nadador 3. nadar 4. natação 5. piscina 6. piscinas 7. toca de natação 8. óculos de natação 1. chaleira 2. chá 1. tecnologia 2. tecnologias 3. técnica 4. técnico 1. partida 2. raquetada 3. raquete 4. serviço 5. tênis 1. ator 2. atriz 3. encenar 4. palco 5. peça 6. representar 7. teatrais 8. teatral 9. teatro 10. teatros 1. horrível 2. negativo 3. reprovado 4. ruim 1. afirmativo 2. bom 3. curtir 4. excelente 5. fantástico 6. legal 7. positivo 8. ótimo 1. capítulos 2. conteúdo 3. sumário 4. índice 5. índice do livro 1. afazeres 2. lista de afazeres 3. lista de tarefas 4. listas de afazeres 5. listas de tarefas 6. meta 7. metas 8. objetivo 9. objetivos 10. tarefa 11. tarefas 1. como fazer 2. consertar 3. consertos 4. ferramenta 5. ferramentas 6. gadget 7. gadgets 8. produtividade 9. projetos 10. reparar 11. reparos 12. treco 13. utilidades 1. estação ferroviária 2. ferrovia 3. linha de trem 4. trem 5. trens 6. trânsito 1. viajante 2. viajantes 3. viajar 1. alpinismo 2. alpinista 3. bastão de caminhada 4. escalada 5. hike 6. hiking 7. mochileiro 8. tirlha 9. trilheiro 1. triângulo 1. ator de tv 2. atriz de tv 3. novela 4. novelas 5. programa de tv 6. programas de tv 7. série de tv 8. televisão 9. tv 1. gramática 2. gráfica 3. imprensa 4. impresso 5. impressão 6. imprimir 7. tipografia 8. tipográfico 1. caracteres 2. codificação 3. conjunto de caracteres 4. código 1. a força 2. antagonista 3. inimigo 4. inimigos 5. jedi 6. lado escuro 7. lord vader 8. mal 9. senhor do mal 10. vilão 1. em branco 2. nulo 3. vazio 1. futivôlei 2. quadra 3. saque 4. vôlei 5. vôlei de praia 1. aguardando 2. em espera 3. espera 4. esperando 5. interrompido 6. pausa 7. pausado 1. relógio de pulso 2. relógio inteligente 3. smartwatch 1. chuva 2. conta de água 3. contas de água 4. goda de chuva 5. água 6. água corrente 1. internet 2. rede 3. redes 4. teia 5. teia de aranha 6. teias 7. teias de aranha 8. world wide web 9. www 1. alianças 2. casamento 3. casamentos 4. cônjuge 5. esposa 6. marido 7. matrimônio 8. matrimônios 9. noiva 10. noivo 1. champagne 2. degustação 3. espumante 4. uva 5. vinhedo 6. vinhedos 7. vinho branco 8. vinho tinto 9. vinícola 10. vinícolas 1. bagagem 2. bagagens 3. carreira 4. empregada 5. empregado 6. empregados 7. empregos 8. mala 9. malas 10. negócios 11. patroa 12. patrão 13. patrões 14. profissão 15. trabalhando 16. trabalho 1. global 2. globo 3. internacional 4. multinacional 5. mundial 6. mundo 7. planeta 8. planetas 9. terra 1. asana 2. autodesenvolvimento 3. concentração 4. consciência 5. desenvolvimento pessoal 6. espiritual 7. ioga 8. lótus completo 9. mantra 10. meditação 11. meio lótus 12. postura 13. yoga 14. ássana ## Universal Keywords (all languages) 1. 0 1. 1 2. 1. 3. 1° 1. 2 2. 2. 3. 2° 1. 3 2. 3. 3. 3° 1. 4 2. 4. 3. 4° 1. 5 2. 5. 3. 5° 1. 6 2. 6. 3. 6° 1. 7 2. 7. 3. 7° 1. 8 2. 8. 3. 8° 1. 9 2. 9. 3. 9° 1. bot 2. bots 3. skynet 1. alliance 1. android 1. pet therapy 1. apple 1. avengers 2. the avengers 1. aws 2. aws cloud 3. aws labda 1. major league 2. mlb 3. world series 1. bear 1. ale 2. india pale ale 3. lager 4. page lager 5. pale ale 6. stout 1. big daddy 2. bioshock 3. bioshock infinite 4. little sister 5. would you kindly 1. bch 2. bitcoin 3. bitcoin cash 4. bitcoins 5. blockchain 6. btc 7. cryptocurrencies 8. cryptocurrency 9. litecoin 1. ebook 2. ebooks 3. epub 4. epubs 5. ibook 6. kindle 7. kindle fire 1. flixbus 1. canon 2. fujifilm 3. leica 4. nikon 1. news clippings 2. news clips 3. webclips 1. cloudkit 2. dropbox 3. google drive 4. icloud 1. bloody mary 2. caipirinha 3. cosmopolitan 4. daiquiry 5. gin fizz 6. gin lemon 7. margarita 8. martini 9. mojito 10. negroni 11. old fashioned 12. rum and coke 13. white russian 1. espresso 1. one punch man 2. one punch-man 3. one-punch man 4. onepunch-man 5. saitama 1. vcard 2. vcards 1. chat 2. chats 3. conversations 4. icq 5. imessage 6. imessages 7. irc 8. messages 9. messanger 10. skype 11. slack 12. telegram 13. whatsapp 1. chef 1. ashes 2. icc 3. the ashes 1. css 2. sass 3. scss 4. style sheet 1. d&d 2. d20 3. dnd 4. dungeons and dragons 5. gamemaster 6. pathfinder 1. catan 2. cluedo 3. d6 4. monopoly 5. risiko 6. trivial pursuit 7. yahtzee 1. break dance 2. breaking 3. charleston 4. conga 5. foxtrot 6. jitterbug 7. milonga 8. quickstep 9. samba 10. tango 11. tap dance 12. tip tap 13. waltz 14. zumba 1. admin 2. core data 3. coredata 4. couchdb 5. dbms 6. jdbc 7. mongodb 8. mysql 9. newsql 10. nosql 11. odbc 12. oracle 13. postgres 14. postgresql 15. sql 16. sql lite 17. sql server 18. sqlite 19. sqlserver 1. ui 2. ux 1. dev 2. it 3. itc 4. snippet 5. snippets 6. xml 1. dj 1. d.n.a. 2. dna 3. r.n.a. 4. rna 1. allons-y 2. dalek 3. doctorwho 4. tardis 5. the doctor 6. time lord 7. timeywimey 1. docx 2. pdf 1. doggo 2. doggos 1. $ 2. dollar 3. dollars 4. usd 1. douban 2. 豆瓣 3. 豆瓣小组 4. 豆瓣日记 5. 豆瓣电影 6. 豆瓣读书 7. 豆邮 1. dreaming 2. inception 1. drupal 1. eth 2. eth 2.0 3. ethereum 1. e.u. 2. eur 3. euro 4. europe 5. european union 6. € 1. facebook 1. dotraki 2. dragonmother 3. fantasy 4. game of thrones 5. george martin 6. george r. r. martin 7. jon snow 8. khaleesi 9. lannister 10. shannara 11. targaryen 12. the dragon queen 13. tyrion 14. westeros 1. swag 1. american football 2. nfl 1. fsm 1. lmao 2. lol 3. meme 4. memes 5. rotfl 1. furry 1. cvs 2. git 3. mercurial 4. subversion 5. svn 6. vesta 1. gist 2. gists 3. github 4. github.com 1. acoustic guitar 2. blues 3. bossa nova 4. country 5. fender 6. fender stratocaster 7. flamenco 8. folk 9. gibson 10. grunge 11. indie 12. metal 13. nu metal 14. prog 15. progressive 16. reggae 17. rock 18. rock and roll 19. ska 1. gryffindor 2. harry potter 3. hermione 4. hogwarts 5. hufflepuff 6. j. k. rowling 7. quidditch 8. ravenclaw 9. slytherin 10. voldemort 1. Blood elf 2. Garrosh 3. Orgrimmar 4. Silvermoon 5. Sylvanas 6. Tauren 7. Thrall 8. Thunder Bluff 9. Undercity 10. Vol’jin 11. for the horde 1. html 2. html 5 3. html5 1. instagram 1. ipad 2. ipad pro 1. ios 2. iphone 3. iphone 7 4. iphone 7+ 5. iphone 8 6. iphone 8+ 7. iphone x 8. iphone7 9. iphone7+ 10. iphone8 11. iphone8+ 12. iphonex 1. binding of isaac 2. isaac 3. tboi 4. tboia 5. tboia+ 6. tboir 7. the binding of isaac 8. the-binding-of-isaac 9. the_binding_of_isaac 1. JavaFX 2. j2se 3. java 4. jdk 5. jsp 6. jvm 1. ECMAScript 2. javascript 3. js 4. json 1. bechstein 2. fazioli 3. grand piano 4. grotrian steinweg 5. mason and hamlin 6. schimmel 7. shigeru kawai 8. steinway 9. steinway & sons 10. stuart and sons 1. debian 2. linux 3. suse 4. ubuntu 1. absinthe 2. armagnac 3. bourbon 4. bourbon whiskey 5. brandy 6. cognac 7. gin 8. grappa 9. grappe 10. jenever 11. mezcal 12. moonshine 13. rum 14. rye whiskey 15. sake 16. schnapps 17. scotch 18. tequila 19. vermouth 20. vodka 21. wiskey 1. bilbo 2. elrond 3. frodo 4. gandalf 5. gimli 6. gollum 7. hobbit 8. legolas 9. lotr 10. sauron 11. silmarillion 12. smaug 13. the hobbit 14. the shire 15. thorin 16. tolkien 1. mac 2. macos 1. makeup 1. mario 2. mario kart 3. mario odyssey 4. mario world 5. super mario 6. super mario brothers 1. pi 1. medium 1. gospel 2. hip hop 3. microphone 4. pop 5. r&b 6. rap 7. rhythm and blues 8. soul 9. trap 1. aprilia 2. ducati 3. harley davidson 4. harley-davidson 5. honda 6. husqvarna 7. kawasaki 8. suzuki 9. triumph 10. yamaha 1. 1up 2. shroom 1. geek 2. geeks 3. nerd 4. nerds 5. nerdy 1. 2ds 2. 2ds xl 3. 3ds 4. 3ds xl 5. nes 6. nintendo 7. nintendo 64 8. snes 9. super nes 10. super nintendo 11. supernes 12. wii 13. wiiu 1. node js 2. node.js 3. nodejs 1. obj c 2. obj-c 3. objc 4. objective c 5. objective-c 6. objectivec 1. password 2. passwords 1. pizza 2. pizza pie 1. playstation 2. ps1 3. ps2 4. ps3 5. ps4 6. ps4 pro 1. nsfw 1. gbp 2. pound 3. pound sterling 4. pounds 5. sterling 6. sterlings 7. £ 1. ! 2. important 1. prompt 2. terminal 1. headspace 2. mindfullness 1. django 2. ipython 3. python 1. Tencent 2. qq 3. 企鹅 4. 腾讯 5. 鹅厂 1. ? 2. questions 1. lgbt 2. lgbtq 3. lgbtqi 4. lgbtqia 1. raspberry pi 2. raspberrypi 1. reddit 2. subreddit 3. subreddits 1. rick 2. rick & morty 3. rick + morty 4. rick and morty 5. rick sanchez 6. rick+morty 1. rails 2. ruby 3. ruby on rails 1. cyberpunk 2. science fiction 3. scifi 4. syfy 5. ufo 1. shiny frog 2. shinyfrog 1. magritte 1. champions league 2. fa cup 3. fifa 4. fifa world cup 5. league 6. premier league 7. serie a 8. serie b 9. world cup 1. inklings 2. salmon run 3. splatfests 4. splatnet 5. splatnet 2 6. splatoon 7. splatoon 2 1. nba 2. nhl 1. star trek 2. trekkers 1. swift 1. nintendo switch 2. switch 1. taobao 2. tb 3. 某宝 4. 淘宝 5. 淘宝店 6. 淘宝店铺 7. 淘宝收藏 8. 阿里巴巴 1. egpu 1. opera 1. t.o.c. 2. table of contents 3. toc 1. tumblr 1. hulu 2. netflix 1. twitter 1. font 2. fonts 3. typeface 4. typefaces 1. unicode 2. utf 32 3. utf-16 4. utf-32 5. utf-8 6. utf16 7. utf8 1. darth 2. darth vader 3. nooooooo 4. sith 5. vader 1. vim 1. apple watch 1. agua 2. h2o 1. wechat 2. 公众号文章 3. 小程序 4. 微信 5. 微信公众号 6. 微信文章 7. 微信群 1. weibo 2. 围脖 3. 微博 4. 微博文章 5. 新浪 1. puzzle 2. wiki 3. wikipedia 1. windows 2. windows 8 3. windows vista 4. windows xp 5. windows8 6. windowsxp 1. barolo 2. burgundy 3. cabernet 4. cabernet sauvignon 5. chianti 6. gamay 7. lambrusco 8. merlot 9. moscato 10. pinot 11. pinot grigio 12. pinot noir 13. red wine 14. sangiovese 15. sauvignon 16. shiraz 17. tocai 18. white wine 1. wordpress 1. x box 2. x box one 3. xbox 4. xboxone 1. jpy 2. jp¥ 3. yen 4. ¥ 1. youtube 2. youtuber 3. youtubers 1. zelda 1. zhihu 2. 日报 3. 知乎 4. 知乎收藏 ## Suggestions? [Feel free to propose](https://bear.app/contact/) new TagCons or keywords, we always open to suggestions. [Contact Us](https://bear.app/contact/) * Resources * [Import your Notes](https://bear.app/faq/Import%20&%20export/Import%20your%20notes/) * [Sync Troubleshooting](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation) * [Browser Extensions](https://bear.app/faq/Extensions/Browser%20extensions/) * Community * [Blog](https://blog.bear-writer.com) * [Twitter](https://twitter.com/bearnotesapp) * [r/bearapp](https://www.reddit.com/r/bearapp/) * [Facebook](https://www.facebook.com/BearNotes) * [Instagram](https://www.instagram.com/bearnotesapp/) * Bear Notes * * --- * © 2022 * [Shiny Frog](http://www.shinyfrog.net) * [Contacts](https://bear.app/contact/) * [Press Kit](https://sf-applications.s3.amazonaws.com/Bear/PressKit/Press%20Kit%201.7.zip) [bear.app](https://bear.app/faq/Tags%20&%20Linking/TagCons%20Keywords/) # Rename and Delete Tags You can quickly rename or delete a tag from every note directly from the sidebar. ## Mac You can rename or delete tags by right-clicking on them in the sidebar. [image:AA5DB090-7A68-4A08-A1D5-07D0F3EA2679-52345-0000645DAF74789B/1.png] ## iOS You access the same functionalities by long-pressing a tag from the sidebar or tapping on the tag Note List header. [image:AAEC7FE7-5FFB-4BDB-A7A1-205335281C8F-52345-0000645DAF520DB5/2.png] Deleting or renaming a tag does not change the modification date of the involved notes. Bear also provide a facility to easily remove a note from a tag list. Select a tag in the sidebar, then: ## Mac Right-click on a note and select `remove tag ` [image:578192ED-C8D8-4636-8F44-A641E319D4AC-52345-0000645DAF2B3FFB/3.png] ## iOS Swipe on the note cell, select `more` and then `remove tag ` [Rename and Delete Tags](https://bear.app/faq/Tags%20&%20Linking/Rename%20and%20Delete%20Tags/) # How to Make Nested Tags If you want a deeper way to organise your notes, Bear allows you to structure your tags in simple hierarchies. Let's say you have a /recipes/ tag which contains all your favorite food preparations, but you want to quickly find all the vegetarian ones. In this scenario all you have to do is to insert this tag in all your vegetarian recipes: ``` #recipes/vegetarian ``` The `/` symbol tells Bear to manage the tag as a hierarchy where `recipes` is the father tag and `vegetarian` is its child. All the parent tags will be shown in the /Sidebar/ with a little disclosure button on the side. Selecting the disclosure will show the child tags related to the current parent. [image:0A469A00-6FDB-448B-BDE1-F447816FCE5A-52345-0000645CD6257E41/1.jpg] ## Infinite nesting For a more sophisticated tagging use as many tag levels you want. For example you can use dates as tags to have your notes sorted like in a journal. In the screenshot below we used tags like this: `#2017/02/27#`. [image:CF4ABE3F-18A5-4E4B-929E-628DA9EA758C-52345-0000645CD5F7C5F3/2.jpg] [How to Make Nested Tags](https://bear.app/faq/Tags%20&%20Linking/Nested%20Tags/) # How to link notes together In Bear, you can create links between notes and even link to specific sections of a note. This is great for all kinds of projects, from creating a personal wiki to a table of contents for a book. Here is how this feature works. *Note*: As of Bear 1.7, note links will automatically update if the title of the linked note changes. [image:C3ACAA27-C861-42F8-9F62-35A0C2B4DA66-52345-0000645C5058F8DE/1.gif] While editing a note: * Type [[ anywhere to enter the Note Autocomplete tool (that’s two left brackets) * Type a few letters of another note’s title * Scroll the results to find the one you need * Tap it or press Return, and Bear will insert the note link for you If you are using a hardware keyboard, including on iPad and iPhone, you can use the arrow keys to navigate results, and Return to select. You can link directly to a specific section in another note. These sections are created by using headings, like this: * # is for Heading 1 * ## is for Heading 2 * ### is for Heading 3 * and so on Bear’s note links support H1-H6. To link to a heading in a different note: * Use the steps listed above to find a note * Instead of pressing *Return* on a note, press */* (forward slash) to display a list of headings from that note * Scroll to the heading you want to link * Press *Return* To link to a heading in the note you are currently editing: * Type [[ to enter the Note Autocomplete tool (that’s two left brackets) * Follow those brackets with a forward slash, like this: [[/ * Scroll to the heading you want to link * Press *Return* You can also manually copy a link to a heading in a note * Tap or click the H tag on the left side of the note * In the options that appear, select *Copy Link to Here* * In any note in Bear, select some text and use our link tool to paste the link With a keyboard on any device, press Command + K to insert a link. Alternatively, on the Mac this command is under *Format > Insert Link*. On iOS, scroll our Shortcut Bar above the keyboard until you see a link button. ### Manually copy a note’s link You can copy a link to a note from the Note List. On Mac, right-click the note and choose *Copy link to note*. On iPad and iPhone, swipe left on a note, tap More, scroll the Actions menu, and tap *Copy link to note*. ``` [[Apple pie recipe]] ``` [How to link notes together](https://bear.app/faq/Tags%20&%20Linking/How%20to%20link%20notes%20together/) # How TagCons work in Bear Bear enhances the tags you add to your notes with a feature we call *TagCons*: small, identifiable icons that appear next to tags in the Sidebar. ## How it works Bear has a growing library of TagCons, many which automatically appear next to popular tags like: writing, travel, business, games, ideas, and so on. *Note: We cannot see your notes or tags*. To build our list of popular tags with default TagCons assigned, we researched popular services like Twitter, Pinboard, Instagram, and others. As of Bear 1.5, users can add or change the TagCon for /any/ tag. Here’s how: ### iOS On iOS, here is how to access the TagCon picker: * Long-tap any tag in the Sidebar, or * If you’ve already selected a tag to view its notes, tap the Notes List header at the top * Select *Change Tag Icon* * Scroll the list of TagCons that appears * Tap one ### Mac On macOS, here is how to access the TagCon picker: * Right-click any tag in the sidebar * Select *Change Tag Icon* * Scroll the list of TagCons that appears * Click one ## Sync TagCons between devices To sync your TagCon choices between Bear on Mac, iPad, and iPhone, you’ll need [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/). It unlocks sync (powered by iCloud), more export options, and a growing library of beautiful themes to customize your writing environment. ## Display tagCons for another language If you are using Bear in your mother language but you want to also use another language keywords set, you can add a second language to your operative system's preferred languages. For example, if you are using your operative system in Chinese and you want Bear to also display a special icon for #todo you can add English as second preferred language. This will make Bear display the same icon for both #todo and #计划任务. ## Disable TagCons If you want to display the standard `#` for all your tags, you can disable TagCons from Bear's preferences -> `Themes` -> `Use Custom icons for Tags`. ## Do you have requests for more TagCons? We’re [Feel free to propose](https://bear.app/contact/) new TagCons or keywords, we always open to suggestions. [How TagCons work in Bear](https://bear.app/faq/Tags%20&%20Linking/How%20TagCons%20work/) # Information about Syncing & Privacy *TL;DR* We don’t want to access any sensitive data and fortunately CloudKit takes care of it. The team at [Shiny Frog](http://shinyfrog.net) cares about producing useful software for macOS, iOS, and Web. We don’t want to sell your personal_ information. In fact, /we don’t want to access your data at all/. That’s why Bear relies on Apple’s CloudKit technology to sync your notes. Every piece of information stored within CloudKit is encrypted with Apple’s private keys, and we don’t have access to users credentials or any sensitive data. Every piece of data sent or received from CloudKit is transmitted over a Secure Sockets Layer (SSL), which ensures no one can read your notes during transmission. /We chose CloudKit instead of a file based solution like iCloud, DropBox, or Google Drive because it performs much faster. Plus, CloudKit doesn’t require any registration or login to work; it relies on your iCloud credentials already stored in your devices./ Choosing a solution like CloudKit opens up the possibility to add collaborative features and, eventually, possibly even a web version. *We may access anonymous, in-app usage statistics in order to improve Bear App, but none of those data carry any sensitive information.* [Information about Syncing & Privacy](https://bear.app/faq/Sync/Syncing%20&%20privacy/) # Bear Pro Sync Troubleshooting With [Bear Pro](https://blog.bear-writer.com/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose-351cd60c0cc1), Bear automatically syncs your notes and edits to all devices; you don’t have to do anything. You can check when the last sync happened in the Sync section of Bear’s Preferences. If you notice missing notes or updates, here are some troubleshooting steps you can try. ## Requirements * A [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) subscription * An iCloud account with enough free space for your notes and the files attached to your notes * iCloud Drive enabled on the device ( [Apple has instructions](https://support.apple.com/en-us/HT204025) for Mac and iOS devices) ## Check Apple’s iCloud status page Sometimes sync problems come down to iCloud having trouble. [Apple maintains a service status page](https://www.apple.com/support/systemstatus/) that is great to check if sync isn’t working. ## Confirm Setup There are two accounts to check on your devices: the App Store account and the iCloud account. These accounts must be the same on all devices. For example: you could be signed into iCloud with /*my-apple-id* @example.com/ on all devices (marked with *◉* in the next screenshots), and also signed into the App Store with /*app-store-shopping* @example.com/ on all devices (marked with *◉* in the next screenshots) and Bear synchronization will work like a charm. There are also a few more settings to check, so let’s walk through them. ### Mac To get the best, Bear-iest sync possible, please check the following settings: [image:55137BA3-60A7-4815-AB4D-B88F7F9267DD-52345-0000645A887E9E86/macOSSettings1@2x.jpg] [image:045AB75E-75B4-4548-8652-D44744121258-52345-0000645A8864C994/macOSSettings2@2x.jpg] * you are signed into the `iCloud` Preferences Pane *◉* (❶) * iCloud Drive is enabled *◉* (❶) * Bear has an enabled checkbox inside the “Options…” *◉* (❷) * you are signed inside the `App Store` App *◉* ### iOS To get the best, Bear-iest sync possible, please check the following settings: [image:D10A9135-0AD4-4C54-939E-47195820B4C8-52345-0000645A8848C789/iOSSettings1@2x.jpg] [image:E65D0331-FCD0-416C-889E-954D1FF344EC-52345-0000645A8830B27A/iOSSettings2@2x.jpg] [image:0564404C-BC83-4F33-9150-8FA0BA9FEBB0-52345-0000645A881759C1/iOSSettings3@2x.jpg] * you are signed into the `Settings` → `iCloud` Preferences Pane *◉* (❶) * iCloud Drive is enabled *◉* (❷) * Bear has an enabled checkbox inside the `iCloud Drive` Pane *◉* (❷) * you are signed into the `Settings` → `iTunes & App Store` Preferences Pane *◉* (❸) To ensure you can sync while on mobile data (and away from WiFi), go to *Settings > Cellular*, scroll to the very bottom of that screen (past any apps listed there), and ensure that iCloud Drive is enabled. On all the devices you are using Bear on, the accounts marked with *◉* and with *◉* should be the same based on color. Even better if you use only one account for everything! ## Now that I’m set up, how do I check the sync status? There are two places where you can find the information about Bear’s sync status. The first one is inside `Bear Preferences` → `Sync`. There you can find the last sync date and the option to temporarily disable sync on that device. Starting in Bear 1.7, you can check the current status of the synchronization process at any time in the sidebar. If Bear is currently syncing you will see a cloud icon with two arrows; this means that Bear will need some time to update your notes. If you are on iOS, we recommend leaving the app open until this icon disappears. This is the best way to let Bear finish the current sync operation. If you see a strikethrough cloud icon, it means that the device is not connected to the internet, or that you have disabled sync from Bear’s preferences. Please check your internet connection and/or `Bear Preferences` → `Sync` if you want the device to sync. The last icon you might see in this panel is a cloud with a red dot in your sidebar. This means that sync is experiencing other problems. You can learn more about the current situation by tapping or clicking on all of these icons: usually a solution to the issue is presented inside the Sync Preference Pane. But if you still have sync problems, please contact [Bear support](https://bear.app/contact/). If none of the icons is shown in the sidebar, Bear has sync harmony and you have the latest version of notes on the current device. ## About large note imports If you imported hundreds or thousands of notes from text files or an archive from another app, it’s possible that Bear on iOS will need some time to finish its first sync. Please leave Bear for iOS open (not in the background) for a while to help it complete the sync. You can check the synchronization status as described in the [previous section](https://bear.app/faq/Sync/Sync%20Troubleshooting/#now-that-im-set-up-how-do-i-check-the-sync-status). This step is needed only in case of huge imports. Once it is finished, your Bear will sync faster and more often on a note-by-note basis. The time needed for this initial sync to finish will vary depending on your internet connection. We recommend connecting to the fastest Wi-Fi hotspot you have available and wait until the cloud icon with two arrows disappears from the sidebar. ## The configuration is correct but the sync still doesn't work In order to better understand what is going on, we need some logs from the device(s) that are not syncing properly. Here is how to generate these logs and send them to us: Generate logs on *macOS*: * select `Help` → `Enable File Log` menu item * quit Bear using ⌘Q or `File` → `Quit` menu item * open Bear * wait for 1 minute *with an active internet connection*. It is very important to wait at least one minute in order to generate a sufficiently long Log. * select `Help` → `Open Logs Folder` menu item * zip the "Bear" folder by right clicking it and selecting `Compress "Bear"` * send the zip archive to bear-support@shinyfrog.net with "Not working sync with proper configuration" as subject Generate logs on *iOS*: * enable `Preferences` → `Advanced` → `Enable File Log` * quit Bear (using the Task Manager double-pressing the Home Button and swiping the App away) * open Bear * wait for 1 minute with an *active internet connection*. It is very important to wait at least one minute in order to generate a sufficiently long Log. * `Preferences` → `Advanced` → `Share File Log` * send it to bear-support@shinyfrog.net with "Sync not working with proper configuration" as subject > Please note that the logs can contain pieces of text of your notes. In a situation where sync isn’t working, this will not happen. But to better investigate your issue, we need every CloudKit transition to be logged. We have no interest in your private data and will not read or store any personal information. But we strongly suggest to edit any sensible part of your Logs with TextEdit or any other app. Usually if the log file contains pieces of notes, it means that the synchronization is working properly on that device and you'll just need to leave Bear open and allow the sync to finish (not in the background). ### Attachments Limits Each attachment must be less than 250Mb to be synced between devices. ### Text limit Notes larger than 500,000 characters will not be synced. [Bear Pro Sync Troubleshooting](https://bear.app/faq/Sync/Sync%20Troubleshooting/) # Subscribe to Bear Pro Bear Pro is a simple way to unlock some great features and support our work so we can keep making Bear even better! Specifically, Bear Pro unlocks: * Sync for notes and TagCons across all devices * Encrypt individual notes and lock Bear * Advanced export options to PDF, HTML, DOCX, JPG * Over a dozen beautiful themes to get just the right environment for your writing, with more themes on the way You can subscribe to Bear Pro in Bear’s settings. Once you subscribe on one device, Bear Pro features will unlock on all your other devices that are signed into the same iCloud account. ## macOS Click on the button at the top right corner of the sidebar to access Bear’s preferences. Then select the `Bear Pro` tab. [image:7EEA08AF-5D5D-4105-A938-9BF33B94C06E-52345-000064597FC33084/1.png] ## iOS Tap on the Settings button at the bottom of the sidebar, then tap on the `Bear Pro` header. [image:C623A881-3B71-47D6-AAD9-95153F6E764A-52345-000064597FA851AE/2.png] You’ll see a quick summary of [Bear Pro features](https://bear.app/faq/Sync/More%20information%20about%20Bear%20Pro/) and our [privacy policy](https://bear.app/faq/Sync/Syncing%20&%20privacy/), along with the available in-app purchase options. All purchases are managed through your Account section in the Mac or iOS App Store. Once you purchase a Bear Pro subscription, the panel will display its expiration date and a button to access and manage all subscriptions connected to your Apple ID. [Subscribe to Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) # More information about Bear Pro [Bear Pro](https://bear.app/faq/Sync/More%20information%20about%20Bear%20Pro/) is our service that unlocks some great features including: * iCloud sync across Mac, iPad, and iPhone * Encrypt individual notes and lock Bear * More powerful export options * Over a dozen beautiful writing themes Bear Pro is available on a subscription basis through iOS and macOS App Stores with two price options: * *Monthly subscription* - available for $1.49 with a free week trial * *Yearly subscription* - available for $14.99 with a free month trial You can [purchase Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) from Bear's preferences. If you cancel the subscription during the trial period, the subscription fee will not be charged. Prices may vary by location according to the country taxation and currency conversion from U.S. Dollars. All subscriptions will renew automatically, so you don’t need to do anything. The App Store will also email you a notice a few weeks before renewal. The “Valid until” date in the `Bear Pro` Preferences Pane will always show the last day of the subscription. Please remember that the subscription is renewed automatically by Apple during the 24-hour period before the subscription expires. You can access your iTunes Store subscriptions at any time using the [Manage Subscription](https://apps.apple.com/account/subscriptions) button in `Bear Pro` Preferences Pane. This opens the App Store to the relevant page. ## Changes and refunds Once a Bear Pro subscription has been charged, there is no way to /change/ or /refund/ it from Bear—all transactions are handled by Apple. You can /verify/ and /cancel/ your active subscriptions at any time using the [Manage Subscription](https://apps.apple.com/account/subscriptions) button, which opens the relevant App Store page. You can also contact Apple customer service for any further information and request. *Bear Pro does not need to be purchased on every device*. Once activated, it will be automatically enabled on all your devices that share the same iCloud and iTunes credentials (Apple ID). Please note that, in some cases, this process might need a little time for the App Store to activate Bear on your other devices. If you don’t see activation on a particular device, try restarting it. Prices will be converted to different currencies accordingly to App Store policies and local tax regulations. [More information about Bear Pro](https://bear.app/faq/Sync/More%20information%20about%20Bear%20Pro/) # How Bear Pro handles conflicted notes In rare circumstances when [Bear Pro][1] syncs, a note might develop a second conflicted version. If this happens, Bear will display all affected versions in the Note List so you can review and pick which one to keep. If necessary, you can even move pieces of notes between them to save the truest version. We handle conflicts this way to avoid throwing out any data by accident. In short: even though it’s 2021, sync is still hard. One way we’ve seen conflicts arise goes like this: * A note is edited on a device that is offline, like an iPhone in Airplane Mode while traveling * That same note is edited on a different device that /is/ online * Once the iPhone comes back online to sync changes—boom, conflict-o-rama When possible, please avoid this scenario of editing the same note across two devices until they are both online to “see” the changes. ## How to spot a conflict Bear warns you about conflicted notes in two ways, depending on whether you are viewing the Note List or notes in a specific tag or search. ### Conflicts in the Note List [image:B0904302-430E-4820-8E6B-A6CFD215499C-52345-000064583314937C/conflict%20note%20list.jpg] Conflicted notes will move to the top of the Note List, even above pinned notes. A conflict will appear next to them, along with a line drawn to connect related notes with conflicts. You can review the notes, move any necessary content between them, then delete the version you don’t need. ### Conflicts found elsewhere [image:8B191711-5A68-4BA5-A53C-AA1ECC45339C-52345-0000645832E9F1DD/conflict%20indicator.jpg] If you’re browsing a #tag in the Sidebar or search results, conflicted notes will display the conflict indicator next to their title. To resolve the conflict, tap or click the top-level Notes section in the sidebar, and scroll to the top of the Note List. Related notes with conflicts will have a line connecting them. Review the notes, move any necessary content between them, then delete the version you don’t need. [How Bear Pro handles conflicted notes](https://bear.app/faq/Sync/How%20Bear%20Pro%20handles%20conflicted%20notes/) # Bear is GDPR compliant [The General Data Protection Regulation](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (GDPR) is a set of major new regulations in European Union (EU) law that went into effect on May 25, 2018. In short, it’s a new set of rules that give consumers more control over their personal data and privacy. Because these rules apply to online services, they effectively apply to most companies, apps, and services that operate online—including Bear. For just a couple GDPR examples: companies that collect personal data such as your name, email address, and online activities must clearly disclose what data is being collected, how, how long it’s being retained, and whether it is shared with third parties. These companies must also make this data available for users to download in a human-readable format. There are many other rules enacted by the GDPR, so we encourage you to [check out the Wikipedia’s entry](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) on the topic. ## Bear’s compliance with GDPR Fortunately, the Shiny Frog team has taken your privacy seriously since day one. We are proud to say that Bear has essentially always complied with the GDPR. Let’s cover the key talking points: * *Bear does not collect any personal data*. * If Bear ever crashes, *we do collect anonymous, GDPR-compliant crash logs* in order to fix bugs and improve Bear. * *Bear currently does not store any data on servers under our control*. Out of the box, Bear only stores your notes locally on your device. If you [subscribe to Bear Pro](https://blog.bear-writer.com/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose-351cd60c0cc1), Bear uses Apple’s iCloud service (which is [GDPR compliant](https://www.apple.com/legal/privacy/en-ww/governance/) ) to sync notes between your devices. While we are working on a web app, we are building it with GDPR policies at its core. * *All of your Bear data can be exported to a variety of portable, user-readable formats*. * The only time we ever see personal data is when someone voluntarily enters their email into [our newsletter subscription form](http://eepurl.com/dvs38P) or contact us for support. Our mailing list is powered by MailChimp, a GDPR-compliant service, and we do not sell or otherwise share any personal information we see from support requests. * *Users can easily delete Bear data from iCloud* on their local devices. iPhone and iPad users can do this under Settings > (their name) > iCloud > Manage Storage. Mac users can find this in System Preferences > iCloud > iCloud Drive [Bear is GDPR compliant](https://bear.app/faq/Sync/Bear%20is%20GDPR%20compliant/) # iOS Keyboard Shortcuts * `⌥⌘1` , `⌥⌘2`, `⌥⌘3` - Headings * `⌥⌘S` - Line separator * `⌘B` - Bold * `⌘I` - Italic * `⌘U` - Underline * `⇧⌘E` - Strikethrough * `⌘K` - Link * `⌘L` - Unordered list * `⇧⌘L` - Ordered list * `⇧⌘U` - Quote * `⌘T` - Todo * `⌥⌘C` - Inline code * `^⌘C` - Code block * `⇧⌘M` - Marker/Highlighter * `space` - Open/close nested tags * `⌘N` - Create a new note * `↑ and ↓ keys` - Move the selection (note list, tag list) * `← and → keys` - Move the selection between the sidebar, the note list and the editor * `⌘F` - Move the focus to the search field (note list) * `↩︎` - Start editing at the end of the note (editor) * `⌘⌫` - Delete the currently selected note (note list) * `⌥⌘←` - Navigate back in visualized notes history * `⌥⌘→` - Navigate forward in visualized notes history * `^1` - Select /Notes/ in the sidebar * `^2` - Select /Untagged/ in the sidebar * `^3` - Select /ToDo/ in the sidebar * `^4` - Select /Today/ in the sidebar * `^5` - Select /Archive/ in the sidebar * `^6` - Select /Trash/ in the sidebar * `^7` - Select /Locked/ in the sidebar [iOS Keyboard Shortcuts](https://bear.app/faq/Shortcuts%20and%20more/iOS%20Shortcuts/) # iOS External keyboard support Bear for *iOS* comes with support for any external Bluetooth keyboard compatible with iPad or iPhone. Bear keyboard support is not limited to editing, you can also use it to [navigate your notes](https://vimeo.com/183189917) . You can find a list of the iOS shortcuts at [this link](https://bear.app/faq/Shortcuts%20and%20more/iOS%20Shortcuts/). [iOS External keyboard support](https://bear.app/faq/Shortcuts%20and%20more/iOS%20External%20keyboard%20support/) # MacOS Touch Bar Support Bear supports Touch Bar making easier to execute the common tasks without having to remember keyboard shortcuts or the menu location of the commands. The Touch Bar’s buttons are arranged depending on the currently selected element of Bear interface. You can think about it as having multiple Touch Bars, each optimized for your current task. [image:1B4D7806-3B69-4FB8-9C02-C97418E2346A-52345-00006455981575C6/touch-bar-sidebar.jpg] This Touch Bar shows the main buttons such as: * *New Note* * *Note List Search* * *Toggle Full Screen* * *View Columns*, that lets you choose between the “Tags, Notes, Editor”, “Notes and Editor” and “Editor Only” view options * *Go To*, that lets you quickly navigate to “Notes” or “Trash” TIP: as you may notice, the “View Columns” and the “Go To” buttons have a little disclosure icon `>` on their right; every time you see that icon it means that this popover has the /hold and drag/ functionality enabled. This allows you to hold the button and move your finger on the selected option without raising it, in order to select the option and automatically close the popover when you lift your finger. ## Notes List [image:DC9369AA-FFBA-4DCE-97AB-D124761099DA-52345-0000645597FF4721/touch-bar-notes-list.png] This Touch Bar keeps all the buttons of the previous one and adds some specific actions for the notes: * *Toggle Note Pin* * *Delete Note* * *Get Info* ## Notes Editor [image:824E24E6-A8D1-456A-BC0B-B12F940293DF-52345-0000645597EA53F7/touch-bar-editor.png] Notes Editor Touch Bar adds the Style button and the most used formatting options: * *Style* * *Headers* * *Todo* * *Bold* * *Italic* * *Underline* * *Emoji* * *Predictive Text* ## Notes Editor with Predictive Text [image:C98C8747-3F48-49AC-BE2F-59EDA59047DF-52345-0000645597D14027/touch-bar-editor-predictive.png] When Predictive Text is enabled you still have access to the Style button with all the text formatting options available in Bear. ## Styles for everyone! 🎉 [image:8F8262DB-5D57-42B7-AFB4-795F7B148893-52345-0000645597B31133/touch-bar-styling.png] During the edit of a note, all the styles are always reachable via the Styling button and are presented inside a Scrolling Touch Bar. [MacOS Touch Bar Support](https://bear.app/faq/Shortcuts%20and%20more/Touch%20Bar/) # macOS Keyboard Shortcuts * `⌥⌘1` , `⌥⌘2`, … `⌥⌘6` - Headings * `⌥⌘S` - Line separator * `⌘B` - Bold * `⌘I` - Italic * `⌘U` - Underline * `⇧⌘E` - Strikethrough * `⌘K` - Link * `⌘L` - Unordered list * `⇧⌘L` - Ordered list * `⇧⌘U` - Quote * `⌘T` - Todo * `⌥⌘C` - Inline code * `^⌘C` - Code block * `⇧⌘M` - Marker/Highlighter * `⇧⌘V` - Insert file * `⌘N` - Create a new note * `⌥⌘N` - Create a new note in a new window * `↑ and ↓ keys` - Move the selection in the note and tags lists * `← and → keys` - Move the selection between the sidebar, the note list and the editor; open/close nested tags * `↩︎` - Edit the selected note * `⌥⌘F` - Search in the current note list * `⌘⌫` - Delete selected note * `⇧⌘R` - Restore selected note * `⇧⌘P` - Pin/unpin selected note * `⌘A` - Select all the notes in the list * `⇧⌘⌫` - Empty Trash * `⌘1` - Select /Notes/ in the sidebar * `⌘2` - Select /Untagged/ in the sidebar * `⌘3` - Select /ToDo/ in the sidebar * `⌘4` - Select /Today/ in the sidebar * `⌘5` - Select /Archive/ in the sidebar * `⌘6` - Select /Trash/ in the sidebar * `⌘7` - Select /Locked/ in the sidebar * `⌥⌘←` - Navigate back in visualized notes history * `⌥⌘→` - Navigate forward in visualized notes history * `^1` - Show editor only * `^2` - Show note list and editor * `^3` - Show sidebar, note list and editor * `⌘,` - Show preferences * `^⌘F` - Enter fullscreen * `⌘\` - Open main window [macOS Keyboard Shortcuts](https://bear.app/faq/Shortcuts%20and%20more/Mac%20shortcuts/) # Indent and outdent on iOS The iOS version of Bear comes with two special buttons to indent and outdent text. These buttons are particularly useful to nest lists, todos, and indent code portions. You can find the indentation button in the iOS bar above your keyboard. To use the buttons simply place the cursor on the line/paragraph you want to indent. [image:16B57757-B414-409A-9A99-3CA901311B6E-52345-0000645476B69B65/1.png] [Indent and outdent on iOS](https://bear.app/faq/Shortcuts%20and%20more/Indent%20and%20outdent%20on%20iOS/) # Customise Mac shortcuts In MacOS is possible to assign, or re-assign, a specific application function to a custom keyboard combination. This is particularly useful for if you are not satisfied with a Bear's shortcut, a menu functionality is not accessible by keystroke or a global shortcut conflicts with an app. Custom shortcuts can be applied only to app's functionalities available in the menu bar. To create a custom shortcut: * Open `System Preferences` → `Keyboard` → `Shortcuts`. * Select `App Shortcuts`, click on the `+` button and select Bear. * In the `Menu Title` field, type the menu command for which you want to create a shortcut, as appears in Bear's menu. * Choose a keyboard shortcut for the menu command and click `Add`. [image:D746391E-0080-486E-812C-A0668EF8D3E0-52345-00006453CEB25AC6/1.jpg] For more info [Create keyboard shortcuts for App @ Apple.com](https://support.apple.com/guide/mac-help/create-keyboard-shortcuts-for-apps-mchlp2271/mac). [Customise Mac shortcuts](https://bear.app/faq/Shortcuts%20and%20more/Customise%20Mac%20shortcuts/) # Polar Bear Markup Language Bear Notes are saved in plain text format and stored inside a local database. The notes are enhanced by Polar: a simple markup language inspired by [CommonMark](http://commonmark.org). With Polar it is very easy and intuitive to express different text styles, links and to reference files. Every style can be applied using Bear user interface or by writing down the markup characters. Here is the Polar syntax cheatsheet: * Heading → `# Heading 1` , `## Heading 2`, `### Heading 3`, etc… * Line Separator → `---` * *bold* → `*bold text*` * /italic/ → `/italic/` * /underline/ → `_underline_` * -strikethrough- → `-strikethrough-` * [link](https://bear.app) → `[link](https://bear.app)` * ::marker:: → `::marker::` * unordered list → `* unordered element` (start of line) * ordered list → `1. ordered element` (start of line) * todo → `- todo` (start of line) * done todo → `+ done todo` (start of line) * quote → `> quote` (start of line) * tag → `#tag` * multiwords tags → `#multi-word tag#` * nested tags → `#recipes/meat` [Polar Bear Markup Language](https://bear.app/faq/Markup%20:%20Markdown/Polar%20Bear%20markup%20language/) # Markdown Compatibility Mode In Bear Preference Panel you can find an option to use a markup language in accordance with the [CommonMark Syntax](http://commonmark.org/help/). This option will not modify the notes you’ve already created, and will force Bear to interpret them as Markdown. Here is a list of styles which will change selecting the Markdown compatibility mode: * *bold* → `**bold**` * /italic/ → `*italic*` * -strikethrough- → `~~strikethrough~~` * /underline/ → `~underline~` * line separator → `***` or `---` or `___` (start of line) * empty checkbox → `- [ ]` (start of line) * done checkbox → `- [x]` (start of line) * unordered lists → `*` or `-` or `+` or `•` (start of line) [Markdown Compatibility Mode](https://bear.app/faq/Markup%20:%20Markdown/Markdown%20compatibility%20mode/) # How to convert Bear notes to Markdown Converting your Bear notes to Markdown can help make them more compatible with other apps and websites. Bear has long used a similar syntax, called Polar, but we are working towards going Markdown-only eventually. If you want to make this switch, first let’s check to see if your notes even need to be converted at all. In Bear for Mac, go to *Bear > Preferences > General*. Check to see if the *Markdown Compatibility Mode* option is enabled. If it is, you do not need to convert your notes. ## How to convert your Polar notes to Markdown We’ll use a Mac for these instructions. *First thing’s first: backup your notes*. In Bear for Mac, go to *File > Backup Notes*. Save that backup in a safe space on your Mac or an external drive. ### Part 1: The export * In Bear’s preference, make sure the *Keep tags during export* option is on * Export all your notes as TextBundle * Click Notes at the top of the Sidebar * Click the first note on the list * Press ⌘A (Edit > Select All) * Press ⌘⇧S (File > Export Notes) * In the Save File Window select Text Bundle as the export format * Save the files in an empty folder on your Mac or an external hard drive [image:E3150A66-BB5A-4F6D-BEA2-27A3EAC1C37B-52345-000064522D293DDB/1.png] ### Part 2: The import * In Bear’s preference, enable the *Markdown Compatibility Mode* option * Trash all the old notes. Yep, all of them * Select Notes * Select the first note on the list * Press ⌘A (Edit > Select All) * Press ⌘⌫ (Edit > Delete) * Import the TextBundle notes you created in Part 1 * Press ⌘⇧O (File > Import Notes) * In the file window that appears, select the folder containing the TextBundle of your notes * Make sure the *keep original dates* option is enabled, and the *escape involuntary tags* option is off * Press the *Import Notes* button [image:9CBB12FA-5472-4A0A-A4D8-47535C13BCBC-52345-000064522CEAF187/2.png] * Check your imported notes to make sure they look correct and contain any photos or attachments * If everything looks good, it’s safe to delete the old notes from Bear’s trash * If something went wrong, delete these notes and try the import process again from the beginning [How to convert Bear notes to Markdown](https://bear.app/faq/Markup%20:%20Markdown/How%20to%20convert%20your%20Bear%20notes%20to%20Markdown/) # Migrate from Ulysses to Bear If you want to quickly export a document from Ulysses to Bear make use of the *Quick Export*, choose *Text* from the menu in the upper left, then the *Text Bundle* or *Markdown* option and click the folder to export. In Bear for Mac, select `File` → `Import Notes...` and import the newly exported files. Here is how to move all your notes from Ulysses to Bear for Mac. As of this writing, is ## Text notes (notes without images) In Ulysses for Mac: * Create a new external folder on your Mac by going to `File` → `Add External Folder` * Choose a location and name for your folder that you’ll remember. Something like “Ulysses export” or “Bear import” might be good * Note that the new folder appears in the Ulysses sidebar * Select all the sheets (notes) in Ulysses that you want to export * Drag them to the new external folder you just created in the Ulysses sidebar Ulysees will create markdown files for each sheet in that new folder on your Mac. To import them into Bear for Mac: * In Bear for Mac, select `File` → `Import Notes...` from the menu bar to open the import file window * Find the folder on your Mac containing the notes you just exported from Ulysses * Select one or more notes to import * (Optional) To select a group of notes: Click the first note, hold the Shift key, then select the last note in the group. All notes in between will be selected * (Optional) To select a few specific notes, hold the Command key while selecting each one * Click the *Import Notes* button in the lower right ## Notes with images If you want to import Ulysses sheets (notes) that contain images, you’ll have to export them one-by-one. * Right-click a sheet (note) that contains images in Ulysses * Choose *Quick Export* * In the popover that appears, choose *Text* from the menu in the upper left, then the *Text Bundle* option below * Click the folder icon to save this sheet export to your Mac * In Bear for Mac, select `File` → `Import Notes...`, and find the Ulysses sheet you just exported as a Text Bundle * Click the *Import Note* button [image:B1173F03-9EDE-420D-A269-D9CD544D8215-52345-0000645153A8D82B/1.png] [Migrate from Ulysses to Bear](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Ulysses%20to%20Bear/) # Migrate from SimpleNote SimpleNote allows you to download your notes in a handy zip file containing text files. Unfortunately, the files do not include tags or other meta information. To download the archive log to [https://app.simplenote.com](https://app.simplenote.com) with your account, click on the top left button to show the sidebar and access to the settings. In SimpleNote settings, select Tools and Export notes do download a zip file containing all your notes. Uncompress the zip file and [import all the txt files](https://bear.app/faq/Import%20&%20export/Import%20your%20notes/) in Bear. [Migrate from SimpleNote](https://bear.app/faq/Import%20&%20export/Migrate%20from%20SimpleNote/) # Migrate from Evernote To import your notes from Evernote you just need to perform a couple of steps: * Export your Evernote notes into a .enex archive following this [export guide](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-u) * Import the .enex inside Bear * On *macOS* you can import your notes by selecting `File` → `Import From` → `Evernote` from the menu bar. * On *iOS* you can access to the importers by going to `Import & Export` in the Preferences, locate the `Import From` section, select `Evernote` as format and tap on `Import Notes`. The .enex format does not include informations about your notebooks. If you want to keep the notebook name as a reference in Bear we suggest to add a tag to your notes in Evernote before exporting them. The enex does retain the notes you trashed in Evernote, please consider empty Evernote's trash before exporting. Before importing, it is suggested to check the `Exclude unintentional tags` options to avoid words which begin with `#` will be interpreted as Bear's tags. If you want to [migrate your Evernote's notebooks](http://christineyen.com/2017/04/migrating-evernote-notebooks-to-bear/) to Bear you can use tags. Create a new note in Bear with a tag for every notebook (e.g. `#notebook1`, `#notebook2`, `#notebook3`, etc…). Export each notebook in an enex file and import them one by one. After every import, drag and drop the new notes to the corresponding tag. Use the search to find the newly imported notes (e.g. to find the notes which do not belong to `#notebook1` and `#notebook2` search for `-#notebook1 -#notebook2` ). [Migrate from Evernote](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Evernote/) # Migrate from Drafts App To migrate your notes from Drafts to Bear: * Open Drafts preferences * Select `Export` or `Export Drafts` * Select `JSON` as the format * Tap `export`. [Here](https://agiletortoise.zendesk.com/hc/en-us/articles/203151610-Migrating-from-older-versions-of-Drafts) are more details about Drafts exports. ## Import into Bear In *Bear for Mac*, import your notes using `File` → `Import From` → `Drafts` and selecting the correct file. In *Bear for iOS*, go to Bear’s settings, tap `Import & Export`, locate the `Import From` section, select `Drafts` as format and tap on `Import Notes`. [Migrate from Drafts App](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Drafts/) # Migrate from Day One App If you own *Day One V2 or V3* follow this [guide](http://help.dayoneapp.com/tips-and-tutorials/exporting-entries) for exporting your entries as `JSON` to a specific folder. To import from *Day One V1* click on `File` → `Back Up Journal` then open the preferences and select the `Backup` tab to locate your exported entries. Backups needs to be unzipped before being imported. In Bear for Mac, import your new notes using `File` → `Import From` → `Day One` and selecting the correct folder. In Bear for iOS, go to the settings, go to `Import & Export`, locate the `Import From` section, select `Day One` as format and tap on `Import Notes`. [Migrate from Day One App](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Day%20One/) # Migrate from Apple Notes Currently, Apple Notes does not have a way to export all your notes for importing into Bear. But we do have a workaround for Mac users, and we’re exploring one for iPhone and iPad users. ## Mac: use our Automator Workflow *[Download our Automator Workflow](https://sf-applications.s3.amazonaws.com/Bear/utils/NotesExporter.workflow.zip)* Minimum system requirements: macOS 10.14 Mojave We built an Automator Workflow for macOS that can export all your Apple Notes as HTML files. This will include most note contents, but not all. See the breakdown below: * Text, lists, and photos should be included * *Note*: only macOS 10.15 Catalina supports photo export. On earlier macOS versions, Apple Notes will not export photos * Task lists convert into bulleted lists * Rich media links will convert to plain text links * Non-photo attachments like PDFs or other files *are not supported* and will be excluded from export to HTML files. They will remain safely in Apple Notes In case your HTML files or the imported notes show an incorrect encoding in Bear, please try to run the following command in your HTML files directory using Terminal ``` find . -name \*.html -type f | \ (while read file; do iconv -f UTF-16 -t UTF-8 "$file" > "${file%.xxx}-utf8.html"; done); ``` ### How to use this Automator Workflow * Download our AppleScript * Double-click it to open Automator * Press the Play button * Choose or create a new folder to store your exported Apple Notes * In Bear, click *File > Import Notes* * In the dialog that opens, find the folder containing your exported notes * Select the folder containing the exported files * (Optional) Adjust any import features such as whether to keep the original creation date, and whether to use the first line or file name for note titles * Click *Import Notes* ### How to select multiple items on a Mac Here’s a bonus tip for working on a Mac. In the macOS Finder and many apps, there are a couple ways to select multiple items, including in some file dialogs like this: * *Select a large group of items*: Click the first file, hold *Shift*, then click a second file. All files in between will also be selected * *Select multiple, individual items*: Hold *Command* and select multiple files. Only those files will be selected * *Select all items*: In a file dialog like the one above, click anywhere in the folder, then press *Command + A* ### About privacy and this AppleScript One nice thing about this AppleScript is that it runs entirely on your device. None of your notes pass through our hands, it simply creates HTML files in a folder of your choice. On *iOS* you can access the importers using the `Import & Export` in the Preferences. [Migrate from Apple Notes](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Apple%20Notes/) # Import notes into Bear Bear can import files in the following formats: On *macOS* you can import your notes by selecting `File` → `Import Notes…` from the menu bar. On *iOS* you can access to the importers using the `Import & Export` in the Bear's Preferences. The importers come with an option to keep the original dates of the imported files; you can also use the first line or the file name as title. However, when importing `.bearnote` files, the creation date is always used. [Import notes into Bear](https://bear.app/faq/Import%20&%20export/Import%20your%20notes/) # Export your Notes from a Tag New in Bear 1.5 is the option to export all notes in a tag, right from the Sidebar. If a tag has [nested tags](https://bear.app/faq/Tags%20&%20Linking/Nested%20Tags/), they will be created as folders containing their notes. We apply some rules to help avoid duplicate notes during a nested tag export. For example, if a note is tagged `#workout#` and `#workout/cardio#`, when you'll export `#workout#` the note file will appear only in the `cardio` subfolder. ## Mac * Click a tag in the Sidebar * Click `File` → `Export Notes,` or click ⇧⌘S ## iOS * Long press on a tag in Sidebar, or tap on the Notes List header * Tap `Export` Bear will ask you to pick an [export format](https://bear.app/faq/Import%20&%20export/Export%20your%20notes/) and a location to save the exported notes. [Export your Notes from a Tag](https://bear.app/faq/Import%20&%20export/Export%20your%20tags/) # Export Notes in Different Formats The free and [Pro version](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) of Bear can export one or multiple notes to a variety of formats. See the bottom of this doc for screenshot examples of key formats. The free version of Bear can export your notes to: * `.txt` - Plain Text * `.md` - Markdown * `.textbundle` - [Text Bundle](http://textbundle.org) V2 (Markdown) * `.bearnote` - Bear Note * `.rtf` - Rich Text Format With an [upgrade to Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/), you can export to a variety of other formats, with more on the way in the future: * `.html` - HTML * `.docx` - Microsoft Word Open XML Format * `.pdf` - Portable Document Format * `.jpg` - JPEG, a photo format ideal for sharing on social media and elsewhere * `.taskpaper` - TaskPaper File Format * `.ePub` - Open Ebook Publication Structure To access these export options on your Mac, iPad, or iPhone, tap the (i) button in the upper right of a note. Then, look at the bottom of the Information Pane that opens to export the current note. ## Customize export behavior Various export features are available depending on the notes being exported and whether you’re on a Mac or iOS device. When using the HTML option to export multiple notes that use wiki links to each other, enable this option to convert those links to HTML links. This basically turns these notes into a functioning website that can be uploaded to virtually any web host. *On macOS*: The HTML Links option is available on the save panel available by clicking `File` → `Export Notes…` in the menu bar. *On iPad and iPhone*: You can enable this option by tapping Settings in the Sidebar, then `Import & Export`. ### Include photos in HTML export If you’re exporting notes to HTML, any photos in those notes can be embedded into the HTML file by enabling the *base64 option*. This can be a simpler way to preserve these images without managing them as separate files. *On macOS*: you can export all your notes to a specific format by selecting `File` → `Export Notes…` in the menu bar. You can customize some export options under *Bear > Preferences > General*, including “Keep tags during export.” Other options can be adjusted in the export dialog. *On iPad and iPhone*: You can export all notes by tapping Settings in the Sidebar, then `Import & Export`. Various export options can be toggled in that settings area, including: * Keep tags during export * Export attachments * Export type * Merge notes in single file ### Export Examples [image:29C0B506-7082-4DDE-99FE-754EB9C23A80-52345-0000644BC27C65C2/html_thumb.jpg] [image:8517EC72-CAC3-4D92-9EB0-99D0D50750CC-52345-0000644BC24EF051/pdf_thumb.jpg] [image:C14C4DD2-5DEE-41A4-BEEA-A0AAC20DB729-52345-0000644BC2252C2C/docx_thumb.jpg] [image:E8411F6D-8277-428F-ABD8-9CF392E9A9D7-52345-0000644BC1F620E0/rtf_thumb.jpg] [Export Notes in Different Formats](https://bear.app/faq/Import%20&%20export/Export%20your%20notes/) # Export to Google Docs There are two way to export Bear notes to Google Docs. On an iPad or iPhone, the second option is ideal as long as you have the Google Drive or Docs apps installed: * Tap the (i) icon in a note * In the Information panel that appears, select RTF in the export options at the bottom * The iOS share sheet should appear * Tap Google Drive as your sharing destination, and that app should open to finish the process /Warning/ Links may not be preserved with both methods. We try our best, but importing RTF files to Google Drive is tricky. [Export to Google Docs](https://bear.app/faq/Import%20&%20export/Export%20to%20Google%20Docs/) # Copy text portions as HTML, RTF or TXT Sometimes, you might want to copy just part of a note as Rich Text, Plain Text, HTML, or Markdown. ## Mac Select a portion of text, then right-click on it. Move to the `Copy As` menu and pick from the options there. ## iOS Select a portion of text, then choose `Copy As` from the selection menu that appears. ## Note The HTML option, and other full-note export options, are available only to [Bear Pro](https://blog.bear-writer.com/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose-351cd60c0cc1) users. Exporting part of a note as RTF is not available on iOS. [Copy text portions as HTML, RTF or TXT](https://bear.app/faq/Import%20&%20export/Copy%20portions%20of%20notes%20as%20HTML,%20RTF,%20TXT%20or%20Markdown/) # Transfer notes with AirDrop | FAQ & Support Apple’s AirDrop feature is an easy way to share your Bear notes with friends, coworkers, family, or just between your own devices. It’s easier and faster than using text messaging, thumb drives, or emailing files around. You can learn more about [AirDrop for Mac](https://support.apple.com/en-us/HT203106) and [AirDrop for iOS](https://support.apple.com/en-us/HT204144) on Apple’s site. ## Use AirDrop with Bear for iOS On *iPhone and iPad*, [make sure AirDrop is enabled](https://support.apple.com/en-us/HT204144) and configured for either “Contacts only” or “Everyone.” Then, transferring a Bear note is easy: * Tap the share button in the top right corner of the note editor (or: swipe left on a note in the note list, then select `More` and then `Share` ) * Wait a second, and nearby iPhones, iPads, and Macs will appear at the top of the share sheet (note: those devices must have AirDrop enabled too) * Tap your recipient’s device * Your recipient will see a notification to receive your Bear note. *They must tap “Accept” to get it*. If they tap “Decline,” the note will not be sent * One accepted, Bear will automatically open and show the new note This short video shows the whole prodedure: ## Use AirDrop with Bear for Mac You can also transfer to or from *macOS* by using the `AirDrop` tab in `Finder`. Save your notes as [.bearnote](https://bear.app/faq/Import%20&%20export/Export%20your%20notes/) files and drag&drop them to the destination device. When a file is transfered to *macOS* a double click on the file is required in order to import the note. [image:796D6CC5-0803-42F5-83FD-185DD0B2B70D-52345-0000644A08E7F3C0/1.png] [Transfer notes with AirDrop | FAQ & Support](https://bear.app/faq/Extra/Transfer%20notes%20with%20AirDrop/) # Preview your notes in Marked 2 [Marked 2](https://marked2app.com) is a great Mac utility for previewing Markdown files as fully rendered rich text. It works with many text and writing apps, including Bear. With the *macOS* version of Bear you can preview a note in Marked 2 by selecting `Note` -> `Preview in Marked` in the menu bar. Notes do not have to be in /Markdown compatibility mode/ to be previewed in Marked; Bear will take care of converting them. As of Bear 1.7.15 and the Mac App Store version of Marked 2, you no longer need to authorize access to a `.textbundle` file in order to preview notes. [Preview your notes in Marked 2](https://bear.app/faq/Extra/Preview%20your%20notes%20in%20Marked%202/) # Libraries used in Bear Bear uses some cool libraries that awesome people made available to the rest of the developers. We would like to thank each and everyone of them: you are making this world a better place! ### MIT ### BSD ### AS-IS * [minizip](https://github.com/nmoinvaz/minizip/) by Nathan Moinvaziri * [SCEvents](https://github.com/mz2/SCEvents) by Matias Piipari ### Apache License ### Public Domain * [HTMLReader](https://github.com/nolanw/HTMLReader/) by Nolan Waite ### Other * [FlickTypeKit](https://github.com/FlickType/FlickTypeKit) by FlickType [Libraries used in Bear](https://bear.app/faq/Extra/Libraries%20used%20in%20Bear/) # How Does Encryption Work Under the Hood When the user chooses to encrypt a note, the text of that note is secured via the [Themis](https://github.com/cossacklabs/themis) Open Source library (AES-GCM-256 with ZRTP KDF) with a per note unique encryption key. The password is stored for biometric authentication using Apple’s [SecureEnclave](https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_secure_enclave?language=objc) through the [Valet](https://github.com/square/Valet) Open Source library. These are only highlights of the security structure we adopt in Bear. If you want to read an in-depth analysis you can read the [blog post](https://www.cossacklabs.com/blog/end-to-end-encryption-in-bear-app.html) from Cossack Labs, the security firm we have collaborated with to make it all happen. [How Does Encryption Work Under the Hood](https://bear.app/faq/Extra/How%20does%20encryption%20in%20Bear%20work%20under%20the%20hood/) # iOS App Sharing Extension Bear for iOS comes with an App Extension that makes it easy to collect text, links, photos, and files from other apps. To use the extension, simply tap the iOS share icon found in most apps, then tap the Bear icon. If Bear is not listed in the top app row, scroll to the far right of that row and tap “More.” In the list of apps that appears, find Bear and enable it. When you use the app extension, a dialog will preview the note and offer a few options. If you press `Save`, a new note will be created, but you can also save to an existing note. Choose `Start of…` or `End of…`, then select the target note. [image:5B77FA07-427D-4EF1-96C1-6F6D1B394665-52345-00006447CED09D3F/1.jpg] ## Grab entire web pages The Bear app extension can collect entire web pages. Once you invoke the extension, select `Web Page Content` from the top menu and tap `Save`. Bear will then try to clip the full page. [image:1ECA6B44-5B5E-46B7-9D01-CAA652E13603-52345-00006447CEB0B2E7/2.jpg] ## Adjust app extension preferences As of Bear 1.7, you can adjust some settings for the app extension from within Bear. Tap the *Settings* icon at the bottom of the left Sidebar, then tap *Web Content Options*. In this Settings screen, you can: * Choose whether Bear imports images when grabbing web pages * Append web page source links to notes * Set tags to be applied to notes * Separate tags with commas, e.g.: links, to read, world domination * Tags are added when saving the full page, but not when saving as a link [iOS App Sharing Extension](https://bear.app/faq/Extensions/iOS%20App%20Extension/) # How to Clip Web Pages Bear can clip entire webpages and save them as notes: ## Mac Grab the web page content directly from your browser by installing [Bear's extension](https://bear.app/faq/Extensions/Browser%20extensions/) available for Safari, Google Chrome, and Firefox. ## iOS Clip a page by using [Bear's iOS extension](https://bear.app/faq/Extensions/iOS%20App%20Extension/) and selecting `Web Page Content` from the top menu. [How to Clip Web Pages](https://bear.app/faq/Extensions/Clip%20web%20pages/) # MacOS Browser Extensions On the Mac, Bear has a free browser extension for Safari, Chrome, and Firefox. It allows you to save portions or entire web pages as Bear notes with a single click. [Bear Pro subscribers](https://blog.bear-writer.com/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose-351cd60c0cc1) can sync all notes between their devices. The Bear browser extension requires Bear for Mac to be installed. * For *Safari*: Bear now automatically installs its Safari extension. Enable it by opening Safari, then going to *Preferences > Extensions*. Find Bear in the extensions list and enable it * For *Chrome*: Visit the [Chrome Web Store](https://chrome.google.com/webstore/detail/bipgnccfcjnfnpnnllchfeillaekkofo/) and click"Add to Chrome". * For *Firefox*: Visit [the Mozilla Add-Ons](https://addons.mozilla.org/en-US/firefox/addon/bear-app-add-on/) and click "Add to Firefox". * For *Opera*: Visit [the Opera Add-Ons](https://addons.opera.com/en-gb/extensions/details/bear-writer/) and click "Add to Opera". Once installed, click the Bear button in your browser toolbar. After a few seconds, you'll see a new note appear in Bear with the content of the page. If you select a portion of the page and click the Bear button, a new note with the selected informations will appear in Bear. ## Extension settings You can adjust some options of the Bear extension from within Bear. You can add tags to all clipped notes, import images, and append the page URL to the Bear note. * On Mac, click *Bear > Web content options* * In Chrome for Mac, you have to click on "Options" near the Bear icon * On iOS, select Bear’s Settings at the bottom of the Sidebar, then tap *Web content options* [image:3CC0FC69-20B0-41FD-BA74-FD448B404310-52345-0000644674DAA092/1.png] [MacOS Browser Extensions](https://bear.app/faq/Extensions/Browser%20extensions/) # Syntax Highlighting for your Code As in [GitHub Markdown Dialect](https://help.github.com/articles/creating-and-highlighting-code-blocks/), Bear supports code blocks and syntax highlighting for over 150 languages (listed below). You simply need to specify the programming language after the first block marker. An example: [image:3645F09E-AA50-4B52-8BF4-6638167E311C-52345-00006445B93D6E70/1.png] ## How to paste code snippets If you are looking for a quick way to insert a code snippet with syntax highlighting into Bear, you can use this quick trick: * Copy the lines of code * Select a note in Bear * Select the Paste From Code functionality, see below ### Mac Right click and select `Paste From` → `Code`. ### iOS Tap on the note and select `From Code` on the inline (dark) menu. Supported languages for syntax highlighting and their abbreviations: * ABAP * ActionScript * ADA * Apache * APL * AppleScript * Arduino * ARFF * AsciiDoc * ASP.NET - /aspnet/ * AutoHotkey * AutoIt * Bash * BASIC * Batch * Bison * Brainfuck * Bro * C / C++ * C# - /csharp/ * CoffeeScript - /coffee/ * Clojure - /clj/ * Crystal * CSP * CSS * D * Dart * Diff * Django/Jinja2 - /django/ * Docker * Eiffel * Elixir * Elm * ERB * Erlang * F# - /fsharp/ * Flow * Fortran * Fountain * GEDCOM * Gherkin * Git * GLSL * GraphQL * Groovy * GO - /golang/ * Haml * Handlebars * Haskell * Haxe * HTTP * HTML * Icon * Inform 7 - /inform7/ * Ini * Io * J * Java * Javascript - /js/ * JSON * Julia * Keyman * Kotlin * Less * Liquid * Livescript * LOLCODE * Lua * Makefile * Markdown - /md/ * MATLAB - /mat/ * MEL * Mizar * Monkey * NAJS * NASM * ngnix * nim * nix * Objective-C - /objc/ * Ocam * OpenCL * Oz * Pascal * Perl * PHP * PL/SQL - /sql/ /plsql/ * PowerShell * Prolog * Pug * Puppet * Pure * Python - /py/ * Q * Qore - /qore/ * R * React JSX - /jsx/ * Ren'py - /renpy/ * reST - /rest/ * Ruby * Rust * SAS * SASS * Scala - /sc/ * SCSS * Scheme * Shell - /sh/ * SmallTalk * Smarty * Swift * TAP * Tcl * Textile * Tex/Latex - /latex/ * Twig * TypeScript * VB.NET - /vbnet/ * Velocity * Verilog * VHDL * vim * Visual Basic - /visual-basic/ * WebAssembly - /wasm/ * Wiki markup - /wiki/ * Xeora * Xojo * XQuery * XML * YAML [Syntax Highlighting for your Code](https://bear.app/faq/Code%20Snippets/Show%20syntax%20highlighting%20for%20your%20code%20snippets%20in%20notes/) # How to use Tag and Note Autocomplete | FAQ & Support In Bear, you can [add tags to notes](https://bear.app/faq/Tags%20&%20Linking/Nested%20Tags/) to organize them and make them easier to find later. You can also [link notes within other notes](https://bear.app/faq/Tags%20&%20Linking/How%20to%20link%20notes%20together/) for easy reference, to create a list of current notes you’re working on, or to build your own personal wiki. To help with these processes, Bear has *Tag Autocomplete* and *Note Autocomplete*. These features help you quickly apply existing tags to new notes, and to create just the right note links. ## Tag Autocomplete To use Tag Autocomplete: * Tap the Tag Autocomplete button (#) in Bear’s custom keyboard bar * OR, start a tag by typing a pound sign (#) anywhere in a note * The Suggestion Box appears with suggestions based on your existing tags * Scroll the tag list. Optionally, type a couple letters to narrow the suggestions * Tap the tag you want to add * No more accidental #tags and #tgas in your Sidebar! *Tip*: If you’re on a Mac or using a keyboard with an iPad, arrow keys can scroll this list, and Return selects a tag. ## Note Autocomplete Note Autocomplete works a lot like Tag Autocomplete: * Tap the Note Autocomplete button in custom keyboard bar (kinda like a 📄) * OR, trigger it anywhere in a note by typing double brackets, like this: [[ * The Suggestion Box will appear with a list of your recent notes * Scroll the note list. Optionally, type a couple letters to narrow the suggestions * Tap the note you want, and a link will be inserted in your current note [How to use Tag and Note Autocomplete | FAQ & Support](https://bear.app/faq/Autocomplete/How%20to%20use%20Tag%20Autocomplete%20and%20Note%20Autocomplete/) # How to insert attachments in Bear notes You can attach any kind of file to a Bear note. Each file will be displayed in a small box reporting the name, modification date, and a representing icon. ## Mac You can add a file to a note by dragging and dropping it into the /Editor/. You can achieve the same result by selecting `Format` → `Insert File` in the menu bar, or the corresponding element in the Style Pane. [image:831EAF42-7769-420B-B5C9-D03EC788214F-52345-000064448A939AE1/1.jpg] *Pro tip*: Click an attachment in a note, then press the Space Bar to Quick Look its contents. As long as macOS supports Quick Look for that file type, you’ll get a preview of its contents without the need to open the file’s corresponding app. ## iOS You can attach pictures and files to Bear notes by tapping either the camera icon or the attachments icon in Bear’s keyboard bar. [image:D4E3E75A-EB4C-45DC-93CA-F7DC690FD653-52345-000064448A6691F8/2.jpg] ## Things to know about attachments * Attachments bigger than 250Mb will not be synced between devices * At this time, Encrypted notes do not support attachments * WebP images are supported as of iOS 14 and macOS 11 [How to insert attachments in Bear notes](https://bear.app/faq/Attachments/Insert%20Attachments/) # Add Sketches to your notes As of version 1.2 for iOS, Bear now has sketching tools for quick drawings and handwriting notes. You can access these tools by tapping the drawing icon on the toolbar, and Apple Pencil is supported. [image:7E5D82AC-A28F-4C0F-A51E-B658472A6662-52345-00006443CDC18027/1.png] When sketching you can find a *pencil*, *highlighter*, and *eraser*. You can change the drawing color and size by tapping the circular button at the bottom right. [image:464C3240-4ECD-44C7-BB6B-4B41E126A508-52345-00006443CD8D368F/2.jpg] ## Things to know about sketches * At this time, Encrypted notes do not support sketches [Add Sketches to your notes](https://bear.app/faq/Attachments/Add%20Sketches%20to%20your%20notes/) # MacOS and iOS VoiceOver support Bear supports [Apple’s VoiceOver feature](https://www.apple.com/accessibility/iphone/vision/) on Mac, iPad, iPhone, and Apple Watch. VoiceOver is a wonderful screen reader technology available on iOS and MacOS that help sight-challenged people to access iOS features with practical finger gestures. On iOS 10 and later, you can enable VoiceOver in `Settings` -> `Generals` -> `Accessibility`, where a set of reading preferences are also available. On macOS 10.11 and later, you can enable VoiceOver in `System Preferences` -> `Accessibility` -> `VoiceOver`. For reporting problems or suggest improvements about Bear's VoiceOver support please use our [support form](https://bear.app/contact/). [MacOS and iOS VoiceOver support](https://bear.app/faq/Accessibility/VoiceOver%20support/) # Tools for Dyslexic People Bear for Mac and iOS has some features that help with usage and legibility for visually impaired and Dyslexic people. ## Mac options ### The Open Dyslexic font Under `Bear` → `Preferences` → `Editor`, we added a font called [Open Dyslexic](http://opendyslexic.org). This is an open-source typeface designed to increase readability for dyslexic readers. Also in the Editor preferences pane are options for font size, line height, and other settings which can make reading and writing notes less distracting. ### A high contrast theme For people with focus problems, we added a theme to `Bear` → `Preferences` → `Themes` called *High Contrast*. This theme is free to both Bear and [Bear Pro](https://blog.bear-writer.com/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose-351cd60c0cc1) users. It’s similar to the *Red Graphite* theme, but with a blue accent and more contrasting text colors. ### Mac text to speech You can use the standard macOS text-to-speech option on a note or selected text by going to `Edit` → `Speech` in the menu bar. ## iOS options ### The Open Dyslexic font and high contrast theme The *Open Dyslexic* font and *High Contrast* options described above can be found in *Sidebar* → `Settings` →, under `Editor` and `Themes`, respectively. ### iOS text to speech Bear gained a text-to-speech option in version 1.1 for iOS. Simply select some text and tap on the `Speech` option in the text menu. Or you can have an entire note read out loud by swiping left on a note in the *Note List*, then selecting `More...` → `Speech`. [Tools for Dyslexic People](https://bear.app/faq/Accessibility/Tools%20for%20Dyslexic%20People/) # Bear iMessage stickers You can add a set of beautiful Bear stickers to Messages on iPhone and iPad. Here is how to enable and use Bear's stickers (and just about any other iMessage app). [image:C9E0BD2F-736D-44F8-8638-BFA73E5B616C-52345-000064418478E0BB/Sticker%20drawer.jpeg] ## To enable Bear stickers in Messages * Open any Messages conversation * Swipe on the app bar above the keyboard until you see a *(···) More* button * Tap the More button and scroll the list of iMessage apps to find Bear * Tap the switch to enable Bear stickers, then tap Done at the top of the screen. Optionally, you can tap Edit at the top to rearrange your apps and put Bear first where it belongs ## To use Bear stickers in Messages * Open any Messages conversation * Swipe the row of apps above the keyboard to find the Bear logo [image:AFC6AE35-E5A3-4EB6-954F-43963D3B0108-52345-000064418434DE14/Sticker%20banner.png] [Bear iMessage stickers](https://bear.app/faq/iMessage%20stickers/) # X-callback-url Scheme documentation Bear implements the [x-callback-url](http://x-callback-url.com/) protocol, which allow iOS and Mac developers to expose and document API methods they make available to other apps and return useful data. Bear URL Scheme actions look like this: `bear://x-callback-url/[action]?[action parameters]&[x-callback parameters]` with x-success and x-error as available x-callback parameters. ## Actions * [/open-note](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#open-note) * [/create](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#create) * [/add-text](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#add-text) * [/add-file](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#add-file) * [/tags](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#tags) * [/open-tag](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#open-tag) * [/rename-tag](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#rename-tag) * [/delete-tag](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#delete-tag) * [/trash](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#trash) * [/archive](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#archive) * [/untagged](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#untagged) * [/todo](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#todo) * [/today](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#today) * [/locked](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#locked) * [/search](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#search) * [/grab-url](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#grab-url) * [/change-theme](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#change-theme) * [/change-font](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#change-font) Open a note identified by its title or id and return its content. *parameters* * *id* /optional/ note unique identifier. * *title* /optional/ note title. * *header* /optional/ an header inside the note. * *exclude_trashed* /optional/ if `yes` exclude trashed notes. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *float* /optional/ if `yes` makes the external window float on top (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *open_note* /optional/ if `no` do not display the new note in Bear’s main or external window. * *selected* /optional/ if `yes` return the note currently selected in Bear ( [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation) required) * *pin* /optional/ if `yes` pin the note to the top of the list. * *edit* /optional/ if `yes` place the cursor inside the note editor. *x-success* * *note* note text. * *identifier* note unique identifier. * *title* note title. * *tags* note tags array * *is_trashed* `yes` if the note is trashed. * *modificationDate* note modification date in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601). * *creationDate* note creation date in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601). *example* `bear://x-callback-url/open-note?id=7E4B681B` `bear://x-callback-url/open-note?id=7E4B681B&header=Secondary%20Ttitle` Create and try /open-note actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/open_note/) ### /create Create a new note and return its unique identifier. Empty notes are not allowed. *parameters* * *title* /optional/ note title. * *text* /optional/ note body. * *clipboard* /optional/ if `yes` use the text currently available in the clipboard * *tags* /optional/ a comma separated list of tags. * *file* /optional/ base64 representation of a file. * *filename* /optional/ file name with extension. Both /file/ and /filename/ are required to successfully add a file. * *open_note* /optional/ if `no` do not display the new note in Bear's main or external window. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *float* /optional/ if `yes` make the external window float on top (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *pin* /optional/ if `yes` pin the note to the top of the list. * *edit* /optional/ if `yes` place the cursor inside the note editor. * *timestamp* /optional/ if `yes` prepend the current date and time to the text * *type* /optional/ if `html` the provided /text/ parameter is converted from html to markdown * *url* /optional/ if /type/ is `html` this parameter is used to resolve relative image links *x-success* * *identifier* note unique identifier. * *title* note title. *example* `bear://x-callback-url/create?title=My%20Note%20Title&text=First%20line&tags=home,home%2Fgroceries` Create and try /create actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/create/) *notes* The base64 *file* parameter have to be [encoded](https://www.w3schools.com/tags/ref_urlencode.asp) when passed as an url parameter. ### /add-text append or prepend text to a note identified by its title or id. Encrypted notes can't be accessed with this call. *parameters* * *id* /optional/ note unique identifier. * *title* /optional/ title of the note. * *selected* /optional/ if `yes` use the note currently selected in Bear ( [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation) required) * *text* /optional/ text to add. * *clipboard* /optional/ if `yes` use the text currently available in the clipboard * *header* /optional/ if specified add the text to the corresponding header inside the note. * *mode* /optional/ the allowed values are `prepend`, `append`, `replace_all` and `replace` (keep the note's title untouched). * *new_line* /optional/ if `yes` and `mode` is `append` force the text to appear on a new line inside the note * *tags* /optional/ a comma separated list of tags. * *exclude_trashed* /optional/ if `yes` exclude trashed notes. * *open_note* /optional/ if `no` do not display the new note in Bear's main or external window. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *edit* /optional/ if `yes` place the cursor inside the note editor. * *timestamp* /optional/ if `yes` prepend the current date and time to the text *x-success* * *note* note text. * *title* note title. *example* `bear://x-callback-url/add-text?text=new%20line&id=4EDAF0D1&mode=append` Create and try /add-text actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/add_text/) ### /add-file append or prepend a file to a note identified by its title or id. This call can't be performed if the app is a locked state. Encrypted notes can't be accessed with this call. *parameters* * *id* /optional/ note unique identifier. * *title* /optional/ note title. * *selected* /optional/ if `yes` use the note currently selected in Bear ( [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation) required) * *file* /required/ base64 representation of a file. * *header* /optional/ if specified add the file to the corresponding header inside the note. * *filename* /required/ file name with extension. Both /file/ and /filename/ are required to successfully add a file. * *mode* /optional/ the allowed values are `prepend`, `append`, `replace_all` and `replace` (keep the note's title untouched). * *open_note* /optional/ if `no` do not display the new note in Bear's main or external window. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *edit* /optional/ if `yes` place the cursor inside the note editor. /x-success/ *example* `bear://x-callback-url/add-file?filename=test.gif&id=4EDAF0D1-2EFF-4190-BC1D-67D9BAE49BA9-28433-000187BAA3D182EF&mode=append&file=R0lGODlhAQABAIAAAP%2F%2F%2F%2F%2F%2F%2FyH5BAEKAAEALAAAAAABAAEAAAICTAEAOw%3D%3D` Create and try /add-file actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/add_file/) *notes* The base64 *file* parameter have to be [encoded](https://www.w3schools.com/tags/ref_urlencode.asp) when passed as an url parameter. Return all the tags currently displayed in Bear's sidebar. *parameters* * *token* /required/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *tags* json array representing tags. `[{ name }, ...]` *example* `bear://x-callback-url/tags?token=123456-123456-123456` Create and try /tags actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/tags/) ### /open-tag Show all the notes which have a selected tag in bear. *parameters* * *name* /required/ tag name or a list of tags divided by comma * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the tag's notes. `[{ title, identifier, modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the notes array. If more than one tag is passed with the `name` parameter this action returns all the notes matching one of the tags passed. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/open-tag?name=work` `bear://x-callback-url/open-tag?name=todo%2Fwork` Create and try /open-tag actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/open_tag/) ### /rename-tag Rename an existing tag. This call can't be performed if the app is a locked state. If the tag contains any locked note this call will not be performed. *parameters* * *name* /required/ tag name. * *new_name* /required/ new tag name. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/rename-tag?name=todo&new_name=done` Create and try /rename-tag actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/rename_tag/) ### /delete-tag Delete an existing tag. This call can't be performed if the app is a locked state. If the tag contains any locked note this call will not be performed. *parameters* * *name* /required/ tag name. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/delete-tag?name=todo` Create and try /delete-tag actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/delete_tag/) ### /trash Move a note to bear trash and select the Trash sidebar item. This call can't be performed if the app is a locked state. Encrypted notes can't be used with this call. *parameters* * *id* /optional/ note unique identifier. * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/trash?id=7E4B681B` `bear://x-callback-url/trash?search=old` Create and try /trash actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/trash/) *notes* The *search* term is ignored if an *id* is provided. ### /archive Move a note to bear archive and select the Archive sidebar item. This call can't be performed if the app is a locked state. Encrypted notes can't be accessed with this call. *parameters* * *id* /optional/ note unique identifier. * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/archive?id=7E4B681B` `bear://x-callback-url/archive?search=projects` Create and try /archive actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/archive/) *notes* The *search* term is ignored if an *id* is provided. ### /untagged Select the Untagged sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the untagged notes. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the notes array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/untagged?search=home` Create and try /untagged actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/untagged/) ### /todo Select the Todo sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the todo notes. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the note array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/todo?search=home` Create and try /todo actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/todo/) ### /today Select the Today sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the today notes. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` f Encrypted notes will be excluded from the note array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/today?search=family` Create and try /today actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/today/) ### /locked Select the Locked sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/locked?search=data` Create and try /locked actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/locked/) ### /search Show search results in Bear for all notes or for a specific tag. *parameters* * *term* /optional/ string to search. * *tag* /optional/ tag to search into. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the note results of the search. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the note array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/search?term=nemo&tag=movies` Create and try /search actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/search/) ### /grab-url Create a new note with the content of a web page. *parameters* * *url* /required/ url to grab. * *tags* /optional/ a comma separated list of tags. If tags are specified in the Bear's web content prefences this parameter is ignored. * *pin* /optional/ if `yes` pin the note to the top of the list. * *wait* /optional/ if `no` x-success is immediately called without /identifier/ and /title/. *x-success* * *identifier* note unique identifier. * *title* note title. *available values* `yes` `no` *example* `bear://x-callback-url/grab-url?url=https://bear.app` Create and try /grab-url actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/grab_url/) ### /change-theme Change the selected Bear theme. Some themes may require a Bear Pro subscription. *parameters* * *theme* /required/. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *available values* `Red Graphite` `Charcoal` `Solarized Light` `Solarized Dark` `Panic Mode` `Dracula` `Gotham` `Toothpaste` `Cobalt` `Duotone Light` `Duotone Snow` `Dieci` `Ayu` `Ayu Mirage` `Dark Graphite` `Duotone Heat` `Gandalf` `Olive Dunk` `D.Boing` `Nord` `Lighthaus` *example* `bear://x-callback-url/change-theme?theme=Solarized%20Dark` Create and try /change-theme actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/change_theme/) ### /change-font Change the selected Bear Font. *parameters* * *font* /required/. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *available values* `Avenir Next` `System` `Helvetica Neue` `Menlo` `Georgia` `Courier` `Open Dyslexic` *example* `bear://x-callback-url/change-font?font=Helvetica%20Neue` Create and try /change-font actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/change_font/) ## Token Generation In order to extend their functionalties, some of the API calls allow an app generated token to be passed along with the other parameters. Please mind a Token generated on iOS is not valid for MacOS and vice-versa. On MacOS, select `Help` → `API Token` → `Copy Token` and will be available in your pasteboard. On iOS go to the preferences → `General`, locate the `API Token` section and tap the cell below to generate the token or copy it in your pasteboard. ## Support To discuss URL scheme improvements or reporting bugs please use our [Support Form](https://bear.app/contact/) or [Bear's subreddit](https://reddit.com/r/bearapp). [X-callback-url Scheme documentation](https://bear.app/faq/X-callback-url%20Scheme%20documentation/) # Where are Bear's notes located On both iOS and macOS, Bear's notes are stored in a [SQLite](https://www.sqlite.org/index.html) database. On iOS, you cannot access the database due to iOS storage policies. But on macOS, the database is accessible with any third-party app or library that has SQLite support. Bear's macOS database is located here: `~/Library/Group Containers/9K33E3U3T4.net.shinyfrog.bear/Application Data/database.sqlite` ## Please note if you plan to work with Bear's database For most users in most situations, *we highly recommend not doing this*. But if you decide to anyway, you can improve your chances of /not/ compromising Bear or the notes database by considering the following: * If you choose to work on Bear’s database, *create a copy first* to avoid problems or potential data loss * Any change on the database schema can cause Bear to not be able to migrate the database during a version migration, with potential data loss * Some data changes can cause crashes or problems in Bear, especially on flags and foreign keys * We *strongly suggest* to first quit Bear’s app before making any data modification. If the app is running, some data loss is highly likely Generally speaking, it is safe to access the database for *reading only*. [Where are Bear's notes located](https://bear.app/faq/Where%20are%20Bear's%20notes%20located/) # Bear for web, Android, & Windows As of this writing, we do not have plans for Android or Windows. Shiny Frog is a small team by design, and we prefer to focus on projects we believe we can reasonably tackle and do well. But! We /can/ say that *Bear for web is in the works*! We don’t want to talk specific features yet, but we can share a few of our current goals for its core design. ## Our plan for Bear for web Our current plan is that Bear for web will: * use Apple’s iCloud to sync your notes, which means it will * still be private so we cannot see your notes, tags, or anything else * require [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) * have a public beta once we get closer, but it’s still a ways off * *not have online collaboration for launch*. We need to move one step at a time. After we launch Bear for web and finish a major redesign of the Editor to support tables and other features, we can revisit the possibility of collaboration ## It will take a while Yes, really. The original Bear took three years to build, and now we’re /also/ juggling the web app, customer support, and regular updates to support Apple’s latest features and fix occasional bugs. Fortunately, [Bear Pro subscriptions](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) have allowed us to expand the team a little to help with support, social media, our growing Chinese audience, and commission those sweet, sweet iMessage stickers. When we get closer and have more to say, we’ll update this document and proclaim it from atop the highest mountains. Whereby ‘mountains’ we mean [our newsletter](http://eepurl.com/dvs38P), [Twitter](https://twitter.com/BearNotesApp), [Reddit](https://reddit.com/r/bearapp), and [Facebook](https://facebook.com/BearNotes). [Bear for web, Android, & Windows](https://bear.app/faq/What%20about%20Bear%20for%20web,%20Android,%20&%20Windows/) # Editor Typography Options In the *Sidebar* → `Settings` → `Editor` Preference Panel, you can control various typographic aspects of your notes. ## Mac, iPad, and iPhone * *Fonts* - 7 possible fonts to choose from: `Avenir Next` , `System`, `Menlo`, `Helvetica Neue`, `Georgia`, `Courier`, and `Open Dyslexic` * *Font size* * *Line height* * *Line width* - on *iOS* line width’s effects will be visible only on iPad and some iPhones in landscape orientation * *Paragraph spacing* [Editor Typography Options](https://bear.app/faq/Typography%20options/) # Quickly navigate notes on iOS In Bear for iPhone and iPad, you can quickly navigate between notes with a simple gesture. We call it Quick Nav, and it’s new in Bear 1.6. To access access the Quick Nav menu, tap on the note Editor with two fingers. The menu will appear with options to move back and forward through your recent notes. You can also move to the top and bottom of the current note. You can also use these navigation options even faster by swiping with two fingers from any edge of the screen. Swipe right to go to your previous note, swipe down to go to the top of a note, and so on. [image:9D94E691-BD61-4D7D-8872-B3DEE6E30E4D-52345-0000643EAE115F4A/1.jpg] [Quickly navigate notes on iOS](https://bear.app/faq/Quickly%20navigate%20notes%20on%20iOS/) # Quickly add emoji to notes As of Bear 1.7, you can quickly add emoji anywhere in a note with just a couple keystrokes. This works on Mac, iPad, and iPhone, and it’s useful for all kinds of notes, from journal entries and meeting minutes to making lists and headings stand out better. To use Bear’s Emoji Autocomplete feature: 1. Type a colon (:) anywhere in a note 2. Type a couple letters of a feeling or object (try *:laugh* or *:food* or *:work* to get 😆 🥘 👩🏻‍⚕️) 3. Emoji Autocomplete will suggest emoji 4. Tap or click the one you want. If a physical keyboard is available, you can use arrow keys and Return to select a suggestion Emoji Autocomplete suggests built-in emoji based on their actual names (as listed in macOS and iOS), a library of aliases we added, and some fancy custom language magic. For example: typing *:lau* will suggest laughing emoji, but also the emoji for Santa C *lau* s, a *lau* ndry basket, and the flag of the [island country](https://en.wikipedia.org/wiki/Palau) Pa *lau*. [Quickly add emoji to notes](https://bear.app/faq/Quickly%20add%20emoji%20to%20notes/) # How to Print your Notes Bear Mac, iPhone, and iPad can print individual notes. ## Mac Select `File` → `Print...` or hit `⌘P` once you have selected a note. A preview panel will let you select the various parameters before printing. [image:F9398DD9-3F19-47DD-A94B-619B4C072E3E-52345-0000643DA36B8C5E/1.png] ## iOS Tap the More button (...) in the top right corner of the note editor or, in the Note List, swipe the note to the left, select `More` → `Share`. In the share panel, tap on `Print` in the bottom row of icons. A preview panel will help you select various options before printing. [image:D230920A-DC3F-44FB-8572-B10FAAC428CD-52345-0000643DA34674AD/2.png] [How to Print your Notes](https://bear.app/faq/Print%20notes/) # Open Bear notes in separate windows In Bear for Mac, you can easily open notes in their own windows: *Double click* on a note in the Notes List or select `Note` → `Open In New Window` from the menu bar. You can open note links in external windows by holding the *⌘ key* while clicking the link in Bear's note editor. [image:037ACD46-69AC-42A7-93DD-9E2F1F079705-52345-0000643CF9A3A03B/1.jpg] You can also make the window float on top of all other windows on your Mac. Once a note is floating in its own window, tap the icon in the bottom right corner (it looks like one square on top of another). You can also select `Window` → `Float on Top`. [Open Bear notes in separate windows](https://bear.app/faq/Open%20Bear%20notes%20in%20separate%20windows/) # How to use widgets with Bear Apple redesigned widgets in macOS Big Sur, iOS 14, and iPadOS 14. Widgets are a way to view small bits of information from apps, right on your Home Screen or desktop. Examples include quick weather details, a favorite photo, or the day’s task list. Bear has a few widgets available, free to both Bear and [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) users. Let’s explore how to add them, what they can do, and some details to know. Widgets work a little differently depending on the device, so Apple has separate [instructions for iPhone](https://support.apple.com/en-us/HT207122), [iPad](https://support.apple.com/en-us/HT211328), and [Mac](https://support.apple.com/en-in/HT211789). Check those out to get familiar with adding widgets to your devices. The main thing to know is that, once you add one of Bear’s widgets to your device, tap or click it to choose what it displays. See an example below. We have a few widgets in a variety of sizes available for Bear, with more on the way: *Single Note* (small, medium, large): Keep a note with a list, todos, or paragraphs always in view, right on your homescreen. Pick the widget, then flip it over to pick a note from Bear. *Sidebar* (small, medium, large): View recent notes from key sections of the Sidebar, including: Notes, Untagged, Todo, Today, and any of your tags. Tap a note to open it in Bear, tap the label at the bottom of the widget to visit that location in Bear. [image:EA48EAAA-E585-4A5A-8CF6-A80F18436509-52345-0000643C57E60B07/4.png] *Search* (small, medium, large): View the most recent notes that match a search query in Bear. PLUS, tap the label at the bottom to open that search query in Bear! [image:61DC76AE-587F-4FD5-999B-984F702CC3FD-52345-0000643C57C0C01D/5.png] *Create Note* This launches Bear and creates a new note so you can get right to work. *Find Notes* This widget launches Bear straight to searching all notes for keywords and #tags. *Widget placement on iPhone and iPad*: As of iOS 14 and iPad OS 15, widgets can be placed in the Today View and on any Home Screen on [iPhone](https://support.apple.com/en-us/HT207122) and [iPad](https://support.apple.com/en-us/HT211328). However, in iPadOS 14, they could only be [added to the Today View](https://support.apple.com/en-us/HT211328), which can also be pinned to the left side of the iPad’s first Home Screen. *Widgets on the Mac appear in Notification Center*. You can toggle Notification Center by clicking the clock in the far right of the Menu Bar. On a MacBook or other trackpad, you can also swipe left with two finger from the right edge. *Bear widgets cannot display protected notes*. Protected notes are a feature of [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/). For privacy reasons, Bear widgets cannot display contents of protected notes. [How to use widgets with Bear](https://bear.app/faq/How%20to%20use%20widgets%20with%20Bear/) # How to use Siri Shortcuts with Bear [Apple’s Shortcuts](https://support.apple.com/guide/shortcuts/welcome/) is a feature for simplifying tasks with multiple steps. Instead of manually using the Bear extension to save a web article to Bear, adding a tag like #toread, then also sharing that article with a friend, a Shortcut could do it all with just a tap or Siri request. Bear Shortcuts work on the iPhone, iPad, and Mac (as of macOS Monterey in 2021). You can download new shortcuts from Apple's gallery in the app, third-party communities like [ShortcutsGallery](https://shortcutsgallery.com) and [RoutineHub](https://routinehub.co), or anywhere on the internet. Here is a summary of the actions you can take with Bear shortcuts: * Access a specific note or tag * Open a specific note, tag, or sidebar section (Today, Todo, Archive, etc.) * Trash, archive, or pin a note * Add files, text, or tags to a note * Get files from a note * Create a new note with text or a link * Search all notes * Search for tags ## Example Bear shortcuts We made a few Shortcuts you can download, edit, and try. * [Share files from a note](https://www.icloud.com/shortcuts/de65551513eb45b59b195b5b7f1c0be1) - Automatically grabs all photos and files attached to a Bear note, then sends them via iMessage to either a specific contact or a person you choose on-the-fly. Right-click or long-press a note in Bear’s Note List to copy its identifier * [Note from PDF](https://www.icloud.com/shortcuts/b3cd656b17f24beb977cace46d005da7) - Use this from the share sheet in Files or a similar app to copy all text from a PDF and paste it into a new Bear note * [A selfie for your thoughts](https://www.icloud.com/shortcuts/6e3fa61815a84ee5a534e10e20ca9dfe) - This journaling shortcut takes a new selfie and asks what you’re thinking about, then adds it all to a new Bear note titled with the date ## Create your own Shortcuts It’s easy to start creating your own Shortcuts. As you build, the Shortcuts app will suggest actions and other apps based on things you typically do with your device: * Open Apple’s Shortcuts app * Tap the plus (+) to create a new shortcut * In the search panel, tap the apps tab * Tap Bear * Go wild ## Things to know For privacy reasons, Shortcuts cannot access locked Bear notes (Bear Pro required). Apple sometimes automatically creates “legacy actions” for apps that are not under our control. We recommend avoiding these actions: Create Bear Note, Create Bear Note from URL, open Bear Note, and Search in Bear. [How to use Siri Shortcuts with Bear](https://bear.app/faq/How%20to%20use%20Siri%20Shortcuts%20with%20Bear/) # How to use Bear with Siri on iOS On iPad and iPhone, you can search your notes and create new notes using Siri and the beautiful sound of your voice. ## Examples Check out some [real-world examples of Bear shortcuts](https://blog.bear.app/2018/11/how-to-automate-bear-with-shortcuts-and-siri/) in action on our blog. You can also get started with Bear shortcuts by trying these commands in Siri: `Create a new note in Bear` or `Create a note called Vacation saying I love Montreal in Bear` To search Bear with Siri, try: `Show me all my notes on Bear` or `Show me what I created last week on Bear` [How to use Bear with Siri on iOS](https://bear.app/faq/How%20to%20use%20Bear%20with%20Siri%20on%20iOS/) # How to lock Bear for privacy Bear Pro users can lock Bear, which offers some privacy from nosey family members and coworkers. Bear on iPad and iPhone can use Face or Touch ID. Bear for Mac can use Touch ID (if available). ## Enable Bear’s lock on iPad and iPhone * Open Bear * Tap the Settings icon at the bottom of the Sidebar (on the left) * Under the Pro section, tap Privacy * Tap Lock Bear with Face/Touch ID (depending on your device) ## Enable Bear’s lock on Mac * Open Bear * Click Bear > Preferences and the General pane * Under the Privacy section, click Lock Bear at Launch Now, the next time you open Bear, it will authenticate with Face/Touch ID to make sure it’s you. Anyone who is /not/ you need not apply. ## Important note Note that Bear Lock is different from the Bear Pro option to encrypt individual notes. Bear Lock does not encrypt all your notes, it simply adds an authentication prompt before accessing Bear. [How to lock Bear for privacy](https://bear.app/faq/How%20to%20lock%20Bear%20for%20privacy/) # How to fold tasks and show thumbnails To automatically collapse completed to-dos, select `Format` → `Fold` → `Auto Fold Completed Todos` in the menu bar. To display images as small thumbnails, select `View` → `Show Images As Thumbnails` menu item. ## iOS Access these features from the *Sidebar*, under the `Settings` → `Editor` Preferences Pane. [How to fold tasks and show thumbnails](https://bear.app/faq/How%20to%20fold%20tasks,%20show%20thumbnails%20in%20Bear/) # How to encrypt & lock notes with Bear As of Bear 1.7, Pro users can encrypt individual notes. This helps protect sensitive information and notes from nosy friends, family, and coworkers. Just like your notes, your Note Password is known only to you—we cannot see or reset it. Encrypted notes only display titles (if available) in the Note List; previews are obfuscated even if a note is unlocked. ## Add a Note Password [image:3859C9E9-F5AA-4DC4-AACE-D530A8B52374-52345-000064399A0F38D0/Create%20a%20Password%20screen.jpeg] Follow instructions below to create a Note Password for encrypting notes in Bear. If Face/Touch ID is available on the device, it is enabled automatically to make unlocking notes easier. ### iOS * Swipe left on a note in the Note List * Tap *More* * Tap *Add Password* * In the sheet that appears, create your Note Password. See below for password best practices * (Optional) Add a password hint to help you remember your Note Password later (but don’t add your password /as/ the hint!) * Tap Set Password ### Mac * Right-click a note in the Note List, or click the (…) in the upper right of a note * Select *Privacy > Add Password* * In the sheet that appears, create your Note Password. See below for password best practices * (Optional) Add a password hint to help you remember your Note Password later (but don’t add your password /as/ the hint!) * Tap Set Password ### Password best practices When you pick a Note Password, a strength meter will encourage you to pick a strong password, complete with a helpful Password Judgemoji! We highly recommend picking a strong but memorable password. Here are some tips to help: * Consider using an app like [1Password](https://1password.com) (which you should use anyway!) to create or at least just store your Note Password * Make it a mixture of capital and lowercase letters, numbers, and symbols * Do not use details that are easy for others to find, such as your birthday, address, or pet name * Do not reuse a password from another service or app * Consider writing the password down and storing it in a safe place. *Note*: A sticky note on your device or desk is not a safe space ## Change Note Password You can change your Note Password at any time. ### iOS * Swipe left on a locked note in the Note List * Tap *More* * Tap *Change Password* * Enter your current password * Enter the new password * Confirm the new password * Optionally, enter a password hint * Tap *Change Password* ### Mac * Right-click a locked note in the Note List * Select *Privacy > Change Password* * In the sheet that appears, enter your current password * Enter the new password * Confirm the new password * Optionally, enter a password hint * Click *Change Password* You can remove a Note Password from one or multiple notes. ### iOS * Swipe left on a note in the Note List * Tap *More* * Tap *Remove Password* * If prompted, enter your Note Password to unlock the note and confirm removal ### Mac * Right-click a note in the Note List * Select *Privacy > Remove Password* * If prompted, enter your Note Password to unlock the note and confirm removal ## Encryption and backups When creating a backup of your Bear notes, encrypted notes will be included with all the others. They will also be encrypted in backup form. If you need help on how to backup your Bear notes or your entire device, [there’s a blog post for that](https://blog.bear.app/2018/11/how-to-back-up-your-bear-notes/). ## Limitations of encrypted notes * Currently, notes containing attachments (including photos) cannot be encrypted * Encrypted notes cannot be synced to Apple Watch * The iOS app extension and Mac browser extension cannot create or append to encrypted notes * Automating Bear notes with x-url-callbacks have a few limitations for encrypted notes. Please see [this document](https://bear.app/faq/X-callback-url%20Scheme%20documentation/) to learn more ## Delete Password Mode (extreme recovery - use with caution!) If you forget your Note Password, *we cannot retrieve or reset it, and we cannot recover your locked notes*. While this situation is unfortunate, it is also done in the name of privacy: we don’t want to see your notes, tags, or any other data. Delete Password Mode is an emergency solution for when a Bear user forgets their Note Password, but they want to start over and lock new notes. All existing locked notes must be deleted in order to use Delete Password Mode. Here is how it works: * First, *you must delete all locked notes* and empty the Trash. Check the *Notes > Locked* section or type `@locked` into the Search Bar * On iOS go to *Settings > Advanced* and tap *Delete Note Password*. On macOS go to *Help > Advanced* Bear should no longer have a Note Password available for locking notes. The next time you try to lock one, you’ll be prompted to set a Note Password just like the first time. [How to encrypt & lock notes with Bear](https://bear.app/faq/How%20to%20encrypt%20&%20lock%20notes%20with%20Bear/) # How to disable smart quotes and dashes Most devices and apps these days use “ *smart quotes* ” (or *curly quotes* ) and “ *smart dashes* ”. They are generally considered easier for reading purposes, and they give room for "straight quotes" to fill their own purpose. But for developers writing code, curly quotes can cause a few problems. Many devs who use Bear have asked for a way to banish the curlies. We have a couple options for doing this, though they vary between devices. ## Disable smart quotes on Mac The first option for users of Bear for Mac is to disable smart quotes within Bear. While editing a note, simply go to *Edit > Substitutions* and click to disable Smart Quotes. Mac users can also disable smart quotes system-wide by visiting *Apple Menu > System Preferences > Keyboard > Text*, then unchecking “Use smart quotes and dashes.” ## Disable smart quotes on iPad and iPhone Currently, the only way to disable smart quotes on iPad and iPhone is the system-wide option. Go to *Settings > General > Keyboard*, and toggle off “Smart Punctuation.” [How to disable smart quotes and dashes](https://bear.app/faq/How%20to%20disable%20smart%20quotes%20and%20dashes/) # How to blog with Bear on iPad & iPhone [image:DF2DF3E4-4E54-4ED3-9993-35C947EC12B9-52345-000064387C7C33E6/Bear-Wordpress-banner.png] On iPad and iPhone, you can publish Bear notes as blog posts through the official WordPress app. You’ll need the latest versions of: *Note*: Make sure you’re logged into the WordPress app with your WordPress.com account. If you self-host with WordPress.org, make sure your Jetpack account is hooked up to WordPress.com. [image:6C4592FC-3CFE-49A1-9C2D-CC2E44871DF2-52345-000064387C5DABD5/Bear-to-WordPress-example.gif] Once you’re ready with these apps and the latest WordPress installation, publishing a Bear note as a blog post through WordPress is quite simple: * In Bear for iPad or iPhone, select the note you want to publish * Tap the share sheet in the top right corner * Select the WordPress app in the top row (learn about enabling app extensions on [iPhone](https://support.apple.com/guide/iphone/install-app-extensions-iph1750a2241/ios) and [iPad](https://support.apple.com/guide/ipad/install-app-extensions-ipad9a3bf1f5/ios) at Apple Support) * The WordPress share sheet will appear with your blog post formatted with a title and body content * Once you’re done making edits, tap Next at the top * On the next screen, pick your post’s categories, tags, and (optional) destination blog if you have more than one * Once your post is ready, tap Publish at the top to share your Bear note as a blog post with the world ## Things to know * *H1 is your title* - If your Bear note has an H1 (#) at the top, WordPress will use that for the post title * *Photos are supported* - Photos in your Bear note will be passed along to WordPress for processing. Note: WordPress themes process photos differently, and Bear has no control over this * *Other file attachments are not supported* - At least for now * *Save as Draft* - Currently, the WordPress app offers a second, separate app extension in the bottom row for saving your posts as drafts. It’s called *Save as Draft*, and it does exactly that. This allows you to create one or more posts, but save them for later management and publishing * *Use WordPress to manage your posts* - Bear passes your notes over to the WordPress app, then WordPress works some magic to turn them into blog posts. Once you publish or save as a draft, use the WordPress app or website to further edit or manage the post from there * *Under the hood* - Bear passes your notes to WordPress as TextBundle files, [an open format](http://textbundle.org/) for exchanging Markdown files with attachments (in our case, photos). This means that, technically, this integration is not exclusive. [We also released this code as open source](https://github.com/shinyfrog/TextBundle) so other apps can support TextBundle files this way [How to blog with Bear on iPad & iPhone](https://bear.app/faq/How%20to%20blog%20with%20Bear%20on%20iPad%20&%20iPhone/) # Hide the Sidebar and Note List If you want to focus on editing your notes, you can hide the *Sidebar* and/or the *Note List*. ## Mac Selecting `View` → `Show Editor Only` or `Show Notes and Editor` . To return to the initial state click on `Show Tags, Notes and Editor`. It is also possible to change the visualization mode by clicking on the icon in the bottom right of the Bear window. [image:7D86FE05-19D0-4E4F-BF42-418A2DE3B1C7-52345-00006437C1095EF9/1.png] ## iPad When using Bear in landscape on iPad, you can hide the Sidebar while browsing notes by swiping to the left anywhere on Bear. But once you tap a note to start editing, both the Sidebar and Note List will hide to give you room to work. In portrait on iPad, Bear’s sidebar will automatically hide as soon as you tap a note in the Note List to view it. If you tap the note to start editing, the Note List will hide as well. [Hide the Sidebar and Note List](https://bear.app/faq/Hide%20the%20Sidebar%20and%20Note%20List%20on%20Mac%20and%20iPad/) # Hide notes with the Archive If there are notes that you don’t want to see anymore, but you don’t quite want to delete, you can archive them in Bear. The Archive appears in the Sidebar once you archive at least one note. Notes in the Archive do not appear in search results elsewhere, but you can select the Archive section and search its notes. If you have [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/), archived notes will sync between your devices. ## How to archive a note Archiving a note works slightly differently depending on the device you’re using. ### iPhone and iPad * Swipe left on a note in the Notes List * Tap More (...) * Tap Archive ### Mac * Right-click a note in the Notes List * Click Archive [Hide notes with the Archive](https://bear.app/faq/Hide%20notes%20with%20the%20Archive/) # Drag & Drop on iPad and iPhone Bear for iPad and iPhone support the [drag and drop features in iOS](https://support.apple.com/en-us/HT207582), including a custom feature we created called the *Drop Bar*. These features make it easy to do things like share multiple notes to other apps or drop them onto a tag, as well as merge, trash, copy, and more. Check out a video demo of these features and further instructions below. ## How to use the Drop Bar, including on iPhone When you drag one or more notes in the Note List, the *Drop Bar* will appear at the bottom. Drag notes to it, and a sheet will appear with a variety of actions you can take on all notes. Here is how to use it: * Tap and hold on a note in the Note List until it ‘lifts up’ * Drag it up or down a little to display the Drop Bar at the bottom of the Note List * With a different finger, tap another note to add it to the stack. You can also scroll the Note List with this second finger * Drag your note(s) to the Drop Bar to trigger the Actions sheet * Tap an action to take on all notes in the stack, like the Bear rock star you are You can merge multiple notes together into one note, trash them, manage tags, pin or unpin, share them to other apps, copy their links for pasting into other apps, and more. ## Things to know about the Drop Bar and drag and drop * To drag an encrypted note, you must first unlock it * To cancel the Drop Bar action list, tap anywhere else on screen * To cancel a Bear note drag and drop action, release the notes over the Note List, /not/ the Drop Bar. The notes will move back to their place ## Drop notes in other apps as plain text When using [iOS multitasking features](https://support.apple.com/en-us/HT207582) to display two apps side-by-side, you can drag notes from Bear’s Note List into other apps. Apps will determine how they handle notes dragged from Bear. For example: in our testing, many writing apps accept dragged notes as plain text and insert it into the current document. However, if you drag Bear notes into Apple’s new Files app, they become plain text files. When editing a note in Bear for iPad, you can drag notes from the Note List into the current note. They will become tappable links, which you can tap to quickly open those other notes. Linked notes like this will use the first line of the note as the title for the link. [Drag & Drop on iPad and iPhone](https://bear.app/faq/Drag%20&%20Drop%20on%20iPad%20and%20iPhone/) # Disable spell check and corrections Disable spelling and grammar corrections by selecting `Edit` → `Spelling and Grammar` from the menu bar. ## iOS Your only option is to disable spell checking system-wide in Settings app, under `General` → `Keyboard` → `Check Spelling`. [Disable spell check and corrections](https://bear.app/faq/Disable%20spell%20check%20and%20corrections/) # Bear for Apple Watch overview With Bear for Apple Watch, you can create new notes with just your voice, append text to existing notes, and check off tasks in notes. ## Requirements * An iPhone running iOS 11 or later * An Apple Watch running watchOS 4 or later ## Record new notes with your voice Bear for Apple Watch has a New Note button at the top. Tap it, and you can dictate a new note with your voice. Bear will transcribe your words into text and save it as a new note. New notes created on Apple Watch will appear as pinned in the Note List on your iPhone. ## One-tap recording with the Watch face complication You can customize your Apple Watch face to add *complications*, small widgets of information or buttons that launch apps and actions. Tap Bear’s complication to immediately launch the app into recording a new note. It’s a quick, convenient way to save an idea for later. ## View and edit recent notes Bear for Apple Watch syncs the 15 most recent notes from your iPhone. This includes any pinned notes at the top of your Note List, but as of Bear 1.7 it /does not/ include encrypted notes. ## Append new text to notes You can quickly append text to notes in Bear for Apple Watch: * Swipe left on any note to reveal an *Append* button * A recording dialogue with appear. Speak your new text, then tap Done * Bear will transcribe your words and add them to the bottom of the note ## Mark tasks in notes as complete Bear for Apple Watch can view tasks you’ve added to recent notes from Bear for iPhone, iPad, or Mac. If you complete a task, you can tap it in the Watch app, and the update will sync back to the Bear note on your iPhone. ## Change Themes If you change Bear’s theme on your iPhone, Bear for Apple Watch will match its icon and colors. This works for the free themes, as well as all current and future themes included in [Bear Pro](https://blog.bear.app/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose). ## In-app preferences Bear for Apple Watch comes with some in-app options. To access to the preference panel, scroll to the bottom of the Note List using the digital crown, then scroll a little farther until you feel a vibration. So far, you can change these options: * Choose if the complication opens Bear to your notes or opens directly to dictating a new note * Add a #watch tag to each note created on the Watch [Bear for Apple Watch overview](https://bear.app/faq/Bear%20for%20Apple%20Watch%20overview/) # Backup and Restore Your Notes in Bear Bear can backup all your notes in single `.bearbk` file and quickly restore later. If you have any [encrypted notes with Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/), they will also be saved in the backup in their encrypted form. To open or read these notes in Bear, you’ll need to know the password used to lock them. ## Mac Bear’s backup and restore features are under `File` -> `Backup Notes…` and `Restore Backup`. ## iOS Tap the Settings icon at the bottom of the Sidebar, then the `Import & Export` Settings tab. ## IMPORTANT! When you restore a backup, all notes currently in Bear, *including trashed notes*, will be *permanently deleted*. *The imported notes will take their place*. If you want to access your notes inside a backup file without restoring it, change the backup file’s extension from `.bearbk` to `.zip`, then uncompress it. Inside the resulting folder, you will find a `.textbundle` file for each of your backed up notes. This can be easily done on a Mac with the Finder. On iOS, you might need a file management app like Documents from Readdle. [Backup and Restore Your Notes in Bear](https://bear.app/faq/Backup%20&%20Restore/) # About the Sidebar in Bear The Sidebar in Bear keeps all your notes organized into two main sections: Notes and Tags. The Notes section contains a few built-in subdivisions with basic organization. The Tags section contains all the tags you’ve applied to notes in Bear. Here’s how they work. [image:68437EBC-A181-40CD-AC03-308D710BCFE6-52345-00006434032AD409/1.jpg] ## Notes Section The Notes section contains our built-in subdivisions for your notes. * *Untagged* - All notes that you haven’t tagged yet. * *Todo* - Notes that contain todos that still need to be completed. * *Today* - Notes you’ve created today. * *Locked* - Notes encrypted with [Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) * *Archive* - Any notes you’ve archived ( *Note*: This section doesn’t appear until you archive at least one note). * *Trash* - Notes you’ve deleted. This is one last chance to retrieve them before they are deleted /forever/. As you create notes in Bear, you can add tags to them simply by prefixing words with a pound sign, like *#travel* or *#work*. You can also create multi-word tags by wrapping words with two pound signs, like *#Star Wars#* or *#blog post ideas#* or *#shopping lists#*. The Tags section of the Sidebar in Bear collects tags as you create them. By default, tags are sorted alphabetically (you can change this behavior in *Settings > General > Tags List Sorting* ). [About the Sidebar in Bear](https://bear.app/faq/About%20the%20Sidebar%20in%20Bear/) # How to blog with Bear on iPad & iPhone [image:CCFF0E10-5024-4F20-AC67-1D300DC372B5-52345-000064191321BD46/Bear-Wordpress-banner.png] On iPad and iPhone, you can publish Bear notes as blog posts through the official WordPress app. You’ll need the latest versions of: *Note*: Make sure you’re logged into the WordPress app with your WordPress.com account. If you self-host with WordPress.org, make sure your Jetpack account is hooked up to WordPress.com. [image:58BB1F28-66EE-4272-91E8-679310A91006-52345-0000641912E7AC25/Bear-to-WordPress-example.gif] Once you’re ready with these apps and the latest WordPress installation, publishing a Bear note as a blog post through WordPress is quite simple: * In Bear for iPad or iPhone, select the note you want to publish * Tap the share sheet in the top right corner * Select the WordPress app in the top row (learn about enabling app extensions on [iPhone](https://support.apple.com/guide/iphone/install-app-extensions-iph1750a2241/ios) and [iPad](https://support.apple.com/guide/ipad/install-app-extensions-ipad9a3bf1f5/ios) at Apple Support) * The WordPress share sheet will appear with your blog post formatted with a title and body content * Once you’re done making edits, tap Next at the top * On the next screen, pick your post’s categories, tags, and (optional) destination blog if you have more than one * Once your post is ready, tap Publish at the top to share your Bear note as a blog post with the world ## Things to know * *H1 is your title* - If your Bear note has an H1 (#) at the top, WordPress will use that for the post title * *Photos are supported* - Photos in your Bear note will be passed along to WordPress for processing. Note: WordPress themes process photos differently, and Bear has no control over this * *Other file attachments are not supported* - At least for now * *Save as Draft* - Currently, the WordPress app offers a second, separate app extension in the bottom row for saving your posts as drafts. It’s called *Save as Draft*, and it does exactly that. This allows you to create one or more posts, but save them for later management and publishing * *Use WordPress to manage your posts* - Bear passes your notes over to the WordPress app, then WordPress works some magic to turn them into blog posts. Once you publish or save as a draft, use the WordPress app or website to further edit or manage the post from there * *Under the hood* - Bear passes your notes to WordPress as TextBundle files, [an open format](http://textbundle.org/) for exchanging Markdown files with attachments (in our case, photos). This means that, technically, this integration is not exclusive. [We also released this code as open source](https://github.com/shinyfrog/TextBundle) so other apps can support TextBundle files this way [How to blog with Bear on iPad & iPhone](https://bear.app/faq/How%20to%20blog%20with%20Bear%20on%20iPad%20&%20iPhone/) # All Bear Docs * [About the Sidebar in Bear](https://bear.app/faq/About%20the%20Sidebar%20in%20Bear/) * [Advanced search options in Bear](https://bear.app/faq/Advanced%20search%20options%20in%20Bear/) * [Backup and Restore Your Notes in Bear](https://bear.app/faq/Backup%20&%20Restore/) * [Bear for Apple Watch overview](https://bear.app/faq/Bear%20for%20Apple%20Watch%20overview/) * [Disable spell check and corrections](https://bear.app/faq/Disable%20spell%20check%20and%20corrections/) * [Drag & Drop on iPad and iPhone](https://bear.app/faq/Drag%20&%20Drop%20on%20iPad%20and%20iPhone/) * [Hide notes with the Archive](https://bear.app/faq/Hide%20notes%20with%20the%20Archive/) * [Hide the Sidebar and Note List](https://bear.app/faq/Hide%20the%20Sidebar%20and%20Note%20List%20on%20Mac%20and%20iPad/) * [How to blog with Bear on iPad & iPhone](https://bear.app/faq/How%20to%20blog%20with%20Bear%20on%20iPad%20&%20iPhone/) * [How to disable smart quotes and dashes](https://bear.app/faq/How%20to%20disable%20smart%20quotes%20and%20dashes/) * [How to encrypt & lock notes with Bear](https://bear.app/faq/How%20to%20encrypt%20&%20lock%20notes%20with%20Bear/) * [How to fold tasks and show thumbnails](https://bear.app/faq/How%20to%20fold%20tasks,%20show%20thumbnails%20in%20Bear/) * [How to lock Bear for privacy](https://bear.app/faq/How%20to%20lock%20Bear%20for%20privacy/) * [How to use Bear with Siri on iOS](https://bear.app/faq/How%20to%20use%20Bear%20with%20Siri%20on%20iOS/) * [How to use Siri Shortcuts with Bear](https://bear.app/faq/How%20to%20use%20Siri%20Shortcuts%20with%20Bear/) * [How to use widgets with Bear](https://bear.app/faq/How%20to%20use%20widgets%20with%20Bear/) * [Open Bear notes in separate windows](https://bear.app/faq/Open%20Bear%20notes%20in%20separate%20windows/) * [How to Print your Notes](https://bear.app/faq/Print%20notes/) * [Quickly add emoji to notes](https://bear.app/faq/Quickly%20add%20emoji%20to%20notes/) * [Quickly navigate notes on iOS](https://bear.app/faq/Quickly%20navigate%20notes%20on%20iOS/) * [Editor Typography Options](https://bear.app/faq/Typography%20options/) * [Bear for web, Android, & Windows](https://bear.app/faq/What%20about%20Bear%20for%20web,%20Android,%20&%20Windows/) * [Where are Bear's notes located](https://bear.app/faq/Where%20are%20Bear's%20notes%20located/) * [X-callback-url Scheme documentation](https://bear.app/faq/X-callback-url%20Scheme%20documentation/) * [Bear iMessage stickers](https://bear.app/faq/iMessage%20stickers/) * ACCESSIBILITY * [Tools for Dyslexic People](https://bear.app/faq/Accessibility/Tools%20for%20Dyslexic%20People/) * [MacOS and iOS VoiceOver support](https://bear.app/faq/Accessibility/VoiceOver%20support/) * ATTACHMENTS * [Add Sketches to your notes](https://bear.app/faq/Attachments/Add%20Sketches%20to%20your%20notes/) * [How to insert attachments in Bear notes](https://bear.app/faq/Attachments/Insert%20Attachments/) * AUTOCOMPLETE * [How to use Tag and Note Autocomplete](https://bear.app/faq/Autocomplete/How%20to%20use%20Tag%20Autocomplete%20and%20Note%20Autocomplete/) * CODE SNIPPETS * [Syntax Highlighting for your Code](https://bear.app/faq/Code%20Snippets/Show%20syntax%20highlighting%20for%20your%20code%20snippets%20in%20notes/) * EXTENSIONS * [MacOS Browser Extensions](https://bear.app/faq/Extensions/Browser%20extensions/) * [How to Clip Web Pages](https://bear.app/faq/Extensions/Clip%20web%20pages/) * [iOS App Sharing Extension](https://bear.app/faq/Extensions/iOS%20App%20Extension/) * EXTRA * [How Does Encryption Work Under the Hood](https://bear.app/faq/Extra/How%20does%20encryption%20in%20Bear%20work%20under%20the%20hood/) * [Libraries used in Bear](https://bear.app/faq/Extra/Libraries%20used%20in%20Bear/) * [Preview your notes in Marked 2](https://bear.app/faq/Extra/Preview%20your%20notes%20in%20Marked%202/) * [Transfer notes with AirDrop](https://bear.app/faq/Extra/Transfer%20notes%20with%20AirDrop/) * IMPORT & EXPORT * [Copy text portions as HTML, RTF or TXT](https://bear.app/faq/Import%20&%20export/Copy%20portions%20of%20notes%20as%20HTML,%20RTF,%20TXT%20or%20Markdown/) * [Export to Google Docs](https://bear.app/faq/Import%20&%20export/Export%20to%20Google%20Docs/) * [Export Notes in Different Formats](https://bear.app/faq/Import%20&%20export/Export%20your%20notes/) * [Export your Notes from a Tag](https://bear.app/faq/Import%20&%20export/Export%20your%20tags/) * [Import notes into Bear](https://bear.app/faq/Import%20&%20export/Import%20your%20notes/) * [Migrate from Apple Notes](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Apple%20Notes/) * [Migrate from Day One App](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Day%20One/) * [Migrate from Drafts App](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Drafts/) * [Migrate from Evernote](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Evernote/) * [Migrate from SimpleNote](https://bear.app/faq/Import%20&%20export/Migrate%20from%20SimpleNote/) * [Migrate from Ulysses to Bear](https://bear.app/faq/Import%20&%20export/Migrate%20from%20Ulysses%20to%20Bear/) * MARKUP : MARKDOWN * [How to convert Bear notes to Markdown](https://bear.app/faq/Markup%20:%20Markdown/How%20to%20convert%20your%20Bear%20notes%20to%20Markdown/) * [Markdown Compatibility Mode](https://bear.app/faq/Markup%20:%20Markdown/Markdown%20compatibility%20mode/) * [Polar Bear Markup Language](https://bear.app/faq/Markup%20:%20Markdown/Polar%20Bear%20markup%20language/) * SHORTCUTS AND MORE * [Customise Mac shortcuts](https://bear.app/faq/Shortcuts%20and%20more/Customise%20Mac%20shortcuts/) * [Indent and outdent on iOS](https://bear.app/faq/Shortcuts%20and%20more/Indent%20and%20outdent%20on%20iOS/) * [macOS Keyboard Shortcuts](https://bear.app/faq/Shortcuts%20and%20more/Mac%20shortcuts/) * [MacOS Touch Bar Support](https://bear.app/faq/Shortcuts%20and%20more/Touch%20Bar/) * [iOS External keyboard support](https://bear.app/faq/Shortcuts%20and%20more/iOS%20External%20keyboard%20support/) * [iOS Keyboard Shortcuts](https://bear.app/faq/Shortcuts%20and%20more/iOS%20Shortcuts/) * SYNC * [Bear is GDPR compliant](https://bear.app/faq/Sync/Bear%20is%20GDPR%20compliant/) * [How Bear Pro handles conflicted notes](https://bear.app/faq/Sync/How%20Bear%20Pro%20handles%20conflicted%20notes/) * [More information about Bear Pro](https://bear.app/faq/Sync/More%20information%20about%20Bear%20Pro/) * [Subscribe to Bear Pro](https://bear.app/faq/Sync/Subscribe%20to%20Bear%20Pro/) * [Bear Pro Sync Troubleshooting](https://bear.app/faq/Sync/Sync%20Troubleshooting/) * [Information about Syncing & Privacy](https://bear.app/faq/Sync/Syncing%20&%20privacy/) * TAGS & LINKING * [How TagCons work in Bear](https://bear.app/faq/Tags%20&%20Linking/How%20TagCons%20work/) * [How to link notes together](https://bear.app/faq/Tags%20&%20Linking/How%20to%20link%20notes%20together/) * [How to Make Nested Tags](https://bear.app/faq/Tags%20&%20Linking/Nested%20Tags/) * [Rename and Delete Tags](https://bear.app/faq/Tags%20&%20Linking/Rename%20and%20Delete%20Tags/) * [TagCons Keywords List](https://bear.app/faq/Tags%20&%20Linking/TagCons%20Keywords/) * THEMES * [About free and Pro themes in Bear](https://bear.app/faq/Themes/About%20free%20and%20Pro%20themes%20in%20Bear/) # X-callback-url Scheme documentation Bear implements the [x-callback-url](http://x-callback-url.com/) protocol, which allow iOS and Mac developers to expose and document API methods they make available to other apps and return useful data. Bear URL Scheme actions look like this: `bear://x-callback-url/[action]?[action parameters]&[x-callback parameters]` with x-success and x-error as available x-callback parameters. ## Actions * [/open-note](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#open-note) * [/create](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#create) * [/add-text](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#add-text) * [/add-file](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#add-file) * [/tags](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#tags) * [/open-tag](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#open-tag) * [/rename-tag](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#rename-tag) * [/delete-tag](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#delete-tag) * [/trash](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#trash) * [/archive](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#archive) * [/untagged](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#untagged) * [/todo](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#todo) * [/today](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#today) * [/locked](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#locked) * [/search](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#search) * [/grab-url](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#grab-url) * [/change-theme](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#change-theme) * [/change-font](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#change-font) Open a note identified by its title or id and return its content. *parameters* * *id* /optional/ note unique identifier. * *title* /optional/ note title. * *header* /optional/ an header inside the note. * *exclude_trashed* /optional/ if `yes` exclude trashed notes. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *float* /optional/ if `yes` makes the external window float on top (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *open_note* /optional/ if `no` do not display the new note in Bear’s main or external window. * *selected* /optional/ if `yes` return the note currently selected in Bear ( [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation) required) * *pin* /optional/ if `yes` pin the note to the top of the list. * *edit* /optional/ if `yes` place the cursor inside the note editor. *x-success* * *note* note text. * *identifier* note unique identifier. * *title* note title. * *tags* note tags array * *is_trashed* `yes` if the note is trashed. * *modificationDate* note modification date in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601). * *creationDate* note creation date in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601). *example* `bear://x-callback-url/open-note?id=7E4B681B` `bear://x-callback-url/open-note?id=7E4B681B&header=Secondary%20Ttitle` Create and try /open-note actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/open_note/) ### /create Create a new note and return its unique identifier. Empty notes are not allowed. *parameters* * *title* /optional/ note title. * *text* /optional/ note body. * *clipboard* /optional/ if `yes` use the text currently available in the clipboard * *tags* /optional/ a comma separated list of tags. * *file* /optional/ base64 representation of a file. * *filename* /optional/ file name with extension. Both /file/ and /filename/ are required to successfully add a file. * *open_note* /optional/ if `no` do not display the new note in Bear's main or external window. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *float* /optional/ if `yes` make the external window float on top (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *pin* /optional/ if `yes` pin the note to the top of the list. * *edit* /optional/ if `yes` place the cursor inside the note editor. * *timestamp* /optional/ if `yes` prepend the current date and time to the text * *type* /optional/ if `html` the provided /text/ parameter is converted from html to markdown * *url* /optional/ if /type/ is `html` this parameter is used to resolve relative image links *x-success* * *identifier* note unique identifier. * *title* note title. *example* `bear://x-callback-url/create?title=My%20Note%20Title&text=First%20line&tags=home,home%2Fgroceries` Create and try /create actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/create/) *notes* The base64 *file* parameter have to be [encoded](https://www.w3schools.com/tags/ref_urlencode.asp) when passed as an url parameter. ### /add-text append or prepend text to a note identified by its title or id. Encrypted notes can't be accessed with this call. *parameters* * *id* /optional/ note unique identifier. * *title* /optional/ title of the note. * *selected* /optional/ if `yes` use the note currently selected in Bear ( [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation) required) * *text* /optional/ text to add. * *clipboard* /optional/ if `yes` use the text currently available in the clipboard * *header* /optional/ if specified add the text to the corresponding header inside the note. * *mode* /optional/ the allowed values are `prepend`, `append`, `replace_all` and `replace` (keep the note's title untouched). * *new_line* /optional/ if `yes` and `mode` is `append` force the text to appear on a new line inside the note * *tags* /optional/ a comma separated list of tags. * *exclude_trashed* /optional/ if `yes` exclude trashed notes. * *open_note* /optional/ if `no` do not display the new note in Bear's main or external window. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *edit* /optional/ if `yes` place the cursor inside the note editor. * *timestamp* /optional/ if `yes` prepend the current date and time to the text *x-success* * *note* note text. * *title* note title. *example* `bear://x-callback-url/add-text?text=new%20line&id=4EDAF0D1&mode=append` Create and try /add-text actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/add_text/) ### /add-file append or prepend a file to a note identified by its title or id. This call can't be performed if the app is a locked state. Encrypted notes can't be accessed with this call. *parameters* * *id* /optional/ note unique identifier. * *title* /optional/ note title. * *selected* /optional/ if `yes` use the note currently selected in Bear ( [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation) required) * *file* /required/ base64 representation of a file. * *header* /optional/ if specified add the file to the corresponding header inside the note. * *filename* /required/ file name with extension. Both /file/ and /filename/ are required to successfully add a file. * *mode* /optional/ the allowed values are `prepend`, `append`, `replace_all` and `replace` (keep the note's title untouched). * *open_note* /optional/ if `no` do not display the new note in Bear's main or external window. * *new_window* /optional/ if `yes` open the note in an external window (MacOS only). * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *edit* /optional/ if `yes` place the cursor inside the note editor. /x-success/ *example* `bear://x-callback-url/add-file?filename=test.gif&id=4EDAF0D1-2EFF-4190-BC1D-67D9BAE49BA9-28433-000187BAA3D182EF&mode=append&file=R0lGODlhAQABAIAAAP%2F%2F%2F%2F%2F%2F%2FyH5BAEKAAEALAAAAAABAAEAAAICTAEAOw%3D%3D` Create and try /add-file actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/add_file/) *notes* The base64 *file* parameter have to be [encoded](https://www.w3schools.com/tags/ref_urlencode.asp) when passed as an url parameter. Return all the tags currently displayed in Bear's sidebar. *parameters* * *token* /required/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *tags* json array representing tags. `[{ name }, ...]` *example* `bear://x-callback-url/tags?token=123456-123456-123456` Create and try /tags actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/tags/) ### /open-tag Show all the notes which have a selected tag in bear. *parameters* * *name* /required/ tag name or a list of tags divided by comma * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the tag's notes. `[{ title, identifier, modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the notes array. If more than one tag is passed with the `name` parameter this action returns all the notes matching one of the tags passed. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/open-tag?name=work` `bear://x-callback-url/open-tag?name=todo%2Fwork` Create and try /open-tag actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/open_tag/) ### /rename-tag Rename an existing tag. This call can't be performed if the app is a locked state. If the tag contains any locked note this call will not be performed. *parameters* * *name* /required/ tag name. * *new_name* /required/ new tag name. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/rename-tag?name=todo&new_name=done` Create and try /rename-tag actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/rename_tag/) ### /delete-tag Delete an existing tag. This call can't be performed if the app is a locked state. If the tag contains any locked note this call will not be performed. *parameters* * *name* /required/ tag name. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/delete-tag?name=todo` Create and try /delete-tag actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/delete_tag/) ### /trash Move a note to bear trash and select the Trash sidebar item. This call can't be performed if the app is a locked state. Encrypted notes can't be used with this call. *parameters* * *id* /optional/ note unique identifier. * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/trash?id=7E4B681B` `bear://x-callback-url/trash?search=old` Create and try /trash actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/trash/) *notes* The *search* term is ignored if an *id* is provided. ### /archive Move a note to bear archive and select the Archive sidebar item. This call can't be performed if the app is a locked state. Encrypted notes can't be accessed with this call. *parameters* * *id* /optional/ note unique identifier. * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/archive?id=7E4B681B` `bear://x-callback-url/archive?search=projects` Create and try /archive actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/archive/) *notes* The *search* term is ignored if an *id* is provided. ### /untagged Select the Untagged sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the untagged notes. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the notes array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/untagged?search=home` Create and try /untagged actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/untagged/) ### /todo Select the Todo sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the todo notes. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the note array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/todo?search=home` Create and try /todo actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/todo/) ### /today Select the Today sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the today notes. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` f Encrypted notes will be excluded from the note array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/today?search=family` Create and try /today actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/today/) ### /locked Select the Locked sidebar item. *parameters* * *search* /optional/ string to search. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *example* `bear://x-callback-url/locked?search=data` Create and try /locked actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/locked/) ### /search Show search results in Bear for all notes or for a specific tag. *parameters* * *term* /optional/ string to search. * *tag* /optional/ tag to search into. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). * *token* /optional/ application [token](https://bear.app/faq/X-callback-url%20Scheme%20documentation/#token-generation). /x-success/ * *notes* json array representing the note results of the search. `[{ title, identifier, [tag, ...], modificationDate, creationDate, pin }, ...]` Encrypted notes will be excluded from the note array. If /token/ is not provided nothing is returned. *example* `bear://x-callback-url/search?term=nemo&tag=movies` Create and try /search actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/search/) ### /grab-url Create a new note with the content of a web page. *parameters* * *url* /required/ url to grab. * *tags* /optional/ a comma separated list of tags. If tags are specified in the Bear's web content prefences this parameter is ignored. * *pin* /optional/ if `yes` pin the note to the top of the list. * *wait* /optional/ if `no` x-success is immediately called without /identifier/ and /title/. *x-success* * *identifier* note unique identifier. * *title* note title. *available values* `yes` `no` *example* `bear://x-callback-url/grab-url?url=https://bear.app` Create and try /grab-url actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/grab_url/) ### /change-theme Change the selected Bear theme. Some themes may require a Bear Pro subscription. *parameters* * *theme* /required/. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *available values* `Red Graphite` `Charcoal` `Solarized Light` `Solarized Dark` `Panic Mode` `Dracula` `Gotham` `Toothpaste` `Cobalt` `Duotone Light` `Duotone Snow` `Dieci` `Ayu` `Ayu Mirage` `Dark Graphite` `Duotone Heat` `Gandalf` `Olive Dunk` `D.Boing` `Nord` `Lighthaus` *example* `bear://x-callback-url/change-theme?theme=Solarized%20Dark` Create and try /change-theme actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/change_theme/) ### /change-font Change the selected Bear Font. *parameters* * *font* /required/. * *show_window* /optional/ if `no` the call don't force the opening of bear main window (MacOS only). *available values* `Avenir Next` `System` `Helvetica Neue` `Menlo` `Georgia` `Courier` `Open Dyslexic` *example* `bear://x-callback-url/change-font?font=Helvetica%20Neue` Create and try /change-font actions in seconds with our [URL builder online](https://bear.app/xurlbuilder/change_font/) ## Token Generation In order to extend their functionalties, some of the API calls allow an app generated token to be passed along with the other parameters. Please mind a Token generated on iOS is not valid for MacOS and vice-versa. On MacOS, select `Help` → `API Token` → `Copy Token` and will be available in your pasteboard. On iOS go to the preferences → `General`, locate the `API Token` section and tap the cell below to generate the token or copy it in your pasteboard. ## Support To discuss URL scheme improvements or reporting bugs please use our [Support Form](https://bear.app/contact/) or [Bear's subreddit](https://reddit.com/r/bearapp). [X-callback-url Scheme documentation](https://bear.app/faq/X-callback-url%20Scheme%20documentation/) # iOS Keyboard Shortcuts * `⌥⌘1` , `⌥⌘2`, `⌥⌘3` - Headings * `⌥⌘S` - Line separator * `⌘B` - Bold * `⌘I` - Italic * `⌘U` - Underline * `⇧⌘E` - Strikethrough * `⌘K` - Link * `⌘L` - Unordered list * `⇧⌘L` - Ordered list * `⇧⌘U` - Quote * `⌘T` - Todo * `⌥⌘C` - Inline code * `^⌘C` - Code block * `⇧⌘M` - Marker/Highlighter * `space` - Open/close nested tags * `⌘N` - Create a new note * `↑ and ↓ keys` - Move the selection (note list, tag list) * `← and → keys` - Move the selection between the sidebar, the note list and the editor * `⌘F` - Move the focus to the search field (note list) * `↩︎` - Start editing at the end of the note (editor) * `⌘⌫` - Delete the currently selected note (note list) * `⌥⌘←` - Navigate back in visualized notes history * `⌥⌘→` - Navigate forward in visualized notes history * `^1` - Select /Notes/ in the sidebar * `^2` - Select /Untagged/ in the sidebar * `^3` - Select /ToDo/ in the sidebar * `^4` - Select /Today/ in the sidebar * `^5` - Select /Archive/ in the sidebar * `^6` - Select /Trash/ in the sidebar * `^7` - Select /Locked/ in the sidebar [iOS Keyboard Shortcuts](https://bear.app/faq/Shortcuts%20and%20more/iOS%20Shortcuts/) # macOS Keyboard Shortcuts * `⌥⌘1` , `⌥⌘2`, … `⌥⌘6` - Headings * `⌥⌘S` - Line separator * `⌘B` - Bold * `⌘I` - Italic * `⌘U` - Underline * `⇧⌘E` - Strikethrough * `⌘K` - Link * `⌘L` - Unordered list * `⇧⌘L` - Ordered list * `⇧⌘U` - Quote * `⌘T` - Todo * `⌥⌘C` - Inline code * `^⌘C` - Code block * `⇧⌘M` - Marker/Highlighter * `⇧⌘V` - Insert file * `⌘N` - Create a new note * `⌥⌘N` - Create a new note in a new window * `↑ and ↓ keys` - Move the selection in the note and tags lists * `← and → keys` - Move the selection between the sidebar, the note list and the editor; open/close nested tags * `↩︎` - Edit the selected note * `⌥⌘F` - Search in the current note list * `⌘⌫` - Delete selected note * `⇧⌘R` - Restore selected note * `⇧⌘P` - Pin/unpin selected note * `⌘A` - Select all the notes in the list * `⇧⌘⌫` - Empty Trash * `⌘1` - Select *Notes* in the sidebar * `⌘2` - Select *Untagged* in the sidebar * `⌘3` - Select *ToDo* in the sidebar * `⌘4` - Select *Today* in the sidebar * `⌘5` - Select *Archive* in the sidebar * `⌘6` - Select *Trash* in the sidebar * `⌘7` - Select *Locked* in the sidebar * `⌥⌘←` - Navigate back in visualized notes history * `⌥⌘→` - Navigate forward in visualized notes history * `^1` - Show editor only * `^2` - Show note list and editor * `^3` - Show sidebar, note list and editor * `⌘,` - Show preferences * `^⌘F` - Enter fullscreen * `⌘\` - Open main window [macOS Keyboard Shortcuts](https://bear.app/faq/Shortcuts%20and%20more/Mac%20shortcuts/) # Create keyboard shortcuts for apps on Mac Select version: macOS Monterey 12 macOS Big Sur 11.0 macOS Catalina 10.15 macOS Mojave 10.14 macOS High Sierra Modifying this control will update this page automatically [image:80EC525E-B187-46B0-886C-6B22A63F70C0-52345-000062DF99D1C958/2737a908ffade94cb1d79172f8a4c5a0.png] You can create your own keyboard shortcuts for menu commands in any macOS app, including the Finder. This might be useful if a global shortcut, which works the same with most apps, conflicts with a specific app shortcut. In this case, you could create a new key combination. You can create keyboard shortcuts only for existing menu commands. You can’t create keyboard shortcuts for general purpose tasks, such as opening an app. If you create a keyboard shortcut that already exists for another command or another app, your new shortcut won’t work—you need to change your new shortcut or the other shortcut. To change a shortcut, select it, click the key combination, then press a new key combination. To remove a shortcut that you created, select the shortcut, then click the Delete button [image:DF68259A-50A4-4647-AAF0-E79BB0850E18-52345-000062DF99B05413/e9a8ab65e535ed110ae953650c55ee0c.png] . Helpful? Thanks for your feedback. [Create keyboard shortcuts for apps on Mac](https://support.apple.com/guide/mac-help/create-keyboard-shortcuts-for-apps-mchlp2271/mac) # MacOS Browser Extensions On the Mac, Bear has a free browser extension for Safari, Chrome, and Firefox. It allows you to save portions or entire web pages as Bear notes with a single click. [Bear Pro subscribers](https://blog.bear-writer.com/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose-351cd60c0cc1) can sync all notes between their devices. The Bear browser extension requires Bear for Mac to be installed. * For **Safari**: Bear now automatically installs its Safari extension. Enable it by opening Safari, then going to **Preferences > Extensions**. Find Bear in the extensions list and enable it * For **Chrome**: Visit the [Chrome Web Store](https://chrome.google.com/webstore/detail/bipgnccfcjnfnpnnllchfeillaekkofo/) and click"Add to Chrome". * For **Firefox**: Visit [the Mozilla Add-Ons](https://addons.mozilla.org/en-US/firefox/addon/bear-app-add-on/) and click "Add to Firefox". * For **Opera**: Visit [the Opera Add-Ons](https://addons.opera.com/en-gb/extensions/details/bear-writer/) and click "Add to Opera". Once installed, click the Bear button in your browser toolbar. After a few seconds, you'll see a new note appear in Bear with the content of the page. If you select a portion of the page and click the Bear button, a new note with the selected informations will appear in Bear. ## Extension settings You can adjust some options of the Bear extension from within Bear. You can add tags to all clipped notes, import images, and append the page URL to the Bear note. * On Mac, click **Bear > Web content options** * In Chrome for Mac, you have to click on "Options" near the Bear icon * On iOS, select Bear’s Settings at the bottom of the Sidebar, then tap **Web content options** [image:07FCE93D-87F1-4B5A-9B95-85F6BE681213-52345-000061F10C1EEBC2/1.png] [MacOS Browser Extensions](https://bear.app/faq/Extensions/Browser%20extensions/) # How to Fuck Text ![TextFuckHeaderImage](https://user-images.githubusercontent.com/43663476/153741149-a149b9b4-bb62-47a8-9991-44904bdcfc03.jpeg) ## A guide on digital text fuckery (largely on iOS) from one of the world’s foremost authorities. My [project to properly document Bluetooth keyboard support on iPhone](https://uikeycommand.com) has given me a new reverence for accessibility, generally, which might come as a hypocritical statement at the beginning of such a piece, but I *did* [explicitly ask you](https://mastodon.social/@DavidBlue/107589034582138302) if you felt this subject was anti-accessibility before I officially embarked upon writing This Post. I don't consider the answer - a very weak "no" - to be an all-encompassing excuse, whatsoever. If you feel this post's existence has the potential to do real harm, [contact me](https://davidblue.wtf/db.vcf) and I *will* straight up take it down. I dare you. Since I consider myself a genuine authority on Text Fucking, however, I am going to do my best to main unapologetic language when expressing opinions in orbit of the matter. You can trust me, I think. ![Discerning Yelp Connoisseur](https://i.snap.as/K2E9UV7S.png) Here’s my definition from [the “Text Fucking” entry](https://github.com/extratone/bilge/wiki/Text-Fucking) in [*The Psalms* wiki](https://github.com/extratone/bilge/wiki): **Text Fucking** *verb* a.) hardcore text manipulation. b.) destruction of usable digital text. I won’t say Text Fucking is an art. Indeed, perhaps it is anti-art. It *is* a discipline, nearly. At least enough so that I believe this Post is worth it[^1]. Like most disciplines, it can be used for your particular definitions of “good” and/or “bad.” I would like to think most of my use over the years has been toward my own of “good,” but - as per the unsearchable nature of Fucked Text, generally - this is not easily verifiable or citable. ## History As detailed in the audio account embedded above, I believe my Text Fucking career began somewhere around the 7th grade, at 13-14 years old. It was my second or third time flunking MS02 - the Microsoft Office II course - taken on fairly outdated school desktop machines in the 2007-2008 era, all running Windows XP. Because of some inexplicable ability to simply do what I was told, I would spend class periods trying to create the largest possible text file in Notepad by copying and pasting huge, exponentially growing globs. Eventually, I did crash a machine at least once. Though it could very well be simply the self-exaggerated recollection of preteendom, I even remember crashing the school server with one of those files. https://twitter.com/draftsapp/status/1492645727729766400 My Text Fucking reached its peak proliferation in [the Drywall Era](https://drywallmusic.tumblr.com), when I first discovered the magic of Zalgo Text. The original generator at eemo.net has been replaced by an exact duplicate at [eeemo.net](http://eeemo.net). I have actually managed to successfully duplicate it [on my own NeoCities website](https://davidblue.wtf/zalgo/), as well. You might say that this original Zalgo Generator is The Original Text Fucking Tool. It can still generate quantities of fucked digital text information that *will* Fuck Shit Up on any social network, and as far as I can tell, the entire program is contained within [a single HTML file](https://davidblue.wtf/zalgo/index.html). https://twitter.com/NeoYokel/status/1492783081593483266 As Drywall’s first and second albums - “[Hamura](https://ihadtopee.bandcamp.com/album/hamura)” and “[Suburban Anarchy](https://ihadtopee.bandcamp.com/album/suburban-anarchy),” respectively - were studies in [audio clipping](https://en.m.wikipedia.org/wiki/Clipping_(audio)), I felt strongly at the time that Zalgo Text was the digital text equivalent. In fact, I couldn’t have imagined a more apt way to describe it. *Beyond The Rails* was my cringey “label” name, directly describing this phenomenon. Indeed, Zalgo Text goes beyond the “rails” of text input/display fields reliably, depending on the intensity of the configuration you’re using to create it. https://twitter.com/NeoYokel/status/1493041887279734784 ## Apps The core necessity of any good text fucker is a robust text editing and/or word processing application. Zalgo text is a real bitch for Electron apps like my dearest [Typora](https://typora.io), unfortunately. On iOS, this summation also applies to [Obsidian](https://obsidian.md), I’m afraid. I recommend native apps like [Drafts](https://apps.apple.com/us/app/drafts/id1435957248) (big surprise) - which astonishingly has [**its very own native Zalgo action**](https://actions.getdrafts.com/a/1vM) as developer Greg’s [gift to me](https://twitter.com/draftsapp/status/1492645727729766400)! - and [Bear](https://apps.apple.com/us/app/bear-markdown-notes/id1016366447) (no less of a surprise.) In terms of default configuration intensity, the Drafts action hits the sweet spot out of the box. If you don't believe me, here are some more particularly robust text editors on iOS: - [Kodex](https://apps.apple.com/us/app/kodex/id1038574481) - [Koder](https://apps.apple.com/us/app/koder-code-editor/id1447489375) - [Taio](https://apps.apple.com/us/app/taio-markdown-text-actions/id1527036273) - [Typewriter](https://apps.apple.com/us/app/typewriter-for-markdown/id1556419263) - [Runestone](https://testflight.apple.com/join/Q6S1cuCd) (Beta) If that’s not enough for you, I suggest perusing [Brett Terpstra’s iTextEditors Wiki](https://brettterpstra.com/ios-text-editors). I have previously reviewed two wonderful Text Fucking iOS apps on this blog: [**UniChar**](https://bilge.world/unichar-for-ios-app-review) and [**Zalgo Generator**](https://bilge.world/zalgo-generator-ios-app-review). There’s now [a macOS version of the latter](https://apps.apple.com/us/app/zalgo-generator/id1304137527) which is particularly powerful. Or at least has particularly powerful implications. There are a few more to be discovered, though: ![TextcraftIcon](https://user-images.githubusercontent.com/43663476/153724474-6a64b3d3-cb87-428e-81d6-a900746f9886.png) ### Textcraft [**Textcraft**](https://apps.apple.com/us/app/textcraft/id1546719359), by [Aviary](https://apps.apple.com/us/app/aviary-for-twitter/id1522043420) and [Mast](https://apps.apple.com/us/app/mast-for-mastodon/id1437429129) creator, [Shihab Meboob](https://apps.apple.com/us/developer/shihab-mehboob/id1533949185), has become my goto Text Fucking app - even above [Zalgo Generator](https://apps.apple.com/us/app/zalgo-generator/id1304137527), I’m somewhat sad to say - on both iOS and macOS. ![Textcraft for macOS](https://user-images.githubusercontent.com/43663476/153737944-46db7da5-6d85-41da-abd1-78a54bb58b99.png) ![TextExpanderIcon](https://user-images.githubusercontent.com/43663476/153726269-6d8cee5d-116b-4b28-99a0-91842e502456.png) ### TextExpander Another cross-platform application - this one [extending to Windows](https://textexpander.com/download), too - TextExpander has very recently become an integral part of my day-to-day creative life. It’s used by professionals at companies with "thousands of people," supposedly, to “expand” any sort of text, set off scripts (on macOS,) and paste fill in-able templates. These functions are divided into “[snippets](https://textexpander.com/learn/getting-started)” as part of “[snippet groups](https://textexpander.com/learn/getting-started/getting-started-for-admin).” In fact, I’ve created [**a dedicated snippet group to accompany this guide**](https://app.textexpander.com/public/12c50fb2360617d3cc66d757cf26383b). You can view all my TextExpander snippets in [this GitHub Repository](https://github.com/extratone/TextExpander). ![TextFuckSnippetGroup](https://user-images.githubusercontent.com/43663476/153726468-25b5a5a9-0381-4720-b1e7-c7fb2ef357d9.png) It’s not much just yet, but if you “[subscribe](https://app.textexpander.com/public/12c50fb2360617d3cc66d757cf26383b)” to this snippet group from your own account, you’ll be treated to whatever I come up with in the future, delivered to your devices in real time. If you find yourself trying it out, you may as well check out my main Snippet Group, [Extratext](https://app.textexpander.com/public/14093096578d4f40eeea15649f5cefbb), which is documented [here](https://davidblue.wtf/extratext). ## Siri Shortcuts ![TextFuckShortcuts](https://user-images.githubusercontent.com/43663476/153750918-ca0c5eb6-0d91-4d7f-b70b-550f0f44c528.png) Another method of general Text Fuckery on iOS is achieved through its relatively “new”[^2] personal automation system, Siri Shortcuts. Through a Reddit thread I've never been able to find again, I discovered a method of randomizing strings of text that led to the creation of the Shortcuts you see below, all with native actions (aside from the outputs of those with specific services.) If you're willing to splurge on the whole 3.3mb, free (for macOS, iPadOS, and iOS) [**Actions app**](https://apps.apple.com/us/app/actions/id1586435171), you can accomplish the same task, but much more quickly and with less resource consumption. I think you can spare the space.[^3] Perhaps the best place to start would be with the most documented (and perhaps most unique) Text Fucking Siri Shortcut I have to offer you. “[The Fastest Route to Twitter Jail](https://bilge.world/twitter-jail)” in fact details the workings of [**my Twitter Jail shortcut**](https://routinehub.co/shortcut/11086/), ![Random Text ⇨ Clipboard](https://user-images.githubusercontent.com/43663476/153768899-51ed409f-7fef-46d0-978f-8a5fc19ad5f7.png) If you’re new to Shorcuts entirely, what you see above will result in a string of random text copied to your clipboard, so that you can paste it whereever you might “need” to. Notably, I’ve been extremely lazy with the strings, despite having [the absolute best app for creating them](https://apps.apple.com/us/app/unichar-unicode-keyboard/id880811847) on my iPhone. I’d suggest you download it and play around yourself. As I said in [my review](http://bilge.world/unichar-for-ios-app-review), UniChar is a beautiful celebration of the diversity of Unicode. If what I’m talking about isn’t straightforward-sounding to you, [let me know](https://davidblue.wtf/db.vcf)! I absolutely *will* sit down and build something just for you. ![RandomTextAction](https://user-images.githubusercontent.com/43663476/153781368-a58bbb73-5675-48d6-9317-3538701a27d1.png) ### Text-Fucking Siri Shortcuts with Actions These three shortcuts require [the Actions app](https://apps.apple.com/us/app/actions/id1586435171), but the single action used across all of them - called `Random Text` - is one that works across all platforms. - [Random Characters ⇨ Clipboard](https://www.icloud.com/shortcuts/ed9216202df4481d9ae001b0531384c2) - [Random Characters ⇨ Mastodon](https://www.icloud.com/shortcuts/af64b43604334d21ad5a6668471b828f) - [Random Characters ⇨ Tumblr](https://www.icloud.com/shortcuts/399a857145e34d8b94b994fa3f9ca300) https://twitter.com/NeoYokel/status/1492926569496649730 ### Native Text-Fucking Siri Shortcuts - [Random Text ⇨ Twitter](https://www.icloud.com/shortcuts/0873152dee3e4d32828cd28bcbc1be06) ([Tweetbot](https://apps.apple.com/us/app/tweetbot-6-for-twitter/id1527500834)) - [Random Text ⇨ Twitter II](https://www.icloud.com/shortcuts/21ab008699ce44dabc9f9a249fc6f881) - [Random Text ⇨ Clipboard](https://www.icloud.com/shortcuts/3bfc10474a254aec8a0f8f89da96d198) - [Random Text ⇨ Drafts](https://www.icloud.com/shortcuts/f550febfa39b465b88217e1717f37548) - [Random Text ⇨ Mastodon](https://www.icloud.com/shortcuts/0e517d1438b44d3d980c8afb9891a724) - [Random Text ⇨ Tumblr](https://www.icloud.com/shortcuts/3c38ca0a7ec9413f9c9a6f6328fb1b09) - [Random Text ⇨ WordPress](https://www.icloud.com/shortcuts/07668aacd5ce4e59b76dd54ffc255209) —- [1] Whaddya think‽‽‽ [Should I write a book](https://twitter.com/NeoYokel/status/1492589668843634692)‽‽‽ [2] I say “new” here because of how many users genuinely have never encountered the concept, whatsoever, even going on five years since Workflow was made native. [3] A few of the single images embedded in this Post are larger than that. # Make Bear Notes from RSS Feed Shortcut https://github.com/extratone/i/issues/ # David Blue on Twitter Blue — The Psalms [image:ED007052-593D-446A-BDDD-A291FA17E21F-749-000000549E41C61D/XR4mJRCG.png] ## Gargantuan, ridiculously avoidable misses in Little Blue’s Blue. Incredibly, the second most powerful social media company in the world has finally managed to implement a paid subscription model, as I’ve been begging them to do for [at least 5 years](https://twitter.com/neoyokel/status/696094018862718976), now. For three U.S. Dollars a month, “ [Twitter Blue](https://blog.twitter.com/en_us/topics/company/2021/introducing-twitter-blue) ” is [now available](https://www.theverge.com/2021/11/9/22766286/twitter-blue-subscription-service-scroll-nuzzel-undo-tweets-ad-free-articles-us) for all United States users. Aside from [a relentless, rude, two and a half hour-long rant](https://apple.co/3wVZs3v) at two new friends on *End User*, I should confess that I haven’t spoken adequately to peers at length about their Twitter use – understandably, busy independent artists don’t seem to find themsevles with the spare time to hypothesize methodically about what they might want from the service, going forward. From the mass of commentary on Twitter Blue I *was* able to gather, a resounding sentiment refrains: *these features should be available to everyone*. Frankly, after all these years, there’s not all that much to actually say about the product, itself. Thanks to Spaces, I happened to catch a chance to ask my favorite sage of late – Jason Scott, original creator of textfiles.com – for his thoughts. “Well, I bought it.” “Yeah, same.” [image:F2706F92-4BAC-4A4E-989D-F5D73F4A37A8-749-000000549E40D0A5/zp5uCNwa.png] Then, we talked for 45 minutes about self-actualization. As I’ve recently honed my understanding of the significance behind my own personal extraordinary dependence/investment in this one service, I have also – in parallel, ya might say – refined wholly a set of expectations which I do not ever again expect to be usurped in any way by Twitter, Incorporated’s decisions. Believe it not, these thoughts of mine really *do* have real potential to add value to your life, especially if you’re still reading. The next time you find yourself wondering what Twitter might do next, try to internalize the utter inanity of that whole pursuit. Not one second can be concretely spent in that endeavor because the organization is defined singularly by its outrageous negligence. They are not villains or demons like [Big Blue](https://github.com/extratone/bigblue) – they are through and through a village of idiots, and no manner of user action can possibly budge them. Of course, this new development of mine hasn’t actually managed to delivery any peace upon my person. In fact, because it is impossible to be *constructively* critical in such a situation, I am one of few I know who must continue to be critical, anyway, because my livelihood does not depend on the newsworthiness of my subject matter. I guess I should just be thankful my “must” represents so little time-sensitive consequence, if any, given how long it takes me to finish anything, these days. On that note, please [look elsewhere](https://www.theverge.com/2021/11/14/22778827/twitter-blue-undo-button-paywall-features-paid-free) for the bulletpoints… Come back for at least a second, though, because this Post *does* eventually circle around to a handful of poignant, original comments on the Whats. The peeves aren’t new, but I’ve found my own redundancy within *The Psalms* to be less and less… redundant, if that makes sense. This company’s software is bad and its continued prioritization of the two native mobile applications (neither of which it actually built) over any other clients for *all* user considerations is a spectacular tedium to follow. Its world record breaking inability to understand anything about how its *whole shit* fits into the lives of *any* of its users continues to astound. My peak irritation about the whole situation, lately, is that *you fuckers* continue to discuss alterations to social software, generally, as if they are *inevitable* with a sense of complicity I will *not* allow. I’m not going to argue that you’re *obligated* to speak up and out in a labor sense, but beseeching that you **expect more** from these organizations as a customer, a citizen, and a human being. For your sake, I've spent the time to break Twitter Blue's offering down specifically, feature by feature, only because I have yet to see it done methodically in detail from the tech media sources you'd normally depend on. [image:30CF7CA5-1365-4FA1-9959-110A898E7C4D-749-000000549E3FBC91/SAYPlThr.png] ## Thread Reader If I’m honest, the majority of the discourse I’ve picked up surrounding Twitter threads in the past few years has been negative. Vaguely, “getting lost” is something I recall being expressed. Twitter Blue’s Thread Reader offers a “reader view”-like experience in three different font sizes – none of which looked particularly optimal, to my eye. If there’s anything to say about it, really, it’s suggest this adjustment be made more variable, natively, though further adjustment is allowed at the moment by using `⌘ + =, -, and 0` for those iPhone keyboarders among you. [image:AF46A3EE-4A91-4DAC-9EA1-2589DBCE804C-749-000000549E3E0364/1ia6xNyv.png] Also, the appearance of non text-only posts (especially Voice Tweets, which I, alone, continue to use) in this view feels like a bit of an afterthought. [image:D7E50DCD-CBE2-47A7-AFCC-41598F376344-749-000000549E3CE0B6/hu2p7mN2.png] Intentionally or not, the configuration of Twitter for iOS’ navigation tabs enabled by Twitter Blue membership is a revelation – or it would be, were it the only viable Twitter client on the platform. It’s perhaps the most celebratable feature included in Twitter Blue, if only because it suggests the Twitter team is finally paying attention to Tweetbot. (In case you weren’t aware, I spent a significant amount of time and words writing about just how valuable Tweetbot is, [earlier this year](https://bilge.world/tweetbot-6-ios-review).) Unfortunately for Twitter, [Tweetbot’s had an incredible year](https://www.macstories.net/ios/tweetbot-6-6-gets-support-for-creating-polls-limiting-who-can-reply-to-tweets/). The biggest possible miss, here, was adamantly missed: one *cannot* customize away the “Home” timeline from the first nav bar position, which brings up another huge issue with expecting a monthly fee for an experience within Twitter’s iOS app: *persistence*. > a piece I started in mid-September and probably should’ve stuck with arguing/detailing how the native Twitter for iOS app could be omitted entirely… [pic.twitter.com/Bbq4S0RMBu](https://t.co/Bbq4S0RMBu) > — David Blue ※ (??????-???? ????) (@NeoYokel) [December 5, 2021](https://twitter.com/NeoYokel/status/1467393675579871234?ref_src=twsrc%5Etfw) In the clip of the Twitter feedback Space embedded above, my second point of note was that the app had not “randomly logged me out” in the seven days I’d then been subscribed to Twitter Blue. To be clear, this was referring to the experience of opening the Twitter for iOS app to the welcome screen instead of where one left off, which has indeed happened in the interim. The worst bit: after logging back in again, all one’s app preferences are reset to their respective defaults. Without a means of exporting or “backing up” one’s settings – like say, [Better Tweetdeck](https://better.tw) has – this means that one has to methodically explore every single Settings menu and re-select core essentials like posting the highest quality possible images, for instance, all with the knowledge that such a reset could happen again at any time. Suffice it to say, this is not the sort of quality one expects from a premium iOS app in 2021. > honestly the most bewildering thing is how thoroughly ALL of one’s preferences are reset every single time. > the way iOS/iCloud is built, you’ve actually got to put real effort into truly ridding your phone of (just about every other) app’s old settings with a reinstall… [pic.twitter.com/QJlnqfsncd](https://t.co/QJlnqfsncd) > — David Blue ※ (??????-???? ????) (@NeoYokel) [November 24, 2021](https://twitter.com/NeoYokel/status/1463658007791812608?ref_src=twsrc%5Etfw) As you’ll see in the screenshot embedded above, Custom Navigation offers one a choice of up to 6 tabs from a total of 10, which include [some Bluetooth keyboard shortcut considerations](https://github.com/ExtraKeys/keys/issues/31#issuecomment-986184090) I suspect you’ll not find detailed from any other source. ### Bluetooth Keyboard Shortcuts Support To start, `⌘ + F` will now reliably open the Explore tab and (most of the time) deliver one’s cursor directly to its search field. However, **this only functions when Explore has been selected as one of the bottom nav tabs**, which really misses out on an opportunity for the shortcut to be uniquely useful, in my view. Otherwise, `⌘ + 1-6` will open the bottom tabs you’ve chosen in order, which means – brace yourselves – that Twitter Blue’s Custom Navigation technically includes *configurable keyboard shortcuts*. > hope you're FUCKING READY for a SINGLE-TAKE RUNDOWN of Bluetooth keyboard shortcuts considerations in Twitter for iOS with Twitter Blue. [pic.twitter.com/hiP5Ks23Ww](https://t.co/hiP5Ks23Ww) > — David Blue ※ (??????-???? ????) (@NeoYokel) [December 6, 2021](https://twitter.com/NeoYokel/status/1467681892468154370?ref_src=twsrc%5Etfw) Also notable: when viewing the obligatory Home tab, one can navigate between their Lists with just the (unmodified) left and right arrow keys! `⌘ + ,` is now a dependable way of opening the app’s Settings menu, `⌘ + \` pulls up the account switcher, `⌘ + =,-,0` manipulates text size, app-wide. `⌘ + V` will open Tweets from links in one’s clipboard from anywhere in the app – not a new trick, I don’t think, but a clever one. As of this writing, [the public-facing document of Twitter for iOS’ Bluetooth keyboard shortcuts](https://help.twitter.com/en/using-twitter/twitter-ios-app) is quite inaccurate. For example, it lists `⌘ + M` as the command to switch between light and dark mode in the app, which is actually accomplished with `⌘ + ⇧ + D`. [image:BD0EE712-F462-4E77-8B3D-42E533E5ECBF-749-000000549E3BB778/Qfb0rFvf.png] ## Undo Tweet Perhaps unlike you, *I* have never had a problem understanding why “editable” Tweets will never exist, largely thanks to [my conversation with Eugen Rochko](https://hyp.is/znp7tEQJEeySOXvhkqI2DQ/bilge.world/eugen-rochko-interview) about implementing editable posts on Mastodon: > That won't happen. There's actually a good reason why they don't do that. It's simply because you could make a toot about one thing, have people favorite it and share it, link it from other places, and then suddenly, it says 'Heil Hitler,' or something. This, actually, is *not* the reason I found it easy to understand, though I hope it makes a bit of a sense. It was when Eugen mentioned (unquoted) Twitter's original design around SMS[^1] that I first vaguely understood the depth of this limitation in the core architecture of the service. As far as I understand it, **the method in which a Tweet’s basic data is stored does not allow for revision**. It can be deleted or obfuscated, but never substituted for or replaced. As I noted all those years ago. **Delete & Re-Draft** – the answer Mastodon integrated natively and third-party social clients have featured for years – makes *a lot* more sense than straight up “editable Tweets” *or* the chosen answer at the top of Twitter Blue's feature list, “ [Undo Tweet](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet).” Here's the full text from [its subpage](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet) in Twitter's documentation: > **Undo Tweet** gives you the option to retract a Tweet after you send it, but before it’s visible to others on Twitter. It’s not an edit button, but a chance to preview and revise your Tweet before it’s posted for the world to see. Once the Undo period is over, the Tweet is viewable to your followers and you can either leave it or delete it, like you normally would on Twitter. * Tapping Undo sends you back to the Tweet composer where you can make changes before posting the Tweet, or deciding not to post at all. You can also select Send now to skip the Undo Tweet option and post your tweet immediately. * You can turn Undo Tweet settings on for all or some of the [different types of Tweets](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undodifftweets) including Original Tweets, Quote Tweets, threads, and replies. * When active, Undo Tweet displays a countdown of the time left until your default 30-second Tweet Undo period expires, and your Tweet appears on Twitter. Shorten or lengthen the expiration window to 5, 10, 20 or 60 seconds under the [Twitter Blue feature settings menu](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweetperiod). * If you turn off Undo Tweet, you won’t see the Undo Tweet prompt. * Read more about [how to adjust the settings of your Undo Tweet feature](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweet). > By default, Undo Tweet is turned on for every single post of any kind at 20 seconds' notice. This was my very first change to the default settings ( [other than the highlight color and app icon](https://twitter.com/NeoYokel/status/1459235983174639626) ): I turned it off for Original Tweets, Replies, and Threads. This makes it tolerable, but still useless, and honestly, I can think of only one instance in which I used it for its intended purpose. [image:691ED916-59ED-492B-9556-240D8DD2693E-749-000000549E3A65BB/8aFbZdVQ.png] The only straight up “we’ll let you take up a bit more bandwidth since you’re paying us” feature addition included with Twitter Blue is its elongation of the time limit for posted videos from two to ten minutes. One of very few observations about Twitter Blue I could find from “regular” Twitter Users comes from [r/Twitter](https://reddit.com/r/Twitter) (which is uh…. a mess:) > the only reason i got it is because it allows 10 minutes of videos you can post and since I make content I no longer have to be restrained to the 2:20 video time on the “regular” Twitter. - [u/jdb825](https://reddit.com/r/Twitter/comments/qxygfb/_/hmddlli/?context=1) I personally feel this post wholeheartedly – especially since I’ve basically committed to single-take video content, personally, yet have been regularly sharing screencaps on my account. An anecdote I have not seen mentioned: for videos uploaded directly to Twitter’s “Media Studio” (a feature to which I have access because of my peak Periscope fame, years ago,) the two-minute limit still applies. Yet another beautifully absurd product oversight. From the screenshot embedded above, it’s quite obvious that I no longer use Twitter’s Direct Messages, but there was a time, many years ago, when I would have personally appreciated “ **Pinned Conversations** ” very much. [image:5E32C1A2-B193-44E6-86AD-13635200A4C5-749-000000549E38E6DD/7RBw18tJ.png] ## Ad-Free Articles As much as I want to unabashedly celebrate the investment Twitter, Inc. is inexplicably now demonstrating in Lists – a feature I’ve [tirelessly advocated for](https://bilge.world/twitter-lists) out of perceived obscurity – with Twitter Blue, there’s at least one example which they’ve managed to fuck up such investment. The official list of publishers participating in Twitter Blue’s “Ad-Free Articles” rehash of Scroll is exclusively documented in the from of [@TwitterBlue’s singular Twitter List](https://twitter.com/i/lists/1448014243245150209), which makes it conveniently quite difficult to share. Aside from that anecdote, I have another which is both mostly personal and yet inexcludable. The day [Twitter acquired Scroll](https://www.theverge.com/2021/10/5/22711233/scroll-shutting-down-twitter-blue-standalone-subscription-ad-free-article-service), I had the bizarre, completely unexpected opportunity to ask Tony Haile – Scroll’s founder, who also played a substantial role in creating the Ad-Tech Hell it was founded to counter in creating Chartbeat, some years ago – *a question*. I’d been listening to a Twitter Space hosted by [Chris Messina](https://twitter.com/chrismessina) and [Brian McCullough](https://twitter.com/brianmcc) for *TechMeme* featuring Haile while I’d been showering. Somehow, the two ran out of questions to ask Tony, so they turned to the audience. I requested to speak and Chris – who’d done so a few times before – let me in almost immediately. Nude and still very wet, standing in my bathroom, I suddenly found myself on a call, essentially, with certainly the most interesting media industry figure of the moment. Chris, who knew me well enough already as a regular in his Spaces to know my speech often includes long pauses, said something like “quickly.” I began by bringing back a topic from an hour before, at least, and noted that Twitter’s “Tips” feature was no more than a list of hyperlinks as it stood (it basically still is,) before (more or less verbatim:) “I just got out of the shower but uh… I forgot about Tony Haile. (yes, he was listening directly to the Space and I did say that) …but I would ask him to narrate how exactly he got from Chartbeat to Scroll to Twitter.” Yes, I spoke of him in the third person even though I could all but hear him breathing. I then retired from my speaking role, but – from what I could tell, passively listening as I finished getting ready for some time-sensitive engagement – my question basically sustained the rest of the interview. This experience, alone, wouldn’t necessarily be worth mentioning, but after discovering *The Kansas City Star* – one of the oldest, most established local mastheads to my home state (Missouri,) to which I maintain a subscription – among the aforelinked List list of participating publishers in Twitter Blue’s Ad-Free Articles program, I reached out to the one *Star* reporter I know, asking simply if she’d heard anything whatsoever about the program from editors or just ambiently in the newsroom. She had not. For an explanation, I dug just a bit further and found out the *Stars* ’ corporate owner, McClatchy, had in fact [“tested” a “partnership” with Scroll before](https://www.niemanlab.org/2020/12/scroll-the-ad-free-news-startup-will-experiment-with-bundled-subscriptions-at-eight-mcclatchy-sites/), and appeared to have opted its whole handful of local American news institutions – including the *Star* – in again, en masse, to its new, Twitter-owned form. Before I go on, I should note that one can indeed utilize Ad-Free articles’ benefit within your preferred web browser, but the process is very specific. On iOS, you’ll need to open an Ad-Free Article in the Twitter app first (marked with blue text) and then tap the Safari icon in the bottom right to open your default browser. You’ll know you’ve authenticated correctly when you see one of these two motherfuckers[^3] (depending on your system’s current light/dark theme setting) in the bottom right of your browser window: [image:981AF4A7-8565-4C36-ABEC-3FC50833DB6C-749-000000549E376638/Qs5cIakt.png] For thoroughness’ sake, here’s what [the official help document](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles) has to say: > As long as you stay logged in to Twitter, and use the same browser each time, you should get ad-free reading when you subsequently visit that same Twitter Blue site. Have a peak at [The Kansas City Star’s Wikipedia page](https://en.wikipedia.org/wiki/The_Kansas_City_Star) and you’ll note that it’s over 150 years old, once claimed Ernest Hemingway on its masthead, has been awarded eight Pulitzer Prizes, and that it depends on a combination of advertising dollars and [possibly in duress](https://jimmycsays.com/2018/02/13/more-worrisome-circulation-figures-for-the-kansas-city-star/) subscription revenue to stay afloat. This in mind, note the screenshot I’ve embedded below, comparing how a Twitter Blue-participating *Star* article appears within a desktop browser – without Twitter Blue vs Twitter Blue. [image:0C0C3316-C1FA-46D9-82C2-FA7AC909C445-749-000000549E357CBC/ATS5Q3ok.png] Captures of each respective webpage demonstrate that Twitter Blue exempts a reader from about half of the content weight of the non-Blue-authenticated render[^4]. Old school banner ads account for a portion of the missing content, but at least three elements for converting visiting readers to paying subscribers make up for most of it, I’d wager. None of what’s gone is content anyone on Earth *wants* to see, mind you, but frankly, it’s disrespectful of the paper’s classically villainous, [recently bankrupt](https://www.nytimes.com/2020/07/16/business/media/hedge-fund-chatham-mcclatchy-postmedia-newspapers.html) corporate overloard to opt it in with a program fundamentally designed to *intentionally forgo advertising engagement*. [image:8867FC0D-D395-432A-A503-DC83870F76B1-749-000000549E331F5E/144753270-c9687e0d-1307-41ba-b403-990923d70acf.png] Tony Haile, if you’re reading this, you can exhale now. Yes, [the theory behind Scroll, and now “Ad-Free Articles” in Twitter Blue](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles), suggests that the fifteen cents I’ve earned the *Star* so far (the graphic above can be found in the “See Your Impact” selection within one’s Twitter Settings) will be paid directly *to*… Whom, exactly? The answer offered by Twitter, Inc. to the question of “How does my ad-free reading support journalism?” (asked of themselves:) > Each month, we pay publishers within the Twitter Blue Publishers Network based on the content you and other Twitter Blue subscribers read ad-free through Twitter Blue. Our model is designed to help publishers continue to fund the journalism you love to read. *Publishers*. I suspect that means cash-desperate McClatchy and *not* *The Kansas City Star*. All to be done at the moment, at least, is to ask ourselves how much of that cash will ever be seen by the paper. [image:D4233B74-2D39-4848-B466-B44D43E96029-749-000000549E304F98/VyMNqr7V.png] Bookmarks and **Bookmark Folders** represent yet further evidence that someone at Twitter, Inc. *actually uses Twitter* (or perhaps has a friend or family member.) Technically, they also represent one of few core functions exclusive to Twitter’s own clients. (Consider: Tweetbot even supports polls, now.) However, like the Thread Reader and “Custom Themes,” Bookmark Folders, too, feel like an afterthought shoved in the bundle an hour before a deadline. Specifically, their color-coded icons look like placeholders for custom images… which aren’t supported, and they represent 0 additional function as curatorial/archival tools (no exporting/aggregating/or sorting, even) beyond simply nesting bookmarks into… folders. [image:850D17B8-45AE-4A58-B012-C86A4B32F9AA-749-000000549E2CF465/935pp2QS.png] ## Icons & “Themes” Even greater heights of half-assery have been achieved by what Twitter describes as “ [exclusive app icons and colorful themes](https://blog.twitter.com/en_us/topics/product/2021/twitter-smarter--twitter-harder-with-twitter-blue).” Here, I must finally give in and compare Twitter Blue with Tweetbot directly. > in case I haven’t said it already… > I have missed [@tweetbot](https://twitter.com/tweetbot?ref_src=twsrc%5Etfw) desperately these past few weeks “testing” Twitter Blue in the native iOS app, which uh… says something important, I think. > new Tweetbot themes, even!!Twitter Blue: $2.99/monthTweetbot: $0.99/month > ? [pic.twitter.com/DHZRaXKmkH](https://t.co/DHZRaXKmkH) > — David Blue ※ (??????-???? ????) (@NeoYokel) [December 5, 2021](https://twitter.com/NeoYokel/status/1467422017527951366?ref_src=twsrc%5Etfw) Absolutely zero effort has been expended thus far in recharacterizing what Web Twitter still calls “Colors” as “Themes,” and the only *exclusivity* in the icon options is that some are seasonal, or otherwise time-limited, for what possible purpose I cannot conceive. This from a company of more than 5000 full-time employees. In contrast, from a full-time team of two – both of whom suffered through bad COVID infections, this year – Tweetbot now includes an even further broadened spectrum of app-wide themes and 19 app icons in total, including, yes, at least two very cute, limited-time seasonal options. ## All Users are Should Be Powerusers The episode of *End User* embedded above is one of the only podcast episodes I’ve ever made which I actually find *too painful* to listen back to[^2], but I still think it’s valuable. There’s a specific bit of the conversation between [@alisonbuki](https://twitter.com/alisonbuki) and I in which the term “Poweruser” is actually thrown around regarding my own use of Twitter Lists, Tweetbot, and a few other *Hax* to consume content *deliberately*. I think I failed somewhere in my portrayal of this curation and miscommunicated the nature of what I was trying to get at by “making use of the tools available to you.” Regarding the actual manhours involved in the configuration I was trying to evangelize, I think I’ve spent more time trying to describe the effort than I have actually configuring my own content intake. Long before I was [follow-limited](https://bit.ly/dbfollow) in 2017, I lived entirely in my [Twitter Lists]() [https://twitter.com/NeoYokel/lists)](https://twitter.com/NeoYokel/lists%29), the largest of which I built up “organically” over time, by adding appropriate accounts one by one as I came across them. Thanks to Tweetbot, my equivalent of the native apps’s Home timeline is a private List of ~200 accounts whose users represent the actual entirety of my adult social life, past to present. Then, there’s [The New](https://twitter.com/NeoYokel/lists/the-new), which – I must admit – has grown beyond its original scope and sortof become my follow list, with enough exceptions that I consider it worthwhile to keep public. Then, there’s the newest – [my Meta-Media List](https://twitter.com/i/lists/768458273141907456) – and the very oldest: my dear, weathered [Rolodex of Automotive Twitter](https://twitter.com/i/lists/43457439). I keep Tweetbot in my dock and the native app on my device just for notifications, Spaces, and now Communities. That’s it! Yet, using this configuration, I *never* see content that seriously disturbs, shames, triggers, or otherwise upsets me beyond reason or expectation[^5], but am regularly exposed to a relatively diverse palette of perspectives, and just generally find my consumption/engagement time on the service meaningfully spent. The particular amalgamation of truly half-assed user experience features offered in Twitter Blue lend toward a narrative about this company which we collectively have continued to fall for literally *dozens* of times – often in immediate succession – throughout the fewer years of its history: that it *finally* has a morsel of what *might just become* a cohesive vision. Clearly, I am as susceptible to this as anyone considering how quickly I jumped to celebrating the fact that *finally*, Twitter had seen the humongous value to be imparted to its userbase by simply adding basic configurables like custom navigation and especially refining the essential curatorial tool that is Lists. Were I still a person who wastes my energy speculating on the real happenings within Twitter, Inc, though, an entirely different, much more realistic sounding theory arises after the analysis we’ve trudged through together in this post: every single item on Twitter Blue’s feature list represents the absolute bare minimum resource investment possible. If I had any money, I’d go on to bet that [Shihab Mehboob](https://twitter.com/jpeguin) could have built from scratch every single developmental “addition” to the iOS app Twitter Blue includes in a matter of hours, though from experience, I seriously doubt he’d ever allow such lackluster work to reach even beta tester’s fingers. As far as Ad-Free Articles go, Twitter hasn’t even bothered to swap out all the Scroll branding. The fact that *I* had to surface the concept of Delete and Re-Draft to Twitter Employee brains for what all appearances indicate was the first time in that “FeedbackFriday” Twitter Space represents a truly sickening lack of effort. No, the story that aligns much more succinctly in the grander context is that Twitter Blue just happened to be the first disjointed, scatterbrained subscription service pitch to finally fall out the rectum of this miraculously bunk organization, but all you motherfuckers can talk about is Japple Notes Dorsey walking out, and *what it could mean*. Since I have now actually been personally and explicitly invited to share feedback regarding Twitter Blue, I suppose I’ll make some effort to send them this hyperlink. In that vein, I think I’ll end with some advice addressed directly to Twitter, Incorporated: Hey Twitter! If you ever find yourself genuinely interested in selling a subscription product long term, as a mutual value exchange with your users, make all of Twitter Blue’s features available to all users, and ditch Scroll entirely. Instead of placing the bet on local newspapers like *The Kansas City Star*, it should be on *you* to **take the financial risk yourself, and offer, simply, a completely ad-free Twitter experience**. That might just be worth $2.99 a month. [1] Despite the fact that Tweeting via SMS has [since been disabled](https://www.theverge.com/2019/9/4/20849865/twitter-disables-sms-text-message-tweeting-jack-dorsey-ceo-hack). [2] I was just… rude. Very rude. “Necessary” is not a term I’d apply to this rudeness, but… Just give me this once, please. [3] In the process of trying to capture a good image of this thing, I noticed that all the assets are still being loaded from static.scroll.com. Nice. [4] See for yourself via [this thread](https://t.me/extratone/8767) on my Telegram channel. [5] An obligatory note that I am of the most privileged sort of human there ever has been, or that one can be. [Discuss...](https://remark.as/p/bilge.world/twitter-blue) [#software](https://bilge.world/tag:software) [#media](https://bilge.world/tag:media) [David Blue on Twitter Blue — The Psalms](https://bilge.world/twitter-blue?pk_campaign=rss-feed) # Speedy Frames — The Psalms [image:B7BE8C7D-E2F0-45D9-A774-1C803D5A4848-749-000000549646B937/ZnCTpWtH.png] ## Federico Viticci's Apple Frames shortcut, optimized for super fast single-shot iPhone mockups. The single element that's allowed me to go from publishing regular ole' iPhone screenshots to photorealistic mockups like you see embedded below is an absolutely ingenious, hugely powerful Siri shortcut by *MacStories* founder Federico Viticci called [Apple Frames](https://www.macstories.net/ios/apple-frames-2-0-faster-lighter-and-featuring-support-for-iphone-13-ipad-mini-ipad-10-2-imac-24-macbook-air-and-multiple-languages). Out of [all the shortcuts and workflows](https://raindrop.io/davidblue/siri-shortcuts-21598130) I've discovered, fiddled with, hoarded, and discarded since [iOS 12 beta](https://bilge.world/siri-shortcuts-ios12-review), I think I can definitively say that it remains the most impressive use of iOS automation, ever, for reasons you're likely not all that interested in. [image:723DF067-1AF9-4CC1-B7CE-C90C19DA4E40-749-0000005496451BD5/nszXla7t.png] As it comes by default, [Apple Frames 2.0](https://www.icloud.com/shortcuts/d70654c055ee41bd8f72ebf0c29e0fa5) includes support for a whole bunch of languages and a broad spectrum of devices. Literally *every single step* is annotated with explanatory documentation, which represents hugely noble effort in and of itself. Its GUI selection menus, alone, allow for configuration of input and output targets and layout options (for multiple screenshots – horizontal, vertical, or in a grid.) *However*, this versatility means there *is* a wait involved. Emphasizing said wait (about 90 seconds from trigger to result for single-screen mockups on my 12 Pro Max) feels absolutely ridiculous considering how much longer it would take any other mockup generation method known to man to produce the same result, but a user like me – who's use of the shortcut is more often than not to generate mockups of a single screenshot I've probably just taken – might find themselves wishing they could set defaults for its menu selections and circumvent iOS' image picker and/or share sheet entirely. [image:FFBC56A7-F375-4BBA-A628-A2B2399FEAC3-749-0000005496435FB3/147858980-5f54e915-cc2f-493d-b680-846ceea8f2d6.png] And so... I did! With the new ability to edit shortcuts on macOS, it required far less time/trial-and-error grief for me to perform the modifications listed below without breaking the whole shortcut than I expected, certainly. ## Modifications 1. I deleted all of the annotations in `Comment` form. They’re a testament to Federico’s diligence and huge contribution to personal automation with iOS… but they’re also just extra text. 2. I replaced the `Find Photos Where` action with `Get Latest Photos` with the `Include Screenshots` toggle ON and the retrieval limit set to just one. 3. I deleted the entire export preferences menu and replaced it with actions that save the result both to a specific iCloud Photos folder for frames and a corresponding iCloud Drive folder. [image:FDCE9B18-67F6-4FBC-8F12-8BF575059B87-749-00000054963E7643/VXYQyfpe.png] The [resulting shortcut](https://routinehub.co/shortcut/10775) generates a mocked up version of the last screenshot taken on the host device and saves the image to a specified iCloud Photos album and iCloud Drive folder. (You will be asked to specify these upon installation.) In my experience so far, this process requires an average of ~5-7 seconds from trigger to result[^1] (vs 90+ seconds in Apple Frames 2.0's default configuration) and works fairly reliably *so long as one runs it immediately after taking the subject screenshot*. Note the incorrectly-oriented results in the screenshot of my own dedicated Frames album, above. I'm sure it doesn't actually have anything to do with the *duration* between capture and running the shortcut, but I'm not technically adept enough (nor particularly compelled) to determine the real cause. ## Tapping Back (You need only continue if you're interested in triggering the shortcut with [Back Tap](https://support.apple.com/en-us/HT211781).) I must acknowledge that what I'm about to describe is *blatantly* hypocritical given how much bitching about consumer tech's excess I've been purveying, but – for the past few weeks of living with my Speedy Frames shortcut – I have committed 100% to mocking up *all* shared screenshots – even those sent to friends and family. Obviously, a native automation trigger fired by screen capture would be particularly handy, here, but if we're using Back Tap as a trigger, we could theoretically achieve the same end by inserting a `Take Screenshot` action at the beginning of the shortcut except... It doesn't work. I've no idea why, but such a setup *exclusively* produces incorrectly-oriented results.[^2] Anywho, mocking up every single screenshot you've *taken* is just that much more excessive than those you actually intend to *share*, in my mind. For those like me who've found Back Tap physically confounding, I created [the video embedded above](https://youtu.be/SKc4OZa2W8o) to demonstrate the actual *mechanical* action required to trigger it. > hey y’all I had to share this with you… by far the quickest setup for creating iPhone screen mockups *I’ve* ever come up with, certainly. [@viticci](https://twitter.com/viticci?ref_src=twsrc%5Etfw) ’s Apple Frames 2 Shortcuts but set to grab the last screenshot (no selection,) and triggered by a double Back Tap. > (contact noise) [pic.twitter.com/Qw6DkBd3mH](https://t.co/Qw6DkBd3mH) > — David Blue ※ (? ? ? ? ????) (@NeoYokel) [December 17, 2021](https://twitter.com/NeoYokel/status/1471883295042510859?ref_src=twsrc%5Etfw) I've left it set to `Double Tap` for the majority of the time and have found it suitable. If you find yourself *really enjoying* the sensation of tapping the back of your phone, you might even set `Triple Tap` to `Screenshot` so that you can create a mockup with just a series of 5 taps. Technically, there is much optimization to be done beyond this point – if you're using an older device or find even five seconds too long a wait for your mockups, you might try trimming Speedy Frames further by removing unneeded device and language components. As always, if I can be of assistance or if ya just want to chat, please do [contact me](http://davidblue.wtf/db.vcf). `2-01-2022` I added a [Delete Photos](https://www.matthewcassinelli.com/actions/delete-photos/) action that deletes the pre-mockup screenshot to reduce clutter. [1] My methods of timing and actual volume of data (read: repetitions) is far from scientific, just so you know. [2] As of iOS 15.3 Beta 1, anyway. [Discuss...](https://remark.as/p/bilge.world/speedy-frames) [#software](https://bilge.world/tag:software) [#automation](https://bilge.world/tag:automation) [#configuration](https://bilge.world/tag:configuration) [Speedy Frames — The Psalms](https://bilge.world/speedy-frames?pk_campaign=rss-feed) # I Trust Telegram — The Psalms [image:97637497-5624-4D63-874A-16DF8D7879E6-749-0000005492B36BC1/9Bxz27ZX.png] ## How I’ve used Telegram as the ultimate cross-platform Universal Clipboard, file sharing service, and more. Believe it or not, I, too originally sought the Russian-owned, cross-platform-as-hell messaging service for “privacy” – or perhaps *solitude* would be more apt. It was in 2017, amidst the shock that the Tump Presidency was *actually going to happen* [^1], that I happened to hear about his pick for Secretary of Education, Betsy DeVos, whom had just 18 months prior led myself and some twenty thousand other poor souls in a most capitalist prayer to the Christian God for prosperity at her pyramid scheme’s ultimate “superbowl” gathering in Cincinatti. I had decided to “infiltrate” AMWAY under the ridiculous assumption that I might be able to contribute some new insight in writing critically about what I might witness. (In truth, I found my experiences that summer so utterly traumatic, existentially, that I never was able to do so.) I don’t know what consequences of her ascension to the Lord of American Schooling I expected to happen, but I was pretty hysterical about it – that is, more unhumorously alarmed about some grander world happening as I’d ever been by a long shot. For the first and only time in memory, I felt compelled to take some sort of malicious, obscured action – to organize somehow for a purpose other than to be publicly critical of this person, and to use my knowledge about digital media to the fullest possible extent to scrutinize her administration’s every movement and to be prepared, even, to take some sort of real action if she… well, I don’t know. I *didn’t* know anything, really, about anti-government organization, generally, but I was not acting rationally in the slightest.[^2] [image:13BAFC8E-DCA6-49F3-8A22-231D18CFECEA-749-0000005492B27DFB/aNADRjvK.png] I’m bringing this up for a few reasons, and the fact that the very first digital decision of my personal hysteria was to set up a private Telegram channel is telling, though I can’t recall just how much or how little I actually knew about it at the time. I launched myself back to the channel’s very beginning (easier to do with regular URLs than in any other service I’ve ever encountered,) but was only able to bring myself to dig just long enough to grab the utterly absurd photograph above… Though I certainly did not consider myself actively *interested in automation* at the time,[^3] Telegram’s infamous bot ecosystem proved so prevalent (and accessible,) that I was able to configure at least three bots on that channel within days of first establishing it: a repeater hooked to DeVos’ Twitter account, an RSS-powered bot watching the main feed of a website set up by Senator Elizabeth Warren called [DeVos Watch](https://www.warren.senate.gov/oversight/devos-watch), and another republishing everything from [the Department of Education’s press releases feed](https://www.ed.gov/news/press-releases). > got called on telegram to be shown a big tub of worms [pic.twitter.com/vCik1IgETv](https://t.co/vCik1IgETv) > — AHHHH!!mmnontet (@ammnontet) [October 17, 2021](https://twitter.com/ammnontet/status/1449594872139186181?ref_src=twsrc%5Etfw) Was any of it genuinely useful in helping me maintain *Action Readiness* in hypothetical defense of American education? Most certainly not. It was, however, genuinely *comforting* to have such diligent, automated minions keeping watch – to have a centralized, private, reliable, and purely-chronological feed of information in a super-handy location, regardless of whether or not it was usable. As I began to unconsciously integrate Telegram into my day-to-day online life on both of my PCs and my iPhone, the usefulness of my private channel for *other* applications became rapidly apparent. On iOS, not even dedicated file managers like DEVONthink are capable (or *willing* might be a more accurate term) of handling the diversity of data Telegram will happily pass on for you, *especially* through the Share Sheet. > honestly I don’t think Telegram’s Share Sheet has changed since it was first implemented, and for very good reason. this is how quickly one can share a URL, but the thing is… you can also send literally any file or text the same way, which is definitely unique. [pic.twitter.com/QA4FCqLgB7](https://t.co/QA4FCqLgB7) > — ※ David Blue ※ (@NeoYokel) [September 27, 2021](https://twitter.com/NeoYokel/status/1442554265956986882?ref_src=twsrc%5Etfw) ## Drafting I have used this “flow” so extensively for so long that it has come to define the whole of the abstract method in my muscle memory. Observe me browsing the web on my phone in an exhausted or particularly distractible state and you’d probably catch at least one or two completely irrational, inexplicable instances of sharing to my “ [Saved Messages](https://telegram.org/blog/albums-saved-messages) ” Telegram channel, which would be problematic for just about any other link-saving service. Add too many links to Safari’s Read Later list and you’ll end up crashing the browser on your Mac. I don’t even feel comfortable sending links willy nilly to the brilliant bookmark managing/curatorial service Raindrop, these days, after finding out that my [Reading List feed](https://raindrop.io/davidblue/reading-list-13380406) has *actual daily followers*, but there are zero consequences to sending ultimately-worthless or duplicate links to my personal Telegram channel, which has no content limit and is instantly and competently searchable. [image:F5BD1581-D54E-4015-A4B8-510CD3BBD7EA-749-0000005492B18D76/p3K96LiX.png] Over the years, I’ve discovered a bunch of other uses for the Saved Messages channel. As demonstrated in the screenshots embedded above, the [Send to Telegram Action](https://actions.getdrafts.com/a/18E) for my writing app, Drafts, utilizes Telegram for iOS’ Universal Links support (in the format `tg://…` ) to instantly send the whole text of the current document in Drafts to a Telegram channel of one’s choice. I suspect this was intended to streamline posting for admins of public channels, but I’ve used it to quickly “back up” work as well as to transfer edits directly to my (Windows-running) PC. By adding `&to=+[my phone number]` to the end of the action’s URL, I was able to remove the single, unnecessary step of choosing the destination chat. Because text messages are automatically split at 5000 characters, though, I usually depend on the [Share as Markdown File Action](https://actions.getdrafts.com/a/1V4) (the output of which I also send to Saved Messages through the Share Sheet) for the latter function. Anecdotally I’ve also used this method literally just to inspect unknown content passed to the Share Sheet because it’s often **faster than Quick Look** to share to my Saved Messages channel and then immediately open it in the app. (Hilarious, I suppose. Mostly sad, these days.) I found my inspiration for this Post in replying to a [thread on the Automators.fm Discourse forum](https://talk.automators.fm/t/equivalent-to-drafts-but-for-windows/6159) regarding a Windows equivlalent to the same Mac/iOS/iPadOS app Drafts mentioned above. I suppose my reply was a bit off-topic, in retrospect, but still worth including: > I have been using [Telegram](https://desktop.telegram.org/), of all things for years. Notably, if you hit Ctrl + 0 from *anywhere* in the Windows client, you and your cursor are taken to the compose field beneath your personal “Saved Messages” channel, which is searchable, has an extremely high per-message character limit (after which it just automatically splits,) and is ridiculously reliable in saving “drafts” live as you're typing. As in... I have actively tried to lose characters by killing the application and then logging in on my phone and have yet to accomplish losing a single one (among other advantages: zero formatting added to plain text by default – not even line breaks – no total file limit and *2GB* per file limit uploads, absurdly cross-platform, literally more reliable than SMS in poor network conditions.) You can immediately reenter a sent message with `↑` to edit, copy it, escape with just `Esc` and then paste to start a new revision. The feature within Telegram that makes this whole usecase worthwhile was introduced in [June, 2016](https://telegram.org/blog/drafts), and is entitled – appropriately – “Drafts.” Unlike the Drafts function in Twitter’s various native clients, for instance, Telegram’s really is impossible to fool, though it’s not perfect. [Markdown formatting support](https://telegra.ph/markdown-07-07) is inconsistent across Telegram clients – the iOS app being the most woeful – and the few keyboard shortcuts the app supports on iPad are not supported whatsoever on iPhone. ## Universal Clipboard Users familiar with the MacOS + iOS + iPadOS ecosystem should be well-acquainted with “ [Universal Clipboard](https://support.apple.com/en-us/HT209460),” which instantly synchronizes clipboard content across Apple devices. More recently, Android + Windows users have supposedly had access to an [equivalent functionality](https://support.microsoft.com/en-us/topic/seamlessly-transfer-content-between-your-devices-8a0ead3c-2f15-1338-66ca-70cf4ae81fcb#WindowsVersion=Windows_10). To my knowledge, though, truly cross-platform clipboard sync has yet to be realized.[^4] As someone who’s used iOS and Windows regularly – along with Linux, occasionally – for more than a decade, now, I’d put my full weight behind Telegram as the best available solution from (far too much) personal experience. [image:DA9DAA59-1F88-487A-A16A-FBC7803A9DC4-749-0000005492B09475/Qim9gsZZ.png] When first entering a new system, real or virtual, regardless of OS, my very first step upon completion of its setup process has for years been to install Telegram, largely because all of my passwords for any/all given services are huge – 30+ characters, at least – and complex enough that typing them out is both tricky and absurdly time-consuming. Authorizing a new Telegram client, however, is as simple as entering a one-time numeric passcode or scanning a QR code. Managing logged-in sessions (see: the far right screenshot embedded above) is quick, reliable, and includes a handy button to kill all but the current session. Thanks to these considerations, I feel quite comfortable sending myself passwords in Telegram, including .csv exports of whole password vaults, when it’s appropriate, even when working on systems I do not own. For this function, I can’t think of any other service/software capable of replacing Telegram. For day-to-day hyperlink sharing across my platforms, a variety of alternatives continue to come and go. The “Send to [device]” features represented throughout the palette of available web browsers – Firefox, Opera, Edge Chromium, Chrome, etc. – aren’t exactly reliable, in my experience. Most recently, I discovered a service specific to Hewlett Packard machines called “ [QuickDrop](https://www.hp.com/us-en/solutions/quickdrop-photo-sharing-app.html),” which – along with [its accompanying iOS app](https://apps.apple.com/us/app/hp-quickdrop/id1495071972) – does indeed allow me to send files, links, and text between my iPhone and Big Boy HP tower, though even my brief testing was filled with inexplicable prompts to reauthenticate and intermittent hangups, neither of which lend easily to regular use. I still maintain high hopes for [Snapdrop](https://snapdrop.net/), which allows devices to share files and text over a *local* network from within any web browser, but it, too, is prone to frustrating hangups. [image:BA47B369-BA40-40E1-9244-28D5A20EA73C-749-0000005492AFA023/2YhRCO0I.jpeg] ## File Transfer & Cloud Backup Amidst the saga of my failed move to Portland spanning 2017-2019, I ended up losing *all* of my physical file storage – my old desktop and its hard drive, as well as 3 external drives containing a bunch of raw video I probably wouldn’t have gotten around to using, anyway, site backups for *Extratone*, and who knows what else. This loss taught me many grand, metaphysical life lessons (I hope,) but more practically, it affirmed a (admittedly gluttonous) truth about digital assets: if one truly wishes to make a file permanent, they must back it up in as many different places as possible.[^5] Perhaps the single most durable of these in my own computing life to date has been Telegram, which still has no per-account file upload limit and a per-file size limit of *two gigabytes*. The amount of pre-2019 work I’ve recovered solely thanks to Telegram is too great to enumerate here, but a rough draft of my [2018 Thankful for Bandcamp Mix](https://pod.link/1437549809/episode/626a66d3f37807b69c59f56faa4d3b94) comes immediately to mind. How exactly the service is able to maintain this virtually unrestricted storage, infrastructurally, borders on *don’t want to know* status. My own net server impact as a user is fairly difficult to estimate, but I’d bet real paper currency it’s between 50 and 100 GB, the vast majority of which I uploaded several years ago. Within any mainstream cloud file storage service – Dropbox, Google Drive, Box, iCloud, etc. – the cost of storing that amount *over time* would have added up to a not-insignificant chunk of change. I don’t want to advocate for Telegram as a cloud storage replacement for loaded cheapskates, but for working-class users on a $0 budget, it can be counted upon to keep large files in a relatively shareable, ultra cross-platform, and super-accessible manner. Students, especially, should take note. [image:8E69CB73-ED5A-445C-88E3-DC466152985E-749-0000005492AE8B02/jfBVJqyw.png] ## Community At this point in my life, I must acknowledge to both readers and myself that **I am completely inept at community organization**. Especially when it comes to grand suggestions about how I suppose online communities might be ideally-run or just better served by particular software environments and configurations, I have literally received *zero* positive feedback, and not because I haven’t spent significant time positing publicly within the space. I spent the first half of my twenties trying to Peter Pan an independent online music magazine into existence, written by fresh-minded youths on the fringe at 140% throttle and managed to accomplish startlingly little for my all my invested time and gumption. The relevant component of that tale was a significant and all-out commitment from the beginning to run the whole project entirely within Discord. The one absent activity throughout my years of Telegram use – save for intermittent correspondence during one relationship – has been *messaging other users*. I managed to find and participate in a few group chats – “ [Telegram iOS Talk](https://t.me/TelegramiOStalk) ” and [It's FOSS' official channel](https://t.me/itsfoss_official), notably – in my preparation/research for this post. I’ve discovered plenty of new clever bits, like the button to jump to one’s nearest mention in a chat. I’ve also done my best to actually apply some [much-needed administrative attention](https://t.me/columbiamo/7774) to [my years-old attempt](https://reddit.com/r/columbiamo/comments/c4na0v/local_telegram_group_chat_for_columbia) at creating the [definitive location-based local group chat](https://telegram.org/blog/contacts-local-groups) for the Mid-Missouri area where I live. Truthfully… It [hasn’t exactly gone as I’d hoped](https://reddit.com/r/columbiamo/comments/q0843f/local_telegram_group_chat), but the failures have been all my own. I have yet to find a satisfactory balance in terms of moderation bots, so I’ve (as of this writing) resorted to manually removing the (significant) spam bot traffic by hand. Also, I must admit that I’ve never had to do so more than once or twice on *Extratone* ’s public Discord, despite how much more circulation its public, open invite links have received. In the past few weeks, I’ve had the privilege of watching *MacStories* relaunch their premium membership program, *Club MacStories*, on their incredible bespoke CMS. Part of this launch included their first exclusive community space, on Discord, which has been deeply rewarding for me, personally, but has also highlighted some serious limitations of that service which I not-so-long-ago [advocated so heavily for](https://bilge.world/discord-slack-comparison). Namely, **hyperlinks to specific messages** within Discord are a hopelessly problematic endeavor. Even for a public server like *Extratone* ’s, navigating to a message link [like this example](https://discord.com/channels/107272441889341440/107272441889341440/893958033401593898) will require any and all users to log in to Discord on the web, which – on mobile devices, especially – seems to struggle to navigate to the precise position of the subject message after you’ve successfully done so. Slack’s public message links are smart enough at least to prompt users to open them Slack for iOS, but Telegram’s system for message links in public channels and groups makes both services look daft. Telegram message IDs are purely chronological from their channel/group chat’s creation – the first message in a channel or group chat is `1` and the 15th is `15`. Together with the simplicity of channel/group chat IDs, which are just their alphanumeric @ names, this format makes URL schemes for Telegram message links super malleable and easy to understand. The sixth message posted in the [@extratone channel](https://t.me/extratone), for instance, can be found at [https://t.me/extratone/6](https://t.me/extratone/6), which even those without Telegram installed can view natively within their web browser. Within Telegram clients, said links are ultra-responsive, regardless of whether or not one had previously “joined” the channel or group containing the message. [image:B66BABFC-B050-4B69-B86D-839EF2137412-749-0000005492AD4B01/moymK7EY.png] In *MacStories* ’ case, there’s another essential point of reference. When I pinged the staff in their Discord regarding their experiences running [their now-abandoned Telegram channel](https://t.me/MacStories), John Voorhees replied: > I don't really have anything to say about Telegram one way or the other. We ran it for a short time 5 years ago as an experiment and it didn't stick. I wasn’t yet a subscriber in those days, but little details like [behind-the-scenes voice messages](https://t.me/MacStories/281) are definitely missed. [Federico’s initial audio introduction](https://t.me/MacStories/39) describes a potential for the channel I wish more readers had enjoyed. They’re much more intimate, even, than the publication’s new exluclusive Town Hall events on Discord, which doesn’t make much sense, I know. [image:625C8952-7D94-46FE-967E-FE9221F6C0CC-749-0000005492AC21C6/v1zhWmwN.png] ### Streaming Admittedly, another attention-grabbing feature that contributed to my finally getting around to this Post was [the introduction of “Live Streams” for channels and groups](https://telegram.org/blog/live-streams-forwarding-next-channel) (really just a slight augmentation of their [“Voice Chats 2.0” features](https://telegram.org/blog/voice-chats-on-steroids) ) at the very end of this past August. Discord, of course, was way ahead of Telegram in implementing Voice Chats and Screen Sharing [back in October of 2017](https://youtu.be/mMloc55o1jc), and it's long since become one of the services' core features. However, *recording* live content of any kind is not natively supported, though there is a [handy utility bot named Craig](https://craig.chat) who can accomplish this for you. For the sake of transparency, I should admit that not a single one of my live streams on Discord has actually included any viewership, but I have participated in a handful of others’ and viewed a couple dozen. > btw this is what happens to Discord's desktop app any time I try to join/create a call or stage or join a voice channel. [@discord](https://twitter.com/discord?ref_src=twsrc%5Etfw) [pic.twitter.com/t5atAFtyhH](https://t.co/t5atAFtyhH) > — ※ David Blue ※ (@NeoYokel) [October 15, 2021](https://twitter.com/NeoYokel/status/1448837428534521858?ref_src=twsrc%5Etfw) For the past few months or so, participating in any sort of voice or video chat in Discord desktop has led to [a spectacular relaunch loop](https://twitter.com/NeoYokel/status/1448837428534521858) that can only be solved by reinstalling the application, entirely.[^7] It’s not that Discord for iOS’ now full support for such streaming – both in terms of participation and simple viewership – isn’t impressive, but honestly, *Telegram* for iOS’ superiority should be immediately obvious to anyone who’s tried them both, recently. Not just in pure capacity’s sense, but in moderation tools, shared link customization, and, obviously, native recording support. I’ve embedded two recordings of different test streams of mine, below. [The first](https://t.me/extratone/7054) (embedded in [YouTube form](https://youtu.be/uhXZZBl0fn8),) was streamed from both my Surface Laptop 2 and iPhone 12 Pro Max. [The second](https://t.me/extratone/7196) is a very brief recording (in native form [directly from The Psalms’ GitHub Repo](https://github.com/extratone/bilge/raw/main/video/TelegramiOSLiveStreamTest.mp4) ) of a stream I did *just* from the share screen function of my phone, in the wrong orientation.[^8] Below is a screenshot of the recorded file’s metadata (as provided by Telegram for Windows.) [image:4B8C8653-9610-4B6F-A2D7-E075BC6E6E5C-749-0000005492AAFD9E/oDQqSYHF.png] As you might note, there’s definitely something to be desired from the quality of Telegram’s stream recordings, especially in its included audio. I find it a bit strange that it’s recorded in 48 kHz just to be compressed down to *46kbps*. When you’ve stopped a recording, you’ll receive both the video file and just the extracted audio in an .ogg file. Unfortunately, the latter is no less compressed than it is combined in the video file. (Both are sent to one's Saved Messages channel immediately upon stopping a recording, from where they can be forwarded virtually anywhere.) Aside from a boost in audio quality, though, Discord’s default 720p base resolution is matched by Telegram. Via server boosts, this figure can be upgraded significantly, though the end result is quite costly. According to [a not necessarily trustworthy site](https://clutchpoints.com/discord-server-boost-cost/), accounting for Discord’s [recent reduction in boost requirements](https://www.facebook.com/discord/posts/4524749577592737), here’s the pricing laydown to boost a server (per month:) > …a total of $34.93 for Level 2 and $69.86 for Level 3. That’s $24.45 for Level 2 and $48.90 for Level 3 for Nitro subscribers. Among quite a few other abilities, here are the extracted audio/video requirements per server level **only**: 1. 128kbps audio/720p video upped to 60fps 2. 256kbps audio/1080p 60fps video 3. 384kpbs audio/no video boost So, if I had the spare change to maintain a level 2 boost for *Extratone* ’s Discord server, myself, I could do so for $34.93 per month, which would allow me to *stream* (not necessarily *record* ) in 1080p/60fps video and 256kbps audio to up to [50 viewers](https://support.discord.com/hc/en-us/articles/360040816151-Go-Live-and-Screen-Share) (as of this writing.) Theoretically, at no cost, I can stream with virtually identical features (though I prefer Telgram's) to my Telegram channel to [infinitely many users](https://telegram.org/blog/live-streams-forwarding-next-channel#unlimited-live-streams) in 1280p/30fps with absurdly low-quality audio and share/manipulate recordings natively/instantly from within any Telegram client. If I were All Powerful, I would make all the members of my “ [Family Tech Support](https://bilge.world/ios-15-family-review) ” iMessage group install Telegram on their devices so we could use it, instead. I would also make them collectively attend occasional live streams, where they could ask questions verbally of my demonstrations sharing my own screen, or even share their own screens to demonstrate an issue or provide context for a question. The reality, though, is that I do not expect any sort of anticipation for my personal live help events on any platform, which innately suggests Telegram over Discord, I'd argue, for when I *do* stream such content, given its total lack of investment.[^9] [image:05E8B48B-DD1D-4BE0-8DD1-44CE5C435E36-749-0000005492A99ACA/FRj5GGPN.png] ### Location Sharing One of Telegram's most unique (and potentially powerful, I believe) community features is [Live Location Sharing](https://telegram.org/blog/live-locations) on its mobile apps. Borned by Siberian native developer [Roman Pushkin](https://twitter.com/romanpushkin), LibreTaxi is the single truly exciting open ridesharing alternative I've ever encountered.[^10] As [an item for CBC radio from 2015](https://www.cbc.ca/radio/spark/346-biometrics-audio-intelligence-and-more-1.3987746/the-man-who-wants-to-out-uber-uber-1.3987987) (among other assorted coverage compiled [here](https://telegra.ph/LibreTaxi-press-coverage-07-14) as of July, 2017) explains, it utilizes Telegram's live location sharing functions to act as a decentralized Uber/Lyft alternative in the form of [a bot](https://telegram.me/libretaxi_bot), which connects users needing a ride with users providing them, free of any fees or service charges. Discourse surrounding LibreTaxi has been silent for years, but [this channel](https://t.me/s/libretaxi_all) tracking all LibreTaxi orders in realtime is proof that it *really is* helping folks get around. As for the persistence of *Live* location-sharing, I can vouch for its reliability on the Android side, at least, as per my aforementioned experience with a partner who used Telegram and shared their location with me for both safety and convenience. As someone with the most immense possible privilege regarding safety and dating, I would also like to suggest sharing one's live location with a private Telegram group chat with friends as an alternative to services like [Tinder's Noonlight](https://www.help.tinder.com/hc/en-us/articles/360039260031-What-is-Noonlight-). [image:0CB23891-AE11-499F-8595-106EE7359B12-749-0000005492A82A69/TbPFRPnG.png] ### Permanence I've long evangelized (and extensively used) Alexey Golub's [Discord Chat Exporter](https://github.com/Tyrrrz/DiscordChatExporter) to make beautiful, stylized archives of Discord channels and/or entire servers for safekeeping. Telegram's native [Chat Export Tool](https://telegram.org/blog/export-and-more) came just a year after Alexey pushed [version 1.0 of the tool to GitHub](https://github.com/Tyrrrz/DiscordChatExporter/releases/tag/1.0.0), in August of 2018. In features, they're very similar utilities: both can export in either stylized HTML or data-only JSON formats between infinitely-configurable time/date constraints. Again, I wouldn’t know how much external backup of community activity actually weighs in the day-to-day operations of large online communities. I know I personally find it comforting to have a swift, polished method of exporting *text*, especially, living in this era of [blatant disregard for users of suddenly-abandoned online services](https://github.com/extratone/bilge/issues/79). [image:E40EF337-2639-4B13-B044-A91251EAF4A0-749-0000005492A6B412/r0WpvFQr.png] ## Transparency Opacity One of my primary justifications for the time spent in composing this Post has to do with the immediately-available discourse surrounding Telegram on the web, which is wholly incomplete, at best. The main obstruction, from my perspective, is the subject of **encryption**. Even within publications as legitimate and frankly out-of-scope as *Forbes*, one can find an article like my chosen example, from February of this year, entitled “ [No, Don’t Quit WhatsApp To Use Telegram Instead—Here’s Why](https://www.forbes.com/sites/zakdoffman/2021/02/13/why-you-should-stop-using-telegram-instead-of-whatsapp-use-signal-or-apple-imessage).” It was written to address a mass “ [exodus](https://www.theguardian.com/technology/2021/jan/24/whatsapp-loses-millions-of-users-after-terms-update) ” of users from WhatsApp after [a grandiose misunderstanding](https://www.theverge.com/2021/1/12/22226792/whatsapp-privacy-policy-response-signal-telegram-controversy-clarification) (?) of its Privacy Policy caused a noisy controversy ( [catalyzed by Idiot Melon, himself](https://twitter.com/elonmusk/status/1347165127036977153).) I've been unable to find the added/altered text, itself, in my brief reading, but it's not as if the happening wasn't thoroughly covered elsewhere. It's not that I doubt the expertise of “Cybersecurity Expert Zak Doffman” when he notes “Telegram’s cloud-based architecture is a serious risk when compared to the end-to-end default encryption deployed by Signal and WhatsApp, which also uses Signal’s protocol,” nor that I do not believe the following details are as true as truth gets: > All group messages on Telegram are only encrypted between your device and Telegram’s cloud, your message history is stored on Telegram’s cloud, and if you ( [unwisely](https://www.forbes.com/sites/zakdoffman/2021/01/30/stop-using-this-dangerous-whatsapp-setting-on-your-apple-iphone-or-google-android-phone/) ) transfer your WhatsApp chat history to Telegram, then this is also stored on its cloud. Make you sure understand that Telegram has the decryption keys to any of your data that you store on its cloud... To this argument and the many variations of it present in Telegram for iOS' [App Store reviews](https://apps.apple.com/us/app/telegram-messenger/id686449807), [obscure German PeerTube servers](https://tube.tchncs.de/w/2d958ef9-1be4-477c-bc13-852ec6391487), and even within [public chats on Telegram, itself](https://t.me/crackheadlegit/409), my formal response for the record is: *Okay! Affirmative! Received and understood!* I must acknowledge – given my own introduction to the service, narrated above – that Telegram's brand is vaguely associated with privacy and security. I can see that the second of nine duckies in the Ducky Grid on the root of telegram.org sits above the subhead “ **Private** ” and a caption with the following claim: “Telegram messages are heavily encrypted and can self-destruct.” (The seventh ducky's subhead is “ **Secure**.“) Continuing on in Doffman's *Forbes* article, we find an overview of several vulnerabilities found throughout Telegram's native clients by Dhiraj Mishra – surely they with the most ghastly typographical preferences in all of cybersecurity – on their blog, *Input Zero*.[^6] The [specific example hyperlinked](https://www.inputzero.io/2020/12/telegram-privacy-fails-again.html) concerns a bug in the MacOS client that resulted in “the application leak[ing] the sandbox path where [a sent audio or video message] is stored in '.mp4' file.” (The whole of the ghastly-typewritten summary is embedded below in screenshot form.) [image:7E30D98A-2667-455A-9ABD-BF9A56CA42E0-749-0000005492A4E170/a0xgY5cJ.png] Just to be clear, I am being sincere when I acknowledge that these are genuinely problematic issues that no doubt affected real Telegram users who depend upon its Secret Chat function. Even something so benign as the file path to local media storage on my device is not something I'd want piggybacking my otherwise-anonymous, NDA- and/or law-breaking messages to a journalist, for instance, but frankly, I don't know of any journalists who maintain public Telegram contacts, anyway. Come to think of it, I don't think I've *ever* seen a Telegram username publicly associated with a journalist. Indeed, the overwhelming majority of anonymous modern messenger service tip lines advertised by news organizations and news people which I've come across have all linked to Signal. In this particular case, then, Mr. Elon’s advice is sound. The question I would like to surface: **what if I have no use for encryption or privacy across my purposes for Telegram**? *All* the channels I have ever engaged with have been public, and those private ones I’ve come across have either been shady crypto spam channels or shady porn channels. I realize this doesn’t exactly reflect positively on Telegram’s community, but – as I argued regarding Discord, long ago – why let the community or even the app’s branding, itself, confine how you use it as a utility? ## A Hearty Foundation My thinking while drafting this argument kept returning to a single, simple realization: **in age, Telegram is just two years ahead of Discord**, yet the various software distributed by the two organizations for their respective services represent quite disparate opinions in design terms. [Discord's desktop “application”](https://discord.com/download) is an Electron app – [Telegram's](https://github.com/telegramdesktop/tdesktop) is virtually pure C++. [Telegram's iOS app](https://github.com/TelegramMessenger/Telegram-iOS) is mostly written in Objective-C (I'm to assume the 30.8% Swift code number on the repo as of this writing is mostly comprised of its widgets/other recent iOS-specific integrations,) while Discord's is mostly ???. That is, because Discord's software is proprietary and the source is closed, all I can tell you is that it was written in React Native [as of December, 2018](https://blog.discord.com/why-discord-is-sticking-with-react-native-ccc34be0d427). What I *can* tell you is that the current build of [Discord for iOS on the App Store](https://apps.apple.com/us/app/discord-talk-chat-hangout/id985746746) weighs in at 153.2 MB – significantly less than [Telegram's](https://apps.apple.com/us/app/telegram-messenger/id686449807) 185.1 MB. As I've noted plenty of times this year, **I am not a software developer** and therefore I can't promise you an app's initial payload size is actually all that relevant, but I was surprised to see Telegram wasn't slimmer than Discord, given how the two apps behave and my previous experiences with the platform, this year. [image:E9C662FF-3CDE-4864-A68C-67D0566A9731-749-0000005492A2B4CC/BecGI6kg.png] Returning to the topic of their age… In its eight operating years, Telegram has embarked upon – and *actually completed*! – a gargantuan amount of projects. [Telegraph](https://telegra.ph/), the CMS, its [Web](http://web.telegram.org/), [Android](https://telegram.org/android), and [Linux](https://itsfoss.com/install-telegram-desktop-linux/) clients, [embeddedable comments widgets](https://comments.app), its [online theme creation tool](https://themes.telegram.org/), and on and on. Across their various types, Telegram’s software is universally simple, frugal, robust, and easy-to-use. Frankly, by contrast, Discord has done *nothing*? Though you’ll find openly-available solutions to accomplish much of what you can on Telegram in terms of moderation and other utilitarian concerns, like the aforementioned Craig bot, they are *all* the work of third-parties. While Discord the *company* is much more [transparently profiled](https://discord.com/company) on the web than “Telegram FZ LLC,” the latter’s actual work is very well documented [across GitHub](https://github.com/TelegramMessenger). [image:92993B42-4360-4BEF-9D61-3F61EABC7DFB-749-0000005492A02468/DFQzGGeZ.png] If you’ve stuck with me this far, perhaps it’s not too much to ask that we retreat a bit and ask ourselves **what we’d truly like prioritized in community chat software for 2021**. I really do show my age in my bias, here, as someone just old enough to have had extensive experience using IRC,[^11] I think there’s a less-than-adequately discussed division happening which its successors might benefit dwelling on. IRC was extremely frugal and it was easy to find a freeware or FOSS IRC client for one’s given platform which was well-optimized to sit in the background of their desktop operating system, completely untouched and barely acknowledged visually for days… weeks… months at a time. It was easy to find oneself a member of a dozen or so IRC channels for specific interests, projects, or organizations averaging a dozen or so actual updates/pots per day, each. It was distinctly low pressure – many of my channel memberships functioned more like a wire service or, much more contemporarily, like an RSS aggregator, than a local party line. [image:4799ED78-979C-4258-8C9D-5001C98922B8-749-00000054929CE147/FltrCV6Z.png] As I see it, the ultimate shift dividing those solutions from these is the big fucking obvious one: IRC was conceived in a world where computers were mostly static objects associated by their intended use and physical dimensions with the referential, unmoving waypoints around which *we* orbited (the kitchen counter, the desk in your study at home, parallel series of workstations within the public library, etc.) The *entirely* contrasted needs of community engagement on a *handset* should have – in my opinion – done much more to break apart these communal contexts than they have. As prolifically and extensively as I have used Discord for iOS since before its official release, even, it is hopelessly compromised by its loyalty to the PC gamer’s paradigm. My 12 Pro Max is not just *capable* of keeping 100 Discord channels up-to-date in the background as I move about the world – it is all too fucking *eager*, and for not a one rational explanation. Going on down this vector eventually leads to an adjacent argument I’ll name but otherwise save for later: it is literally **over a decade** past the time when we should have ceased celebrating the fact that mobile computers had matched and outdone desktop computers! We have to snap the fuck out of our obsession with lugging desktop computing alongside our persons and refocus entirely (once again) on exploring what “mobile computing” can/should mean, going forward. Please Gourd, help us do so ASAP. Unlike my heroes in most (if not all) of these tedious comparisons, I would *not* say Telegram is *the single software manifestation of total clarity in direction* within the subject, or anything, but in the area where it fails along with the rest of them, it has comprehensively iterated, invested in trial and error, and eventually produced tools that remedy the disparate gluttony. How swiftly and easily one can find one's installation full of media files, for instance, after *any* time spent exploring within its mobile apps. It very well could have been mostly chance that contributed to Telegram's current lead in terms of thoughtful design decisions and development investment toward **mobile-first optimization**. Perhaps it was their comparative longstanding Hype Famine, especially in the United States, these past few years. Maybe Discord hasn't built anything because they simply can't hear each other over the buzzwords overflowing their name in mainstream Discourse so abruptly thanks to The Big Virus. Telegram's story certainly *stands out*, though the voice of its creator, Pavel Durov, actually *telling* this story at length can now only be found [on WIRED UK's MixCloud account](https://www.mixcloud.com/wiredUK/telegrams-pavel-durov-podcast-256), in [episode 256 of their WIRED Podcast](https://www.wired.co.uk/article/episode-256). Telegram was experiencing the peak of its presence in mainstream Western news media, who just *would not* let go of the fact that some leader of some terrorist organization recommended Telegram to someone for something at some point in time.[^12] Listening back, it's the nomadic “decentralized” beginnings of the organization – which I had forgotten entirely – which sounded a big, resonant Parallel Alarm in my brain: for very different reasons, [Bandcamp also operating without an office](https://bilge.world/bandcamp-streaming-music) (from a public library, charmingly,) at that time. “Can there only be one winner in the messaging wars?” asks David Rowan, which Pavel – in the deliberate, uncomfortable-sounding tone he uses throughout the interview – answers first noting a *real truth* for actual users: we tend to end up with a billion, each grouped generally by types of relationships. iMessage is for your family and local friends, Facebook Messenger is for your school group project, IRC and Element are for your insane, privacy-obsessed Linux friends, and Telegram is for [unsolicited video chats of worm tubs](https://twitter.com/ammnontet/status/1449594872139186181).* *For more, up-to-the-minute information on Telegram as well as Configuration files from me, see my [Telegram Raindrop Collection](https://raindrop.io/davidblue/telegram-20593542) (embedded below,) and/or [this post's corresponding GitHub Issue](https://github.com/extratone/bilge/issues/228). [1] I still have not accepted this, by the way. I’m still back there. [2] If I were to be 100% sincere, I might ask you to consider that this (hilariously brief) intent was a method of coping with the great existential truths I was facing for the first time. [3] I *definitey* was, though. For whatever reason, I do not remember associating the term “automation” with such activities, but I just found the “receipt” for my “purchase” of [IFTTT for iOS](https://apps.apple.com/us/app/ifttt/id660944635)… From July, 2013. [4] I am currently working on a less-than-instant solution using iCloud and CopyQ’s clipboard sync function. [5] I would’ve said “one can never have too many backups,” but the result of such thinking is ridiculously wasteful and not something I actually want to encourage. [6] I'm almost positive I've heard of/been linked to this blog before, which is perhaps only notable in that I managed to keep my typographic opinions to myself. [7] Not that the process of doing so could be any easier on Windows. [8] It’s also worth nothing that [word of screen sharing framerate issues](https://t.me/TelegramiOStalk/104997) was circulating at the time of this recording. [9] Simulcast services like [Happs](https://happs.tv/@DavidBlue) – which still exists, astonishingly – offer an intriguing utility for those intending to stream regularly and wishing to do so across multiple platforms. It does not, at the moment, support either Telegram or Discord. [10] Speaking as someone with [actual extensive ridesharing experience](https://dieselgoth.com/volkswagen-jetta-sportwagen-tdi-review.html), notably. [11] Yes, there are some fellow Open Source Folks who’ve frankly struggled to let IRC go. It was an amazing protocol and will always be intertwined with the very first layed bricks of what we’d call the Social Web, but my friends… I sincerely think we should all try our hands at ham radio, instead. I think that would legitimately be a better use of our time than trying to implement two-factor authentication for IRC in this year of our spiteful Lourde 2021. [12] Disparaging Telegram for this is akin to shitting on Google because it is or was almost certainly the Taliban's favorite search engine, no? [Discuss...](https://remark.as/p/bilge.world/telegram) [#software](https://bilge.world/tag:software) [#media](https://bilge.world/tag:media) [I Trust Telegram — The Psalms](https://bilge.world/telegram?pk_campaign=rss-feed) # Telegram Extras — The Psalms [image:AA6C11AA-790A-4C77-BFD8-C9CF034555B0-749-0000005489BA03EC/151065307-88e3eaa0-ce93-4a89-b91c-c50fb649cc4d.png] ## Shortcuts, bots, and some other methodologies discovered since my Big Telegram Post. Since I published “ [I Trust Telegram](https://bilge.world/telegram),” the messenging service has been *in the news*. Their launch of [Sponsored Messages](https://t.me/s/durov/172) predated its publication, but I omitted any mention of them because I’d yet to see any meaningful effects on my own use of the service. All I’ll say now: nearly four months of daily use later, **this is still the case**. I’ve published a few Siri Shortcuts and a Drafts action in the interim, though, and thought these few additional discoveries worth another Post. ## Siri Shortcuts [image:B292A55C-4620-4804-9A7A-E934099E4549-749-0000005489B891CE/152031447-334443d7-f038-4518-b65c-2e3305597bdd.png] ### [Seek Telegram Message by ID](https://routinehub.co/shortcut/10930) As [I noted in the Big Telegram Post](https://hyp.is/miMJ-oOQEeyVkGegS1hLbw/bilge.world/telegram), navigating to/referencing specific messages in Telegram is ridiculously easy due to its URL format: `https://t.me/[Channel@]/[Chronological Message ID]` My Seek Messages by ID shortcut will prompt you to set defaults for both Channel @ and message number upon installation. This could be useful for channel/group administrators who need to reference/update a message containing community rules, but specifying them is entirely optional. Otherwise, the shortcut will prompt you to enter a channel or group’s @ (minus the symbol itself,) followed by the numeric ID of the message you’re looking for. It will then copy the complete URL to the clipboard and open it in [Telegram Messenger for iOS](https://apps.apple.com/us/app/telegram-messenger/id686449807). I’ve found it handy when joining a new channnel/group to quickly indulge my curiosity about its first few messages. [image:8EC8F5EF-C3E7-4383-A060-93140F3A6725-749-0000005489B6FD20/152036933-ec106c9c-474d-4c5a-ab0e-ad7da6a97f7a.png] ### [URL List ⇨ Telegram](https://routinehub.co/shortcut/10926) Effectively, this shortcut allows you to send links to a set of Safari 15 tabs to a contact of your choice in Telegram. It’s the singular one of the shortcuts shared in this Post that makes use of Telegram Messenger for iOS’ native Siri Shortcuts actions, and is therefore the most finnicky. In the first take of [my video demo](https://t.me/extratone/9978), it timed out trying to send 200+ links to my Saved Messages channel, but was successful in the second (the take I published) in sending just four links. Upon each run, the shortcut will prompt you to select a contact. The selection *must* be a phone number, ideally in International Format.[^1] It will then parse a list of URLs in your clipboard and send them one at a time via Telegram’s native action without opening the app. [image:CBA85871-B0DC-4383-9559-981EAE82C21B-749-0000005489B56CA2/152039638-f5e6e817-3b36-4cc2-bf74-184ad6dde9c4.png] ### [Clipboard ⇨ Telegram Message](https://routinehub.co/shortcut/10929) This one makes use of Telegram Messenger for iOS’ URL scheme, which isn’t really documented properly anywhere. `tg://msg?text=[Content]&to=[TargetPhone#]` Upon installation, the shortcut will prompt you to specify a target phone number in International Format. In the following runs, the shortcut will open Telegram to the conversation with the phone number you’ve specified (use your own phone number to set it to your personal Saved Messages channel) with the contents of your clipboard in the text entry field. You’ll need to hit `Enter` or tap the Send Message button to actually send the content. ## Other Integrations ### Drafts Users of Agile Tortoise’s [Drafts for iOS](https://apps.apple.com/us/app/drafts/id1236254471) can use my [Send Draft to Telegram Saved Messages action](https://actions.getdrafts.com/a/1u5) to do exactly that. > a widdle demo. [pic.twitter.com/z2S2pu2LNc](https://t.co/z2S2pu2LNc) > — David Blue ※ (ɥ̶͇͖͉̠̰̟͔̒́̆ͧ͋̀̀ ????) (@NeoYokel) [February 1, 2022](https://twitter.com/NeoYokel/status/1488573937223094275?ref_src=twsrc%5Etfw) Like the last Siri Shortcut above, the action utilizes Telegram’s URL scheme to send the contents of your current draft to a Telegram conversation with a phone number of your choosing. (Remember to change the action’s placeholder!) If you’d like to specify a different conversation, [this action](https://actions.getdrafts.com/a/18E) published to the Action Directory by user maique omits the phone number bit of the URL scheme – `tg://msg?=[DraftContent]`. [image:4342E64F-9E98-4C60-9D27-487721499045-749-0000005489B377CC/152044387-3302150d-a9b1-44a4-a2fa-a48d35d29faa.png] ### TextExpander Group and/or channel administrators, especially, might find my public [Telegram-specific TextExpander snippet group](https://app.textexpander.com/public/de52c54ef169a96393d50cb4752706ce) to contain some useful inspiration. `.tid`, for example, will help you construct a Telegram message link by ID just as the first Shortcut in this Post will, while `.scheme` will replicate the app’s URL scheme. [image:423B0A0F-AA1C-456B-A99C-86D981464162-749-0000005489B19A7F/152045888-b10c1a1a-d924-479d-8f04-24d4efa688a1.png] ### Tot If you happen to have [Tot Pocket](https://apps.apple.com/us/app/tot-pocket/id1498235191) on your iOS device already, I’ve found it a particularly ideal place to compose Telegram messages with formatting and hyperlinks considering its similar format limitations. Drafts users can use my [Append to 7th Tot Dot action](https://actions.getdrafts.com/a/1uL) to send draft content to the last Dot directly. Some markdown formatting will need to be altered – #-headings aren’t supported by either Tot or Telegram, for instance – but formatting can be directly carried over to Telegram in Rich Text format by selecting all in Tot and copying, as displayed in the screenshots embedded above. ## Bots [image:18CDE4CE-A3AC-4A69-80B2-52BF28323B30-749-0000005489AF97D2/152048357-bba6ddb6-eb0d-4139-ba6e-79b69ef9651a.png] ### [Raindrop.io Bot](https://t.me/raindropiobot) As far as I’m concerned, @OlegWock’s [Raindrop Telegram Bot](https://github.com/OlegWock/raindrop-telegram-bot) is an absolute must for any users of the Raindrop.io bookmarking service. Not only does it allow one to send Raindrop bookmarks directly to a chat when in inline mode (as demonstrated in the above screenshots) – it is also *the* quickest method of saving images, videos, and documents to one’s Unsorted Bookmarks list on an iOS-running device. As I [mentioned in the Big Post](https://hyp.is/bGmFuoOgEeyp5F9tAvJq-w/bilge.world/telegram), Telegram’s sharesheet integration remains by far the least discriminate of any such integration on iOS. [image:DE83130F-39DC-46AC-9DCC-957BAE6C4314-749-0000005489AD050A/152051128-e6a3d557-e2d5-4c84-b881-a35825b73375.png] ### [Rose](https://t.me/MissRose_bot) I’ve gone through the standard gauntlet of freemium administration bots for [my experimental local Telegram group](https://t.me/columbiamo). The one I think I’ve settled on, though, is by far the [best documented](https://missrose.org/guide/getting-started/adding-rose/) and most inuitive I’ve come across. Miss Rose comes conservatively-configured of the box in a sense that one will experience better results than its “competitors” in moderating a small group like mine just be leaving the defaults in place. My personal favorite functions are `/notes` – which allows one to save group documents that can be recalled with `/` or `#` – and `/export`, which exports the entirety of one’s options (including those notes) as a .txt file. (See the rightmost screenshot embedded above.) ## Other Insights ### Telegram as Task Manager I had absolutely no idea that [Reminders](https://telegram.org/blog/scheduled-reminders-themes) existed in Telegram until a few weeks ago. When sending to one’s Saved Messages channel, holding down on the Send Message button will display the option to `Set a Reminder`. Anything that can be sent can be added as a reminder, including – in my case – .exe files of programs I’d like to install on my PC later. Frankly, I can’t think of any other task management/reminders application that offers this ability – paid or otherwise. [image:8D112B52-0167-4B77-A24E-013D2F368FD5-749-0000005489A94ADA/152087363-ab3fb744-d905-4128-ad9b-80a5a2e9530c.png] ### The macOS App A recent update to the [Telegram for macOS app](https://apps.app.com/us/app/telegram/id747648890) has rendered it by far the most beautiful way to use the service. ## Themes I’ve spent quite a bit of time archiving third-party Telegram themes, lately. Below is a list of installation links to some of my favorites which I’ll do my best to keep updated. Otherwise, refer to [this Telegraph post](https://telegra.ph/Superb-Telegram-Themes-for-iOS-01-27) or type `#themes` in [Extratone’s group chat](https://t.me/extratoe). 1. [𝘞𝘐𝘕𝘋𝘖𝘞𝘚](https://t.me/addtheme/windowseternal) [𝘌𝘛𝘌𝘙𝘕𝘈𝘓](https://t.me/addtheme/windowseternal) 2. [Allo4Life](https://t.me/addtheme/allo4life) 3. [Fresh Mint – Tweetbot 6](https://t.me/addtheme/freshmint) 4. [Greyhound](https://t.me/addtheme/greyhound) 5. [Space Piss](https://t.me/addtheme/spacepiss) 6. [Vampire Reference](https://t.me/addtheme/vampirereference) 7. [Signals](https://t.me/addtheme/signals2022) 8. [Futuretab](https://t.me/addtheme/futuretab2022) 9. [Slander Crimson](https://t.me/addtheme/slandercrimson) 10. [Academia](https://t.me/addtheme/academia2022) 11. [Hermitage](https://t.me/addtheme/hermitage2022) 12. [Divorced Empress Navier](https://t.me/addtheme/navier2022) 13. [Roro Jump](https://t.me/addtheme/rorojump2022) 14. [Dark, Post-Academia](https://t.me/addtheme/postacademia) 15. [UOrange](https://t.me/addtheme/uorange) 16. [Vaporfucked](https://t.me/addtheme/vaporfucked) 18. [Dark Shell](https://t.me/addtheme/darkshell2022) 19. [Honey Highlight](https://t.me/addtheme/HoneyHighlight2021) 20. [Mirage on Kimberly](https://t.me/addtheme/miragekimberly) 21. [Lynch on Rhino](https://t.me/addtheme/lynchrhino) 22. [Mars Orange](https://t.me/addtheme/marsorange) 23. [Sepia Blues](https://t.me/addtheme/sepiablues2022) 24. [Strawberry Night](https://t.me/addtheme/StrawberryNight2022) 25. [Tapbots](https://t.me/addtheme/tapbots) 26. [Green Dark](https://t.me/addtheme/greendark2022) 27. [Puaro](https://t.me/addtheme/puaro2022) 28. [DarkQD](https://t.me/addtheme/darkqd2022) 29. [Mineshaft Gold](https://t.me/addtheme/mineshaftgold2022) 30. [Jellygram](https://t.me/addtheme/jellygram2022) 31. [Japan Serenity](https://t.me/addtheme/japanserenity2022) [1] Ex: `+1 (573) 823-4380` [Discuss...](https://remark.as/p/bilge.world/telegram-extras) [#software](https://bilge.world/tag:software) [#automation](https://bilge.world/tag:automation) [#configuration](https://bilge.world/tag:configuration) [Telegram Extras — The Psalms](https://bilge.world/telegram-extras?pk_campaign=rss-feed) # Text Replacement — The Psalms [image:A73B397C-889B-480C-BAD7-9BF467A3A68D-749-0000005483450934/152093082-5a6df76f-c1f1-45fa-a38a-d03f57a93c8f.png] If you’re like me, your cumulative experience of typing on iPhones for more than a decade is probably saturated with needlessly disruptive, unsolicited, and inaccurate autocorrection. Certain proper nouns and a dozen or so quasi-localized dialectal terms in our day-to-day writing/speech have been treated by the system's autocorrect as foreign objects, regardless of how frequently we use them. Technically, this isn't supposed to happen, but – if you've got the patience and the time – there's a native feature across iOS, iPadOS, and macOS that allows you to declare your own user dictionary called [Text Replacement](https://support.apple.com/guide/iphone/use-text-replacements-iph6d01d862/ios). You can find the Text Replacement menu on iOS – as pictured in the screenshot embedded above – by navigating to `General ⇨ Keyboard ⇨ Text Replacement` or (maybe) by tapping this link. If you think you might use it often, I'd suggest installing [this Siri Shortcut](https://www.icloud.com/shortcuts/e6d56b3fe8bc40639a60f166315f255b) I created that navigates directly to the Text Replacement menu. To be honest, I’ve no idea what you’ll find there if you’ve never created a single entry and – since there’s no way to import or export from the menu – I’m not willing to delete all of mine to find out. [image:BE34875A-C656-4F3B-9020-16A6365925FB-749-000000548342C899/152147580-9054ee94-7e04-4895-be1c-b0ca4209fd75.png] Tap the plus (+) symbol in the upper right hand corner of this menu and you should find yourself on a screen identical to the one shown in the screenshot embedded above, with two text entry fields labeled `Phrase` and `Shortcut`. To simply define a phrase – like “Extratone,” for instance, we needn’t actually use the latter, though I almost always do. I *would* suggest making two entries for those terms that aren’t always lowercase/uppercase – `Extratone` and `extratone`. My suggestion: you needn’t waste too much time sitting and noodling over potential entries. Instead, try to notice the next time you encounter a frustrating misapplication of autocorrect. Add the Siri Shortcut I shared above to your homescreen so that you can quickly access the menu in this situation. Adding a single word shouldn’t take you more than a few seconds, this way. Here’s [the result](https://gist.github.com/extratone/3c7788e41d32958a04a2ab693fe0512c) of my continuing this practice for the past few years: ## Text Expansion The goal of this guide was to help those experiencing repeated incorrect autocorrect actions, but Text Replacement’s explicit purpose is also worth consideration. Similar in function to a favorite third-party app of mine called [Text Expander](https://apps.apple.com/us/app/textexpander-keyboard/id1075927186), you can also use Text Replacement to create text shortcuts to lengthy/tedious/otherwise difficult to replicate text strings. This includes emojis! As you’ll note in the Gist embedded above, my typing out moyai with replace the text “moyai” with “🗿.” In order to escape the shortcut and simply print the word “moyai,” all I need to do is tap the `esc` key on my keyboard or the `x` in the upper right hand corner of the autocorrect object. See this demonstrated in [my video guide](https://youtu.be/4Pu4VCiApMU) and/or [the GIF embedded below](https://imgur.com/gallery/K3EWBqh): What I forgot to mention in the video is that the Text Replacement dictionary is persistent by default across iOS, iPadOS, and macOS via iCloud. You’ll find the menu in the last one at `System Preferences ⇨ Keyboard ⇨ Text`. [image:5BA20143-CE5D-4691-9603-8AAE57F7F167-749-0000005483400698/152279207-96d4b8e2-2cd6-4393-a4fe-8f61abb0ab93.png] From here, you can actually Select All and drag the contents of the text menu to Finder, which will result in a file entitled `Text Substitutions.plist.` Technically, this *does* allow one to back up their Text Replacement configuration, although actually *restoring* said backup would have to be done by hand, term by term. [Discuss...](https://remark.as/p/bilge.world/text-replacement) [#software](https://bilge.world/tag:software) [#configuration](https://bilge.world/tag:configuration) [Text Replacement — The Psalms](https://bilge.world/text-replacement?pk_campaign=rss-feed) # Automating Write.as Posts on macOS — The Psalms [image:FDB3BC03-FD74-4174-95B2-17CC5DF9188A-749-00000054808BC4C6/152098127-6408d6fc-8afd-482c-86aa-0bee8c1b0027.png] ## A setup for posting to Write.as blogs directly using Siri Shortcuts, the Write.as CLI, and (optionally) Drafts for Mac. Though there is currently a [Write.as desktop application in the works for macOS](https://code.as/writeas/macos) and the web editor is certainly no slouch, I thought I'd attempt to take advantage of my newfound knowledge of [the Write.as CLI](https://github.com/writeas/writeas-cli), [Drafts Actions](https://actions.getdrafts.com/a/1u0), and [Siri Shortcuts](https://routinehub.co/shortcut/10981) on macOS to manifest one of my all-time dream integrations: publishing directly to write.as with [Drafts](https://apps.apple.com/us/app/drafts/id1435957248). To start – assuming you already have the CLI installed – lets run `writeas help post` in our shell: [image:E2D89FE1-73FE-4CB0-9C80-F64AE515D914-749-0000005480890153/152664380-32cf084e-bde1-4d59-85d0-9f15c2da78a7.png] For my own use, I really needed to consider just two arguments, here: which blog I'm posting to and in which format. Since [my blog's CSS](https://github.com/extratone/bilge/blob/main/Custom%20CSS.css) overwrites all but `monospace`, I always publish in `--sans`. Keeping this in mind, I allotted for these two options in my Siri Shortcut as customizations set on install. [image:4E1BC222-D643-46F7-96E5-02C20F79535B-749-000000548085EEE2/152664543-028221a5-4359-4bdd-8701-15fc38dcb5b2.png] Now, whenever it's run, my shortcut will be running this command: `write-as post -c chaff --font sans` plus whatever input I've given it. By default, it will grab from the clipboard, but I'm going to use [a custom Drafts action](https://actions.getdrafts.com/a/1u0) to send input, instead. [image:723B35C0-82BF-459C-9E7C-6C3896B86D12-749-000000548082710A/152664614-b53bc430-caf0-4ecd-9547-df324f6fe836.png] Very simply, this action simply calls a shortcut entitled “Post to Write.as Blog (macOS)” sending the [❲❲safe_title❳❳](https://docs.getdrafts.com/docs/actions/templates#content-tags) of the Draft as the markdown title followed by a space and then the draft's [[body]]. [Discuss...](https://remark.as/p/bilge.world/automating-writeas-posts) [#software](https://bilge.world/tag:software) [#automation](https://bilge.world/tag:automation) [#configuration](https://bilge.world/tag:configuration) [Automating Write.as Posts on macOS — The Psalms](https://bilge.world/automating-writeas-posts?pk_campaign=rss-feed) # The Psalms’ 2021 — The Psalms [image:3F3AF3CC-D565-4ED0-8509-AA0317183036-749-000000547C63640A/6J3Tm3CN.jpeg] *I am not funny anymore* feels as though it has finally achieved penultimate meaning as a longtime habitual phrase of mine – as in, I can no longer remember a tangible self without that sentiment always at the ready in a handy intercranial stash. Its significant, I think: the stoutness of my confidence saying it, now, after the year two thousand and twenty-one. The sensation of it has always been most powerful when reading the oldest of my words published, here, but it now has *so* much more substance. The argument that this general process is the very most natural for my age – the *Peak Specialization* Period on the general Human Existence roadmap – has been platituded to all fuck, and yet I cling to it newly and with ever-renewed desperation as I have to any and all authentic manifestations of certainty, of late – even the *common knowledge* sort I still viscerally despise. Title Date [David Blue on Twitter Blue](https://bilge.world/twitter-blue) December 6, 2021 [Liberating UNIIQU3‘s “TECHNO IS BLACK” Playlist from Spotify](https://bilge.world/uniiqu3-techno-is-black) November 26, 2021 [iOS 15 Reviewed for My Family](https://bilge.world/ios-15-family-review) September 19, 2021 [Siri Speech Synthesis in iOS 15](https://bilge.world/siri-tts) August 22, 2021 [Against All Strategic Social](https://bilge.world/social-media-strategy) August 9, 2021 [Mastodon for iOS Review](https://bilge.world/mastodon-ios-app-review) July 31, 2021 [The State of Mastodon iOS Apps](https://bilge.world/mastodon-ios-apps) July 17, 2021 [App Store Review Day](https://bilge.world/app-store-review-day) July 15, 2021 [Marco! Lives](https://bilge.world/marco) June 28, 2021 [iPhone and Music](https://bilge.world/iphone-ios-music-apps) April 19, 2021 [Tweetbot 6 for iOS Review](https://bilge.world/tweetbot-6-ios-review) March 1, 2021 Certainly moreso than in any other calendar year for *this blog*, I have changed, and so has the tone, theme, and subject matter of the eleven items you see above. In case you can't be bothered, it doesn't take much scrutiny to note that all but *one* of these entries – [the second-latest](https://bilge.world/uniiqu3-techno-is-black), debatably – are directly related to the Fucking Apple Phone. Indeed, The Year of our Lord 2021 saw me watch every single one of Apple's two billion special “live” events in their entirety, all the while marveling... screaming... at the overwhelming volume of completely indiscriminate hype that still pervades the greater *vaguely interested in consumer tech* online biosphere. I witnessed folks take days off work solely for the sake of these pre-recorded “live” events, listened to pre-show podcast gameshows involving real money bets on what might be discussed/released during said events, and subscribed to two exclusive iOS-related publications: [Matthew Cassinelli’s newsletter](https://matthewcassinelli.com/membership) and [Club MacStories](https://club.macstories.net). [image:D841D08B-297A-444E-874F-38045A5BCAD9-749-000000547C607DCE/LOcqBpbJ.png] Separate the blogroll, I indulged resolutely in [a severe App Addiction](https://bit.ly/dbapplist), published [a bunch of Siri Shortcuts](https://routinehub.co/user/blue), frequented [r/Shortcuts](https://www.reddit.com/r/shortcuts) more than I ever thought I'd find myself doing so on Read It, subsequently investing more of my time than ever in personal automation on Apple devices, while also becoming [most critical of the practice](https://github.com/extratone/bilge/blob/main/audio/Voice%20Notes/The%20Siri%20Shortcuts%20Industry.mp3). I first described myself as an “iPhone Poweruser” some four years ago, in [a rambly episode of End User](https://www.listennotes.com/podcasts/end-user/siri-shortcuts-are-ios-12s--Vlsfa8engC/) immediately following my original discovery of Apple's absorption of the automation app Workflow and its rebrand of their work into “Siri Shortcuts” [in the beta of iOS 12](https://bilge.world/siri-shortcuts-ios12-review). If indeed this label was ever meaningfully appropriate to self-apply, it certainly should be, now. Before 2021, my knowledge of iOS as a platform was extensive, sure, but notably constrained to user considerations. I was completely unaware of any “dev-facing” interworkings. For instance, I now have a vague understanding of Apple's late push to change iOS' primary programming language from Objective-C to its own Swift thanks to my “ [investigation](https://twitter.com/tapbot_paul/status/1421600511808229387) ” into why Tweetbot “feels” so different from its contemporaries. As per [my commitment to write the missing documentation for Bluetooth keyboard shortcuts support on iPhone](https://uikeycommand.neocities.org) [^1], I have even become familiar enough with SwiftUI to identify a given key command's result in source code. ## Editorially The most significant editorial initiative of the year was [my complete rewrite](https://github.com/extratone/bilge/issues/96) of [/About](https://bilge.world/about). In the interest of providing a much more succinct and informative logline, I took direct and obvious inspiration from [the About document](https://www.notion.so/About-Platformer-22cd48a5514d404b9c2dd130d7724b93) Casey Newton drafted for his newsletter, [Platformer](https://platformer.news). I expected the process to take months on end, but the end product was mostly written in a single sitting. This excerpt is as close to a Statement of Purpose for *The Psalms* as I've ever come: > ...observing and selectively amplifying the characters, organizations, and stories surrounding the most abrupt, profound, and spectacular communicative renaissance in the history of the human species. Less abstractly, its beat is **wholly digital**, namely in **tools** (software, services, and methodologies) and **culture** (music, film, podcasts, and media) from a distinct lens established at good distance from California. Also included is a list of important editorial considerations, most of which could be interpreted as complaints about the general state of “technology media” at present. It’s [up to you](https://twitter.com/NeoYokel/status/1477105624978755584) to judge how well I’ve done at keeping them in mind, [publicly](https://mastodon.social/@DavidBlue/107545348469577371). [image:C82FEABC-835F-4303-BA8B-9732853C153B-749-000000547C5C8CFB/ao01CvrK.png] As I said at the beginning of this Post, I’m going to miss being clever, but it’s become much more important to me to spend my time creating content that first and foremost provides **tangible value for real people**. I can't say I could've before imagined what a particular challenge composing guides/tutorials/documentation would be as a writing discipline. Frankly, I'm quite terrible at it. On this topic, I think my particular challenge, going forward into 2022, will be to make sure my continued improvement in this area benefits others more than myself as simply another arrow in my writing quiver, if you will. > A MERIT-MONGER is someone who only does good on the promise of personal gain. > — Haggard Hawks ? (@HaggardHawks) [January 11, 2022](https://twitter.com/HaggardHawks/status/1480865684276064256?ref_src=twsrc%5Etfw) One of the far too many projects my todo list accumulated over the year, the “ [Please Fuck With This License](https://github.com/extratone/fuckme) ” – my very own [public domain-equivalent license](https://en.wikipedia.org/wiki/Public-domain-equivalent_license) – started as a joke, more or less, with the footer text of [my very first website](https://iowa.neocities.org): “PLEASE STEAL FROM THIS WEBSITE.” Extrapolating this pubescent sentiment of mine into a minimally-ideological, yet fully-formed intellectual property license has been yet another total departure from my writing comfort zone into the domain of *the legal*. > The originator of the matter may be held entirely responsible for consequences upon any being or other distinct matter legally, ethically, morally, spiritually, etc. All forms of correspondence re: the matter to which this document is attached – including feedback, criticism, praise (due and undue,) general bereavement, damnation, condemnation, complaint, advice, advisement, assistance, counsel, guidance, input, recommendation, suggestion assistance, briefing, coaching, mentoring, priming, prompting, teaching, tutoring, caution, alarm, etc. is not only **welcome** but ***encouraged*** as per the core ethos of this document. I'd like to think the sentiment I'm going for, here, feels entirely complementary to the thoughts I've expressed about creative existence, allegorically, in the past year, but I could just be insane. ### The Git Bit Eighteen months ago, I had no idea what Git was. Somehow, in the relatively short interim, I have managed to integrate it into the very foundation of my creative life. Every bit – if not more – of *The Psalms* substance exists on [its GitHub repository](https://github.com/extratone/bilge). It's rather disorganized, but then again… so is this blog, and so am I. For instance, I’ve been intending to write [a dedicated post](https://github.com/extratone/bilge/issues/245) on the subject of how I’ve integretated Git into my creative life for more than a year, now. In theory, this means my revisions are tracked via [commits](https://github.com/extratone/bilge/commit/main), though to be honest, I’ve yet to make much use of them. On iOS, [Working Copy](https://apps.apple.com/us/app/working-copy-git-client/id896694807) has been absolutely invaluable considering how much writing I’ve done on my phone this year. So too has been [Drafts](https://apps.apple.com/us/app/drafts/id1435957248). ## Technically Footnotes have finally been re-implemented! Though they still screw up line spacing.[^2] Thanks to [changes to the Write.as platform](https://discuss.write.as/t/new-in-labs-tiny-write-as/3081), you can now [view The Psalms without any of my CSS](https://tiny.write.as/bilge) if you can’t stand looking at it, but that’d be a shame, in my opinion. Nevertheless, the footer has been amended to include a “Tiny” link at first position. A link to [Extratone’s Telegram](https://t.me/s/extratone) has replaced [the Discord link](https://bit.ly/extratone) as per [my newfound focus on the former](https://bilge.world/telegram). It’s my hope that the addition of [Siri Speech Synthesis](https://bilge.world/siri-tts) at the top of each post might make *The Psalms* more accessible, even if just for those who find my words too verbose to read. Going forward, *The Psalms* will be integrated with the new Discussions platform in the Write.as suite, [Remark.as](https://discuss.write.as/t/remark-as-privacy-first-portable-comments/25). Here's [a link to my profile](https://remark.as/extratone). You'll start seeing this link at the bottom of posts: [Discuss...](https://remark.as/p/bilge.world/2021) Write.as Pro users (exclusively, for the time being at least) will be able to comment on my work via these links. I wanted to make this review significantly more expansive, but it's well into February now, so I think I'll leave it be and focus on further pursuits. If you'd like to see the full extent of what I intended to include – including amendments to posts with updated news – see [this post's corresponding GitHub Issue](https://github.com/extratone/bilge/issues/284). [1] Which I will *not* be discussing further in this particular Post. [2] CSS wizards with a solution to my problem: I'd love to [hear from you](https://davidblue.wtf/db.vcf). [#meta](https://bilge.world/tag:meta) [The Psalms’ 2021 — The Psalms](https://bilge.world/2021?pk_campaign=rss-feed) # Zalgo Text in a Keyboard Shortcut — The Psalms [image:E7B3BB9A-E73C-4CCD-A69B-66586156E1F9-749-00000054781B76F1/153733572-c620df01-c54f-4b04-950f-48cf1cc74b9d.png] Earlier this afternoon, I put out [an ask on Twitter](https://twitter.com/NeoYokel/status/1492591057950892040) regarding how to use JavaScript to create a native Drafts Action for Zalgo Text. Delightfully, tagging @draftsapp in that post paid off, for just a bit ago, Greg – Drafts’ sole creator and guardian – [actually replied](https://twitter.com/draftsapp/status/1492645727729766400) with a link to [an action he’d just posted](https://directory.getdrafts.com/a/1vM) called “Zalgos.” > N̡̥̬̆͏͊҉̷̧̧o҉̗͖̣ͨ̽͝͏͗̀̿̕t̡̰͢ t͋o̬̟̙ h̲̲̹̓̑ͨạ̸̧̡̨ͯ̋̊r̶̛̩͍̖̹ͥ̽͜d̲̙ͬ?̶̛̱͉̓ [https://t.co/2W0ZJTtkbV](https://t.co/2W0ZJTtkbV) > — Drafts (@draftsapp) [February 12, 2022](https://twitter.com/draftsapp/status/1492645727729766400?ref_src=twsrc%5Etfw) Obviously, I installed it immediately, and configured it to `^ + ⇧ + Z`. Now, within Drafts, I can select and Z̻̯͔̘̲ͥ́̕̕͝a̵̜̤̫͓̘̘̾́͊͛͜ĺ̸̶̦̣̉ͧg̶̶̟̩͒͗̊̆ͦ͜͡o̲̎̿̇́̂ ą̨̙̳̟̕n̆̄҉̸̥̳̯̱̲̂ͧ̊͟͞y̺̋ͮ͟ t̻̣̾ͣ̔̏è̘ͮ̋x͎̣ͫt̢̺̙̋͒. As I said on Twitter, this is almost certainly the second most thoughtful gift I’ve ever recieved, though I had to share it with you. I’ve also created a shortlink: `bit.ly/ddzalgo`. [#software](https://bilge.world/tag:software) [#configuration](https://bilge.world/tag:configuration) [Zalgo Text in a Keyboard Shortcut — The Psalms](https://bilge.world/drafts-zalgo-action?pk_campaign=rss-feed) # Using Drafts with NeoCities — The Psalms [image:F6BC23A0-826C-4E44-938D-E15F4F253961-749-00000054758A3144/152070046-41f84855-408d-44c2-bfaa-8b038331d9a6.png] ## A Drafts Action Group for interacting with WebDAV-enabled sites. Thanks to recent learning, I have managed to manifest one of my alltime fantasy integrations: I have tied Drafts and NeoCities together directly via [my NeoCities Action Group](https://actions.getdrafts.com/g/1uF), which uses [Drafts' native WebDAV support](https://docs.getdrafts.com/docs/actions/steps/services#webdav) to (technically) interact with any website based on the protocol. I created it largely to interact with NeoCities over iOS, but frankly I was already doing so more effectively than the Action Group will ever offer with the iOS app [Koder](https://apps.apple.com/us/app/koder-code-editor/id1447489375). It’s odd and a bit out of support, but incredibly useful and supported all the way back to iOS 9. Unfortunately, many of its functions – like deleting remote files, for instance – will result in a crash on modern devices. Also unfortunate – I’m afraid my Action Group doesn’t offer solutions to these problems. On iOS, it’s limited in function to pushing files to your WebDAV server and then opening them in a web browser. [image:E7CD8173-BFAE-47AA-AC16-B5B80191B277-749-000000547587F244/152169590-518d1043-c02b-49a1-9f19-76699362ab96.png] It wasn't as simple as HTML encoding the [draft] content with percentage signs, either. In order to produce [satisfactory results](https://davidblue.wtf/drafts/A350D578-1CFA-4B5A-8655-74F6B3AD72AE.html), I had to wrap every output in a very custom HTML template which I would very much encourage you to personalize before using (considering especially that it includes my personalized footer links and [colors](http://bilge.world/colophon).) You can view that template in full [here](https://davidblue.wtf/drafts/8700B562-8716-489A-B554-641549B6B3E5.html). To be honest, I can’t quite recall where I found the original, but it was probably either included with a native Drafts action or found among [Stephen Millard’s TAD library](https://www.thoughtasylum.com/tadpole). [image:5E53047B-FA10-4E4C-A966-A9D78F46F713-749-000000547584EC24/153755878-5b40147a-040b-4e8f-83ae-ce187d40ec0d.png] The most reliable means of identifying, pushing, and retrieving a draft from a WebDAV site (that I found, anyway,) is by using its [Universally unique identifier](https://en.m.wikipedia.org/wiki/Universally_unique_identifier) (UUID) in its pathname. An apt example: [the draft I’m currently whittling on](https://davidblue.wtf/drafts/7247282E-340B-4890-A2F7-0481AF31321E.html), enumerated `7247282E-340B-4890-A2F7-0481AF31321E`. The action above – [Draft to /drafts as UUID.html](https://actions.getdrafts.com/a/1ve) – will push the contents of your current draft to /drafts/ `the Draft’s UUID`.html. (That's how I created the example.) [image:E77D8FA4-0FBB-459D-B4BC-143504F47EA0-749-000000547580F652/153760436-80095f77-6d9a-4325-8b09-e871bb812bb2.png] I've done my best to color code the actions based on the potential “severity” of their result, but the way they display will depend almost entirely on which particular [Drafts theme](https://actions.getdrafts.com/theme_definitions?order=updated) you're using at the moment. Nevertheless, blue/green indicate the “safest” actions – like the ones that simply [open a link to a draft you've already pushed](https://actions.getdrafts.com/a/1vc) – and yellow/orange/red actions involve [pushing/manipulating files at the root of your site](https://actions.getdrafts.com/a/1v9). Below is the full documentation of each of the actions (and the separators, even,) including individual install links, though I would very much recommend you install [the whole bit](https://actions.getdrafts.com/g/1uF). You'll need to edit each action and replace `davidblue.wtf` with your own URL(s) unless you'd like to try and attempt my absolutely gargantuan NeoCities password. ## NeoCities Action Group ### Root **Type:** Separator **Keyboard Shortcut:** **Icon:** **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 0 **Unique ID:** 69B625EC-D9E2-41B7-9767-3532666E7C97 **Description:** **Type:** Action **Keyboard Shortcut:** **Icon:** 383-keyhole **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 81C89DC8-F26E-4644-87D7-BF454B345C24 **Description:** Push the current draft to the /drafts directory as an HTML file by the draft’s `safe_title`. **Type:** Action **Keyboard Shortcut:** **Icon:** binary **Colour:** yellow **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** ABAA6A02-806F-4B45-BEA6-E9D5F8D32236 **Description:** Push the current draft to the root directory as an HTML file titled by its UUID. ### [Draft to Root as Text Timestamp](https://actions.getdrafts.com/a/1va) **Type:** Action **Keyboard Shortcut:** **Icon:** alarm **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** EFF08ADA-81B6-49C3-B132-5DB477A95685 **Description:** Push the current draft to the root directory as a .txt file titled by timestamp. **Type:** Action **Keyboard Shortcut:** **Icon:** indent **Colour:** red **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 15401CFC-114E-429C-B747-054E19C46911 **Description:** Push the current draft to /NeoCities as index.html **Type:** Action **Keyboard Shortcut:** **Icon:** idea **Colour:** green **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 34630C90-6180-4394-A296-C2A5018DFEFB **Description:** Open /drafts/[Current Draft UUID].html. ### /path **Type:** Separator **Keyboard Shortcut:** **Icon:** **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 0 **Unique ID:** 6F0BE49F-3B6F-49AF-ABA7-04BA7F437C1A **Description:** **Type:** Action **Keyboard Shortcut:** **Icon:** 383-keyhole **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 34A59A1C-95A8-42A9-9C23-677E9731EFC8 **Description:** Push the current draft to the /drafts directory as an HTML file by the draft’s `safe_title`. **Type:** Action **Keyboard Shortcut:** **Icon:** binary **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 9C9FCDA8-687C-475A-8213-A8185CEFEE4D **Description:** Push the current draft to the /drafts directory as an HTML file titled by its UUID. **Type:** Action **Keyboard Shortcut:** **Icon:** idea **Colour:** green **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** BADE45C1-AEC4-46A6-B4BE-7B88B2357C04 **Description:** Open /drafts/[Current Draft UUID].html. **Type:** Action **Keyboard Shortcut:** **Icon:** indent **Colour:** violet **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 5555699A-B3A6-432D-9A20-ECA78F6A5D88 **Description:** Push the current draft to drafts/NeoCities as index.html **Type:** Action **Keyboard Shortcut:** **Icon:** idea **Colour:** green **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 1E5CB9D6-B8FE-4934-8AEC-E795A651C45A **Description:** Open /drafts/{title} **Type:** Action **Keyboard Shortcut:** **Icon:** signs-alt **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 2 **Unique ID:** A7D5BE00-36D3-4E08-9058-7923571189AA **Description:** Push Draft to specified directory as index.html. /[input]/index.html ### Misc **Type:** Separator **Keyboard Shortcut:** **Icon:** **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 0 **Unique ID:** 06296787-B9EE-4759-9B9C-5F994CAA894A **Description:** **Type:** Action **Keyboard Shortcut:** **Icon:** clipboard-content **Colour:** blue **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 98AF9E4B-1D48-4F95-8D2D-C879FE16BE40 **Description:** Push contents of the clipboard to the /clipboard directory as a .txt file. **Type:** Action **Keyboard Shortcut:** ⇧⌃N **Icon:** cat-face **Colour:** gray **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 4B8E95CE-F6A3-4F53-88CB-B01C8398A990 **Description:** Open workspace entitled “NeoCities.” **Type:** Action **Keyboard Shortcut:** **Icon:** directions-merge **Colour:** gray **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 2 **Unique ID:** 898038F4-E5E4-4BDA-B15A-D2ED2D388D82 **Description:** Calls a shortcut entitled “NeoCitiesRoot” with a `Run Shell Script` action containing the following: `neocities list /` Can only be run on macOS and requires the NeoCities CLI. [#software](https://bilge.world/tag:software) [#configuration](https://bilge.world/tag:configuration) [#automation](https://bilge.world/tag:automation) [Using Drafts with NeoCities — The Psalms](https://bilge.world/using-drafts-with-neocities?pk_campaign=rss-feed) # The Fastest Route to Twitter Jail — The Psalms [image:F8694864-730F-4D40-A52E-84E0CE4B7F0D-749-0000005471E8D330/153813676-efbe3e23-d830-4239-940b-922c9bcb35b0.png] ## My new Twitter Jail Siri Shortcut marks a milestone in Social Foolery. I graduated high school in 2012. Back then, TweetDeck was still a standalone desktop client[^1] that allowed one to post with just the `ENTER` or `return` key. I'd made it part of the [Drywall Prime Directive](https://iowa.neocities.org) to generally keep [@ihadtopee](https://twitter.com/ihadtopee) in [Twitter Jail](https://www.urbandictionary.com/define.php?term=TwitterJail) as much as possible, which meant pounding my way into it ASAP, daily. This was often my very first task upon returning home from school. All memories – much less computing memories – are quite obscured from that era, but I wouldn't be surprised if I was spending a cumulative 45 minutes every school day punishing the fuck out of my first flat generation w/keypad Apple Keyboard to TweetDeck in Windows 7. > Who's up grinding? > — T W I T T E R JAIL (@TWlTTER_JAIL) [June 24, 2016](https://twitter.com/TWlTTER_JAIL/status/746295481123274752?ref_src=twsrc%5Etfw) It's not that automating Tweets wasn't possible in that era – I'd been posting WHEN IM COMIN DINE IN MY FOREIGN AND IM ROLLIN ONE DEEP THAT SHOULD TELL YA BOUT ME across all my social accounts every morning at 0610 since Freshman year via IFTT (now IFTTT) – but doing so at any sustained rate required actual *knowledge*. Today, even an rube like myself can whip up [a Siri Shortcut](https://routinehub.co/shortcut/11086/) capable of jailing a user account in *less than four minutes* from nill – what appears to be a statically-set rate limit of 310 Tweets in that time. Mind you, we're talking about entirely *on-device* processing here, and – in case you weren't aware – the device I'm referring to is my fucking cellular phone. [image:B84D0A95-A5AD-43EE-84FB-7C2ECBDD34D0-749-0000005471E4DB19/153808840-473464ae-2922-45a9-a27b-46d0b7f3a247.png] [Twitter Jail](https://routinehub.co/shortcut/11086/) technically requires three apps – two of which are ridiculously small, 100% Apple cross-platform, and entirely free – and the third represents simply [the most refined and delightful means](https://bilge.world/tweetbot-6-ios-review) anyone has ever interacted with The Bird Site. ### Requirements * [Actions](https://apps.apple.com/us/app/actions/id1586435171) – Free across all platforms and just 3.3mb to download! * [Tweetbot](https://apps.apple.com/us/app/tweetbot-6-for-twitter/id1527500834) (You might also try [Aviary](https://apps.apple.com/us/app/aviary-for-twitter/id1522043420) if you absolutely cannot bring yourself to pay a subscription fee, ever.) * [Data Jar](https://apps.apple.com/us/app/data-jar/id1453273600) (More or less optional.) Upon installation, you'll be asked 1.) to set the default number of repeats (Tweets) per run. Obviously, I'd recommend ~310 to optimize your jailing. 2.) To specify which Tweetbot-authenticated user account you'd like to get jailed, and 3.) which “key path” (jar) you'd like to store the URLs of said Tweets in. The third is almost certainly useless and entirely optional (just delete the Data Jar action,) but... you never know when... you might need... those URLs. Depending on your device (to some extent, I'd imagine,) proceeding to run the shortcut shouldn't take long. It randomly generates 91 characters text from a string (which you should also feel empowered to customize/add to,) Tweets them from your specified account, and stores the URLs of those Tweets in the jar you may or may not have specified. You might expect me to express envy of any youths reading, but I absolutely feel none. All I can do is encourage you to [fucking try Mastodon](https://mastodon.social/invite/hca7L5sY) for God's sake and your own. [1] It's actually still available from [various sources](https://downloads.digitaltrends.com/tweetdeck/windows) – [including the Mac App Store](https://apps.apple.com/us/app/tweetdeck-by-twitter/id485812721) – but has fallen way, way out of support. [#automation](https://bilge.world/tag:automation) [#software](https://bilge.world/tag:software) [#configuration](https://bilge.world/tag:configuration) [The Fastest Route to Twitter Jail — The Psalms](https://bilge.world/twitter-jail?pk_campaign=rss-feed) # The Fastest Route to Twitter Jail — The Psalms [image:92A6D722-4388-4882-AD31-AC473230F26A-749-000000517A000EBD/153813676-efbe3e23-d830-4239-940b-922c9bcb35b0.png] ## My new Twitter Jail Siri Shortcut marks a milestone in Social Foolery. I graduated high school in 2012. Back then, TweetDeck was still a standalone desktop client[^1] that allowed one to post with just the `ENTER` or `return` key. I'd made it part of the [Drywall Prime Directive](https://iowa.neocities.org) to generally keep [@ihadtopee](https://twitter.com/ihadtopee) in [Twitter Jail](https://www.urbandictionary.com/define.php?term=TwitterJail) as much as possible, which meant pounding my way into it ASAP, daily. This was often my very first task upon returning home from school. All memories – much less computing memories – are quite obscured from that era, but I wouldn't be surprised if I was spending a cumulative 45 minutes every school day punishing the fuck out of my first flat generation w/keypad Apple Keyboard to TweetDeck in Windows 7. > Who's up grinding? > — T W I T T E R JAIL (@TWlTTER_JAIL) [June 24, 2016](https://twitter.com/TWlTTER_JAIL/status/746295481123274752?ref_src=twsrc%5Etfw) It's not that automating Tweets wasn't possible in that era – I'd been posting WHEN IM COMIN DINE IN MY FOREIGN AND IM ROLLIN ONE DEEP THAT SHOULD TELL YA BOUT ME across all my social accounts every morning at 0610 since Freshman year via IFTT (now IFTTT) – but doing so at any sustained rate required actual *knowledge*. Today, even an rube like myself can whip up [a Siri Shortcut](https://routinehub.co/shortcut/11086/) capable of jailing a user account in *less than four minutes* from nill – what appears to be a statically-set rate limit of 310 Tweets in that time. Mind you, we're talking about entirely *on-device* processing here, and – in case you weren't aware – the device I'm referring to is my fucking cellular phone. [image:5344E662-C122-4F3A-B718-D3D359E44C74-749-0000005179FBAC9D/153808840-473464ae-2922-45a9-a27b-46d0b7f3a247.png] [Twitter Jail](https://routinehub.co/shortcut/11086/) technically requires three apps – two of which are ridiculously small, 100% Apple cross-platform, and entirely free – and the third represents simply [the most refined and delightful means](https://bilge.world/tweetbot-6-ios-review) anyone has ever interacted with The Bird Site. ### Requirements * [Actions](https://apps.apple.com/us/app/actions/id1586435171) – Free across all platforms and just 3.3mb to download! * [Tweetbot](https://apps.apple.com/us/app/tweetbot-6-for-twitter/id1527500834) (You might also try [Aviary](https://apps.apple.com/us/app/aviary-for-twitter/id1522043420) if you absolutely cannot bring yourself to pay a subscription fee, ever.) * [Data Jar](https://apps.apple.com/us/app/data-jar/id1453273600) (More or less optional.) Upon installation, you'll be asked 1.) to set the default number of repeats (Tweets) per run. Obviously, I'd recommend ~310 to optimize your jailing. 2.) To specify which Tweetbot-authenticated user account you'd like to get jailed, and 3.) which “key path” (jar) you'd like to store the URLs of said Tweets in. The third is almost certainly useless and entirely optional (just delete the Data Jar action,) but... you never know when... you might need... those URLs. Depending on your device (to some extent, I'd imagine,) proceeding to run the shortcut shouldn't take long. It randomly generates 91 characters text from a string (which you should also feel empowered to customize/add to,) Tweets them from your specified account, and stores the URLs of those Tweets in the jar you may or may not have specified. You might expect me to express envy of any youths reading, but I absolutely feel none. All I can do is encourage you to [fucking try Mastodon](https://mastodon.social/invite/hca7L5sY) for God's sake and your own. [1] It's actually still available from [various sources](https://downloads.digitaltrends.com/tweetdeck/windows) – [including the Mac App Store](https://apps.apple.com/us/app/tweetdeck-by-twitter/id485812721) – but has fallen way, way out of support. [#automation](https://bilge.world/tag:automation) [#software](https://bilge.world/tag:software) [#configuration](https://bilge.world/tag:configuration) [The Fastest Route to Twitter Jail — The Psalms](https://bilge.world/twitter-jail) # Drafts 5 Review | Rosemary Orchard ### Intro [image:D3BE26A0-44B9-4EC4-A355-3A41F0F1F6CA-30282-00002F563FF9DAEB/drafts.jpeg] For those of you not familiar with Drafts, it’s designed as an app which lets you input text and *then* decide what to do with it. Why? Sometimes that message turns into an email, or maybe the quick idea turns into a mind map. Or maybe you just don’t know where the text is going to end up when you start writing. Drafts is designed to let you write and then process the text, removing the need to choose where the text should go first. [image:9AE48121-C567-406B-A40A-5E0DB30C4AEE-30282-00002F563FDA4923/drafts5-main-views.png] When you open Drafts you get a blank note - automatically. You can set the time out period so that when you return to Drafts you either see your last note or a new note - mine is set to the default of 60 seconds. You can also open the app with force touch which allows you to create a new blank note, create a note from the clipboard, dictate a note, search, or open any one of your 4 most recently edited Drafts. The first three of these options, plus the choice to import a file, appear when you force touch the `+` on an iPhone, or press and hold on an iPad. The great part about the dictation is that unlike regular Siri dictation there’s no timeout, that’s right - you can dictate for as long as you like. David Sparks made a great introduction to Drafts 5 which I highly recommend: [Drafts 5 Overview](https://vimeo.com/263943764) [image:C3252E01-E691-4664-96AF-E6D1009E0876-30282-00002F563FB55D45/drafts5-force-touch-icon.jpeg] [image:ABCAFB6C-98D9-40A1-96DF-C044D0FCAF8E-30282-00002F563F9601B5/drafts5-new-drafts-options.jpeg] ### What Changed? Some of you may have used Drafts before, in fact if you’re reading this it’s likely you have so what’s new? First of all the app has been completely rewritten, this means everything is new and shiny - and 100% up to date. There's also lots of new features. First things first, you can import all of your notes to Drafts and most of your actions. Make sure you're running the latest version of Drafts 4, and then in the settings of Drafts 5, tap "Migrate from Drafts 4". You can choose to import your Drafts, and/or Actions and Keys. You can also export from Drafts 4 into Drafts 5 - there's a special [Send to Drafts 5](http://drafts4-actions.agiletortoise.com/a/2Nv) for drafts, and inside each action in Drafts 4 you can choose to migrate the action, or add it as a callback so when the action is executed it is done so in Drafts 4 and then returns you to Drafts 5. Not every action which was available in Drafts 4 is available yet in Drafts 5, but Drafts 5 will make a list of the actions that couldn't be imported so you can handle those manually. #### Themes Drafts 4 had three theme choices - white, cream and black - and the ability to automatically switch to the black theme at a certain brightness threshold. Drafts 5 has several more colour theme options, and you can specify a day theme and a night theme to work with, which will switch at the brightness level you prefer. Choose the theme is a pro feature, and I've really enjoyed using the dark Solarized theme during the day with black at night. [image:B4D9FFEB-67E5-4FDE-99D3-6004D0DFAF7C-30282-00002F563F6FFDAE/drafts5-theme-options.jpeg] #### Custom Icons Choosing app icons is definitely a nice way to make your device yours, and Drafts now offers the ability to choose your app icon. There's a mix of flat images and ones with gradients - I personally picked the purple as that's my favourite colour. [image:424C54F4-C964-4318-94F5-D174D1E070C7-30282-00002F563F4AE202/drafts5-app-icons.png] #### Tagging and Flagging Tagging allows you to optionally file your note in multiple places - and helps you to group together notes on a particular topic as well. Tags are shown under a draft in the list of drafts. When adding a tag to a draft you can see a list of your current tags in the keyboard bar, if the one you are looking for doesn't exist then you can type to create it. Tags are lower case - you can type capitals when creating them but they will be formatted for you. This is really useful as it allows you to avoid having `Groceries` and `groceries` by accident. Flagging is simple - a draft is flagged, or it is not flagged. You can use it however makes the most sense to you. [image:F1B4FA5A-90F9-49A1-A874-68AECD92051F-30282-00002F563F169371/drafts5-flagging-tagging-a-draft.jpeg] #### Filtering Now we have filters we need to be able to work with them. Filtering allows us to choose combinations of tags to see or not as we want. By tapping the name of a tag in the filter section we add it to include, and by tapping the (ban) icon we can add the tag to the omitted list. This means you could include the tags `cat` and `dog`, but disallow `spider`. These tags are combined with an `AND`, so only drafts with *all* of the included tags and *none* of the omitted tags will show up. Tags are not the only settings however, you can also set how much of a draft you want to see in the list, the sort order, if flagged items should be included or not, specific text to search for and more. [image:3CFE73EB-9C9B-4B3C-AB61-9A92246F6842-30282-00002F563EECCCBE/drafts5-filters.jpeg] [image:09675347-CE2E-43F9-A20A-1E6ED7A761B9-30282-00002F563ECF46E5/drafts5-workspace-options.jpeg] The full documentation for [filtering in Drafts](http://getdrafts.com/drafts/listoptions) is well worth reading. #### Workspaces Workspaces can be created in two ways, from a filter you are currently using, or from scratch. They have the same set up as filters, but as you can name them and set the colour and icon to represent they are easy to keep track of. You can set the order that you would like to view your Workspaces in, and optionally show them, with or without their name, at the bottom of the list of Drafts. Workspaces are ideal for filters you make frequently, or which are more complex to construct. [image:D6827D19-D516-403C-969E-855755604314-30282-00002F563EAF2926/drafts5-workspaces-overview.jpeg] [image:3F5BFDC8-2154-4E64-9471-404C6A0CE174-30282-00002F563E9126B6/drafts5-workspaces-below-draft-list.jpeg] [image:6131AF17-EF4A-4A14-BA21-DA3C7359A2F4-30282-00002F563E6C396F/drafts5-untagged-workspace.jpeg] #### Focus By default Drafts will open to a new draft after a set period of time - which can be adjusted by you. Focus mode allows you to do that by focusing on one particular draft, this means that whenever you open the app - even if that's next month - you'll be back at the draft you had open last. You can enable focus mode in two ways, by tapping the eye icon in the bottom left hand side of the editor when you're not editing a draft, or by opening the Settings and enabling it. #### SiriKit Integration > Hey Siri, make a note in Drafts to investigate buying the llama farm You can now create new Drafts using Siri, it's simple but effective. You can also dictate notes, but that's not new - what's very useful though is that the dictation will not end as it does usually when dictating elsewhere on iOS. [image:65238852-0B5D-4847-BF04-79C47F111B98-30282-00002F563E46CB8F/drafts5-siri-integration.jpeg] #### Editor Options In Drafts you can now control a lot of settings with regards to how the editor appears, from paragraph numbers to syntax highlighting, and even whether or not the toolbar or the status bar should show you have plenty of choices. [image:D001B596-92F2-458E-ADF3-227E2CE7B938-30282-00002F563E2415F8/drafts5-syntax-options.jpeg] [image:D0CA7614-AF6B-4986-AD40-1D2A03CBFDC2-30282-00002F563DFC6E8E/drafts5-editor-with-without-toolbar.jpeg] [image:275932DD-15C1-4B57-AC0A-6A3BEB4BBA0B-30282-00002F563DE5522F/drafts5-appearance-options.jpeg] Here are some of the options you can choose to set for the editor by tapping the `Aa` button: * Syntax highlighting * Plain text * Markdown * Simple List * Taskpaper * JavaScript * Font * Choose from any of the fonts pre-installed on iOS, or ones you have installed yourself. * Select a particular font to use for Monospaced text. * Line height * Paragraph spacing * Margins * Paragraph numbers * You can enable or disable * Autocorrect * Spell check * Smart punctuation * Capitalisation * Portrait, landscape, or any (only on iPhone) Draft 5 also has an improved arrange mode, Drafts 4 just allowed you to rearrange lines, Drafts 5 lets you edit blocks (separated by two line breaks) or lines, edit sections, and delete or remove them. You can also trigger the arrange mode via the [URL scheme](http://getdrafts.com/urls/). There is also a pre-installed Tasks action, which is shown on your keyboard by default. This is very clever, it makes the line that you're on or the text you have selected into a simple bullet checklist by adding `- [ ]` at the beginning of the line. By tapping on the `[ ]` you can mark a task as done `[x]`. #### Actions and Keyboard Groups For those of you familiar with Workflow, actions are very similar in some ways. An action can contain any number of steps, a number of which are provided for you to use as is. Drafts does not arrive empty, it comes with 5 [example action groups](http://getdrafts.com/actions/examples/), 4 of which are available as keyboard groups for you - you can do what you like with these actions, including delete them. But if you're not familiar with Drafts and it's actions I recommend you swipe across the action from left to write, tap edit, and have a look. One important change between Drafts 4 and Drafts 5 is there is no longer an app wide default as to what to do once an action has been executed, you now set this per action group. This is very useful so if you have a group of "share" actions for example, designed to get the text out of Drafts, you could immediately have the draft the action was executed on archived or trashed as you prefer. You can choose to enable an action group on the keyboard, Draft has a row of buttons above the keyboard, and if you have multiple groups of keyboard actions you can swipe up and down on this row to switch between them. As you can assign keyboard shortcuts to actions as well this becomes very powerful very quickly. [image:D444AFB8-E3C7-4354-B1D1-CB2A4CC98C4B-30282-00002F563DC002BC/drafts5-action-steps.png] #### Scripting in Drafts The most powerful part of Drafts actions is the Script action, this is what it sounds like - you write a script which does things. Drafts uses JavaScript, if you use OmniGroup products they are introducing JavaScript for automation in those too - so learning the language could definitely pay off in the long run. There is [a wiki about Drafts scripting](https://github.com/agiletortoise/drafts-documentation/wiki), which is definitely worth reading if you intend to use them. My favourite functions that can be included in Scripting is the Prompt - so if you want to ask the user "cats or dogs", you could create a prompt which shows "cats" and "dogs" as buttons, and then depending on which they choose your script would react accordingly. A prompt can have any of the following options * Title * Message * Text Fields * Date and or Time Fields * Selects - single or multiple choice * Buttons [image:B2A1945E-62B4-46C7-9648-7A570ABB459C-30282-00002F563D94D0C3/drafts5-script-prompt.jpeg] Here's the script to create that prompt: ``` var p = Prompt.create(); p.title = "Title"; p.message = "Message"; p.addTextField("myTextField", "Text Field", ""); p.addDatePicker("myDate", "Date Field", new Date(), { "mode": "date" }); p.addDatePicker("myTime", "Time Field", new Date(), { "mode": "time" }); p.addDatePicker("myDateTime", "Date & Time Field", new Date(), { "mode": "dateAndTime" }); p.addSelect("mySingleSelect", "Single Select Field", ["Cat", "Dog", "Llama"], [], false); p.addSelect("myMultipleSelect", "Multiple Select Field", ["Cat", "Dog", "Llama"], [], true); p.addButton("Button"); p.show(); ``` The cancel button is in a prompt by default, but you can hide it if you wish. The prompt will definitely make an appearance in actions you import from the action directory - if only because it's a great way to get credentials from you which can be used in an action. #### Credentials If you want to Tweet with Drafts, save something to Evernote, or add tasks to Todoist, there are two ways to do that. Passing the data to the app on your device and telling it what to do - which is not possible with every app - or by using the API of the service to complete the action. The difficulty with an API is you need a token to access it - similar to needing a username and password to log in. Drafts 5 has a clever way to store these, so that scripts can access them without needing to save the access key in the script itself - so there's no worry that by sharing your Todoist action people can start adding things to *your* Todoist, unless you explicitly want them to do so and share your credential! You can change the credentials saved in Drafts by tapping on the Settings wheel in the bottom right of the editor, and opening Credentials. By choosing the "forget" option the credential is deleted, and you can input a new one the next time you run an action that needs it. This system is especially useful as you can share one credential with many scripts - so it doesn't matter if you have 1 or 100 Todoist scripts, they can all access the same key, and you are in charge of it. The [documentation for credentials in scripts](https://github.com/agiletortoise/drafts-documentation/wiki/Credential) is definitely worth reading if you want to access APIs, and the [general documentation](http://getdrafts.com/settings/credentials) is also very helpful - especially if you have multiple accounts you want to interact with. [image:44CFFA7B-AE6C-4356-906D-127CF9D4A14E-30282-00002F563D7612B8/drafts5-credentials.jpeg] #### Price Drafts 5 is free. Yes, you read that correctly. For the basic functionality you can get the app for free. If you want to create and edit your own actions, choose your theme(s) and custom icon, use Workspaces, have access to enhanced URL automation and support development you can do so for $1.99 a month, or $19.99 a year. If you're not sure which you need then there is a 7 day trial to let you play with the pro features. [David Sparks (MacSparky)](https://www.macsparky.com/) made a second video for Agile Tortoise showing what's new in version 5: [Drafts 5: What's New](https://vimeo.com/263948739) ### Upgraded and Awesome Things That's a brief overview of the new things, now onto everything else! #### Widgets Drafts 4 had a widget, which allowed quick entry by default and if you enabled "Show More" (on the top right) allowed you to see the most recent Drafts. Drafts 5 has 3 widgets - one for quick entry, one for your recent items, and one for your workspaces. This allows you to enable and disable the ones you want on different devices, and with the workspaces go straight to the collection of Drafts you need. [image:42F6EC12-4202-4A2C-8325-5CCE1E40B811-30282-00002F563D4F3CEB/drafts5-basic-widget.jpeg] [image:C2CC6062-DDD2-43A2-8F08-8932DC23572B-30282-00002F563D21FF1B/drafts5-recent-widget-sizes.png] [image:15C83407-518E-44B6-BF04-B503533625AA-30282-00002F563CF7E5BE/drafts5-workspaces-widget-options.png] #### Backup and Export Your data is important, and there are backup options in Drafts which allow you to backup your drafts themselves, and/or your actions. These options were there before, but are now unified onto one screen. You can also export your drafts with the option to add a filter - so you could export all of your Drafts with the tag "cake recipe" if you wanted - for example to send them to me. [image:14CF520C-2446-42AF-BB92-ADE5BEEE58E0-30282-00002F563CCDACE7/drafts5-backup-options.jpeg] [image:AAF95FC6-38EB-43F4-9198-BF09E674BA37-30282-00002F563CA1ADCE/drafts5-export-drafts.jpeg] #### Reminders Import Reminders import was present in version 4 too, but now you can add a tag when the reminders are imported - which is very helpful for filtering for them later. [image:76E3F4CC-B7F4-4358-A6E4-70546B44FE53-30282-00002F563C755630/drafts5-reminders-import.jpeg] #### After Action Success This setting used to be global which could be overridden on a per action basis. You can now set this option for each action group, and you can still override it for an action if you wish. This is extremely helpful for the keyboard action groups as you're unlikely to want most of those actions to archive or trash your Draft when use them. ### Drafts Forums Agile Tortoise have set up forums where Drafts users can talk to one another, help each other create actions, request features, and more - I've already signed up and am checking it regularly to see what I can learn from everywhere else. [Drafts Forums](https://forums.getdrafts.com/) ### Conclusion I've been using Drafts 5 instead of Drafts 4 for quite some time now, and I'm very happy with it. It has been my go to "text starts here" application ever since I bought it after hearing it mentioned on an episode of the Mac Power Users at some point - and it has become more than that over time. With the scripts and actions I can now write entire blog posts in Drafts, and could even upload them to the server and post them immediately if I wanted. This app has more than earnt it's position in my dock and will be there for the foreseeable future. ### Other Reviews ### Get The App [Drafts 5](https://itunes.apple.com/us/app/drafts-5-capture-act/id1236254471?mt=8&at=1010lumu) is available in the App Store from today. [Drafts 5 Review](https://rosemaryorchard.com/blog/my-drafts-5-review/) # Journal-2022-02 # Using Drafts with NeoCities ![DraftsxNeoCities](https://user-images.githubusercontent.com/43663476/152070046-41f84855-408d-44c2-bfaa-8b038331d9a6.png) ## A Drafts Action Group for interacting with WebDAV-enabled sites. Thanks to recent learning, I have managed to manifest one of my alltime fantasy integrations: I have tied Drafts and NeoCities together directly via [**my NeoCities Action Group**](https://actions.getdrafts.com/g/1uF), which uses [Drafts' native WebDAV support](https://docs.getdrafts.com/docs/actions/steps/services#webdav) to (technically) interact with any website based on the protocol. I created it largely to interact with NeoCities over iOS, but frankly I was already doing so more effectively than the Action Group will ever offer with the iOS app [Koder](https://apps.apple.com/us/app/koder-code-editor/id1447489375). It’s odd and a bit out of support, but incredibly useful and supported all the way back to iOS 9. Unfortunately, many of its functions - like deleting remote files, for instance - will result in a crash on modern devices. Also unfortunate - I’m afraid my Action Group doesn’t offer solutions to these problems. On iOS, it’s limited in function to pushing files to your WebDAV server and then opening them in a web browser. ![NeoCitiesActionGroup](https://user-images.githubusercontent.com/43663476/152169590-518d1043-c02b-49a1-9f19-76699362ab96.png) It wasn't as simple as HTML encoding the [draft] content with percentage signs, either. In order to produce [satisfactory results](https://davidblue.wtf/drafts/A350D578-1CFA-4B5A-8655-74F6B3AD72AE.html), I had to wrap every output in a very custom HTML template which I would very much encourage you to personalize before using (considering especially that it includes my personalized footer links and [colors](http://bilge.world/colophon).) You can view that template in full [here](https://davidblue.wtf/drafts/8700B562-8716-489A-B554-641549B6B3E5.html). To be honest, I can’t quite recall where I found the original, but it was probably either included with a native Drafts action or found among [Stephen Millard’s TAD library](https://www.thoughtasylum.com/tadpole). ![toDraft-UUID](https://user-images.githubusercontent.com/43663476/153755878-5b40147a-040b-4e8f-83ae-ce187d40ec0d.png) The most reliable means of identifying, pushing, and retrieving a draft from a WebDAV site (that I found, anyway,) is by using its [Universally unique identifier](https://en.m.wikipedia.org/wiki/Universally_unique_identifier) (UUID) in its pathname. An apt example: [the draft I’m currently whittling on](https://davidblue.wtf/drafts/7247282E-340B-4890-A2F7-0481AF31321E.html), enumerated `7247282E-340B-4890-A2F7-0481AF31321E`. The action above - [Draft to /drafts as UUID.html](https://actions.getdrafts.com/a/1ve) - will push the contents of your current draft to /drafts/`the Draft’s UUID`.html. (That's how I created the example.) ![NeoCitiesActionGroup-Viewedonmacos](https://user-images.githubusercontent.com/43663476/153760436-80095f77-6d9a-4325-8b09-e871bb812bb2.png) I've done my best to color code the actions based on the potential "severity" of their result, but the way they display will depend almost entirely on which particular [Drafts theme](https://actions.getdrafts.com/theme_definitions?order=updated) you're using at the moment. Nevertheless, blue/green indicate the "safest" actions - like the ones that simply [open a link to a draft you've already pushed](https://actions.getdrafts.com/a/1vc) - and yellow/orange/red actions involve [pushing/manipulating files at the root of your site](https://actions.getdrafts.com/a/1v9). Below is the full documentation of each of the actions (and the separators, even,) including individual install links, though I would very much recommend you install [the whole bit](https://actions.getdrafts.com/g/1uF). You'll need to edit each action and replace `davidblue.wtf` with your own URL(s) unless you'd like to try and attempt my absolutely gargantuan NeoCities password. ## NeoCities Action Group ### Root **Type:** Separator **Keyboard Shortcut:** **Icon:** **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 0 **Unique ID:** 69B625EC-D9E2-41B7-9767-3532666E7C97 **Description:** ### [Push Draft to Root as HTML](https://actions.getdrafts.com/a/1v9) **Type:** Action **Keyboard Shortcut:** **Icon:** 383-keyhole **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 81C89DC8-F26E-4644-87D7-BF454B345C24 **Description:** Push the current draft to the /drafts directory as an HTML file by the draft’s `safe_title`. ### [Draft to Root as UUID.html](https://actions.getdrafts.com/a/1v0) **Type:** Action **Keyboard Shortcut:** **Icon:** binary **Colour:** yellow **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** ABAA6A02-806F-4B45-BEA6-E9D5F8D32236 **Description:** Push the current draft to the root directory as an HTML file titled by its UUID. ### [Draft to Root as Text Timestamp](https://actions.getdrafts.com/a/1va) **Type:** Action **Keyboard Shortcut:** **Icon:** alarm **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** EFF08ADA-81B6-49C3-B132-5DB477A95685 **Description:** Push the current draft to the root directory as a .txt file titled by timestamp. ### [Draft to /{title} as index.html](https://actions.getdrafts.com/a/1vb) **Type:** Action **Keyboard Shortcut:** **Icon:** indent **Colour:** red **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 15401CFC-114E-429C-B747-054E19C46911 **Description:** Push the current draft to /NeoCities as index.html ### [Open /{title}](https://actions.getdrafts.com/a/1vc) **Type:** Action **Keyboard Shortcut:** **Icon:** idea **Colour:** green **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 34630C90-6180-4394-A296-C2A5018DFEFB **Description:** Open /drafts/[Current Draft UUID].html. ### /path **Type:** Separator **Keyboard Shortcut:** **Icon:** **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 0 **Unique ID:** 6F0BE49F-3B6F-49AF-ABA7-04BA7F437C1A **Description:** ### [Push Draft to /drafts as HTML](https://actions.getdrafts.com/a/1vd) **Type:** Action **Keyboard Shortcut:** **Icon:** 383-keyhole **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 34A59A1C-95A8-42A9-9C23-677E9731EFC8 **Description:** Push the current draft to the /drafts directory as an HTML file by the draft’s `safe_title`. ### [Draft to /drafts as UUID.html](https://actions.getdrafts.com/a/1ve) **Type:** Action **Keyboard Shortcut:** **Icon:** binary **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 9C9FCDA8-687C-475A-8213-A8185CEFEE4D **Description:** Push the current draft to the /drafts directory as an HTML file titled by its UUID. ### [Open pushed /drafts file by UUID.](https://actions.getdrafts.com/a/1vf) **Type:** Action **Keyboard Shortcut:** **Icon:** idea **Colour:** green **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** BADE45C1-AEC4-46A6-B4BE-7B88B2357C04 **Description:** Open /drafts/[Current Draft UUID].html. ### [Draft to /drafts/{title} as index.html](https://actions.getdrafts.com/a/1vg) **Type:** Action **Keyboard Shortcut:** **Icon:** indent **Colour:** violet **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 5555699A-B3A6-432D-9A20-ECA78F6A5D88 **Description:** Push the current draft to drafts/NeoCities as index.html ### [Open /drafts/{title}](https://actions.getdrafts.com/a/1vh) **Type:** Action **Keyboard Shortcut:** **Icon:** idea **Colour:** green **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 1E5CB9D6-B8FE-4934-8AEC-E795A651C45A **Description:** Open /drafts/{title} ### [Draft to Specified Path as index.html](https://actions.getdrafts.com/a/1vi) **Type:** Action **Keyboard Shortcut:** **Icon:** signs-alt **Colour:** orange **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 2 **Unique ID:** A7D5BE00-36D3-4E08-9058-7923571189AA **Description:** Push Draft to specified directory as index.html. /[input]/index.html ### Misc **Type:** Separator **Keyboard Shortcut:** **Icon:** **Colour:** none **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 0 **Unique ID:** 06296787-B9EE-4759-9B9C-5F994CAA894A **Description:** ### [Push clipboard .txt to clipboard/timestamp](https://actions.getdrafts.com/a/1vj) **Type:** Action **Keyboard Shortcut:** **Icon:** clipboard-content **Colour:** blue **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 98AF9E4B-1D48-4F95-8D2D-C879FE16BE40 **Description:** Push contents of the clipboard to the /clipboard directory as a .txt file. ### [Open NeoCities Workspace](https://actions.getdrafts.com/a/1vk) **Type:** Action **Keyboard Shortcut:** ⇧⌃N **Icon:** cat-face **Colour:** gray **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 1 **Unique ID:** 4B8E95CE-F6A3-4F53-88CB-B01C8398A990 **Description:** Open workspace entitled “NeoCities.” ### [NeoCities list / (macOS-Only)](https://actions.getdrafts.com/a/1vl) **Type:** Action **Keyboard Shortcut:** **Icon:** directions-merge **Colour:** gray **Confirm to Run:** false **Notifications:** All **Log Level:** All **Number of Steps:** 2 **Unique ID:** 898038F4-E5E4-4BDA-B15A-D2ED2D388D82 **Description:** Calls a shortcut entitled “NeoCitiesRoot” with a `Run Shell Script` action containing the following: `neocities list /` Can only be run on macOS and requires the NeoCities CLI. # Test Feb 13, 2022 Feb 13, 2022 at 14:19 Feb 13, 2022 at 14:19 # On Drafts and Obsidian [image:286FB215-9EE1-4B3A-8207-213DF10C2852-20824-000024EF2587C832/153770870-53acbea2-c058-42e5-95ac-c5db8fab433f.png] ![Draftsidian](https://user-images.githubusercontent.com/43663476/153770870-53acbea2-c058-42e5-95ac-c5db8fab433f.png) I tried Obsidian. In fact - and I’m still not one hundred percent positive about this - I’m pretty sure I first tried Obsidian several years ago, though the Obsidian.md domain only stretches back to [April of 2020](https://web.archive.org/web/20200410075559/https://obsidian.md/), so I might just be nuts. Regardless, something said by *MacStories* founder and Definitive iPad Professional, Federico Viticci, in an issue of *MacStories Weekly* from late Summer really... leapt out to me. > At its core, Obsidian is a Markdown text editor. Just point the app to a folder on your iPhone or iPad and you're ready to get started. The app is based on web technologies, which means it is highly customizable. Obsidian supports a theming system, with a wide variety of themes provided by the app's vibrant community of users and plugins to extend the app's functionality. The app's primary views are its editor and preview mode, which can be split into multiple panes both vertically and horizontally. Obsidian also supports saved workspaces that allow users to open a predefined group of notes easily, commands for quickly opening documents and accessing the app's features, along with extensive, customizable keyboard shortcut support. Of course, notes can be linked internally, allowing for the creation of a wiki-like web of documents. In the interim, I've reviewed these few sentences over and over again, trying to find the discrepancy, but basically the core of my issue is that **Federico is describing *Drafts* as I know it, word for word**. In fact, since you're here, bear with me just a second as I misquote him, replacing the word "Obsidian" with "Drafts:" > At its core, Drafts is a Markdown text editor. Just point the app to a folder on your iPhone or iPad and you're ready to get started. The app is based on web technologies, which means it is highly customizable. Drafts supports a theming system, with a wide variety of themes provided by the app's vibrant community of users and plugins to extend the app's functionality. The app's primary views are its editor and preview mode, which can be split into multiple panes both vertically and horizontally. Drafts also supports saved workspaces that allow users to open a predefined group of notes easily, commands for quickly opening documents and accessing the app's features, along with extensive, customizable keyboard shortcut support. Of course, notes can be linked internally, allowing for the creation of a wiki-like web of documents. Now, there are several points I probably wouldn't *start out with* when describing Drafts. While you absolutely can "point [Drafts] to a folder on your iPhone or iPad" and be ready to "get started," [Folder Bookmarks](https://docs.getdrafts.com/docs/settings/bookmarks) *are* a fairly recent feature for Drafts, and not exactly configured *out of the box*. It is not - nor will it ever be - local filesystem native like Obsidian, but honestly - especially as an iCloud+ subscriber with 2TB of iCloud Storage - I'm not sure this should be left as a downside. Though I use a Git-enabled system to track revisions (which [I basically learned from Federico](https://www.macstories.net/ios/my-markdown-writing-and-collaboration-workflow-powered-by-working-copy-3-6-icloud-drive-and-github/)!,) I've honestly had much more success configuring specific actions tied to specific folders and keyboard shortcuts than I did running off the filesystem with Obsidian for the few months-long period I gave it a shot, last year. The theory behind the configuration was sound. # iPad Diaries: Working with Drag and Drop – Bear and Gladys [image:C054AF03-6B92-4AC1-987F-BC174656D441-20824-000024AC600C659A/2017-11-08-14-30-55.jpeg] *iPad Diaries is a regular series about using the iPad as a primary computer. You can find more installments [here](https://www.macstories.net/tag/ipad-diaries/) and subscribe to the dedicated [RSS feed](https://www.macstories.net/tag/ipad-diaries/feed).* In [my review of iOS 11](https://www.macstories.net/stories/ios-11-the-macstories-review/), I noted that the impact of drag and drop – arguably, the most powerful addition to the iPad – would be best measured in the following weeks, after developers had the time to update their apps with richer implementations of the framework. I dedicated [a large portion of my review to drag and drop](https://www.macstories.net/stories/ios-11-the-macstories-review/18/#drag-and-drop) as I felt the feature would fundamentally reshape our interactions with iPad apps and the entire OS altogether. However, I knew that wouldn’t happen right away. With iOS 11 having been available for nearly two months now, I think it’s time to reassess the effect of drag and drop on the iPad’s app ecosystem. Starting this week, I’m going to take a look at some of the most important tasks I perform on my iPad and how drag and drop is helping me rethink them for my typical workflow. For the comeback of this column, I chose to focus on [Bear](https://itunes.apple.com/us/app/bear/id1016366447?mt=8&uo=4&at=10l6nh&ct=ipad_diaries) and [Gladys](https://itunes.apple.com/us/app/gladys/id1257526927?mt=8&uo=4&at=10l6nh&ct=ipad_diaries) – a note-taking app and a shelf app, respectively – as I’ve been impressed with their developers’ understanding of iOS 11 and intricacies of drag and drop. When I started researching this mini-series, I assumed that drag and drop hadn’t dramatically affected my favorite third-party apps yet. I was wrong. Drag and drop has started to trickle down into several areas of my daily iPad usage, often with surprising and powerful results. With a [Club MacStories](https://club.macstories.net/?utm_source=ms&utm_medium=iPadDiaries) subscription, you’ll gain access to weekly iPad workflows, iOS app recommendations, and other exclusive extras. Starting at $5/month, Club MacStories includes MacStories Weekly – a newsletter delivered every Friday with a focus on iPad productivity and showcasing new and interesting iOS apps. One of MacStories Weekly’s regular sections is the **Workflow Corner** – a weekly assortment of iPad workflows, iOS automation tips, and tutorials curated by Federico and the MacStories team. As a new member, you’ll also receive complete access to [our back catalogue](https://club.macstories.net/newsletter-archive/) of over 120 newsletter starting from September 2015. You can find out more about Club MacStories [here](https://club.macstories.net/?utm_source=ms&utm_medium=iPadDiaries), or subscribe directly below. ## Bear As I’ve explained on multiple occasions since [its iOS 9 relaunch](https://www.macstories.net/stories/ios-9-review/8/#notes), I’m a fan of Apple Notes and its system integrations. Apple Notes is my scratchpad for quick notes and random thoughts, as well as a collaborative space where I can share notes with my family and teammates. Notes also features one of the most versatile implementations of the drag and drop framework to date. If you can drag something in iOS 11 for iPad, there’s a good chance you can drop it in Notes. When I shared my iPhone and iPad Home screen on [Club MacStories](https://club.macstories.net/?utm_source=ms&utm_medium=iPadDiaries) a few weeks ago [1](https://www.macstories.net/ios/ipad-diaries-working-with-drag-and-drop-bear-and-gladys/#fn-51825-1), I described why I was using Bear again *alongside* Apple Notes. I’ve always appreciated Bear’s design ethos and reliance on Markdown [2](https://www.macstories.net/ios/ipad-diaries-working-with-drag-and-drop-bear-and-gladys/#fn-51825-2) to easily format notes and unlock advanced functionalities such as [automation](http://www.bear-writer.com/faq/X-callback-url%20Scheme%20documentation/) and inter-note linking. For the past year, I thought that Apple Notes could serve all my note-taking needs for both personal and work-related purposes, but I recently realized that I was missing Bear for tasks such as assembling lists of links to cover on my [podcasts](https://appstories.net/), or creating outlines for future stories. While I am not replacing Apple Notes with Bear [as I pondered last year](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/), I am now using two note-taking apps for different purposes. Bear offers one of the most flexible interpretations of drag and drop I’ve seen on iOS 11 so far. Drag and drop operations within the app are supported across the iPhone and iPad, and they’re equally impressive on both platforms, but it’s on the iPad where Shiny Frog’s work truly shines thanks to multi-app drag and drop. Drag and drop support was brought to Bear in multiple waves. Soon after iOS 11 came out, the app was updated with the ability to drop plain text into a note and drag out text from an existing one. That’s the basic drag and drop that should be considered the bare minimum level of integration in modern iPad apps. With version 1.3, released last month, Bear gained a drop bar and a better way of dealing with formatted text dragged from other iPad apps, such as Notes, Safari, or Mail. These two changes are the kind of more advanced and custom implementations of the new APIs I expected developers to release after spending more time with iOS 11. ### Drop Bar A key concept behind iOS 11’s drag and drop that is often ignored by developers is how, besides opening up new possibilities for inter-app communication, it can also be leveraged to enhance contextual interactions *within an app*. The drop bar in Bear is a great example of this idea applied to batch operations for multiple notes: instead of designing separate UIs for selecting notes and processing them, you can now pick up multiple notes and drop them into a floating menu that contains additional options. As soon as you start dragging a note (or a stack of notes) in Bear 1.3, a bar pops up at the bottom of the screen, telling you that you can drop items there to share them, merge them, and more. When notes are dropped into the bar, a menu comes up, offering shortcuts to commands that are otherwise only available through nested menus or swipe gestures for individual notes. Rather than engaging a separate selection mode, you can pick up notes with a natural gesture (consistent with other iOS 11 apps), then either drop them into a different tag in Bear’s sidebar, or act on them with the drop bar. After using Bear 1.3 for a few weeks, drag and drop feels like a more intuitive way of exposing sharing and editing controls than a regular Edit button. Copying identifiers for multiple notes or merging them is easier than ever; the latter option is particularly useful to turn scattered thoughts into a cohesive note. The drop bar also benefits from iOS 11’s improved support for sharing multiple files at once: when you export notes in Bear 1.3, extensions such as Files’ native one can pick up multiple files and save them to iCloud Drive or other file providers – something that wasn’t possible in iOS 10. [image:C71DC88E-8207-45BF-8085-EBDE489B425F-20824-000024AC5FF4CDC1/2017-11-08-15-00-28.jpeg] Files’ extension can save multiple exported notes at the same time. The drop bar doesn’t revolutionize Bear, but it shows how drag and drop can go beyond moving text between apps and be used to simplify an app’s UI and interactions. I wish more developers would consider such enhancements related to drag and drop in both their iPhone and iPad apps. ### Rich Text to Markdown In Bear 1.3, the app’s text engine can recognize RTFD content dropped into a note and automatically convert it to Markdown. RTFD (which stands for [Rich Text with Attachments](https://en.m.wikipedia.org/wiki/Rich_Text_Format_Directory) ) is one of the many formats used by iOS 11 [3](https://www.macstories.net/ios/ipad-diaries-working-with-drag-and-drop-bear-and-gladys/#fn-51825-rtfd) to represent rich text content that may contain, in addition to formatting (styles, headings, etc.), attachments such as inline images. RTFD may be used for selected content in a Safari webpage, a chunk of text from the Notes app, or a photo *and* rich text selected in a Mail message. And because Bear’s custom Markdown-based environment supports both plain text and attachments within the same document, converting RTFD content once it’s dropped is a natural fit for the app’s text editor. In practice, this means you can transform rich text from Safari and Notes into Bear-flavored Markdown – all while keeping styles and attachments intact – just by dropping it into a note. The app’s instant translation from rich text to Markdown is glorious: I’ve started selecting entire paragraphs of text from articles to save them as reference in Bear; I don’t have to worry about missing links or screenshots because I can select them, drag them into the app, and they’ll be converted. [image:B4613629-BFE7-49D1-9E66-6C916D397B96-20824-000024AC5FD68B09/2017-11-08-15-09-30.jpeg] Blocks of rich text dragged from Safari retain their formatting in Bear. This works from Safari, Safari View Controller, and native WebKit-powered views, which is ideal for archiving interesting links and stories I may come across via Twitter or RSS. [image:88469138-1301-4DC0-BB71-59D2FF2A4702-20824-000024AC5FB843F7/2017-11-08-15-15-19.jpeg] Rich text dragged into Bear from the article view in lire, an RSS reader. Before drag and drop, this would have required me to either lose the formatting of a webpage upon pasting in Bear, or add an extra step to the process by manually converting rich text to Markdown with a workflow. Now, the system takes care of this for me, and I’m free to jump between Markdown and rich text and simply focus on collecting information in Bear. Drag and drop also works the other way around: thanks to its multi-format architecture, you can select text from a Bear note and drop it elsewhere; depending on the capabilities of the destination app, it’ll either be dropped as plain text (Markdown) or as the rich text resulting from the conversion of Markdown to RTFD. In everyday usage of drag and drop on my iPad Pro, this has proven to be a good enough solution for moving content between apps that rely on different formats. I can put together a rich note in Bear that contains Markdown formatting and inline images, drop its contents in Notes, and the resulting text will be rich text with the same inline attachments. Doing the same with [Ulysses](https://itunes.apple.com/us/app/ulysses/id1225571038?mt=8&uo=4&at=10l6nh&ct=ipad_diaries) transfers Bear’s text as Markdown and keeps the attachment as an inline image; in Pages, Markdown is correctly transformed to rich text, but the attachment gets lost in the process. [image:536BFBED-7014-47E1-9E06-B40065CA7E27-20824-000024AC5F9CE168/2017-11-09-03-33-35.jpeg] Dragging from Bear to Ulysses keeps the Markdown formatting and inline images. Overall, despite my initial concerns, [drag and drop’s UTI-based framework](https://www.macstories.net/stories/ios-11-the-macstories-review/19/#drop) has been working well as a bridge between iPad apps that treat rich text with attachments differently. However, there have been some exceptions. Apple Mail, for example, supports sending messages as rich text, but when I drag text from Bear into the message composer, it is inserted as plain text Markdown instead of rich text. Or, if I manually copy text from Google Docs (which doesn’t support drag and drop, but that’s a story for another time) and paste it in Bear, all formatting is lost in spite of Google Docs putting an HTML version of said text into the iOS clipboard. In the two months since iOS 11 was released, I’ve run into these situations a handful of times. They’re not major problems that prevent me from getting work done on a daily basis, but these inconsistencies are annoying, and they all have something in common: they stem from lack of deeper user control over drag and drop, which yields a “black box” experience that doesn’t show what goes on behind the scenes. This is where Gladys comes in. ## Gladys The issues mentioned above are two distinct cases of destination apps (Bear and Mail) being unable to correctly guess the best data format to ingest. This is exactly one of the primary functionalities of Gladys, and the reason why I’ve put the app on my Home screen. I wrote about Gladys for MacStories Weekly [4](https://www.macstories.net/ios/ipad-diaries-working-with-drag-and-drop-bear-and-gladys/#fn-51825-102) and when the app’s 1.1 update [introduced iCloud sync and iPhone support](https://www.macstories.net/ios/gladys-adds-iphone-version-and-icloud-sync/). Gladys is my current pick for the best shelf app on the iPad: it’s the closest representation of [my original vision for an iOS 11 shelf](https://www.macstories.net/stories/ios-11-ipad-wishes-and-concept-video/#shelf), and it’s constantly getting better thanks to frequent updates released almost weekly. Not only does Gladys allow you to drop anything that is draggable on iOS 11 into it, but it also integrates with Files, it has built-in rich previews, offers 3D Touch actions on the iPhone, and lets you label clippings for better organization. The most powerful feature of Gladys, though, is how it embraces the drag and drop framework by allowing you to peek under the hood and inspect the multiple data formats captured by the app when an item is dropped into it. When you drop rich text, links, or images from a Safari webpage into Gladys, you can tap on them to reveal an inspector that lists all the available flavors for each item. You can preview individual formats, as well as export them to another app with drag and drop. Other apps do this ( [Workshelf](https://itunes.apple.com/us/app/workshelf/id1246964517?mt=8&uo=4&at=10l6nh&ct=ipad_diaries) and [Yoink](https://itunes.apple.com/us/app/yoink-improved-drag-and-drop/id1260915283?mt=8&uo=4&at=10l6nh&ct=ipad_diaries) have this functionality too), but I prefer how Gladys lists formats in a popover with buttons to preview anything supported by iOS’ Quick Look. It can be useful to put an advanced shelf app in the middle of a drag and drop session and use it as an “on-the-fly converter” of data in a different format. Let’s consider the Bear-to-Mail example again: by just dragging some text from Bear into Mail, it is inserted in the message as plain text, despite the fact that Bear exposes an RTFD version compatible with Mail. By dropping text into Gladys first and opening the inspector, we can manually select the RTFD flavor, drop it in Mail, and enjoy a properly formatted block of rich text that keeps all the styles and elements we originally typed in Bear. Here’s another scenario: a few days ago, I was trying to drag an image from an article in Safari into Bear. I was expecting the actual image file to be dropped into the note, but instead I kept getting the URL of the image inserted in the body text. To work around the problem, I saved the image in Gladys first, picked up the `public.jpeg` version from the inspector, and dropped it in the note. Instead of a link to the image, Bear correctly attached an inline image file. It was trickier for Google Docs, but I figured out a way to manually get the HTML version of a text selection from Google’s app too. As I mentioned earlier, Google Docs still doesn’t support drag and drop on the iPad, which prevents me from dragging text out of the app when I want to continue working on a document in another text editor. To make things worse, copying text from a Google document results in plain text pasted in Bear with all formatting stripped out. Thanks to Gladys, I was able to investigate the data formats Google puts in the system clipboard when you copy text from Google Docs; Gladys has a handy Paste button in the top toolbar that lets you clip anything in the app without having to perform drag and drop. As it turns out, Google Docs, in addition to a proprietary format incompatible with any Markdown app, also includes a `public.html` version of the copied text that is recognized by the majority of modern text editors, email clients, and note-taking apps. Now, whenever I want to export rich text from Google Docs, I can paste it into Gladys, preview the HTML version, select the text again, and drop it into Bear, Ulysses, or Mail. It’s not the fastest or most intuitive way of moving text between apps, but it’s better than losing the entire formatting of a document, and it shows how iPad power users can take advantage of an app like Gladys to control how data is dropped, pasted, or shared between apps. In many ways, we’re in the early days of iOS 11 and drag and drop for iPad. Developers are still figuring out the best practices for exposing multiple data formats to apps. As much as Apple’s framework aims to abstract this complexity from the average workflow, there are times when I wish iOS 11 came with a built-in shelf option or full-featured clipboard manager to inspect the contents of the clipboard or the flavors of a drag item. Thankfully, apps like [Gladys](https://itunes.apple.com/us/app/gladys/id1257526927?mt=8&uo=4&at=10l6nh&ct=ipad_diaries), [Copied](https://itunes.apple.com/us/app/copied/id1015767349?mt=8&uo=4&at=10l6nh&ct=ipad_diaries), and [Workshelf](https://itunes.apple.com/us/app/workshelf/id1246964517?mt=8&uo=4&at=10l6nh&ct=ipad_diaries) are bridging this gap for now. At the same time, we’re starting to see more powerful implementations of drag and drop in apps that rely on the framework for better inter-app communication and easier interactions. This evolution of the iPad app ecosystem is occurring alongside a shift in our workflows and muscle memory: I’m pushing myself to use drag and drop more because, in many cases, I know there’s no need for automation when every app speaks the same drag and drop language. As iPad users, we’re learning the best ways to use drag and drop alongside developers. It’s an exciting time to use an iPad as your primary computer, and it feels like we’ve barely scratched the potential of iOS 11. [iPad Diaries: Working with Drag and Drop – Bear and Gladys](https://www.macstories.net/ios/ipad-diaries-working-with-drag-and-drop-bear-and-gladys/) # Why I’m Considering Bear as a Notes App Replacement [image:98762CC6-07EA-43F1-9121-9CF0DBC962BD-20824-000024A9242D9944/2016-11-03-03-24-30.jpeg] As I wrote in an issue of MacStories Weekly (exclusive to [Club MacStories members](https://club.macstories.net/) ), I recently moved my Club-related notes from the Apple Notes app to Trello. Because Club MacStories is a collaborative effort, it made sense to use [Trello’s project management features](https://trello.com/federicoviticci/recommend) to let the entire MacStories team see my notes. However, moving those notes to Trello considerably decreased my usage of Apple Notes, which left me wondering if it was time to consider an alternative app for my personal note-taking needs. I praised Apple Notes numerous times since [its relaunch on iOS 9](https://www.macstories.net/stories/ios-9-review/8/#notes). I believe Notes and Safari are Apple’s two best iOS apps, and I recommend Notes to anyone planning a switch from Evernote or OneNote. Notes is surprisingly advanced and fast; its iCloud sync is reliable; it even received support for [collaboration in iOS 10](https://www.macstories.net/stories/ios-10-the-macstories-review/20/#notes). I’ve used Notes as my only note-taking app for over a year now. After moving my most frequently accessed notes to Trello [1](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/#fn-45669-1), I looked at what was left in Notes, and I realized that I wanted to see if a different app could fill the gaps Apple didn’t address. For everything Notes gets right, there are several limitations that have required me to change how I work: Notes has no native Markdown support, no automation features, and its organization system based on folders could use a revamp. I accepted Notes’ shortcomings because I had no other choice; could a new app lure me away from it through the promise of features Apple would never ship? My transition from Notes to Trello couldn’t have come at a better time. I’ve been keeping an eye on [Bear](http://www.bear-writer.com/), a new note-taking app developed by Italian studio Shiny Frog, for the entire summer. Bear piqued my interest right away: like Notes, it was based on [CloudKit](https://developer.apple.com/icloud/) sync, but Bear also strived to augment the experience for “online writers” thanks to Markdown, automation features, themes, tags, cross-reference links, and more. As Bear betas went out to testers, I told myself I wouldn’t need it because I was perfectly fine in Notes. But when I noticed that I was using Notes less frequently anyway, I took the plunge, moved my remaining personal notes to Bear, and put the app on my Home screen. This happened two weeks ago. I’m still not convinced Bear is the note-taking app I want to use throughout 2017. I didn’t have enough time to test the final beta of Bear, and I believe a note-taking app is best evaluated over a few months of usage. At the same time, Bear is full of interesting ideas, and it has the potential to replace Notes for many iOS users who have been waiting for this kind of rich Markdown note-taking app. Bear has some issues, but it also opens new possibilities for Markdown writers and people who work primarily from iOS and aren’t completely satisfied with Notes and other note-taking apps. I’m considering [Bear](https://itunes.apple.com/us/app/bear-beautiful-writing-app/id1016366447?ls=1&mt=8&at=10l6nh&ct=ms_inline) as a replacement for Notes, but this is not a definitive review. Instead, I want to lay out the reasons why Bear is superior to Notes as well as the features it’s missing. I’m still figuring out if Bear is worth committing to, but I’m intrigued by the app, and there’s a lot to unpack. ## What Bear Gets Right Bear was clearly built with a lot of care, and it shows. The app has powerful functionalities that make it a strong competitor to Apple Notes on iOS. ### Rich Markdown Editing I love [Markdown](https://daringfireball.net/projects/markdown/), and Bear brings rich Markdown editing and export to a lightweight note-taking app that feels like a mix of Apple Notes and [Drafts](https://itunes.apple.com/us/app/drafts-quickly-capture-notes/id905337691?mt=8&uo=4&at=10l6nh&ct=ms_inline). Like Apple’s app, notes can be formatted with headers and lists, but Bear allows you to enter that syntax quickly with Markdown, which is then rendered to a beautiful inline preview. For instance, you can enter a new section title by typing `## Title` as you normally would in Markdown, but as soon as you type the two pound signs, Bear will convert them to a label that says ‘H2’, indicating the type of title you entered. You can even tap on the header afterwards to change it without having to type in Markdown again. [image:34023C90-28F9-453E-887B-87700057D53D-20824-000024A9240A1458/2016-11-03-03-35-50.jpeg] Markdown headers in Bear. Other editing features that require too many taps in Notes, such as lists or basic text formatting, can be sped up with Markdown in Bear. Typing an asterisk will start a new list; enclosing text in forward-slashes and asterisks will make it italic and bold, respectively. [image:03CAF12E-1AFE-4C8D-B747-58A84ABDE6DD-20824-000024A923E1E457/2016-11-03-03-37-04.jpeg] If you’re a Markdown user, you might be wondering if I made an error above – I didn’t. By default, Bear uses its own flavor of Markdown that is slightly different from John Gruber’s original version. Fortunately, there is a Markdown compatibility mode in Bear’s settings that makes the editor accept standard Markdown syntax. I turned this on immediately. Markdown support extends to other common editing controls: a Markdown inline link is automatically converted into a rich link; you can tap the link’s anchor to open a popup for changing the link’s title and text. If you go back and edit that link by hitting backspace, it’ll be converted to regular plain text Markdown again. [image:3889ECE3-D62C-4077-BFE7-0AE0980A45EE-20824-000024A923BA86C4/2016-11-03-03-38-12.jpeg] Bear lets you format the title and URL parts of a link separately. The same is true for checkboxes, inline code snippets, and other Markdown niceties that Bear supports and previews inline – something I’d never expect Apple to roll into Notes. [image:3E05BA96-E01B-4C87-A6E7-CAF29CD46C72-20824-000024A923913A06/2016-11-03-03-39-25.jpeg] Various Markdown and rich text features as reimagined by Bear. Unlike other Markdown note-taking apps, which exclusively deal with plain text, Bear supports inline images, too. From this standpoint, the app is more similar to Apple Notes: images can be visualized inline as full previews or smaller thumbnails [2](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/#fn-45669-2), and you can also import any attachment supported by Quick Look (PDFs, .zip archives, text files, videos, etc.) and drop it in a note thanks to document providers. Bear offers a unique take on Markdown that is both visually appealing and functional. In addition to simply looking *nice*, Markdown editing means I can format notes and give them structure faster than Apple Notes. I can start a note in Bear and add sections and a few lists without having to tap through multiple menus over and over. > Bear offers a unique take on Markdown that is both visually appealing and functional. Bear strikes a good balance of fast Markdown editing and rich text presentation. Effectively, Bear offers an “augmented Markdown” editing environment that employs plain text for quick editing, but relies on rich text and a Notes-like model for everything else. I think it works well. Bear doesn’t have folders. To organize notes, you add tags anywhere in the body of a note as #hashtags, which are parsed and highlighted by Bear. [image:D4B350E0-7FFD-4F6B-A46C-0D473B368299-20824-000024A92367F72A/2016-11-03-03-34-26.jpeg] Tags in Bear. Any note can have an arbitrary number of tags, which grants more flexibility than having to choose a single destination folder. Also, tags can be combined for deeper organization by inserting them together, such as `#articles #blog`; in the tags sidebar, you’ll have expandable menus to view notes that have been assigned both tags. I find tags to suit my needs better than folders. I often take notes that belong to multiple areas of responsibility or, more generally, I want to organize my notes and personal archive with fine-grained control. Bear makes it easy, for example, to organize my health records by type *and* year, as well as my articles by project and website. While I like the way Bear displays tags in a Slack-like dark sidebar, I wish I didn’t have to enter tags as hashtags in the middle of a note’s text. I have been entering tags at the bottom of my notes so they stay out of my view, but I’d prefer to be able to assign tags in the information sidebar available on the right – it seems like there would be plenty of space available there. [image:71D18897-076D-4074-8C0A-8AC915976CA0-20824-000024A9234438BB/2016-11-03-03-33-36.jpeg] I’m a fan of tags to organize my notes as they bring a little extra versatility I find convenient. I’m even more of a fan of pinned notes, though. This feature lets you pin a note to the top of the list so it’s easier to retrieve than others. [image:880EB261-CF0F-4DB2-B4E7-C19BEDFC8162-20824-000024A9231C4BEB/2016-11-03-03-33-07.jpeg] I’ve been using pins to quickly reach notes for articles I’m currently working on, and I feel like they’ll come in handy when traveling as well. Overall, the combination of tags and pins gives Bear an edge over Notes in terms of organization, which is good to have when amassing multiple types of content in a single app. ### It Looks Nice I don’t usually give much importance to the appearance of a note-taking app, but Bear’s interface looks clean and does away with the remnant bits of paper textures and embossed lettering of Apple Notes. [image:47724C40-3973-4972-A1E4-A2A63A691A21-20824-000024A922F18179/2016-11-03-03-31-33.jpeg] There are some key interface elements to learn in the app – the left sidebar to navigate tags, the scrollable keyboard row for access to common formatting controls, and popovers used to edit items such as headers and links. New notes are created by hitting a ‘+’ button in the bottom right corner of the app, which I find easy to access on large displays. Bear’s UI has been designed to not interfere with content, and there are subtle touches I appreciate throughout the app. On the iPad, the chevron icon in the top left has a delightful transition when switching from list to reading a note. In the Settings, you can adjust typography for the editor choosing from four fonts (System, Avenir Next, Helvetica Neue, Menlo), plus options for size, line height, line width, and paragraph spacing. [image:3DB7D0AB-2D31-4D57-BD83-6C017FD0C774-20824-000024A922C38E7F/2016-11-03-03-29-11.jpeg] Avenir Next, San Francisco, and Menlo in Bear. The ability to choose a theme is another advantage Bear has over Notes. Shiny Frog built 9 themes into the app, ranging from the default Red Graphite (a white UI with black and red accents) to the dark Charcoal and the retro-looking Panic Mode, plus the omnipresent Solarized Light and Dark. [image:1EB6311F-542E-490C-97A6-7D71CD0E20D7-20824-000024A9229CFC60/2016-11-03-03-28-09.jpeg] If you’re into dark themes and interfaces that aren’t white, Bear has most certainly something to offer. ### iCloud Sync Is Seamless Bear is based on the same CloudKit storage and syncing technology used by Apple Notes and adopted by dozens of iOS productivity apps over the past year. In my experience, CloudKit-powered iCloud sync has been fast, reliable, and, best of all, it doesn’t require any manual adjustment. Your Bear notes will propagate across the iPhone, iPad, and Mac (Bear also has a [Mac counterpart](https://itunes.apple.com/us/app/bear-beautiful-writing-app/id1091189122?ls=1&mt=12&at=10l6nh&ct=ms_inline) ) in seconds thanks to CloudKit. It’s a small detail, but I like how Bear makes iCloud sync less invisible than Apple’s apps by indicating where the last editing session took place. In the information panel (accessed by tapping the ‘i’ button in the top right corner of a note), you’ll find a ‘Last Editing Device’ field underneath statistics for the current note. Seeing which device synced the last edit is useful to confirm which changes have been saved; you can also view Settings > Status to check when the last complete iCloud sync happened. In my couple of weeks testing the last beta of Bear (which didn’t have several fixes included in today’s App Store version), I never ran into data loss issues or other problems related to CloudKit. ### Solid Import and Export Options Alongside Markdown and a focus on power user features (more on this below), another differentiator of Bear is its rich selection of powerful import and export tools. Bear wants to be the new home for your notes, but it doesn’t lock you into a proprietary system. Bear has the best import and export features I’ve seen in an iOS note-taking app. If you want to migrate your notes to Bear, you can [import an Evernote archive](http://www.bear-writer.com/ever-not/) or text files into the Mac app; on iOS, you can pick files using document providers. You can choose to keep the original dates for imported notes, use the first line as a title (handy when importing text files from Apple Notes), or, alternatively, use the filename as a title. [image:58BA2E87-2BA3-4F0C-BB91-1B67B8AF1777-20824-000024A9227BF36D/2016-11-03-03-27-09.jpeg] Bear’s import and export tools. I tested Bear’s import feature on my MacBook Air. After exporting from Apple Notes using [this free utility](http://falcon.star-lord.me/exporter/), I opened the text files into Bear, and they were imported as advertised by the app. I wasn’t able to test importing notes with attachments and rich text from Evernote as I no longer have an Evernote database to test against. Bear is even more impressive when it comes to getting notes *out* of the app. There are two ways to export notes in Bear: you can export all notes at once or export an individual note with the iOS share sheet. When exporting all notes, you can choose to merge them in a single file or export a folder with text files and attachments [3](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/#fn-45669-3); you can also decide to keep tags during the export or export text files without attachments. If you don’t want to export your notes as text (.txt), Bear has a variety of options: * PDF * HTML * Markdown * RTF * DOCX * TextBundle * Bear Note (proprietary) * JPEG These formats should be enough to ensure anyone’s needs can be met when moving from Bear to something else. I’m particularly intrigued by the choice of including [TextBundle](http://textbundle.org/), a [relatively new entry](https://www.macstories.net/linked/textbundle-for-markdown/) in this space that, among other apps, is natively supported by my favorite text editor, Ulysses for [Mac](https://itunes.apple.com/us/app/ulysses/id623795237?mt=12&uo=4&at=10l6nh&ct=ms_inline) and [iOS](https://itunes.apple.com/us/app/ulysses/id950335311?mt=8&uo=4&at=10l6nh&ct=ms_inline). The aforementioned formats are supported as exporting options for *individual* notes as well. It’s refreshing to see an iOS app support multiple ways of exporting notes and sending them to different apps – it’s a welcome change from apps that try to keep you within their ecosystem as much as possible (this includes Apple, Evernote, and Microsoft). Personally, I’ve used Markdown export to send notes I want to develop into full articles to Ulysses. Also, I’m not ashamed to admit that the JPEG option is going to be great to easily tweet [beautiful longform textshots](https://www.macstories.net/reviews/linky-5-0-brings-better-sharing-for-twitter-on-ios-with-images-textshots-and-more/) from Bear (I recommend the [Linky](https://itunes.apple.com/us/app/linky-share-webpage-links/id438090426?mt=8&uo=4&at=10l6nh&ct=ms_inline) extension for that). ### A Potentially Sustainable Business Model Bear isn’t a classic pay-once-and-hope-for-the-best productivity app. The developers at Shiny Frog are trying a subscription model for Bear: the app is free to download and there’s a single subscription (which covers both the iOS and Mac app) to unlock themes, advanced exporting options [4](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/#fn-45669-4), and iCloud sync. Bear uses the new kind of [auto-renewable subscriptions](https://www.macstories.net/news/understanding-the-new-territory-pricing-and-expanded-subscription-price-tiers/) for all categories of apps Apple [unveiled earlier this year](https://www.macstories.net/news/major-app-store-changes-announced/). A Bear subscription costs $1.49/month (with a 1-week free trial) or $14.99/year (with a 1-month free trial). If you buy the annual subscription or subscribe to the monthly plan for 12 months, themes and advanced exporting options will be unlocked forever. [image:8700F7DE-B1C0-4F4D-9107-AB28AEE0A652-20824-000024A9225BC30A/2016-11-04-02-57-15.jpeg] Bear’s auto-renewable iTunes subscriptions. Building a successful business on the App Store today is different from what it used to be. In recent months, we’ve seen the launch of App Store subscriptions and [developers of pro software](https://www.macstories.net/linked/the-omni-group-is-moving-to-free-downloads-with-in-app-purchases/) switching to a free-to-start model with pro features locked behind In-App Purchases – a way to entice more users to try an app, see for themselves if its feature set fits their workflow, and eventually commit to buying the full version. Bear’s approach is interesting: the app is skewed towards pro users who demand advanced features, but the developers also believe that the frequent usage of a note-taking app – a utility you tend to use every day – warrants a recurring subscription. If Bear ends up being the app I want to use instead of Notes, and if Shiny Frog can continue to find a balance between free features and options exclusive to paying subscribers, I’d have no problem paying $15/year for an app I would use dozens of times every day. Generating ongoing revenue from loyal customers who depend on software doesn’t work for everyone, but it does for a lot of services I pay for, and I’m curious to see how this will play out for Shiny Frog. ### It Can Be Automated If iOS devices are your primary work machines, you’ll be glad to know that Bear can be automated and integrated with [Workflow](https://itunes.apple.com/us/app/workflow-powerful-automation/id915249334?mt=8&uo=4&at=10l6nh&ct=ms_inline) using [x-callback-url](http://x-callback-url.com/). The developers have documented their URL scheme implementation [here](http://www.bear-writer.com/x-callback-url/). There are several aspects that I like and have integrated with Workflow and [Launcher](https://itunes.apple.com/us/app/launcher-notification-center/id905099592?mt=8&uo=4&at=10l6nh&ct=ms_inline) widgets. Thanks to the URL scheme, you can open specific notes or tags in Bear. This isn’t possible with Apple Notes, which doesn’t offer a way to recall individual notes from anywhere on iOS. With a system inspired by Ulysses, Bear assigns an alphanumeric ID to each note, which you can use to open a specific note from other apps or widgets – even from the Lock screen. Take a look at how easy it is to build a widget to open a Bear note with Workflow: [image:625F2505-1C39-4A3B-BC5E-C4973F9C1D6C-20824-000024A9223E5A56/2016-11-03-03-44-50.jpeg] I’ve been using the Bear URL scheme to open a private note I need to view often, but also to jump to a tag view to show a list of notes, which is faster than having to search manually in the Notes app. The URL scheme goes beyond opening notes and tags, though. You can append text or base64-encoded files to an existing note: if you want a way to quickly append PDF files to the same note in Bear, you can run a workflow from any share sheet on iOS and the PDF will be inserted in the note.[5](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/#fn-45669-5) You can grab URLs and convert them to a Markdown version of the associated webpage in Bear; you can trigger searches from the URL scheme; you can even change the app’s theme in two seconds with [this Workflow widget](https://workflow.is/workflows/ec494afccdd24adaaba4ed116c3b70db). [image:48132FFE-AD1C-459A-B6C5-E906F9CDB8BE-20824-000024A922215F7C/2016-11-03-03-25-18.jpeg] Changing Bear themes with Workflow. Bear follows in the great tradition of Drafts and Ulysses with a good library of URL scheme actions supported in version 1.0, and I hope that native Bear actions will be added to Workflow in the future. From an automation perspective, this is a great start. ### Other Power User Features Besides URL schemes, Bear has other power user features that set it apart from Apple Notes. Some of my favorites: **You can refer to individual notes** Using a simple `[[Note Title]]` syntax, you can create a link that takes you to another note inside Bear. [image:1C786B18-A57A-435F-B67D-E6A30EBD4408-20824-000024A92201FC83/2016-11-03-03-22-42.jpeg] Creating reference links for other notes in Bear. This is ideal to build a body of work in Bear and organize it in a single ‘Table of Contents’ note pinned to the top, for instance. **There’s support for TextExpander snippets** Bear can automatically expand your TextExpander snippets, which can save you a lot of time every day. You can enable TextExpander integration in Settings > General. **You can duplicate notes** Want to have a slightly different version of a note in your Bear library? Swipe left on a note, select More, than tap Duplicate to create a copy. **Smart syntax that recognizes addresses and colors** If you paste an address into a note in Bear, it’ll be highlighted with a location icon. [image:0C162A33-A4EC-475B-9E1C-B2F0CE380A98-20824-000024A921E62958/2016-11-03-03-20-57.jpeg] Bear makes it easy to open saved addresses, as well as preview colors. Also, if you enter a HEX color code that Bear recognizes as a color instead of a hashtag, it’ll be displayed with a colored dot preview within the note. **Enhanced copy & paste menu** When you select some text in Bear, you can choose to copy it as Markdown, HTML, or plain text. Similarly, you can paste text from Markdown, HTML, or code. [image:7235DFA6-9A1C-4BD2-A7CB-2D9F790E0A5B-20824-000024A921CC6334/2016-11-03-03-20-06.jpeg] Smart copy & paste in Bear. The app even recognizes which programming language you’re pasting and creates a fenced code block accordingly. That’s pretty neat. **Result highlights in search** Unlike Apple Notes, Bear highlights the word you’re looking for in search results. Also, search results are tag-specific – if you open a tag view and search from there, only results for that tag will be returned. ## Bear’s Shortcomings While Bear improves upon several aspects of Notes, there are some missing features, technical limitations, and design decisions that are making the switch from Apple’s app harder than I imagined. ### No Collaboration With iOS 10, Apple brought collaboration to Notes using the new [CloudKit Sharing API](https://developer.apple.com/videos/play/wwdc2016/226/), and it’s been a fantastic addition to the app. Now, whenever a friend wants to share a document with me, they can do so with the free Notes app and my iCloud email address. It’s super simple, built into iOS, and reliable. Bear doesn’t have any collaboration features for now. The good news, however, is that by using CloudKit, it should be fairly easy for the developers to implement the CloudKit Sharing system in a future update. If collaboration is a must-have feature for you, though, you can’t use Bear yet. ### Lack of Conflict Resolution and Merge for the Extension This is a tricky one to solve for a third-party iOS app: if you append content from the Bear extension to the same note from multiple devices, when you’ll open the app you’ll likely be presented with a conflicted copy of that note. [image:612FA241-33CC-4544-8C37-31D74EE5C003-20824-000024A921A5DC25/2016-11-03-03-19-23.jpeg] Saving links and images with the Bear extension. Bear can’t start an upload when a note changes because of the app’s sharing extension, which leaves the developers to implement a merge feature that intelligently merges the content appended from two different devices running Bear. And Shiny Frog tells me that such merge function hasn’t been built into Bear yet, which may lead to conflicted copies if Bear can’t reconcile changes to the same note happened at different times on different devices. This is worse than Apple Notes, which also has an extension that can append content to existing notes, but which can merge changes to the same note without creating a conflicted copy. To overcome this limitation, I’ve been using the Bear URL scheme to append content to a note and launch the app afterwards (thus triggering a sync), but it’s not ideal, and Notes’ merge implementation is vastly superior. There are two other notable missing features from Notes: Bear doesn’t display rich preview snippets for links (they only show a title with no description or image), and there’s no drawing mode to create sketches. [image:C322FA05-CBCF-40BA-8665-75F67AF90889-20824-000024A92179C903/2016-11-03-03-17-10.jpeg] Saving links in Bear and Notes with the apps’ share extensions. I can live without a sketching mode in my note-taking app (though Notes’ drawing mode is extremely useful and quite the technical feat), but the lack of rich link previews is harder to accept. After seeing rich links in Notes and iMessage, it’s difficult to go back to regular links. ### No Touch ID Bear can’t lock individual notes behind Touch ID or a password. [Touch ID authentication](https://www.macstories.net/roundups/apple-releases-ios-9-3-a-collection-of-new-features-and-tidbits/) on a note-by-note basis is one of my favorite Apple Notes features, and I hope Shiny Frog will consider adding this option soon. ### No 3D Touch Surprisingly, Bear doesn’t feature any 3D Touch quick actions on the Home screen or support for peek and pop to preview and open notes. My reliance on 3D Touch has increased over the past year, and I would have liked to see Bear adopting the technology to speed up note creation and access to my favorite notes. I’d especially like to see customizable Home screen quick actions to create a note, open a specific note or tag, and start a search. ### Bugs and Other Issues I came across a few bugs in the beta version of Bear I tested before launch. Embedding a video as a file picked from a document provider would often crash the app when trying to play the video. Occasionally, the copy & paste menu wouldn’t appear upon tapping once in an empty text area. And, text selection – particularly when editing tags and headers – would often get stuck or scroll in an unpredictable way. I’m expecting the developers to fix these problems in the next few updates. ### Lack of Deeper Customization Bear offers a great selection of advanced options, but those features can’t be reordered or customized for faster access. You can’t select a default export type for the share icon at the top; you can’t reorder exporting options based on usage (I would like to have Markdown first); and, you can’t reorder buttons in the extra keyboard row. I like it when an app caters to power users, but having dozens of options also implies having extensive customization built-in, and Bear doesn’t deliver on this. ## Bear 1.0 Since the first beta of iOS 9 in June 2015, I have changed my daily iOS workflow to accommodate Apple Notes in both features and limitations. However, now that I’ve split my notes between collaborative ( [Trello](https://trello.com/federicoviticci/recommend) ) and personal ones, the allure of Bear’s Markdown support and power user features is impossible to ignore. I haven’t decided if I’m going to become an annual Bear subscriber yet, but I’m willing to pay for a few months and see how quickly Shiny Frog can iterate on version 1.0 of the app. > One of the most impressive app debuts of the year. Comparisons with Apple Notes aside, Bear stands on its own as one of the most impressive app debuts of the year. Shiny Frog has managed to build a note-taking app that tastefully balances elegance and advanced features – an app that can be used *without* its deeper options and still be superior to Notes in many ways, but also a power user tool that unlocks more flexibility than Apple Notes. It’s great to see an indie developer like Shiny Frog can still ship a noteworthy alternative to an Apple app on both iOS and macOS. Bear is the best new competitor to Apple Notes for iOS and Mac users, and because [it’s a free download](https://itunes.apple.com/us/app/bear-beautiful-writing-app/id1016366447?ls=1&mt=8&at=10l6nh&ct=ms_inline), I recommend taking it for a spin. I have a feeling that Bear’s Markdown integration and automation features will make me save a lot of time every day. [Why I’m Considering Bear as a Notes App Replacement](https://www.macstories.net/stories/why-im-considering-bear-as-a-notes-app-replacement/) # # Notes-TextFuck # Notes-TextFuck - [[How to Fuck Text]] - [How to Fuck Text · Issue #222 · extratone/bilge](https://github.com/extratone/bilge/issues/222) - [An Oral History of David Blue - Digital Text Menace](https://whyp.it/t/an-oral-history-of-david-blue-digitext-menace-e3yX9) - Whyp - [⨃🄝ɨ∁ɧ⍙℟ for iOS Review](https://bilge.world/unichar-for-ios-app-review) - [Z̴͏a͞l͟g͝o͏ ̕G͟͝e͞n͞҉è̛ŗ͡a͝͞t̴o҉r͞ for iOS](https://bilge.world/zalgo-generator-ios-app-review) - [Text Fucking · extratone/bilge Wiki](https://github.com/extratone/bilge/wiki/Text-Fucking) ## General - [ ] WHEN IM COMIN DINE IN MY FOREIGN AND IM ROLLIN ONE DEEP THAT SHOULD TELL YA BOUT ME and the earliest iOS-native automation. - [ ] Drywall YouTube Channel, MAWOTAFTIWYAFF, and early auto-tagging. ## Other Tools - [ ] [All of Unicode, Single File](https://davidblue.wtf/tools/unicode.pdf) - [ ] [Text Modifier… | Drafts Directory](https://actions.getdrafts.com/a/1Bg) - [ ] [Unicode Fun (Encircle or Flip) | Drafts Directory](https://actions.getdrafts.com/a/1T2) ## Apps - [ ] [Text Split](https://apps.apple.com/us/app/text-split/id1547206241) - [ ] [TextExpander](https://apps.apple.com/us/app/textexpander-keyboard/id1075927186) - [ ] [UniChar](https://apps.apple.com/us/app/unichar-unicode-keyboard/id880811847) - [ ] [GitHub - tomauty/ZalgoTextGenerator: An Android app to generate Zalgo text for those times when you need to invoke the hive-mind representing chaos on the go](https://github.com/tomauty/ZalgoTextGenerator) - [ ] [Zalgo Generator on MacOS!](https://apps.apple.com/us/app/zalgo-generator/id1304137527) - [ ] [zalgo-js - npm](https://www.npmjs.com/package/zalgo-js) 01252022-020116 01252022-020121 - [ ] [Text Case](https://tools.applemediaservices.com/app/1407730596) - [ ] [Textcraft](https://apps.apple.com/us/app/textcraft/id1546719359) ## Wanted/ToDo - [x] TextExpander snippets! A collection, even? - [ ] [**Zalgo Drafts Action!!!**](https://twitter.com/NeoYokel/status/1492591057950892040) ``` ⠯̀҉͎̝͈̤̯͍⒎̶͏҉̙̪̭̭̙̗̖̫̟͈͍̗͉̙∧̶̢̞̯͚̪̲̱͍̬̞̭͉̤͍͉͓͟͠͝ͅº̶̷̛̛̰̥̣̥͉̥̱̖̝̟̫̻ͅʲ̵̢͓̪̬̟̦̥̱̪͙̀͠䷹̸̨̫̭͎̹͍̖͖͙͙̼̫͎̙́͠䷹͏͠͏̙̪̹̗͎̱͖̭̩͍͔̙͍̼̹̯̭̭͞͡∝̷̸̸̩̥͍̻⊑̶̧̬̥͈̠̜͍̟̤̤̞̀̕͜ ``` ## References - [ ] [Textcraft | PNGuin](https://www.pnguin.app/textcraft) ## Siri Shortcuts! - [ ] ASCII Keyboard in the MF gallery? - [ ] [All the Single Ladies ASCII](https://www.icloud.com/shortcuts/51392bf23f104b93baf72000955ed334) ## Social ``` ``` - [ ] [Rabbit](https://twitter.com/NeoYokel/status/1449622067343728642) - `https://twitter.com/NeoYokel/status/1449622067343728642` - [ ] [TextExpander cross-platform non-advertisement](https://twitter.com/NeoYokel/status/1492588288624017408) - [ ] [Full Book Poll](https://twitter.com/NeoYokel/status/1492589668843634692) ### Accessibility Poll - [Mastodon](https://mastodon.social/@DavidBlue/107589034582138302) - [Twitter](https://twitter.com/NeoYokel/status/1479932149256146945) ``` hey accessible-knowledgable folks, before I write my “how to fuck text” guide, I’d like to know… how disruptive are unusual characters/zalgo text and the like to daily lives of web folks with accessibility considerations? ``` ## Counter-Spam - [Drafts’ iMessage App for counter-spamming](https://t.me/extratone/9629) [Alt Text as Poetry](https://alt-text-as-poetry.net/?utm_source=Daily&utm_campaign=3c4988c1e2-tcidaily&utm_medium=email&utm_term=0_3742c429c9-3c4988c1e2-179508230) > Alt text is an essential part of web accessibility. > It is often disregarded or understood through the lens of compliance, as an unwelcome burden to be met with minimum effort. > How can we instead approach alt text thoughtfully and creatively? ## Images - [ ] ![Discerning Yelp Connoisseur ](https://i.snap.as/K2E9UV7S.png) - [ ] ![Drycast Classic Banner](https://i.snap.as/Vy46eZzP.png) - [ ] ![Sn00ki Denial](https://i.snap.as/gYZ9piaG.png) - [ ] ![Eat Rocks](https://i.snap.as/R2Yg7CcX.jpeg) - [ ] ![Activity View Circa iOS7](https://i.snap.as/RZD3eKn3.png) - [ ] ![ButtBot](https://i.snap.as/uDIsssMI.png) - [ ] ![Our Logo is Fuckin Huge](https://i.snap.as/ccLFQrUy.jpeg) - [ ] ![DeadDigitizer2](https://i.snap.as/GIC9TVzE.png) - [ ]![Old App Switching 2](https://i.snap.as/TV4k4bJB.png) - ![Drywall Periscope Chat Promotion](https://i.snap.as/ORaFin1O.png) - [ ] ![Aviation Meme](https://i.snap.as/gPrp17Bx.png) - [ ] ![WATCH OUT ZUCKERBERG](https://i.snap.as/8H9ok3F2.png) - [ ] ![BlockGurlBxtch](https://i.snap.as/ziKiAFLI.jpeg) - [ ] ![Hashtag MM2011](https://i.snap.as/m8ZQobNw.png) - [ ] ![The Next Web Brad v Tapbots](https://i.snap.as/1p1Te0W1.jpeg) - [ ] ![iPhone Photography Awards 2011](https://i.snap.as/fsvI2SE7.jpeg) - [ ] ![Tweetbot 1 for iPhone Screenshots](https://i.snap.as/xTiFR73e.jpeg) - [ ] ![Facebook Word Salad](https://i.snap.as/tmpGfz5P.png) - [ ] ![App Switching - Old Twitter](https://i.snap.as/gc58FHe1.png) - [ ] ![Illmatic Facebook](https://i.snap.as/xPRB157k.jpeg) - [ ] ![Buying a Gun is So Easy](https://i.snap.as/Ood9xT32.png) - [ ] ![DeadDigitizer](https://i.snap.as/HIvLIU9A.png) - [ ] `![TextcraftIcon](https://user-images.githubusercontent.com/43663476/153724474-6a64b3d3-cb87-428e-81d6-a900746f9886.png)` - [ ] `![TextFuckSnippetGroup](https://user-images.githubusercontent.com/43663476/153726468-25b5a5a9-0381-4720-b1e7-c7fb2ef357d9.png)` ## TextExpander - [ ] [Extratext Snippet Group, Documented](https://davidblue.wtf/extratext/) - [ ] [Extratext Snippet Group Share](https://app.textexpander.com/public/14093096578d4f40eeea15649f5cefbb) - [ ] [Text Fuck Snippet Group Share](https://app.textexpander.com/public/12c50fb2360617d3cc66d757cf26383b) # Re: tmo: Write.as Pro stuffs From: TMO To: davidblue@extratone.com Date: Feb 7, 2022 Subject: Re: tmo: Write.as Pro stuffs Yes, you have to be a Pro user to enable the feature. If you go to Remark.as and you are logged into your Write.as account, you should see a little explainer telling you how to set it up. It involves logging into R.a with your W.a account, and then going to "Customize" under your "Blogs" page and enabling R.a like you would enable an RSS feed. Then, there is a shortcode you can paste in your signature, or wherever you like (on W.a) that will generate a hyperlink that says "Discuss...". R.a is tied to your Primary W.a blog (so, no sub-blogs, yet). So, mine is remark.as/tmo, and when you are on your R.a profile, you can edit it at the top with an avatar, description, etc. Hope that helps. I asked about the 404 thing on Discuss.write.as but haven't gotten a response back yet. Hope you're doing good! - TMO from the desk of TMO ------- Original Message ------- On Monday, February 7th, 2022 at 9:12 PM, davidblue@extratone.com wrote: > Hey! > > Did I miss something about Remark.as launching? I, too, am getting a 404 page, but I didn’t even know there was anything launched that was usable yet>>> > > Dare I ask… Will you teach me? lol > > Thanks, > > David Blue+1 (573) 823-4380 compaq.tech > On Feb 7, 2022, 19:52 -0600, tmo , wrote: > > Write.as Pro stuffs > > From write.as/tmo/write-as-pro-stuffs > > I had a couple people mention that they are getting either a 404 page when they click the “Discuss...” link in my post signature or they are getting the “Get Notified” page for Remark.as – but they are getting two different things. One got worked out, but I mentioned on Discuss.write.as that the 404 page should definitely be a “landing page” of some type letting the person know that they must currently be a Pro user to leave a comment (via Remark.as). Let's hope something gets worked out soon :) > > Fun things happening in this little corner of the WWW this afternoon/eve, indeed. > > back soon > > ... Discuss... > > Originally published on tmo, a blog you subscribe to. > > Sent to ihadtopee@gmail.com. Unsubscribe. [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOmh5T0duUEtVSWFGQjlyRUY2%0D%0ASGY0dUlDbnFnWmVEQUswME9pNG16ZTY0WVZHcUJiQUdnbG9IZ1JZdm1xUmt4MDZL%0D%0ANVFibkFTNGdlLXFySmZLUFNvZFJBZ3A3ejhISjlqTUFiWGx1R1RlQlRjPUBwcm90%0D%0Ab25tYWlsLmNvbTs0MjgxOTMwNjkz) # Write.as Drafts publishing From: Pete Moore To: davidblue@extratone.com Date: Feb 6, 2022 Subject: Write.as Drafts publishing Great setup, David!  I love seeing low-friction publishing tools like this, especially ones that allow you to take advantage of excellent plaintext editors.  With any luck Write.as could adopt use of an API that would forgo the need for the CLI middleman entirely, allowing publishing from iOS as well through apps like Drafts or Ulysses. Cheers, -Pete Web: https://pimoore.ca Micro.blog: https://micro.blog/pimoore GitHub: https://github.com/pimoore [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOkE1MUU4ODY0LTYxQkEtNDAw%0D%0ARS05MjUwLTUxQzlEOTBCRUYwOUBwaW1vb3JlLmNhOzE3MDU1Njg4ODI%3D) # Declare a Personalized Vocabulary across Apple’s OSs with Text Replacement If you’re like me, your cumulative experience of typing on iPhones for more than a decade is probably saturated with needlessly disruptive, unsolicited, and inaccurate autocorrection. Certain proper nouns and a dozen or so quasi-localized dialectal terms in our day-to-day writing/speech have been treated as # Drafts Directory: Search [image:B4499CDC-E5B3-46B5-AF5F-CD033CA408D8-1528-0000002539B0CCBF/drafts-ogimage-action-d9c60102fd45e0cb516e1b49ed50a81e3c3a2b90f81f55df8f43d0feb0512978.png] [image:9267DA15-CAA5-40EA-9433-53F75A8CD77C-1528-0000002539AE9202/cat-face.png] * [NeoCities](https://actions.getdrafts.com/g/1uF) * Posted by David Blue, Last update 36 minutes ago [Drafts Directory: Search](https://actions.getdrafts.com/search?utf8=%E2%9C%93&q=David+Blue) # Assorted Birthday Configurables [image:94F61A9B-3C72-47D2-8CD9-53B2E1FE9542-1300-00000025F43EA3C6/IMG_1840.png] ![Eyes](https://user-images.githubusercontent.com/43663476/151458197-5f6ccd23-1a36-441d-a66f-ec02cebc18b7.png) ## A blog post? A task list? A collection of assorted unfinished project results so far. I managed to live nearly 28 round years on this planet without actually touching *Task Management Software* of any kind, as of today. I suspect I will look back upon whatever landmark moment it was this past Spring/Summer that ended that streak as The whole concept of task management using actual software tools is basically brand new [image:82C11D1B-3A52-4573-A616-524EA6D30C69-1300-000000260386A977/Thursday, 27 Jan 2022 143608.png] [image:C2520B71-6D58-40E9-9A48-E8534EC1D80E-1300-000000260BB659CD/IMG_1832.png] [image:736ECB15-2119-4C91-BC44-14734EB5E6EB-1300-0000002612CB4EE5/Thursday, 27 Jan 2022 162843.png] [image:A327FA2E-1B25-435E-A2B3-E4CFA86371C3-1300-0000002650503F6E/IMG_1705.png] [image:606677F5-EF3C-4CDE-A6A5-537442707644-1300-0000002687DECE96/Friday, 21 Jan 2022 150426.png] ![image](https://user-images.githubusercontent.com/43663476/151458220-1f1ffafd-02b1-4afe-b973-4feeb6f680ef.png) ![image](https://user-images.githubusercontent.com/43663476/151458241-e3443f85-efc5-448b-9a22-b30d61e9bd2e.png) ![image](https://user-images.githubusercontent.com/43663476/151458261-adbb9333-e836-4873-b764-0881f55fef80.png) ![image](https://user-images.githubusercontent.com/43663476/151458275-07158943-aae4-4130-86f4-eddf123811f1.png) # Birthday ToDos - [ ] Text Replacement Guide - [ ] Drivey Average Speed Shortcut - [ ] Collect Telegram Configurables (Shortcuts, Themes, Rose Bot Settings?) - [ ] iOS System Sounds Repository- - [ ] # This is Tim: Complete Apple Q1 2022 conference call transcript [image:A27F7D4A-3607-48AD-B31E-706DF89EB041-3011-000000425AFCE84B/tim-cook-wwdc.jpg] [image:E62D5D60-CC8D-4514-AAF5-778EAE17CF4B-3011-000000425AFA9B5C/_tim-cook-wwdc.jpg] Here’s a complete transcript of Apple’s conference call following its announcement of its [record first-quarter 2022 results](https://sixcolors.com/post/2022/01/apple-results-the-biggest-ever-123-9b/). You can also [watch our recap of Apple’s results](https://www.youtube.com/watch?v=nRekz4ausx8&feature=emb_imp_woyt). **Tim Cook**: Thank you Tejas and good afternoon. Today, we are proud to announce Apple’s biggest quarter ever. Through the busy holiday season, we set an all time revenue record of nearly $124 billion, up 11% from last year, and better than we had expected at the beginning of the quarter. And we are pleased to see that our active install base of devices is now at a new record, with more than 1.8 billion devices. We set all time records for both developed and emerging markets and saw revenue growth across all of our product categories, except for iPad, which we said would be supply constrained. As expected, in the aggregate, we experienced supply constraints that were higher than the September quarter. Before I discuss our results in greater detail. I want to first acknowledge the toll that COVID continues to have on communities around the world. In many places, case counts are higher and health systems more strained than at any point throughout the pandemic. On behalf of all of us at apple, I want to extend our deep gratitude to the scientists, doctors, nurses, and so many others on the front lines of combating COVID 19. This is our eighth quarter reporting results in the shadow of the pandemic. And while I can’t say it gets any easier, I can say I’m incredibly proud of the way our teams have come together and continued to innovate on behalf of our customers. A few weeks ago, we marked the fifteenth anniversary of the day Steve revealed iPhone to the world. We knew that we had the beginnings of something fundamentally transformative, though none of us could have predicted the incredible and meaningful impact it would have on all of our lives. The creative spirit that made the first iPhone possible has thrived to apple every day since. We never stop creating. We never stop innovating. You can see that spirit reflected throughout our products, from the incredible performance and capability of our M1 chips to our powerful yet easy to use operating systems, to our unrivaled iPhone camera systems, to the beauty and magic of AirPods. That’s why each of our major products leads the industry in customer satisfaction for their respective category. People expect Apple to solve hard problems with easy to use products. And iPhone has never been more popular. During December quarter, we set an all time revenue record for iPhone, thanks to the strength of our incredible iPhone 13 lineup. This is the best iPhone lineup we’ve ever had. And the reaction from the press and our users have been off the charts. This past quarter, we also set another all time revenue record for Mac, with customers eager to get their hands on an M1 powered MacBook air iMac or MacBook Pro. We’ve been thrilled with a response from pro users to the M1 Pro and M1 Max chips, and to see how Apple Silicon is blowing them away with its power, performance and efficiency. Despite the constraints I mentioned earlier, our iPad lineup continues to be indispensable to tens of millions of people, from teachers and students to artists and creators. Customers are eager to get their hands on our ninth generation iPad, which features a beautiful display and double the storage capacity, as well as the new iPad mini with its ultraportable design. Wearable, home and accessories, meanwhile, set an all time revenue record. Customers are loving the Apple Watch Series 7 with its cutting edge health and fitness tracking features. Nearly every day, I get notes from customers who share how a heart alert led to a life saving appointment with a cardiologist. And more recently I’ve been hearing from people who tell me that their Apple Watch saved their lives by calling 911 when they couldn’t. As I’ve said, we’re still in the early innings with our health work, but every day I am encouraged by our positive impact. We are also making great advancements in audio, and are seeing strong demand from customers as a result. The HomePod mini continues to earn praise for combining the intelligence of Siri with an immersive room filling audio experience. And our customers have responded with a lot of excitement to the magic of spatial audio on AirPods, which packs the acoustics of a concert hall. As always, the deep integration of hardware, software and services is a hallmark of everything Apple makes. It’s a principle you can see at work in the introduction of SharePlay, a feature that offers a whole new way to create shared experiences by letting users watch and listen to their favorite content together on FaceTime. And we continue to invest in innovation across our services business, which set another all time revenue record last quarter and performed even better than we had anticipated. The App Store continues to be an economic miracle for developers around the world, and a safe and trusted place for consumers to discover their favorite apps. Since it’s launch, we have paid developers selling digital goods and services more than $260 billion, with 2021 setting a new record for their earnings. I’m also happy to report that in its first two years, Apple TV+ shows and movies have earned 200 award wins and more than 890 nominations. Among the powerful lineup are feature films like “The Tragedy of Macbeth,” “CODA,” and “Swan Song” along with many gripping new series coming up, including “Severance” and “The Afterparty.” Each one is a tremendous credit to all the storytellers, in front of the cameras and behind them, who’ve touched audiences all over the world. Fitness+ meanwhile continues to inspire customers to reach their health and fitness goals. We recently introduced Time to Run, an extension of our popular series Time to Walk, as well as new collections of workouts and meditations to help users make more intentional training choices. Despite the pandemic, our retail businesses saw its highest revenue in Apple’s history. And we also earned our highest ever customer satisfaction scores. That is a testament to the incredible adaptability our teams have shown as we’ve reimagined the retail experience. I also want to take a moment to thank our retail employees and AppleCare teams for the deep care you’ve given to our customers as they look to get the most out of our products, learn new skills, or track down the perfect gift. We have always led with our values, and with compassion and care, and never has that been more than during the pandemic. Last quarter we celebrated 10 years of our employee giving program, which we started to help our employees identify and support the causes they care most deeply about. We pledge to match their contributions to organizations doing important work at every level, from their local food pantry to global humanitarian nonprofits. In the last decade, this program has contributed nearly $725 million to charitable organizations. We also celebrated 15 years of Apple’s partnership with the global fund on Project RED, supporting their lifesaving work to expand healthcare services in Sub-Saharan Africa, for people living with HIV/AIDS. With the support of our customers, we’ve now raised nearly $270 million to fund prevention, testing and counseling services for people impacted by HIV/AIDS. And in keeping with our abiding belief in and commitment to education, we also launched a new partnership with the Boys and Girls Club of America. This initiative will help young people across the U.S. learn to code on iPad using our Everyone Can Code curriculum. And we are continuing to drive innovations to help combat climate change. We are already carbon neutral across our own operations, and we are working intensely to meet our 2030 goal of carbon neutrality across our supply chain and the life cycle of our products. To celebrate black history month, we will be releasing a special edition Apple Watch, black unity braided solo loop and matching Unity Lights watch face. And through our racial equity and justice initiative, we are continuing to support organizations blazing trails to a more equitable world in our economies, our classrooms, in our criminal justice system. We recognize as ever that it takes all of us to confront our most profound challenges. And at Apple, we are determined to do our part. That includes our own work in inclusion and diversity, which we are advancing every day. Let me close by saying that despite the uncertainty of the world, there is one thing of which I am certain: Apple will continue to innovate every day and in every way to deliver on the promise of technology at its best. I will now turn it over to Luca to go over our quarterly results in more detail. **Luca Maestri**: Thank you, Tim and good afternoon, everyone. We are very pleased to report, record financial results for the December quarter. We set an all time revenue record of $123.9 billion, an 11% increase from a year ago. We reached new all time records in the Americas, Europe, Greater China and the Rest of Asia Pacific. And it was also an all time record quarter for both products and services. On the product side, revenue was $104.4 billion, up 9% over a year ago, despite significant supply constraints. We grew in each of our product categories except iPad, where supply constraints were particularly pronounced, and set all time records for iPhone, Mac, and Wearable Home and Accessories. The strong level of sales performance, the unmatched loyalty of our customers and the strength of our ecosystem have driven our current installed base of active devices to a new all time record of 1.8 billion devices. The growth in installed base was brought based, as we set all time records in each major product category and in each geographic segment. Our services set an all time new record of 19.5 billion up 24% over a year ago with December quarter records in average geographic segment. Company gross margin was 43.8% up 160 basis points from last quarter, due to volume leverage and favorable mix, partially offset by higher cost structures. Products gross margin was 38.4%, up 410 basis points sequentially, driven by leverage and mix. Services gross margin was 72.4%, up 190 basis points sequentially, mainly due to a different mix. Net income of 34.6 billion and diluted earnings per share of $2.10 both grew more than 20% year over year and were all time records. Operating cash flow of 47 billion was also an all time record. Let me get into more detail for each of our revenue categories. iPhone revenue grew 9% year over year to an all time record of 71.6 billion despite supply constraints, thanks to a remarkable customer response to our new iPhone 13 family. We set all time records in both developed and emerging markets, reached a new all time high in the iPhone active installed base, and the latest survey of us consumers from 451 Research indicates iPhone customer satisfaction of 98%. For Mac, revenue of 10.9 billion was an all time record, with growth of 25% year over year, driven by strong demand for our newly redesigned MacBook Pro powered by M1, despite supply constraints. We are one year into our transition to Apple Silicon, and already the vast majority of our Mac sales are from M1 powered devices, which helped drive a record number of upgraders during the December quarter. Our momentum in this category is very impressive, as the last six quarters have been the best six quarters ever for Mac. iPad generated 7.2 billion in revenue, down 14% year over year, due to very significant supply constraints. But customer demand was very strong across all models. Despite the supply shortages, our installed base of iPads reach a new all time high during the quarter, thanks to a high number of customers that are new to iPad. In fact, around half of the customers purchasing an iPad during the quarter were new to the product. Wearables Home and Accessories set a new all time record of 14.7 billion, up 13% year over year. And we set all time revenue records in each geographic segment. We also continue to improve and expand our product offerings in this category to create unique experiences, showcasing our deep integration of hardware, software and services. In addition to an outstanding level of sales performance globally, Apple Watch continues to extend its reach, with over two thirds of customers purchasing an Apple Watch during the quarter being new to the product. Turning to services, as I mentioned, we reached an all time revenue record of 19.5 billion, up 24%, with all time records for cloud services, for music, video, advertising and payment services, and a December quarter record for the App Store. These impressive results reflect the positive momentum we are seeing on many fronts. First, as I mentioned before, our install base has continued to grow and has reached an all time high across each geographic segment and major product category. Next, we continue to see increased customer engagement with our services. The number of paid accounts on our digital content stores grew double digits and reach a new all time high during December quarter in every geographic segment. Also, paid subscriptions continue to show very strong growth. We now have more than 785 million paid subscriptions across the services on our platform, which is up 165 million during the last 12 months alone. And finally, we are adding new services that we think our customers will love, and we continue to improve the breadth and quality of our current service offerings. Just in this last quarter, we’ve added incredible new content on Apple TV+, on Fitness+, and Apple Arcade, and a brand new way to listen to music with Apple Music Voice. We also announced in November the beta program for Apple Business Essentials, a new service offering that brings together device management, 24/7 support, and iCloud storage to help small businesses manage the end-to-end life cycle of their employees’ Apple devices. We are very excited that many thousands of small business customers are already actively participating in the beta program. This announcement is just one of many ways we are expanding our support for enterprise and business customers. With the latest MacBook Pros that we introduced last October, the new M1 powered Mac lineup has quickly become the preferred choice of Macs among enterprise customers. Shopify, for example, is upgrading its entire global workforce to M1 powered MacBook Pro and MacBook Air. By standardizing on M1 Macs, Shopify continues its commitment to providing the best tools to help its employees work productively and securely from anywhere. And Deloitte Consulting is expanding the deployment of the Mac employee choice program, including offering the new M1 MacBook Pro to empower their professionals to choose devices that work best for them in delivering consulting services. Let me now turn to our cash position. Due to our strong operating performance and holiday quarter seasonality, we ended the quarter with $203 billion in cash plus marketable securities. We decreased commercial paper by 1 billion, leaving us with total debt of $123 billion. As a result, net cash was $80 billion at the end of the quarter. Our business continues to generate very strong cash flow, and we were able to return nearly $27 billion to shareholders during the December quarter. This included 3.7 billion in dividends and equivalents and 14.4 billion through open market repurchases of 93 million Apple shares. We also began 6 billion accelerated share purchase program in November, resulting in the initial delivery and retirement of 30 million shares. As we move ahead into the March quarter, I’d like to review our outlook, which includes the types of forward-looking information that Tejas referred to at the beginning of the call. Given the continued uncertainty around the world in the near term, we are not providing revenue guidance, but we are sharing some directional insights based on the assumption that the COVID related impacts to our business do not worsen from what we are projecting today for the current quarter. We expect to achieve solid year over year revenue growth and set a March quarter revenue record despite significant supply constraints, which we estimate to be less than what we experienced during the December quarter. We expect our revenue growth rate to decelerate from the December quarter, primarily due to two factors. First during the March quarter a year ago, we grew revenue by 54%. Remember that last year we launched our new iPhones during the December quarter, while this year we launched them during the September quarter. Due to the later launch a year ago, some of the associated channel inventory fill occurred during the March quarter last year. As a result of the different launch timing, we will face a more challenging year over year compare. Second, we expect foreign exchange to be a three point headwind when compared to the December quarter growth rate. We currently expect FX to have a negative impact on growth of two points in the March quarter, while it represented a one point benefit during the December quarter. Specifically related to services, we expect to grow strong double digits but decelerate from the December quarter performance. This is due to a more challenging compare because a higher level of lockdowns around the world last year led to increased usage of digital content and services. We expect gross margin to be between 42.5 percent and 43.5 Percent. We expect OPEX to be between 12.5 billion and 12.7 billion. We expect OINE to be around -150 million, excluding any potential impact from the mark to market of minority investments, and our tax rate to be around 16%. Finally, today our board directors has declared a cash dividend of 22 cents per share of common stock payable on February 10th, 2022 to shareholders of record as of February 7th, 2022. And with that, let’s open to the call to questions. **Wamsi Mohan, Bank of America**: Your margins have clearly been very impressive. So I have one question each on product and one on services gross margins. On product gross margins, that’s clearly benefiting from a very strong mix. So Tim, I’m curious, how sustainable do you think these mix trends are from the data that you see? And can you share any thoughts across how the Pro and Pro Max mix compared to prior cycles? And on the services side, if I could just ask that too, when you look at the gross margins there, that’s been really impressive. Can you give us some sense of where within Services you’re seeing particularly favorable mix trends and how should investors think about the trajectory of these margins given some of the sizeable investments you’re making to drive very successful areas like content for TV+ for example. **Tim Cook**: Wamsi, it’s Tim. In terms of the mix, you know, we don’t comment directly on mix, but what I would tell you is that we saw strong demand across the iPhone 13 family. And in fact we had several of the top selling models in various markets, including the top five in the U.S. And Australia, the top four in urban China, two of the top three in the UK, three of the top four in France and Germany, and four of the top six in Japan. And certainly based on some external data that I’ve seen, it does seem to say that we are gaining share as well. So we feel quite good about the momentum of iPhone. And I should add that we were constrained during the quarter. **Luca Maestri**: Wamsi, on the services side, you were asking about gross margin there, as you know, our services business in aggregate is accretive to overall company margin. And as you know, our services portfolio is very broad and it contains businesses with very different margin profiles. The difference in margin profile is due in part to the nature of those businesses, and in part to the way that we account for them. In some cases, we account on a net basis as opposed to a gross basis. And so as a result, the services gross margin percentage over time will be influenced by the relative growth of the different businesses within the portfolio. You know, we do not guide at the product and services level, but I think you’ve seen the guidance that we provided for the March quarter at the total company level 42.5 to 43.5 percent, obviously very strong compared to our recent history, and so we’re very pleased with that. **Kyle McNealy, Jefferies**: Congrats on the solid iPhone result. That’s very good. I assume that you may have prioritized iPhone to the extent there may be similar components that are used for iPhone and iPad. Can you just level set me on that if that’s not the case and if it is, should we see a recovery on iPad as you move past your prime iPhone selling season, and you may have better access to components or better supplies as we move through the next few months of the year? **Tim Cook**: Kyle, it’s Tim. From a supply constraint point of view, as you recall, we said that in Q1, the December quarter, that we would have constraints more than six [billion], and we clearly did have constraints more than six. For March, we’re saying that we will have less constraints than we had in the December quarter. If you look at the commonality between different different products, there is some, but generally the challenge is on legacy nodes, and these legacy nodes are by supplier. And so it’s much more focused on the supplier than anything else. Versus us, you know, behind the curtain, finding a place to take it. There’s not none of that, there is some of that, but largely we have to take it wherever the shortages are. **Kyle McNealy, Jefferies**: Okay, great. Can you give us any other color on kind of the trajectory of iPad and what’s impacting this quarter and where it might go in the March and the June quarter? **Tim Cook**: Yeah the issue with iPad, and it was a very significant constraint in the December quarter, was very much on these legacy nodes that I had talked about. Virtually all the problem was in that area. And so overall we’re not guiding by product or constraint by product level, but overall we do see an improvement in the March quarter in terms of the constraints going down versus what they were in the December quarter. **Shannon Cross, Cross Research:** Tim, could you talk a bit about the Mac business? Looking back, it’s up about 50% from the calendar 2019 revenue. You did almost 11 billion this quarter. And you’re still working through the M1 transition. So can you talk about where you see the opportunity to gain share, what are really sort of the target markets that you think you can go after in her to grow this beyond, I think it was about 37 billion in the last 12 months. **Tim Cook**: Mac sset an all time revenue record at 10.9 billion for the quarter, that was up 25%. And as you point out the last six quarters for the Mac have been the top six revenue quarters of all time. And what’s further very good about this is we set all time revenue records in Americas, in Europe and the Rest of Asia Pacific, and we set a December quarter record in Greater China. And so it’s not narrowed to a particular geographic area that we’re doing well in, it’s almost across the board. The response is very much because of M1, and we got even more response with the MacBook Pro that we launched during the Q1 time frame. Both the upgraders, which we had a record number of upgraders for the December quarter, but also in markets like China, six out of ten sales are to people new to the Mac. And so it’s powered by both upgraders and switchers. Customer satisfaction is off the charts. And so what I see this as is a product that will be very successful in a number of different markets from education to business, to the creative industry and in all geographic markets. We’re not limiting ourselves. **Shannon Cross, Cross Research:** Luca, can you talk a bit more on services? You know, you obviously outperformed your guidance or your expectations as well as certainly where we were at. What were the things that really outperformed and maybe what trends are you seeing that that is driving the extra revenue. **Luca Maestri:** Yes, Shannon, it was really great on all fronts. We set December quarter records in average geographic segment. And then as I mentioned earlier, an all time record for cloud, for music, for video, for advertising, for payment services, December quarter record in the App Store, so we’ve done, as you said, better than what we were expecting at the beginning of the quarter. This overperformance has been spread around the world and spread around our services categories. And the reality is this combination of factors, the fact that the installed base is growing the fact, the fact that we continue to have more and more engagement of our customers on all the services. Paid subscriptions is a phenomenal story—we now have 785 million paid subs. We just we’ve increased 165 million in the last 12 months alone, right. And so all these things combined are really powering the business. Very, very pleased with the performance. **Katy Huberty, Morgan Stanley:** First question, just as it relates to some of the disruption you’ve seen on the component side, manufacturing and logistics over the past couple of years, are you starting to rethink your broader or supply chain strategy or the manufacturing footprint on the back of the significant disruption? Are you happy with the overall geographic exposure that you see in the supply chain today? **Tim Cook**: Katie, if you sort of step back and look at how we’ve done, our largest issue by far has been the chip shortage that is industry wide and on these legacy nodes, as I had mentioned earlier. And I think our supply actually does very good considering the shortages, because it’s a fast moving supply chain, the cycle times are very short, there’s very little distance between a chip being fabricated and packaged and a product going out a factory. And so, no, I don’t see that it makes a fundamental change in the supply chain. **Katy Huberty, Morgan Stanley:** And how are you thinking about the metaverse opportunity and Apple’s role in that market? **Tim Cook**: Well, that’s a big question. But you know, we’re a company in the business of innovation, so we’re always exploring new and emerging technologies. And we’ve spoken at length about how this area is very interesting to us. Right now we have over 14,000 ARKit apps in the App Store, which provide incredible AR experiences for millions of people today. And so we see a lot of potential in this space and are investing accordingly. **Amit Daryani, Evercore:** I guess first off on the supply chain side, I think things continue to be fairly volatile. I’d love to get your perspective. If you feel if things or supply chain issues are starting to alleviate or they still remain challenging. And then maybe I missed this, but could you perhaps tell us how much revenue was left on the table in December because of these supply chain issues and how does that number shake out in March? **Tim Cook**: Amit, what we’ve said in terms of December and March was that it was very difficult to estimate with great precision constraints, but we said that they would be more than the Q4 or more than the September quarter. And we’re saying that March will be less than the December quarter. And so that’s the kind of verbiage that we place around it. In terms of, is it still challenging? Yes, it is challenging. And for us, we pride ourselves on getting products to customers who really want them and try to do that in a fast basis. And so it’s frustrating that we can’t always do that at the speed that we would like. However, March is better than December. And so there’s some encouraging sign there. We’re not predicting when it will balance overall, obviously, because of the number of variables that go into such a prediction. **Amit Daryani, Evercore:** Fair enough. And Tim, I think one of the topics investors can struggle a fair bit with Apple is really just trying to understand visibility around your product roadmap. And, you know, I think some of your tech peers tend to be more vocal about their initiative. Some of them go change their name when they find an initiative that’s attractive, I feel. You folks are spending, I think $23 billion on R&D in ’21. So you’re spending a fair amount and, maybe without telling us the roadmap, could you just talk about, how do you think about where to focus your R&D resources on? And to some extent is the way to think about this R&D spend, how much of it is really done on things that are more evolutionary on products that are out there in the marketplace versus things that we haven’t seen yet or aren’t potentially offerings. **Tim Cook**: You know, we have a little different model.We try to announce things when they’re ready or close to ready and try to maintain an element of surprise in there. And so that explains hopefully what we do with our roadmap, and I think that’s proven successful for us and other people can do it differently, of course, but it’s proven good for us over time to do that. So we’re gonna continue to do that. In terms of deciding where we invest in, we look at areas that are sort of at the intersection of hardware, software, and services. Because we think that that’s where the magic really happens and it brings out the best in Apple. And so there are areas that have more than peaked our interest and we are investing in those, and you can tell through time that we’ve ramped our R&D spend even more than we were before. And so there’s quite a bit of investment going into things that are not on the market at this point, as there always are. **David Vogt, UBS**: I just wanted to dive in and get your perspective on China and sort of the macro climate there and how that sort of pertains to your business as we think about it going forward. And the reason why I’m asking is we’ve heard some concerns that current policies might have caused a pause in this market and smartphone inventory. You know, maybe more specifically the local vendors could be a little bit elevated going into Chinese New Year. We just want to get your thoughts on what you’re seeing in this market around this sort of potential development, and then maybe touch on sell in versus sell through in that market. **Tim Cook**: I can only comment for us. Our sales grew 21% there in the last quarter. We’re very proud of that. I’ll stay away and let other people be the economist and make the macro determinations, but what we are seeing there was super impressive with all time revenue records and a record number of upgraders and strong double digit growth in switchers on iPhone, which is very important to us. And as I had mentioned before we had the top four selling phones in urban China. And so there’s lot of good there. And I would remind you that iPhone was constrained in the quarter. And so I’m not sure where the statements are coming around about inventory. And I can’t comment on whether other people have more or not. I don’t know the answer to that. **David Vogt, UBS**: On the supply chain, obviously you’ve been managing it incredibly well the last 12 to 18 months and gross margins have actually performed relatively well, mix driven both between product and services. Can you help us think about the quantifiable impact or maybe the cost that you’re carrying due to the supply chain that may be, I don’t want to use the word transitory, but we’d expect over the longer term that might fade a little bit, and you’ll get a little bit of a benefit as we get past some of the supply chain issues over the next 12 months or so. **Tim Cook**: We’re seeing inflation and it’s factored into our gross margin and OpEx that Luca reviewed with you earlier. Logistics, as I’ve mentioned on a previous call, is very elevated in terms of the cost of moving things around. I would hope that at least a portion of that is transitory. But the world has changed. And so we’ll see. **Samik Chatterjee, JP Morgan**: The first question that I had was really on Apple TV+, and I know some of the other players in this market have talked about slowing subscriber growth as we exit the pandemic. So curious if you can share what trends you’re seeing in Apple TV and Apple TV+, and how similar or dissimilar they are and how your content is maybe helping you on that aspect. **Tim Cook**: You know, we don’t give out subscriber numbers for Apple TV+. What we do do is give out a subscriber number for our subscription number for the total number of subscriptions that we had. And I think Luca mentioned earlier, we ended the quarter at 785 million. And so we were incredibly pleased with that. That’s a huge growth on a year over year basis of 165. And it counts as you recall, both Apple branded and third party. In terms of how we’re doing with TV+, we’ve been and honored with 200 wins and 890 nominations. We’re doing exactly like we had wanted to with giving storytellers a place to tell original stories and feel really good about where we are competitively and strategic position of the product. **Samik Chatterjee, JP Morgan**: Similarly on Apple Pay, can you just help us think about when you think about the next few years, where are the biggest opportunities either be it in terms of like geographies or customer segments that you may not be tapping into currently and have an opportunity in? **Tim Cook**: Well, putting aside any kind of thing that that’s on our roadmap for a second in that area, which we obviously wouldn’t talk about in a call, I would say that I think Apple Card has a great runway ahead of us. It was rated to the number one mid-size credit card in customer sat by JD Power and has fast become people’s main credit card for many, many people. And the growth of Apple Pay has just been stunning. It’s been absolutely stunning. And there’s still obviously a lot more of there to go because there’s still a lot of cash in the environment. And so I think that both of these and whatever else we might do have a great future ahead. **Chris Caso, Raymond James**: First question is just a little bit of help in interpreting the guidance. And if you could speak to the March quarter perhaps in terms of seasonality and seasonal performance, and Luca, as you mentioned last year because of the later launch of the phone that some of that came into the March quarter and that was better than seasonal performance in March. Should we interpret because the supply constraints are easing somewhat as you go into the March quarter that we should see something similar that March quarter we should get some better than seasonal performance. Is that the correct way to interpret your guidance? **Luca Maestri**: We talked about it on a year over year basis because that’s probably how most people look at it. And so just to recap what we said, first of all, we expect a record for the March quarter. We expect solid growth on a year over year basis. But as Tim was saying, we still expect significant supply constraints, but less than what we’ve seen in December. So I think on that basis, you can do the math around sequential. But given where we are in the environment, given the difficult compare both on iPhone and as I mentioned during my prepared remarks on services, we are very happy with the way we are guiding, the way that the business is going right now. **Chris Caso, Raymond James**: A follow up question is on perhaps the sustainability and repeatability of the growth in iPhone. After two very good years, well received product and the 5G upgrade cycle. And I think there was a point in time when perhaps it was a view from some that iPhone was ex growth and that’s been proven wrong. Off of these very strong results, maybe to speak to your level of confidence that iPhone continues to grow in the future and kind of what are the avenues for that growth. **Tim Cook**: Chris, it’s Tim. What I would say is that the iPhone has become an integral part of so many people’s lives, now more than ever. And the active install base of iPhone continues to grow and is now at an all-time high. And during December, as we had mentioned, we had a record number of upgraders and switchers, strong double digit, which I think speaks to the strength of the product. And that’s all in addition to an enormous customer satisfaction rating of 98% and doing well throughout the geographies, I’d mentioned some of the geos that we track and how many units that we have on the top selling model charts. And even though this is the second product announcement that has 5G in it, we’re still really in the early innings of 5G. If you look at the install base and look at how many people are on 5G versus not, and we don’t release those exact numbers, but you can do some math and estimate those. We maintain a very optimistic view on iPhone long term. **Ben Bollin, Cleveland Research:** Tim, I’m interested in how you think about the relationship between the total iOS installed base, and then the subsequent performance you see within the services or the paid subscriptions. Second part to that is, how do you look at the existing services business in terms of the growth you get from customers who are already subscribers versus completely net new or “green-field” subscribers. **Tim Cook**: I think I’ll let Luca comment on the second part of that. But if you back up and sort of look at how we’re doing, even though we have 785, million subs, relative to the total number of products offered and the customers it’s offered in, there’s still a lot of room to grow there. And so the way that I look at it is that there’s a lot more green field in front of us. **Luca Maestri:** And Ben, on the services engagement, and how we think about customers, obviously it’s important for us that customers are engaged on our services platforms. And the ones that we have, we know that the more engaged they are, they’re more likely to stay with Apple for the long term. So we just obviously track all those metrics, and they’re very important for us. And that’s why we continue to improve the quality of our offerings and the quantity over time. As you’ve seen, we’ve launched a lot of new services. We obviously care a lot about new customers as well. That’s why we keep track of the installed base and a lot of other metrics on that front. It’s very similar to what we do with products. I mean, also for products, we care a lot about upgraders, we care a lot about switchers. It’s obviously the combination of the two that when you put it together provides the level of growth that you’ve actually seen in our services business. I mean, the last 12 months we’ve done over 72 billion of revenue on services, it’s the size of a Fortune 50 company. It couldn’t happen without contribution from both existing and new customers. **Harsh Kumar, Piper Sandler:** Tim, I had a question on the content on Apple TV. When we look at the Apple content that you guys put out on TV, original content, it’s typically very socially responsible and healthy. For example, a Ted Lasso. Has this in effect created a constraint or a hesitancy of some sort for Apple to go and purchase studios when they come up or have those decisions been primarily financial or otherwise? **Tim Cook**: We don’t make purely financial decisions about the content. We try to find great content that has a reason for being, and we love shows like Ted Lasso and several of the other shows as well that have a reason for existing and may have a good message and may make people feel better at the end of it. But I don’t view that we’ve narrowed our universe of things we’re selecting from. There’s plenty to pick from out there. And I think that we’re doing a pretty good job of it as we speak. **Harsh Kumar, Piper Sandler:** My follow up was the Apple vision of healthcare in the future. So you guys have sort of cautiously, you know, approached healthcare with iWatch and iPhone as mostly a preventative sort of approach. It provides you updates. But do see a situation down the line where Apple perhaps plays a more active role, either through the watch or some other device where perhaps a doctor or a hospital mandates that the Watch be worn effectively for critical and vital monitoring. And I was curious if you could just give us some color on how you guys think about healthcare and iWatch and that confluence. **Tim Cook**: Well with the Apple Watch there’s literally not days that go by without me getting notes about someone that’s received a health alert, maybe it’s to do with their cardiovascular health, or more recently, a lot people have told me that they fell and was knocked unconscious and couldn’t respond. And the Watch responded for them to emergency contacts and emergency personnel. And so there’s a lot that we’re doing today. My sense has always been that there’s more here, but I don’t want to get into a road map discussion on the call. But we can continue to kind of pull the string and see where it takes us. But we’re really satisfied with how we’re doing in this area. Because we are fundamentally changing people’s lives and in some cases saving people’s lives. So it’s an area of great interest. **If you appreciate articles like this one, support us by [becoming a Six Colors subscriber](https://sixcolors.com/subscribe/). Subscribers get access to an exclusive podcast, members-only stories, and a special community.** [This is Tim: Complete Apple Q1 2022 conference call transcript](https://sixcolors.com/post/2022/01/this-is-tim-apple-q1-2022-conference-call-transcript/) # Birthday Actions Updates From: Drafts To: asphaltapostle@icloud.com, dieselgoth@yahoo.com Date: Jan 27, 2022 Subject: Birthday Actions Updates Left off `01272022-062050` here: [**Popular Actions | Drafts Directory** Page 19](https://actions.getdrafts.com/drafts_actions?order=popular&page=15) _1 [Strawberry by Doss](https://song.link/i/1553501219) 2 [Will You Be? by Baltra](https://song.link/i/1560411683) 3 [You Could Be by Anz, George Riley](https://song.link/i/1583330906) 4 [Slugs by Harrison BDP](https://song.link/i/1547278235) 5 [Techno Halcyon by Ivy Hollivana](https://song.link/i/1550264586) 6 [Cuiva by Parra for Cuva](https://song.link/i/1554130907) 7 [Never Come Back by Caribou](https://song.link/i/1487724484) 8 [You Can Do It by Caribou](https://song.link/i/1579568544) 9 [Never Enough by Disclosure](https://song.link/i/1579091593) 10 [Hyperfunk (Mixed) by Antonio](https://song.link/i/1566023451) 11 [Genesis by Ivy Hollivana](https://song.link/i/1566156050) 12 [U Already Know by DJ Seinfeld & Teira](https://song.link/i/1565509312) 13 [Harmony by Origin8a & Propa & Benny Page](https://song.link/i/1556899000) 14 [Not Alone (ReeLLove Remix) by Lusine & ReeLLove](https://song.link/us/i/1554899944) 15 [I Can’t Explain by The Juan MacLean](https://song.link/i/1560964065) 16 [Gone by BAILE](https://song.link/i/1565404578) 17 [Every Cloud by Harrison BDP](https://song.link/i/1564104025) 18 [Puppy by Doss](https://song.link/i/1553501217) 19 [If the Shoe Fits by DJ Swisha](https://song.link/i/1552517751) 20 [Every Single Time by Bissett](https://song.link/i/1548503334) 21 [Music To Heal To by Elkka](https://song.link/i/1584210954) 22 [Mars by Qrion, Mars Kasei](https://song.link/i/1581092689) 23 [I Have a Love - Overmono Remix by For Those I Love](https://song.link/i/1566023459) 24 [Say Something by Kylie Minogue](https://song.link/i/1586649177) 25 [Out of Sorts by BAILE](https://song.link/i/1591498695) _ [Voice - (1) Voicemail](https://voice.google.com/u/0/voicemail) [Find | Drafts Directory](https://actions.getdrafts.com/a/1Bu) [Enabling multifactor auth | RubyGems.org | your community gem host](https://rubygems.org/multifactor_auth/new?) [Event in Fantastical | Drafts Directory](https://actions.getdrafts.com/a/1CM) [How to Convert Seconds Into Miles Per Hour](https://sciencing.com/convert-seconds-miles-per-hour-8092768.html) [Search · ulysses](https://github.com/search?q=ulysses) [Log In — WordPress.com](https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fpublic-api.wordpress.com%2Foauth2%2Fauthorize%2F%3Fclient_id%3D1854%26response_type%3Dcode%26blog_id%3D0%26state%3Dbd336d38c80924fa7f2c2b0d74b70f27ec73d8f3f2d5faa4ca8acd078677a648%26redirect_uri%3Dhttps%253A%252F%252Fen.gravatar.com%252Fconnect%252F%253Faction%253Drequest_access_token%26jetpack-code%26jetpack-user-id%3D0%26action%3Doauth2-login&client_id=1854&signup_url=%2Fstart%2Fwpcc%2Foauth2-user%3Fref%3Doauth2%26oauth2_redirect%3Dhttps%253A%252F%252Fpublic-api.wordpress.com%252Foauth2%252Fauthorize%252F%253Fclient_id%253D1854%2526response_type%253Dcode%2526blog_id%253D0%2526state%253Dbd336d38c80924fa7f2c2b0d74b70f27ec73d8f3f2d5faa4ca8acd078677a648%2526redirect_uri%253Dhttps%25253A%25252F%25252Fen.gravatar.com%25252Fconnect%25252F%25253Faction%25253Drequest_access_token%2526jetpack-code%2526jetpack-user-id%253D0%2526action%253Doauth2-login%26oauth2_client_id%3D1854&email_address=dieselgoth) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes) [Login - Ulysses Styles & Themes](https://styles.ulysses.app/login.redirect_to) [cheatsheets/cheatsheets at master · Kapeli/cheatsheets](https://github.com/Kapeli/cheatsheets/tree/master/cheatsheets) [Tweet and Toot | Drafts Directory](https://actions.getdrafts.com/a/1OE) [Archive Draft | Drafts Directory](https://actions.getdrafts.com/a/1N1) [open-editions/corpus-joyce-ulysses-tei: James Joyce's novel Ulysses in TEI XML. Work-in-progress.](https://github.com/open-editions/corpus-joyce-ulysses-tei) [Issues · extratone/drafts](https://github.com/extratone/drafts/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) [Voice - Chet Munch](https://voice.google.com/u/0/messages?itemId=t.%2B15738234380) [Append to OneNote Journal | Drafts Directory](https://actions.getdrafts.com/a/1VR) [Adoption | RubyGems.org | your community gem host](https://rubygems.org/profile/adoptions) [Terminology: Look up | Drafts Directory](https://actions.getdrafts.com/a/1Gc) [Script Kit: Shortcut to Everything](https://www.scriptkit.com/) [trafilatura: Web scraping tool for text discovery and retrieval — trafilatura 1.0.0 documentation](https://trafilatura.readthedocs.io/en/latest/) [MD to DTTG | Drafts Directory](https://actions.getdrafts.com/a/1B4) [Replace Example | Drafts Directory](https://actions.getdrafts.com/a/1Fh) [Simplenote | Drafts Directory](https://actions.getdrafts.com/a/1Ih) [Toggle System Sleep | Drafts Directory](https://actions.getdrafts.com/a/1NL) [Bash Shortcuts Cheat Sheet - Kapeli](https://kapeli.com/cheat_sheets/Bash_Shortcuts.docset/Contents/Resources/Documents/index) [Convert miles per hour to seconds per mile - speed converter](https://www.unitjuggler.com/convert-speed-from-mph-to-secmile.html) [Markdown Code | Drafts Directory](https://actions.getdrafts.com/a/1GU) [tei · GitHub Topics](https://github.com/topics/tei?o=desc&s=stars) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs) [home(iowa)](https://iowa.neocities.org/) [blue | Whyp](https://whyp.it/user/WDXEW?query=paul&page=1) [Create note in Notes | Drafts Directory](https://actions.getdrafts.com/a/13T) [Markdown to Notes | Drafts Directory](https://actions.getdrafts.com/a/16g) [How To: Import / Export Groups on TextExpander.com – TextExpander](https://textexpander.com/blog/textexpander-import-export) [Seconds Per Mile. Conversion Chart / Speed Converter, Pace (Various Sports)](https://m.convert-me.com/en/convert/speed/secpermile_1.html) [Markdown Mail | Drafts Directory](https://actions.getdrafts.com/a/1Cp) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=6) [WordPress.com](https://wordpress.com/start/wpcc/oauth2-user?ref=oauth2&oauth2_redirect=https%3A%2F%2Fpublic-api.wordpress.com%2Foauth2%2Fauthorize%2F%3Fclient_id%3D1854%26response_type%3Dcode%26blog_id%3D0%26state%3Dbd336d38c80924fa7f2c2b0d74b70f27ec73d8f3f2d5faa4ca8acd078677a648%26redirect_uri%3Dhttps%253A%252F%252Fen.gravatar.com%252Fconnect%252F%253Faction%253Drequest_access_token%26jetpack-code%26jetpack-user-id%3D0%26action%3Doauth2-login&oauth2_client_id=1854) [Exporting Snippets from TextExpander (v6) | ThoughtAsylum](https://www.thoughtasylum.com/2016/04/23/Exporting-Snippets-from-TextExpander-(v6)/) [HTML Preview Form Example | Drafts Directory](https://actions.getdrafts.com/a/102) [jeffsaracco/Ulysses\_bot](https://github.com/jeffsaracco/Ulysses_bot) [Bear Note with date and location | Drafts Directory](https://actions.getdrafts.com/a/1BY) [Markdown Link | Drafts Directory](https://actions.getdrafts.com/a/1J2) [Flexibits](https://hub.flexibits.com/) [Recent Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions) [Import Todoist Project | Drafts Directory](https://actions.getdrafts.com/a/1MH) [Eval Draft | Drafts Directory](https://actions.getdrafts.com/a/1DK) [Inbox by Gmail | Drafts Directory](https://actions.getdrafts.com/a/1Fk) [adbar/trafilatura: Web scraping library and command-line tool for text discovery and extraction (main content, metadata, comments)](https://github.com/adbar/trafilatura) [backup-ulysses/backup-ulysses.sh at master · tjluoma/backup-ulysses](https://github.com/tjluoma/backup-ulysses/blob/master/backup-ulysses.sh) [Gravatar - Globally Recognized Avatars](https://en.gravatar.com/) [Insert Color (Shortcuts app example) | Drafts Directory](https://actions.getdrafts.com/a/1OX) [Voice - (1) Calls](https://voice.google.com/u/0/calls) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=7) [Flexibits](https://hub.flexibits.com/download) [WriteFreely](https://github.com/writefreely?type=source) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=4) [Reminder with Link | Drafts Directory](https://actions.getdrafts.com/a/1SD) [VirtualHostX – retina studio](https://retina.studio/virtualhostx/) [Release WriteFreely for iOS v1.0.8 · writefreely/writefreely-swiftui-multiplatform](https://github.com/writefreely/writefreely-swiftui-multiplatform/releases/tag/v1.0.8-ios) [Markdown Table | Drafts Directory](https://actions.getdrafts.com/a/1T3) [blue | Whyp](https://whyp.it/user/WDXEW) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=15) [Every Paul segment ever - Vergecast | Whyp](https://whyp.it/t/every-paul-segment-ever-vergecast-e3jGA/) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=5) [Refresh TextExpander Snippets | Drafts Directory](https://actions.getdrafts.com/a/1X1) [Soma - Ulysses Styles & Themes](https://dl.styles.ulysses.app/styles/soma-Vyg/install) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=2) [imessage | RubyGems.org | your community gem host](https://rubygems.org/gems/imessage) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=4) [Import URL | Drafts Directory](https://actions.getdrafts.com/a/1Pp) [Search Mega Action | Drafts Directory](https://actions.getdrafts.com/a/1GE) [Flexibits](https://hub.flexibits.com/auth/magic-link/?url_auth_token=ABbWeuZKolq0xDwtWU4i9JsYhu8:1nD01j:-LhzbxxdZpPdTmnppBIouJnGg7AzhhpgqgCx5WgYpuA&silent=true) [johnlindquist/kit: Script Kit. Automate Anything.](https://github.com/johnlindquist/kit) [Indent | Drafts Directory](https://actions.getdrafts.com/a/1Bw) [Share (selection) | Drafts Directory](https://actions.getdrafts.com/a/1I1) [Sign up | RubyGems.org | your community gem host](https://rubygems.org/sign_up) [Every Paul segment ever - Vergecast - Clyp](https://clyp.it/ox2p12uy) [Search · ulysses](https://github.com/search?o=desc&q=ulysses&s=stars&type=Repositories) [Event | Drafts Directory](https://actions.getdrafts.com/a/1Ia) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=9) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=11) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=5) [Releases · writefreely/writefreely-swiftui-multiplatform](https://github.com/writefreely/writefreely-swiftui-multiplatform/archive/refs/tags/v1.0.0b1-mac.zip) [Send to Reminders | Drafts Directory](https://actions.getdrafts.com/a/1E8) [Ulysses (with URL) | Drafts Directory](https://actions.getdrafts.com/a/1Nj) [BCC group message | Drafts Directory](https://actions.getdrafts.com/a/1N4) [Save to Dropbox & Create Share Link | Drafts Directory](https://actions.getdrafts.com/a/1NF) [WordPress.com](https://wordpress.com/start/wpcc?ref=oauth2&oauth2_redirect=https%3A%2F%2Fpublic-api.wordpress.com%2Foauth2%2Fauthorize%2F%3Fclient_id%3D1854%26response_type%3Dcode%26blog_id%3D0%26state%3Dbd336d38c80924fa7f2c2b0d74b70f27ec73d8f3f2d5faa4ca8acd078677a648%26redirect_uri%3Dhttps%253A%252F%252Fen.gravatar.com%252Fconnect%252F%253Faction%253Drequest_access_token%26jetpack-code%26jetpack-user-id%3D0%26action%3Doauth2-login&oauth2_client_id=1854) [Ulysses Release Notes Archive – Dropbox Paper](https://paper.dropbox.com/doc/Ulysses-Release-Notes-Archive--BayyrP8Kk~N4KqxX3k5vhqvgAg-JAYYBW6T5wKrjSeR7rc8Y) [Code Block (```) | Drafts Directory](https://actions.getdrafts.com/a/1Ux) [Markdown Reference Link | Drafts Directory](https://actions.getdrafts.com/a/1L4) [backup-ulysses/backup-ulysses-simpler.sh at master · tjluoma/backup-ulysses](https://github.com/tjluoma/backup-ulysses/blob/master/backup-ulysses-simpler.sh) [Voice - (8) Messages](https://voice.google.com/u/0/messages) [Drafts 5 Scripting API Documentation | Drafts Directory](https://actions.getdrafts.com/a/1Ph) [Gravatar - Globally Recognized Avatars](https://en.gravatar.com/emails/add) [linjunpop/imessage:](https://github.com/linjunpop/imessage) [💬](https://github.com/linjunpop/imessage) [Send iMessages from command-line](https://github.com/linjunpop/imessage) [Unicode Fun (Encircle or Flip) | Drafts Directory](https://actions.getdrafts.com/a/1T2) [writefreely/writefreely-swift: A Swift package wrapping the WriteFreely / Write.as API](https://github.com/writefreely/writefreely-swift) [Gravatar - Globally Recognized Avatars](https://en.gravatar.com/emails/new) [Every Paul segment ever - Vergecast | Whyp](https://whyp.it/t/every-paul-segment-ever-vergecast-e3jGA) [Email - Spark (Markdown) | Drafts Directory](https://actions.getdrafts.com/a/1JR) [Append to OneDrive Journal | Drafts Directory](https://actions.getdrafts.com/a/1D3) [robwalton/ulysses-python-client: Python x-callback-url client for Ulysses](https://github.com/robwalton/ulysses-python-client) [The Timing Web App – Timing Time Tracker](https://timingapp.com/help/web?utm_source=app&utm_campaign=appHelp&utm_medium=link) [Advanced Print/PDF export | Drafts Directory](https://actions.getdrafts.com/a/16Z) [tjluoma/backup-ulysses: Backup your entire Ulysses preferences folder (which includes your sheets, preferences, etc)](https://github.com/tjluoma/backup-ulysses) [Print - Markdown | Drafts Directory](https://actions.getdrafts.com/a/1E4) [Email to myself | Drafts Directory](https://actions.getdrafts.com/a/1Mr) [‎Munich: The Edge of War (2021) directed by Christian Schwochow • Reviews, film + cast • Letterboxd](https://letterboxd.com/film/munich-the-edge-of-war/) [API keys | RubyGems.org | your community gem host](https://rubygems.org/profile/api_keys) [CommandQ – retina studio](https://retina.studio/commandq/) [How to Calculate Order of Magnitude](https://sciencing.com/calculate-order-magnitude-7609633.html) [We're sorry, but something went wrong (500)](https://styles.ulysses.app/styles/?ref=ulmac_stylePrefs) [Dash Cheat Sheets - Kapeli](https://kapeli.com/cheatsheets) [Plain Text Preview | Drafts Directory](https://actions.getdrafts.com/a/1Vn) [Split at Delimiter | Drafts Directory](https://actions.getdrafts.com/a/1LK) [Preview | Drafts Directory](https://actions.getdrafts.com/a/1Ct) [New Draft with Safari Tabs | Drafts Directory](https://actions.getdrafts.com/a/16h) [Reminders (Fantastical/Lists) | Drafts Directory](https://actions.getdrafts.com/a/1MB) [Email in Spark | Drafts Directory](https://actions.getdrafts.com/a/1F0) [Smart Parentheses | Drafts Directory](https://actions.getdrafts.com/a/1Bz) [My Account - Ulysses Styles & Themes](https://styles.ulysses.app/account) [Append to Google Drive Journal | Drafts Directory](https://actions.getdrafts.com/a/1E2) [New Draft | Drafts Directory](https://actions.getdrafts.com/a/1Rc) [Soma - Ulysses Styles & Themes](https://styles.ulysses.app/styles/soma-Vyg) [Append to Clipboard | Drafts Directory](https://actions.getdrafts.com/a/1ES) [Inbox Sweeper | Drafts Directory](https://actions.getdrafts.com/a/1Rm) [Add to List | Drafts Directory](https://actions.getdrafts.com/a/1Ga) [Sheet in Ulysses | Drafts Directory](https://actions.getdrafts.com/a/1DW) [Twitter: Get Likes | Drafts Directory](https://actions.getdrafts.com/a/1Ht) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=7) [Flexibits](https://hub.flexibits.com/security) [riif | RubyGems.org | your community gem host](https://rubygems.org/gems/riif) [Discussions · johnlindquist/kit](https://github.com/johnlindquist/kit/discussions) [Email (Spark) | Drafts Directory](https://actions.getdrafts.com/a/1J3) [tei · GitHub Topics](https://github.com/topics/tei) [Select Back Links | Drafts Directory](https://actions.getdrafts.com/a/18W) [Convert seconds per mile to miles per hour - speed converter](https://www.unitjuggler.com/convert-speed-from-secmile-to-mph.html) [Transclude > Preview | Drafts Directory](https://actions.getdrafts.com/a/18w) [API Request Authorization - Dropbox](https://www.dropbox.com/oauth2/authorize?client_id=3u71mdh253npe9v&redirect_uri=x-drafts5-oauth://oauth-callback/dropbox&response_type=token&state=IKHAwHrBWMep7fD9svYl) [New API key | RubyGems.org | your community gem host](https://rubygems.org/profile/api_keys/new) [Edit settings | RubyGems.org | your community gem host](https://rubygems.org/settings/edit) [Ulysses](https://ulysses.app/) [Text Modifier… | Drafts Directory](https://actions.getdrafts.com/a/1Bg) [Best Text Editors for Mac in 2021 - iGeeksBlog](https://www.igeeksblog.com/best-text-editors-mac/) [Seconds Per Mile. Conversion Chart / Speed Converter, Pace (Various Sports) \*\* seconds per mile: 1](https://m.convert-me.com/en/convert/speed/secpermile_1.html?u=secpermile_1&v=1) [Twitter Splitter | Drafts Directory](https://actions.getdrafts.com/a/1Fb) [Send to Gmail | Drafts Directory](https://actions.getdrafts.com/a/1Fj) [Meta Data < > Draft | Drafts Directory](https://actions.getdrafts.com/a/17w) [Text Modifier… | Drafts Directory](https://actions.getdrafts.com/a/1Eg) [extratone/drafts](https://github.com/extratone/drafts) [Reminder in Fantastical | Drafts Directory](https://actions.getdrafts.com/a/1CN) [Send to Cardhop | Drafts Directory](https://actions.getdrafts.com/a/1Ur) [Export Styles - Ulysses Styles & Themes](https://styles.ulysses.app/styles?order=popular&style_format=HTML) [Login — Timing](https://web.timingapp.com/login) [(no title)](https://www.dropbox.com/1/oauth2/authorize_submit) [Go To Bookmark | Drafts Directory](https://actions.getdrafts.com/a/1cz) [Add Single Todoist | Drafts Directory](https://actions.getdrafts.com/a/1Hk) [Copy as HTML | Drafts Directory](https://actions.getdrafts.com/a/1IM) [Append to iCloud Journal | Drafts Directory](https://actions.getdrafts.com/a/1EY) [shortcuts | Drafts Directory](https://actions.getdrafts.com/a/1IS) [GitHub Style Preview | Drafts Directory](https://actions.getdrafts.com/a/1VC) [Ulysses › Press](https://ulysses.app/press/) [SwiftDocOrg/swift-doc: A documentation generator for Swift projects](https://github.com/SwiftDocOrg/swift-doc) [App Price | Drafts Directory](https://actions.getdrafts.com/a/1Kc) [Ears – retina studio](https://retina.studio/ears/) [Convert from Seconds per mile to Miles per hour and vice-versa, second per mile and mile per hour conversion](https://everydaycalculation.com/speed-pace-converter/second+per+mile-mile+per+hour) [Voice -](https://voice.google.com/u/0/voicemail?itemId=c.CihIUllSSlVOT0lZVEpQVEhaTFpYUFRZUFJQSFFVWFdSUFVQUk9UVkpKEAM) [(888) 203-6593](https://voice.google.com/u/0/voicemail?itemId=c.CihIUllSSlVOT0lZVEpQVEhaTFpYUFRZUFJQSFFVWFdSUFVQUk9UVkpKEAM) [Create MMD Table | Drafts Directory](https://actions.getdrafts.com/a/1GA) [Draft Library Summary | Drafts Directory](https://actions.getdrafts.com/a/12X) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular) [Paste | Drafts Directory](https://actions.getdrafts.com/a/1Ww) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=8) [Dash for macOS - API Documentation Browser, Snippet Manager - Kapeli](https://kapeli.com/dash) [Smart Brackets | Drafts Directory](https://actions.getdrafts.com/a/1CA) [Events in Fantastical | Drafts Directory](https://actions.getdrafts.com/a/1ED) [Account Settings - Ulysses Styles & Themes](https://styles.ulysses.app/settings) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=3) [Tweet with Tweetbot | Drafts Directory](https://actions.getdrafts.com/a/1CT) [Can I create GUI Mac apps without Xcode? And why? - Quora](https://www.quora.com/Can-I-create-GUI-Mac-apps-without-Xcode-And-why) [stopwatch | Drafts Directory](https://actions.getdrafts.com/a/1Eq) [HTML > Markdown | Drafts Directory](https://actions.getdrafts.com/a/197) [writefreely-swiftui-multiplatform/Shared/Assets.xcassets/AppIcon.appiconset at main · writefreely/writefreely-swiftui-multiplatform](https://github.com/writefreely/writefreely-swiftui-multiplatform/tree/main/Shared/Assets.xcassets/AppIcon.appiconset) [RubyGems.org | your community gem host](https://rubygems.org/) [all ulysses themes - Google Search](https://www.google.com/search?client=safari&rls=en&q=all+ulysses+themes&ie=UTF-8&oe=UTF-8) [Micropub Publish | Drafts Directory](https://actions.getdrafts.com/a/1QC) [Setting up multi-factor authentication - RubyGems Guides](https://guides.rubygems.org/setting-up-multifactor-authentication/) [Convert Lists to Headers | Drafts Directory](https://actions.getdrafts.com/a/1PK) [Mark Location | Drafts Directory](https://actions.getdrafts.com/a/1Hm) [cheatsheets/resources at master · Kapeli/cheatsheets](https://github.com/Kapeli/cheatsheets/tree/master/resources) [Troubleshooting - Howtos - Codinn Community](https://community.codinn.com/t/troubleshooting/3730#version-36-and-later-1) [Search in 1Password | Drafts Directory](https://actions.getdrafts.com/a/1HM) [Gravatar - Globally Recognized Avatars](https://en.gravatar.com/emails/) [Print - Plain Text | Drafts Directory](https://actions.getdrafts.com/a/1QN) [RubyGems.org | your community gem host](https://rubygems.org/profiles/linjunpop) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=9) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=10) [(no title)](file:///private/var/folders/1v/n0v4xk2s3f59zt75gxpyy8bm0000gp/T/B919E8E3-61A9-494D-8169-4CA3D3C61DA9-15427-00005726C7621949.html) [Write to Working Copy | Drafts Directory](https://actions.getdrafts.com/a/1Pe) [Time/Date Tags | Drafts Directory](https://actions.getdrafts.com/a/1Mu) [Mail | Drafts Directory](https://actions.getdrafts.com/a/1BC) [Recovery codes | RubyGems.org | your community gem host](https://rubygems.org/multifactor_auth) [Ulysses-TOC-Sheet/Ulysses-TOC-Sheet.txt at master · goetzf/Ulysses-TOC-Sheet](https://github.com/goetzf/Ulysses-TOC-Sheet/blob/master/Ulysses-TOC-Sheet.txt) [JayPanoz/Soma: Ulysses.app blueprint for a better ePub stylesheet](https://github.com/JayPanoz/Soma) [Spotish – retina studio](https://retina.studio/spotish/) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=13) [Require NPM Module | Drafts Directory](https://actions.getdrafts.com/a/1Et) [Mailto: | Drafts Directory](https://actions.getdrafts.com/a/1bw) [TextBuddy – retina studio](https://retina.studio/textbuddy/) [Quick Open | Drafts Directory](https://actions.getdrafts.com/a/1Wc) [seconds per mile to mph - Google Search](https://www.google.com/search?q=seconds+per+mile+to+mph&ie=UTF-8&oe=UTF-8&hl=en-us&client=safari#sbfbu=1&pi=seconds%20per%20mile%20to%20mph) [Log In — WordPress.com](https://wordpress.com/log-in/apple/callback#id_token=eyJraWQiOiI4NkQ4OEtmIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLndvcmRwcmVzcy5zaXdhIiwiZXhwIjoxNjQzMzU3NDAwLCJpYXQiOjE2NDMyNzEwMDAsInN1YiI6IjAwMDk2OC4yZTk5YjRlODc5MzU0YzE2OGE1NDlhYmVjYjgzMmFkYi4wODAwIiwiY19oYXNoIjoiZkNnUGxlUDRGcHdHNGRpelFDOEhhQSIsImVtYWlsIjoiZGF2aWRibHVlQGV4dHJhdG9uZS5jb20iLCJlbWFpbF92ZXJpZmllZCI6InRydWUiLCJhdXRoX3RpbWUiOjE2NDMyNzEwMDAsIm5vbmNlX3N1cHBvcnRlZCI6dHJ1ZX0.HA-M5BqbFd0lOhQf6Rs1fpPEGqq1ec0fCb1VLdJH7kMhb_64Zu1Oig1qVQxyfbaphGr6qM8Evg4Tjcug6wglYAIT-J-VuSgLeB4Db6_JnhXmV6YlBc0wuTZXx8woU1ci2i7EAXodba1riVygjF16W5RPD00Bjkc8kZe6-PnjyxeS2i6SZLzcfYsTbQ7Z6XliljZmd1_N5pXYFIKc8OxVAc7EePAf0SwiCsSINyOFV1rZbaQqngp7rV2QfRsZ3BV9BqRDFCU1yQhMvKEgHW95hoLIpZZVVVm7a5e7ExucpqctCUrL8hQ9O0qkeFXDV952ZPBqmS_2nXv0DufMZjEvFg&client_id=com.wordpress.siwa&state=7950093061) [Drafts 5 JavaScript API list | Drafts Directory](https://actions.getdrafts.com/a/1F5) [Edit profile | RubyGems.org | your community gem host](https://rubygems.org/profile/edit) [Bike on sidewalk | Drafts Directory](https://actions.getdrafts.com/a/1GZ) [Text to Gladys | Drafts Directory](https://actions.getdrafts.com/a/1LA) [Sign in | RubyGems.org | your community gem host](https://rubygems.org/sign_in) [imessage | RubyGems.org | your community gem host](https://rubygems.org/gems/imessage/versions/0.3.1) [Seconds per mile to miles per hour [s/mi to mi/h] speed (velocity)](https://www.aqua-calc.com/convert/speed/second-per-mile-to-mile-per-hour) [Voice -](https://voice.google.com/u/0/calls?itemId=c.CihPSVpPU1lZWFpNVFBJVlVUUlFJTFdMUU1NU0lITk9PV1lQWlFUS1pREAM) [(573) 349-6940](https://voice.google.com/u/0/calls?itemId=c.CihPSVpPU1lZWFpNVFBJVlVUUlFJTFdMUU1NU0lITk9PV1lQWlFUS1pREAM) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=6) [Mustache Prompt | Drafts Directory](https://actions.getdrafts.com/a/1fT) [Get Ulysses URL | Drafts Directory](https://actions.getdrafts.com/a/1Mj) [Run Script | Drafts Directory](https://actions.getdrafts.com/a/1KL) [Create GitHub Issue | Drafts Directory](https://actions.getdrafts.com/a/1Vj) [Reminder with Options | Drafts Directory](https://actions.getdrafts.com/a/1Rr) [Themes/Ulysses at master · bcdavasconcelos/Themes](https://github.com/bcdavasconcelos/Themes/tree/master/Ulysses) [Flexibits](https://hub.flexibits.com/login) [RoutineHub • Paul](https://routinehub.co/shortcut/10941/?version-created) [Outdent | Drafts Directory](https://actions.getdrafts.com/a/1By) [Ulysses sheet w/ tags | Drafts Directory](https://actions.getdrafts.com/a/1VE) [extratone/Soma: Ulysses.app blueprint for a better ePub stylesheet](https://github.com/extratone/Soma) [Release WriteFreely for Mac v1.0 beta 1 · writefreely/writefreely-swiftui-multiplatform](https://github.com/writefreely/writefreely-swiftui-multiplatform/releases/tag/v1.0.0b1-mac) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=3) [KML Note | Drafts Directory](https://actions.getdrafts.com/a/1Mx) [GoodMorning | Drafts Directory](https://actions.getdrafts.com/g/1uM) [‎Search results for The edge of war • Letterboxd](https://letterboxd.com/) [Miles Per Second to Miles Per Hour Converter](https://metric-calculator.com/convert-miles-per-second-to-miles-per-hour.htm) [bcdavasconcelos/Themes: Themes I either made or adapted for Alfred, Connected Text, Folding Text, Golden Dict, Obsidian, OmniOutliner, Outlinely, Scapple, Scrivener, Tinderbox, and Ulysses.](https://github.com/bcdavasconcelos/Themes) [Share as Markdown File | Drafts Directory](https://actions.getdrafts.com/a/1V4) [Blush - Ulysses Styles & Themes](https://styles.ulysses.app/themes/blush-JVk) [RoutineHub • A community for Siri Shortcuts](https://routinehub.co/) [Compose in Newton | Drafts Directory](https://actions.getdrafts.com/a/1LB) [Creating a macOS App — SwiftUI Tutorials | Apple Developer Documentation](https://developer.apple.com/tutorials/swiftui/creating-a-macos-app) [Home – Dropbox Paper](https://paper.dropbox.com/) [Message | Drafts Directory](https://actions.getdrafts.com/a/1BD) [Open Current Folder in Finder from Terminal of Mac OS X](https://osxdaily.com/2009/11/30/open-current-folder-in-finder-from-the-terminal/) [Open Rich Text in Word | Drafts Directory](https://actions.getdrafts.com/a/1V2) [SwiftDoc.org — Auto-generated documentation for Swift. Command-click no more.](https://swiftdoc.org/) [Fastmarks for macOS – retina studio](https://retina.studio/fastmarks/) [SwiftUI: Running a Mac App Without an Xcode Project · objc.io](https://www.objc.io/blog/2020/05/19/swiftui-without-an-xcodeproj/) [Setup Project | Drafts Directory](https://actions.getdrafts.com/a/18l) [Share as Text File | Drafts Directory](https://actions.getdrafts.com/a/1Za) [Import Calendar | Drafts Directory](https://actions.getdrafts.com/a/1If) [Save to Google Drive | Drafts Directory](https://actions.getdrafts.com/a/1E1) [Create an Account - Ulysses Styles & Themes](https://styles.ulysses.app/signup) [seconds per mile to mph - Google Search](https://www.google.com/search?q=seconds+per+mile+to+mph&ie=UTF-8&oe=UTF-8&hl=en-us&client=safari) [Login - Ulysses Styles & Themes](https://styles.ulysses.app/login) [Search · ulysses](https://github.com/search?o=desc&p=2&q=ulysses&s=stars&type=Repositories) [Markdown Image Reference Link | Drafts Directory](https://actions.getdrafts.com/a/1GJ) [Move Completed Tasks | Drafts Directory](https://actions.getdrafts.com/a/1Ec) [Save Version | Drafts Directory](https://actions.getdrafts.com/a/1YL) [(no title)](https://textexpander.com/learn/using/snippets/scripting-textexpander/applescript-shellscript) [Plastic Lagoon - Ulysses Styles & Themes](https://styles.ulysses.app/themes/plastic-lagoon-XNy) [New Draft in Workspace | Drafts Directory](https://actions.getdrafts.com/a/1Tx) [Boop/CustomScripts.md at main · IvanMathy/Boop](https://github.com/IvanMathy/Boop/blob/main/Boop/Documentation/CustomScripts.md#custom-scripts) [Insert date | Drafts Directory](https://actions.getdrafts.com/a/1T4) [dsiu/ulysses-cheatsheet: Ulysses for Mac cheatsheet for Dash](https://github.com/dsiu/ulysses-cheatsheet) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=12) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=8) [Export Draft | Drafts Directory](https://actions.getdrafts.com/a/1Zq) [Send to Dropbox Paper | Drafts Directory](https://actions.getdrafts.com/a/1NE) [writefreely/writefreely-swiftui-multiplatform: Source code for the WriteFreely SwiftUI app for iOS, iPadOS, and macOS](https://github.com/writefreely/writefreely-swiftui-multiplatform) [Prepend to Clipboard | Drafts Directory](https://actions.getdrafts.com/a/1ET) [Popular Actions | Drafts Directory](https://actions.getdrafts.com/drafts_actions?order=popular&page=14) [Ulysses › New Features](https://ulysses.app/releases/) [Email Teacher… | Drafts Directory](https://actions.getdrafts.com/a/1Kd) [Publish tag to iCloud Drive | Drafts Directory](https://actions.getdrafts.com/a/1L8) [cheatsheets/iPython\_Notebook.rb at master · Kapeli/cheatsheets](https://github.com/Kapeli/cheatsheets/blob/master/cheatsheets/iPython_Notebook.rb) [Send Notes | Drafts Directory](https://actions.getdrafts.com/a/1f1) [Stats | Drafts Directory](https://actions.getdrafts.com/a/1DY) [Paw – The most advanced API tool for Mac](https://paw.cloud/) [Releases · writefreely/writefreely-swiftui-multiplatform](https://github.com/writefreely/writefreely-swiftui-multiplatform/releases) [RubyGems.org | your community gem host](https://rubygems.org/profiles/extratone) [Open in... | Drafts Directory](https://actions.getdrafts.com/a/1In) [Gravatar - Globally Recognized Avatars](https://en.gravatar.com/site/login) [Format JavaScript | Drafts Directory](https://actions.getdrafts.com/a/1L6) [Total | Drafts Directory](https://actions.getdrafts.com/a/1Pu) [Download GitHub directory](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2FKapeli%2Fcheatsheets%2Ftree%2Fmaster%2Fcheatsheets) [New with Template & Tags | Drafts Directory](https://actions.getdrafts.com/a/1Co) [Copy as Rich Text | Drafts Directory](https://actions.getdrafts.com/a/1DM) [Insert Tab | Drafts Directory](https://actions.getdrafts.com/a/1E3) [Convert Apple Notes checkboxes | Drafts Directory](https://actions.getdrafts.com/a/1Sb) [RoutineHub • Paul](https://routinehub.co/shortcut/10941/) [Script Library | Drafts Directory](https://actions.getdrafts.com/a/1KN) [Title Case Selected Text | Script Kit](https://www.scriptkit.com/dealingwith/title-case-selected-text) [Piques - Ask & Insert | Drafts Directory](https://actions.getdrafts.com/a/1C4) [Home – Dropbox Paper](https://paper.dropbox.com/docs/recents) [Export Styles - Ulysses Styles & Themes](https://styles.ulysses.app/styles?order=popular&style_format=HTML&page=2) [Log In — WordPress.com](https://wordpress.com/log-in/apple/callback) [Edit settings | RubyGems.org | your community gem host](https://rubygems.org/settings/edit?) [Blog Template | Drafts Directory](https://actions.getdrafts.com/a/1J1) [RegEx Factory v.1.4 | Drafts Directory](https://actions.getdrafts.com/a/153) [Themes/Ayu Mirage.ultheme at master · bcdavasconcelos/Themes](https://github.com/bcdavasconcelos/Themes/blob/master/Ulysses/Ayu%20Mirage.ultheme) [Lines to Drafts | Drafts Directory](https://actions.getdrafts.com/a/1GL) [seconds per mile to mph equation - Google Search](https://www.google.com/search?q=seconds+per+mile+to+mph+equation&client=safari&hl=en-us&sxsrf=AOaemvJlbX0zyHe_EFl4uKG8eYvaxP7KJQ%3A1643263998379&ei=_jfyYdvVFveZptQPpeymgAQ&oq=seconds+per+mile+to+mph+equation&gs_lcp=ChNtb2JpbGUtZ3dzLXdpei1zZXJwEAMyBQghEKsCOgcIIxCwAxAnOgcIABBHELADOgIIEzoFCAAQgAQ6BQghEKABOgYIABAWEB5KBAhBGABQ0xRY9C9gozJoAXAAeACAAbUBiAH5CZIBAzAuOZgBAKABAcgBCsABAQ&sclient=mobile-gws-wiz-serp) [Search Drafts List | Drafts Directory](https://actions.getdrafts.com/a/1KV) [goetzf/Ulysses-TOC-Sheet: A Ulysses sheet that can create Table of Contents on the fly when exporting to HTML.](https://github.com/goetzf/Ulysses-TOC-Sheet) [ᴀʙᴄ | Drafts Directory](https://actions.getdrafts.com/a/1Ou) [Selected to Reminders | Drafts Directory](https://actions.getdrafts.com/a/1Nw) [Download GitHub directory](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fbcdavasconcelos%2FThemes%2Ftree%2Fmaster%2FUlysses) [kmwallio/ThiefMD: The markdown editor worth stealing. Inspired by Ulysses, based on code from Quilter](https://github.com/kmwallio/ThiefMD) [(no title)](https://voice.google.com/u/0/) [Confirm Password | RubyGems.org | your community gem host](https://rubygems.org/session/verify) [Markdown Mail (w/ Mail Assistant) | Drafts Directory](https://actions.getdrafts.com/a/11l) [Editor Themes - Ulysses Styles & Themes](https://styles.ulysses.app/themes?ref=ulmac_markupPrefs&page=2) [Home – Dropbox Paper](https://paper.dropbox.com/doc/Ulysses-Release-Notes-Archive-JAYYBW6T5wKrjSeR7rc8Y) [IvanMathy/Boop: A scriptable scratchpad for developers. In slow yet steady progress.](https://github.com/IvanMathy/Boop) [extratone/bilge: Documentation for The Psalms - my blog about software’s intersection with culture. Not just for the website - for the entire process (correspondence, notetaking, drafting, \*revising\*, editorializing, promoting, discussing, and even reflecting.)](https://github.com/extratone/bilge) [Kapeli/cheatsheets: Collection of Dash cheat sheets](https://github.com/Kapeli/cheatsheets) [Create Bear Note From Webpage | Drafts Directory](https://actions.getdrafts.com/a/1Ek) [Save to Files | Drafts Directory](https://actions.getdrafts.com/a/1EW) [Append to Draft | Drafts Directory](https://actions.getdrafts.com/a/1S4) [replaceShortcuts | Drafts Directory](https://actions.getdrafts.com/a/1VS) [Split on \ | Drafts Directory](https://actions.getdrafts.com/a/1SP) [Make Markdown Line Breaks | Drafts Directory](https://actions.getdrafts.com/a/1IP) [Home – Dropbox Paper](https://paper.dropbox.com/home/recents) --- ,, 01272022-062209 9BABD20E-F32C-40F5-9375-2D35DF973B79 drafts://open?uuid=9BABD20E-F32C-40F5-9375-2D35DF973B79 [OPEN IN SPARK](readdle-spark://bl=QTpkaWVzZWxnb3RoQHlhaG9vLmNvbTtJRDoyMDIyMDEyNzEyMjIxMC41ODA2MWM2%0D%0AYmY0MTNiZGViQGRyYWZ0czUuYWdpbGV0b3J0b2lzZS5jb207MzIwNTc2NzY3NA%3D%3D) # 1 **Constraints can be powerful.** T O T L E A R N [Dark Odette](shortcuts://x-callback-url/run-shortcut?name=Dark%20Odette) - [Light](shortcuts://x-callback-url/run-shortcut?name=Light%20Odette) - [dark](shortcuts://x-callback-url/run-shortcut?name=dark) - [MacWish](shortcuts://x-callback-url/run-shortcut?name=MacWish) - [LinkJar](shortcuts://x-callback-url/run-shortcut?name=LinkJar) - [TBLink](shortcuts://x-callback-url/run-shortcut?name=tbmac) - [Create Shortcut](shortcuts://create-shortcut) - [Swing Updater](shortcuts://run-shortcut?name=Swing%20Updater) - [Generate 20](shortcuts://x-callback-url/run-shortcut?name=Gen) [tgrainbot](tg://resolve?domain=raindropiobot) - [Apple Frames](shortcuts://run-shortcut?name=Apple%20Frames) - [Random Scriptable API](scriptable:///run/Random%20Scriptable%20API) - [ScriptBitch](scriptable:///run/ScriptDude) - [Data Jar URL List](shortcuts://run-shortcut?name=Data%20Jar%20URL%20List) - [RoutinePub](shortcuts://run-shortcut?name=RoutinePub) [Shortcut Source Tool](shortcuts://run-shortcut?name=Shortcut%20Source%20Tool) [Action Directory](shortcuts://run-shortcut?name=Action%20Directory) [RoutineHub - Create Shortcut](https://routinehub.co/shortcut/create) **Drafts Instrument Panel** *Drafts* - [The Psalms’ 2021](drafts://open?uuid=CB2985C0-C484-48F0-A170-2EBEF1E94972) - [Fresh Eyes on macOS](drafts://open?uuid=944F772C-CC9D-47F2-BD98-F4E435E40227) - [Hold Your Clipboard Mangers Close](drafts://open?uuid=81CC3D50-BC7A-471F-B247-DBE0ACC54C6B) - [David Blue’s Twitter History](drafts://open?uuid=F490F4FE-5635-4513-9320-B5DB7E0FFE31) - [How to Fuck Text](drafts://open?uuid=A350D578-1CFA-4B5A-8655-74F6B3AD72AE) - [Please Fuck With This License](drafts://open?uuid=72DBA1B1-B506-4805-8A82-47F7C59C5DBE) *Notes* - [Notes-The Psalms’ 2021](drafts://open?uuid=E7E2670F-0DB1-49A1-BA26-73F3B43ACB52) - [Notes-Fresh Eyes on macOS](drafts://open?uuid=6C76EDBD-025D-40BA-9381-9AE95AD70F36) - [Notes-Hold Your Clipboard Managers Close](drafts://open?uuid=65AC8211-F3F9-419D-A7B3-EBF82E4944F1) - [Notes-Personal Twitter History](drafts://open?uuid=37B865E1-4372-4AF7-BB77-3979836130D4) - [Notes-TextFuck](drafts://open?uuid=F0E9A527-77DE-45C6-9B24-F101565AC0BE) - [Drag Safari Tab Group Links Demo](drafts://open?uuid=4FBF3BCC-2F65-4C8B-9486-839E118B4B3A) *Social* - [Suggestions/Requests for a WebDAV (NeoCities, in my case) Action Group - Actions - Share What You've Made - Drafts Community](https://forums.getdrafts.com/t/suggestions-requests-for-a-webdav-neocities-in-my-case-action-group/11994) - [RainDrop Import](https://app.raindrop.io/settings/import) “ [Automating iOS: A Comprehensive Guide to URL Schemes and Drafts Actions](drafts://open?uuid=A944CF95-DE24-47AA-BC50-CB03E1A20396) ” *Documentation* - [Scrubs Shortcuts Library](drafts://open?uuid=68F049EC-59AF-4A49-885F-698BB9653400) [Marked-Drafts Arrange](shortcuts://x-callback-url/run-shortcut?name=Drafts-Marked) [New Draft with Template](drafts://x-callback-url/runAction?text=%7C%7Cclipboard%7C%7C&action=Template) - [Raindrop Telegram Bot](drafts://open?uuid=CB2985C0-C484-48F0-A170-2EBEF1E94972) - [NeoCities/WebDAV Action Group](drafts://open?uuid=3BA64907-441A-4F34-9F4D-DB39E6EFF898) - [Drafts Actions Index](https://davidblue.wtf/drafts/actionsindex) - [ForkLift 3 - User Manual - most advanced file manager and FTP client for macOS](https://binarynights.com/manual) [New Draft with Clipboard](drafts://x-callback-url/create?text=%7C%7Cclipboard%7C%7C) ` [drafts://runAction?test=&action=`](drafts://runAction?test=&action=) [Keyboard Shortcuts Export](drafts://runAction?test=&action=Keyboard%20Shortcuts%20Export) **Todo** - How hard would it be, really, to create a Drafts Action for [Pastery](https://www.pastery.net/account/) ? - Tot default themes combined into inspired Drafts theme(s) - MW Wotd ⇨ Lookup - WhatCMS API tools - AppWishIDs - Average Speed Shortcut for Drivey - Bookmarked files and/or Drafts to keep in sync with each Tot Dot. - Batch rename image files by sampling from an Extract Text from Image Action, intelligently truncated. - Share ⌦ ⌦ ⌦ ⌦ *-**A̵**`**G̵e̵n̵e̵r̵a̵t̵e̵**U̵R̵L̵**S̵c̵h̵e̵m̵e̵**L̵i̵n̵k̵s̵**f̵o̵r̵**a̵l̵l̵l̵**S̵h̵o̵r̵t̵c̵u̵t̵s̵**`**o̵r̵**a̵t̵**l̵e̵a̵s̵t̵**t̵o̵**o̵p̵e̵n̵**e̵a̵c̵h̵**i̵n̵**a̵**s̵p̵e̵c̵i̵f̵i̵c̵**f̵o̵l̵d̵e̵r̵**.* *-**A̵**s̵h̵o̵r̵t̵c̵u̵t̵**a̵n̵d̵**/**o̵r̵**T̵e̵x̵t̵E̵x̵p̵a̵n̵d̵e̵r̵**s̵n̵i̵p̵p̵e̵t̵**t̵o̵**f̵u̵n̵c̵t̵i̵o̵n̵**a̵s̵**a̵m̵o̵r̵e̵**e̵l̵a̵b̵o̵r̵a̵t̵e̵**t̵o̵o̵l̵**t̵o̵**c̵a̵l̵l̵**f̵r̵o̵m̵**M̵a̵t̵t̵h̵e̵w̵**C̵a̵s̵s̵i̵n̵e̵l̵l̵i̵**’**s̵**A̵c̵t̵i̵o̵n̵**D̵i̵r̵e̵c̵t̵o̵r̵y̵**-**I̵**d̵i̵d̵**i̵t̵**!**T̵r̵y̵**\**p̵u̵b̵l̵i̵c̵**T̵e̵x̵t̵E̵x̵p̵a̵n̵d̵e̵r̵**s̵n̵i̵p̵p̵e̵t̵**f̵o̵r̵**e̵x̵p̵l̵a̵i̵n̵i̵n̵g̵**w̵h̵y̵**t̵h̵a̵t̵**I̵**a̵m̵**a̵w̵a̵r̵e̵**m̵y̵**p̵h̵o̵n̵e̵**n̵u̵m̵b̵e̵r̵**i̵s̵**p̵u̵b̵l̵i̵c̵**.* # New API key created for rubygems.org From: RubyGems.org To: asphaltapostle@icloud.com Date: Jan 27, 2022 Subject: New API key created for rubygems.org RUBYGEMS .ORG HOME   |   GUIDES   |   BLOG   |   CONTACT US API KEY CREATED Hi extratone A new API key was created for your account on rubygems.org. Name: Initial Scope: index_rubygems, push_rubygem, yank_rubygem, add_owner, remove_owner, access_webhooks Created at: Thu, 27 Jan 2022 08:06:38 +0000 If this key creation is expected, you do not need to take further action. Only if this is unexpected please take immediate steps to secure your account and gems: 1. If you suspect your account was compromised: • Change your password • Reset your API key • Enable multifactor authentication 2. Report this incident to RubyGems.org Follow Us [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjYxZjI1MjhmNDdiMzVfMTFk%0D%0AZDgyMDgwOTlAam9icy04NTVmNjY3ODdkLTdsaDdoLm1haWw7Mjg1MTA0NzAyMQ%3D%3D) # WhatCMS Siri Shortcut/Script **Example URL** `https://whatcms.org/API/Tech?key=w64w67om47g3xfcudiiakqrm0zxej81mg7k95r4fj4y3b81lrizol7l0gnn2x8z2mn6lah&url=en.wikipedia.org` **Result Example** ```json { "result": { "msg": "Success", "code": 200 }, "results": [{ "id": 1766, "categories": [ "Issue Tracker", "CMS" ], "name": "Sentry", "url": "https://whatcms.org/c/Sentry" }, { "id": "7", "categories": [ "Other CMS", "CMS" ], "name": "Typesetter", "url": "https://whatcms.org/c/Typesetter" }, { "id": 1656, "categories": [ "Programming Language" ], "name": "PHP", "url": "https://whatcms.org/c/PHP" }], "meta": { "social": [{ "network": "twitter", "url": "https://twitter.com/What_CMS", "profile": "What_CMS" }] }, "request": "https://whatcms.org/API/Tech?key=w64w67om47g3xfcudiiakqrm0zxej81mg7k95r4fj4y3b81lrizol7l0gnn2x8z2mn6lah&url=whatcms.org", "request_web": "https://whatcms.org/?s=whatcms.org" } ``` # Welcome to WhatCMS.org From: WhatCMS.org To: ihadtopee@gmail.com Date: Jan 26, 2022 Subject: Welcome to WhatCMS.org Welcome To WhatCMS.org Thanks for creating an account on WhatCMS.org. Creating an account is the first step in accessing the best CMS and hosting detection systems available. Confirm your email to finalize API access Thanks for choosing WhatCMS.org, Who-Hosts-This.com and ThemeDetect.com. [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjIwMjIwMTI2MjM0MTU3LmQ2YWFhMjhj%0D%0AMjZhM2JjZGVAbWcud2hhdGNtcy5vcmc7Z0lEOjE3MjMwNjI1NjkxMDk1MDUzODQ7%0D%0AODEyNDcyNzQ1) # k [image:E24B201A-C4D1-4FB1-A146-CB9B8D350C70-8524-000008E4CA81DF1E/Screenshot 2022-01-26 at 15.54.45.png] [image:80491016-03E0-4939-8F30-062A24F647AF-8524-000008E4CAA4606D/Screenshot 2022-01-26 at 15.54.48.png] [image:3E872B7B-2A9A-4CCD-B325-07FECAD3D8DC-8524-000008E4C9EE66D2/Screenshot 2022-01-26 at 15.54.52.png] # BAIR Note Jan 20, 2022 at 15:26 Designa Removal and replacement procedures in this section are written generically for all COMPAQ Portable Computers, except in cases where procedures differ because of design differences. These differences affect the removal and replacement procedures for the power supply subsystem and the monitor enclosure. When procedures differ, specific instructions are given. Also note that when you are instructed to cut a tie wrap for removal of an assembly, you should also replace the tie wrap for reassembly. NOTE: Run the latest version of COMPAQ DIAGNOSTICS to verify the proper operation of the replaced component.ting this note as a target specifically for the iPad Air for a bit.. '01262022-155323' [image:5C7586D9-F756-44B8-9B93-1885D8BA2F52-8517-000008E0B6CFD024/logo46x38.png] # JavaScript is not available. We’ve detected that JavaScript is disabled in this browser. Please enable JavaScript or switch to a supported browser to continue using twitter.com. You can see a list of supported browsers in our Help Center. [Help Center](https://help.twitter.com/using-twitter/twitter-supported-browsers) [Terms of Service](https://twitter.com/tos) [Privacy Policy](https://twitter.com/privacy) [Cookie Policy](https://support.twitter.com/articles/20170514) [Imprint](https://legal.twitter.com/imprint) [Ads info](https://business.twitter.com/en/help/troubleshooting/how-twitter-ads-work.html?ref=web-twc-ao-gbl-adsinfo&utm_source=twc&utm_medium=web&utm_campaign=ao&utm_content=adsinfo) © 2022 Twitter, Inc. Something went wrong, but don’t fret — let’s give it another shot. # David Blue’s WORLD FAMOUS Fast n’ Loose™ Siri Shortcuts for 𝚂𝙲𝚁𝚄𝙱𝚂 - [David Blue’s WORLD FAMOUS Fast n’ Loose™ Siri Shortcuts for 𝚂𝙲𝚁𝚄𝙱𝚂 · extratone/bilge Wiki](https://github.com/extratone/bilge/wiki/David-Blue%E2%80%99s-WORLD-FAMOUS-Fast-n%E2%80%99-Loose%E2%84%A2-Siri-Shortcuts-for-%F0%9D%9A%82%F0%9D%99%B2%F0%9D%9A%81%F0%9D%9A%84%F0%9D%99%B1%F0%9D%9A%82) - [Shortlink](https://bit.ly/gitscrubs) - `https://bit.ly/gitscrubs` - [Pastery](https://www.pastery.net/eujzmz/#eujzmz) - [WTF](https://davidblue.wtf/scrubs/) - [Simplenote](http://simp.ly/publish/c223rw), even. - [Telegra.ph](https://telegra.ph/David-Blues-WORLD-FAMOUS-Fast-n-Loose-Siri-Shortcuts-for-𝚂𝙲𝚁𝚄𝙱𝚂-01-19) ![OMNIMEMOJI](https://i.snap.as/p8U6kW1g.png) **All** of the Siri Shortcuts I’ve created or modified over the years and and thought worthy of sharing, prioritizing those which I have not shared on either my [RoutineHub](https://routinehub.co/user/blue) or [ShareShortcuts](https://shareshortcuts.com/u/blue/) profiles. You shouldn’t encounter share URLS from *any* Shortcuts or File Shariing services, here - I thought a commitment to generating fresh `icloud.com/shortcuts` URLs exclusively for this project would be in its best interest - I haven’t exactly been dilligently keeping track of them throughout the history of Siri Shortcuts as they’ve been exclusively shared this way… ## Most Utilitarian (In Theory…) - [**screen**](https://www.icloud.com/shortcuts/6fa16145d1a649ceb878f141b8e595b7) - `https://www.icloud.com/shortcuts/6fa16145d1a649ceb878f141b8e595b7` - [undercovered](https://www.icloud.com/shortcuts/18eb1e77ab0b455f82da4c4c6e521368) (define) - [style](https://www.icloud.com/shortcuts/3a2d212cc2614202be37b0beb8276e9b) (personal styleguide reference) - [Text Replacement](https://www.icloud.com/shortcuts/e6d56b3fe8bc40639a60f166315f255b) - [gps](https://www.icloud.com/shortcuts/c22c676ab4ee4b98b5a49b6112957b3c) - [sl](https://www.icloud.com/shortcuts/7c3946b289a846cb9e63f0bdade93fa5) (The best Odesli quick share automation in history.) ## Music/Audio Delights - [**Fondren & Main**](https://www.icloud.com/shortcuts/fc846ff0e9094e088a7af4c5c11c3a23) - [**SHOW ME**](https://www.icloud.com/shortcuts/029dea6d90f84223ac65be98fc803e7a) - `https://bit.ly/showmesiri` - [RIDE THE STORM](https://www.icloud.com/shortcuts/50ea8b3e026f41668f9a2a88c702a4c4) - [BREAKDALAW](https://www.icloud.com/shortcuts/0e175407850d4fcb83c64ea04c0c284f) - [Frank Ocean - Street Fighter](https://www.icloud.com/shortcuts/ce89a2fe4f444e9c973436922640a33a) - [HER](https://www.icloud.com/shortcuts/c6ab99cbc3d9430d87d4abbdf7714d16) - [GOGO](https://www.icloud.com/shortcuts/80fa232621df4112bd1a92a5ace8e088) - [FALTER](https://www.icloud.com/shortcuts/3f4efb0207ab4b0ca91606f160612273) - [KEEPIN LIVE](https://www.icloud.com/shortcuts/f9a1161ae7da41ac8dd772010be5a049) - [TKO](https://www.icloud.com/shortcuts/351c2593d3a2405691685fa6caf869aa) - [FUTURELAND](https://www.icloud.com/shortcuts/3da59e509709437d90927ba65860fc3a) - [WITNESS](https://www.icloud.com/shortcuts/62afd3c029da456aa62d593de28145c4) - [Meow](https://www.icloud.com/shortcuts/a32e7771f97c43feb5e228dc2c94a868) - [Life Jacket - Simon Says](https://www.icloud.com/shortcuts/8aecab0a9fb44f2c94e4e191a26e19d6) ## Personal/Brand - [The Psalms Ebook](https://www.icloud.com/shortcuts/eff33d5e122449deb190c70992022c97) - [DavodTime](https://www.icloud.com/shortcuts/5a4ebd4ed057415b8915c535951c1059) ## Legacy/Drywall Media - [trent](https://www.icloud.com/shortcuts/7a319d5b68b84fabb8e0c0bea441bb24) - [birthday](https://www.icloud.com/shortcuts/4c2c7fd58aa84208bce08b69936aafbf) - [WYGD](https://www.icloud.com/shortcuts/fd519a1a72c34a3d8559779826b23353) - [Minecraft Flying Tutorial](https://www.icloud.com/shortcuts/a1c368c909c741a2864d0dd747115354) - [homedepot](https://www.icloud.com/shortcuts/3409ec23198c4f34a82f08a8b680bd1e) ## Okay - [NILLA](https://www.icloud.com/shortcuts/d0ed337c304f430993f2c8d8953d5e69) - [BIG WORDLE](https://www.icloud.com/shortcuts/965dd56d81684881954be591303a962d) # Drafts Keyboard Shortcuts Configuration 01092022-5555 ## Internal | Action | Command | |:---------------------------------:|:-------:| | Markdown Header | ⌃⌘H | | Markdown Bold | ⌘B | | Code Block | ⌃⌘C | | Preview | ⌥⌘P | | Markdown Emphasis (*) | ⌘I | | Markdown List | ⌃L | | Markdown Link | ⌘K | | Replace URLs by MD links | ⇧⌘U | | Markdown Footnote (Variation) | ⌃F | | Send to Saved Messages (Telegram) | ⌃G | | Strikethrough | ⌃S | | Keyboard Shortcuts Export | ⇧⌃K | | Timestamp | ⇧⌃T | | Selection Word Count | ⌃W | | Toggle Last | ⌃⇥ | | Drafts Link | ⇧⌃C | | Draft Info | ⌃I | | Dark/Light Toggle | ⇧⌃L | | Typewriter Toggle | ⌥T | | Load The Psalms | ⌥. | | Preview MMD | ⌥⌘/ | | Copy | ⌃C | | Clipboard… | ⌥C | | Find | ⇧⌥F | | Tasks | ⌃T | | Copy Tags | ⌃⌥T | | Written Workspace | ⌘2 | | Documentation Workspace | ⌘3 | | Hole Workspace | ⌘9 | | Copy as Rich Text | ⌃⌥C | | Share as File: Markdown | ⇧⌃S | | Push Draft to GitHub Repo | ⇧⌃G | | Trash Note | ⌃- | | Search Actions | ⌘/ | | Duplicate Draft and Load | ⌃D | | Prime Preview MMD | ⌃P | | Preview with Marked2 | ⇧⌃⌥P | | Replace with Synonym | ⌃⌥S | ## External [image:45AC4F3A-6E4B-4A83-A368-6BA2995E207F-4932-000012EEFE5A4DD7/Capture 2022-01-09 at 00.32.35.png] | Action | Command | |:--------------------------------:|:-------:| | Actions->Manage Actions... | ⌥⌘A | | Workspaces->Manage Workspaces... | ⌥⌘W | # BrettTerpstra.com : Brett's Favorites 2021 From: News from BrettTerpstra.com To: asphaltapostle@icloud.com Date: Jan 21, 2022 Subject: BrettTerpstra.com : Brett's Favorites 2021 BrettTerpstra.com : Brett's Favorites 2021 Subscribe to the feed Brett's Favorites 2021 Posted on:Saturday 15 January 2022 — 10:31 I’m late getting my “Top Apps of 2021” post out. I almost wasn’t going to do it this year, mostly out of just being frequently and excessively tired of late. But I figured I’d keep it short and make it manageable, and at least let you know what I think are the cream of the crop Mac apps this year. This is nowhere close to a comprehensive list of apps I like, but rather apps I love that were new or substantially updated in 2021. I’m forgoing1 iOS apps because I just haven’t found anything new that blew me away this year2. Many of the apps below are available on Setapp. If you want to check it out and get access to 100+ awesome Mac apps (and some iOS companions) for a low monthly subscription, here’s my affiliate link. I get a little something if you sign up, and if you happen to use my apps through Setapp, I also get a piece of your monthly payment, which I think is nicer than switching an app like Marked 2 to a subscription model on its own. And we’re off. CleanShot X This is the best screenshot app I’ve ever used. Everything about it is elegant, intuitive, and powerful. Available on Setapp. Dato I can’t use Fantastical with my work calendar (employer limitations), but Dato at least puts my calendar in my menu bar with some handy features, including “Join Zoom Call” buttons that actually work. Solid app and one I use daily. BetterTouchTool BTT always makes my list, and is always improving. I couldn’t begin to enumerate all the new features Andreas has added in the last year. If you’re looking for one of the best Mac automation/enhancement tools out there, this is it. Available on Setapp. Kaleidoscope Back from the dead, Kaleidoscope is under new management and active development and remains my favorite tool for file and directory diffs, as well as resolving merge conflicts. Tower A bunch of improvements last year in this top-notch Git GUI. And I highly recommend the tutorials that they put out on their website — they’re a great way to learn more about areas of git you might not be well-versed in. iTerm I love iTerm so hard. I’ve tried other terminals, but iTerm packs so many awesome features in that nothing else can really come close. Hook Hook had a big year in 2021. As I’ve said before, it’s a bit hard to explain in a couple of sentences, but if you want to always have relevant files and documents at your fingertips while you’re working without spending time searching, it’s worth learning how Hook can help. Descript If you edit podcasts (or even video), you have to try Descript. It generates transcriptions automatically, and then you can edit the audio/video just by cutting and pasting the text. They’ve added a host of effects and audio tools this year, and just released an M1-optimized version. ScreenFlow I pay to upgrade ScreenFlow regularly, and it’s pretty much always worth it. If you need to create screencasts, whether long presentations or 5 second gifs, ScreenFlow is hands down the best tool for the job. Bartender It’s just one of my favorites. It keeps your menu bar clean. The new features in version 4 are outstanding. MacUpdater It’s not new, but I just started using this one in 2021. It regularly scans all of your installed apps, Mac App Store and direct versions, and lets you know when updates are available. It makes installing them easy, and can do batch updates at the click of a button. Regularly updated and improved. TextBuddy Brand new in 2021, this is an awesome tool from Tyler Hall for performing a wide array of operations on text. It comes with System Services (or Quick Actions or whatever macOS is calling them now) you can set up for easy keyboard control, and is fully extensible with JavaScript. If you dig a little, you can even learn how to include your own System Services in the array of available operations. LaunchControl This one didn’t have any major updates in 2021, but it’s still solid and I use it often enough that I thought it worth mentioning. It’s the easiest way to edit launchd jobs for running background tasks on your Mac. I don’t know what ever happened to Lingon, but this is better anyway. That’s it (for now). Short and sweet. I might do a second installment if time allows, but for now have a great 2022! 1. Today I learned that there’s a difference between “foregoing” and “forgoing” (other than an “e”). Glad I caught that one. Would have looked mighty silly. ↩ 2. To be fair, I do not do a lot on iOS other than social media, email, text messaging, and games. Which I guess is a lot, but other than games, none of those areas are rife with competitors and new ideas. ↩ BrettTerpstra.com is supported by readers like you. Click here if you'd like to help out. Find Brett on Twitter. You are subscribed to the newsletter of News from BrettTerpstra.com sent from22305 E Burns Valley Rd, Winona MN 55987 To stop receiving those e-mails, you can unsubscribe now. Newsletter powered by FeedPress FeedPress is a service edited by Beta&Cie, www.betacie.com [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOmQ5NjVmYTI1LkFiSUFBRFRU%0D%0AZF9jQUFjc2J3ckFBQUxMWXA0TUFBQUFJSkdRQUhoMnZBQWFJQWdCaDZxNVZAbWFp%0D%0AbGpldC5jb207ODI2NDI5MTkw) # pbcopy ## Copy data from STDIN to the clipboard. ``` Syntax pbcopy [-pboard {general | ruler | find | font}] Key -pboard Specify a pasteboard to copy to. By default the general pasteboard. ``` Takes the standard input and places it in the specified pasteboard. If no pasteboard is specified, the general pasteboard will be used by default. The input is placed in the pasteboard as ASCII data unless it begins with the Encapsulated PostScript (EPS) file header or the Rich Text Format (RTF) file header, in which case it is placed in the pasteboard as one of those data types. **Examples** # Copy a list of files in your home directory to the macOS clipboard: $ ls ~ | pbcopy # Copy the contents of a file to the clipboard: $ pbcopy < cookies.txt # Copy part of a file to the clipboard: $ grep 'ip address' serverlist.txt | pbcopy *"God shows his contempt for wealth by the kind of person he selects to receive it" ~ Austin O'Malley* **Related macOS commands:** [pbpaste](https://ss64.com/osx/pbpaste.html) Paste data from the Clipboard. [printenv](https://ss64.com/osx/printenv.html) - Print environment variables. # Noir Configuration Utility Shortcut ## Short description. - [**RoutineHub Page**](https://routinehub.co/shortcut/8994/) - [iCloud Share Link](https://www.icloud.com/shortcuts/5ce7b81f705942d18ac98b46f16cf976) The popular "Dark Mode" Safari Extension, Noir, This shortcut expects a rich text list of Safari Tab Group Links in the clipboard. For more details/help/etc, visit this shortcut's GitHub Issue: https://github.com/extratone/i/issues/124 - `![Copying Tab Group Links](https://user-images.githubusercontent.com/43663476/150327072-def1edd2-12c9-451d-854d-433fd1f2fcb1.png)` - ![Configuration Applied Notification](https://user-images.githubusercontent.com/43663476/150412914-afa1ec34-14dd-445f-90d7-87228d58d4a1.jpeg) ![](https://user-images.githubusercontent.com/43663476/150327091-b6f0b4fd-165f-4cdb-abc2-8e2725bded6a.png) ![](https://user-images.githubusercontent.com/43663476/150327093-64c87dd1-8657-48ac-ad0b-059e3f9c37ee.png) https://user-images.githubusercontent.com/43663476/150327097-501c4b08-ba25-4945-9f7f-8f772a23f787.png https://user-images.githubusercontent.com/43663476/150327102-e98cff9c-d050-456d-a1a0-f1dbe48101a7.png https://user-images.githubusercontent.com/43663476/150328455-f64b8d20-9aed-412b-a356-7ab24a647eec.png https://user-images.githubusercontent.com/43663476/150328464-cf28c657-d454-4078-8896-fccf4ceae077.png https://user-images.githubusercontent.com/43663476/150328468-7bfe418f-b2f8-483c-8d72-e9cb01bf222f.png https://user-images.githubusercontent.com/43663476/150328472-a7cf6af5-d575-46b3-a772-7d03da35a946.png ``` #i #documentation #shortcuts #automation # Please Fuck With This License `2021-09-14-08.43.12` *This document is a work-in-progress. See its GitHub Gist or [this GitHub Issue](https://github.com/extratone/bilge/issues/142) for details about its various revisions.* This document as read by the individual currently reading it - whether by physically tangible means or otherwise - is subject to the infinite various interpretations of the reader and any others (past, present, and future,) as well as legally, ethically, morally, spiritually, etc. freely fluid regarding modification, variation, iteration, etc. This document applies to as many or as few potential manifestations of the matter to which it is attached as the originator of the matter determines. This, too, is subject to whim or circumstance as per the continuation of linear time, forever and ever. The originator of the matter may be held entirely responsible for consequences upon any being or other distinct matter legally, ethically, morally, spiritually, etc. All forms of correspondence re: the matter to which this document is attached - including feedback, criticism, praise (due and undue,) general bereavement, damnation, condemnation, complaint, advice, advisement, assistance, counsel, guidance, input, recommendation, suggestion assistance, briefing, coaching, mentoring, priming, prompting, teaching, tutoring, caution, alarm, etc. is not only **welcome** but ***encouraged*** as per the core ethos of this document. Saturday, October 16, 2021 1:26:03 AM # Third Party Telegram Themes Index ![21](https://github.com/extratone/t/raw/main/ios-themes/21.png) 1. [**𝘞𝘐𝘕𝘋𝘖𝘞𝘚 𝘌𝘛𝘌𝘙𝘕𝘈𝘓**](https://t.me/addtheme/windowseternal) 2. [**Allo4Life**](https://t.me/addtheme/allo4life) 3. [Fresh Mint - Tweetbot 6](https://t.me/addtheme/freshmint) 4. [**Greyhound**](https://t.me/addtheme/greyhound) 5. [Space Piss](https://t.me/addtheme/spacepiss) 6. [Vampire Reference](https://t.me/addtheme/vampirereference) 7. [Signals 2022](https://t.me/addtheme/signals2022) 8. [Futuretab 2022](https://t.me/addtheme/futuretab2022) 9. [Slander Crimson](https://t.me/addtheme/slandercrimson) 10. [Academia 2022](https://t.me/addtheme/academia2022) 11. [Hermitage 2022](https://t.me/addtheme/hermitage2022) 12. [Divorced Empress Navier](https://t.me/addtheme/navier2022) 13. [Roro Jump 2022](https://t.me/addtheme/rorojump2022) 14. [Dark, Post-Academia](https://t.me/addtheme/postacademia) 15. [UOrange](https://t.me/addtheme/uorange) 16. [**Vaporfucked**](https://t.me/addtheme/vaporfucked) 17. [Vaporfucked Light](https://t.me/addtheme/vaporfuckedlight) 18. [Dark Shell](https://t.me/addtheme/darkshell2022) 19. [Honey Highlight](https://t.me/addtheme/HoneyHighlight2021) 20. [Mirage on Kimberly](https://t.me/addtheme/miragekimberly) 21. [Lynch on Rhino](https://t.me/addtheme/lynchrhino) 22. [Mars Orange](https://t.me/addtheme/marsorange) 23. [Sepia Blues](https://t.me/addtheme/sepiablues2022) # Notes-TextFuck - [[How to Fuck Text]] - [How to Fuck Text · Issue #222 · extratone/bilge](https://github.com/extratone/bilge/issues/222) - [An Oral History of David Blue - Digital Text Menace](https://whyp.it/t/an-oral-history-of-david-blue-digitext-menace-e3yX9) - Whyp - [⨃🄝ɨ∁ɧ⍙℟ for iOS Review](https://bilge.world/unichar-for-ios-app-review) - [Z̴͏a͞l͟g͝o͏ ̕G͟͝e͞n͞҉è̛ŗ͡a͝͞t̴o҉r͞ for iOS](https://bilge.world/zalgo-generator-ios-app-review) ## General - [ ] WHEN IM COMIN DINE IN MY FOREIGN AND IM ROLLIN ONE DEEP THAT SHOULD TELL YA BOUT ME and the earliest iOS-native automation. - [ ] Drywall YouTube Channel, MAWOTAFTIWYAFF, and early auto-tagging. ## Other Tools - [ ] [All of Unicode, Single File](https://davidblue.wtf/tools/unicode.pdf) ## Apps - [ ] [Text Split](https://apps.apple.com/us/app/text-split/id1547206241) - [ ] [TextExpander](https://apps.apple.com/us/app/textexpander-keyboard/id1075927186) - [ ] [UniChar](https://apps.apple.com/us/app/unichar-unicode-keyboard/id880811847) - [ ] [GitHub - tomauty/ZalgoTextGenerator: An Android app to generate Zalgo text for those times when you need to invoke the hive-mind representing chaos on the go](https://github.com/tomauty/ZalgoTextGenerator) - [ ] [Zalgo Generator on MacOS!](https://apps.apple.com/us/app/zalgo-generator/id1304137527) ## Wanted/ToDo - [ ] TextExpander snippets! A collection, even? - [ ] **Zalgo Drafts Action!!!** ``` ⠯̀҉͎̝͈̤̯͍⒎̶͏҉̙̪̭̭̙̗̖̫̟͈͍̗͉̙∧̶̢̞̯͚̪̲̱͍̬̞̭͉̤͍͉͓͟͠͝ͅº̶̷̛̛̰̥̣̥͉̥̱̖̝̟̫̻ͅʲ̵̢͓̪̬̟̦̥̱̪͙̀͠䷹̸̨̫̭͎̹͍̖͖͙͙̼̫͎̙́͠䷹͏͠͏̙̪̹̗͎̱͖̭̩͍͔̙͍̼̹̯̭̭͞͡∝̷̸̸̩̥͍̻⊑̶̧̬̥͈̠̜͍̟̤̤̞̀̕͜ ``` ## References - [ ] [Textcraft | PNGuin](https://www.pnguin.app/textcraft) ## Siri Shortcuts! - [ ] ASCII Keyboard in the MF gallery? - [ ] [All the Single Ladies ASCII](https://www.icloud.com/shortcuts/51392bf23f104b93baf72000955ed334) ## Social ``` ``` - [ ] [Rabbit](https://twitter.com/NeoYokel/status/1449622067343728642) - `https://twitter.com/NeoYokel/status/1449622067343728642` ### Accessibility Poll - [Mastodon](https://mastodon.social/@DavidBlue/107589034582138302) - [Twitter](https://twitter.com/NeoYokel/status/1479932149256146945) ``` hey accessible-knowledgable folks, before I write my “how to fuck text” guide, I’d like to know… how disruptive are unusual characters/zalgo text and the like to daily lives of web folks with accessibility considerations? ``` ## Counter-Spam - [Drafts’ iMessage App for counter-spamming](https://t.me/extratone/9629) [Alt Text as Poetry](https://alt-text-as-poetry.net/?utm_source=Daily&utm_campaign=3c4988c1e2-tcidaily&utm_medium=email&utm_term=0_3742c429c9-3c4988c1e2-179508230) > Alt text is an essential part of web accessibility. > It is often disregarded or understood through the lens of compliance, as an unwelcome burden to be met with minimum effort. > How can we instead approach alt text thoughtfully and creatively? ## Images - [ ] `![Discerning Yelp Connoisseur ](https://i.snap.as/K2E9UV7S.png)` - [ ] ![Drycast Classic Banner](https://i.snap.as/Vy46eZzP.png) - [ ] ![Sn00ki Denial](https://i.snap.as/gYZ9piaG.png) - [ ] ![Eat Rocks](https://i.snap.as/R2Yg7CcX.jpeg) - [ ] ![Activity View Circa iOS7](https://i.snap.as/RZD3eKn3.png) - [ ] ![ButtBot](https://i.snap.as/uDIsssMI.png) - [ ] ![Our Logo is Fuckin Huge](https://i.snap.as/ccLFQrUy.jpeg) - [ ] ![DeadDigitizer2](https://i.snap.as/GIC9TVzE.png) - [ ]![Old App Switching 2](https://i.snap.as/TV4k4bJB.png) - ![Drywall Periscope Chat Promotion](https://i.snap.as/ORaFin1O.png) - [ ] ![Aviation Meme](https://i.snap.as/gPrp17Bx.png) - [ ] ![WATCH OUT ZUCKERBERG](https://i.snap.as/8H9ok3F2.png) - [ ] ![BlockGurlBxtch](https://i.snap.as/ziKiAFLI.jpeg) - [ ] ![Hashtag MM2011](https://i.snap.as/m8ZQobNw.png) - [ ] ![The Next Web Brad v Tapbots](https://i.snap.as/1p1Te0W1.jpeg) - [ ] ![iPhone Photography Awards 2011](https://i.snap.as/fsvI2SE7.jpeg) - [ ] ![Tweetbot 1 for iPhone Screenshots](https://i.snap.as/xTiFR73e.jpeg) - [ ] ![Facebook Word Salad](https://i.snap.as/tmpGfz5P.png) - [ ] ![App Switching - Old Twitter](https://i.snap.as/gc58FHe1.png) - [ ] ![Illmatic Facebook](https://i.snap.as/xPRB157k.jpeg) - [ ] ![Buying a Gun is So Easy](https://i.snap.as/Ood9xT32.png) - [ ] ![DeadDigitizer](https://i.snap.as/HIvLIU9A.png) #i #documentation #audio #telegram #notes #psalms #software # Noir Configuration Utility Source ``` { "WFWorkflowMinimumClientVersionString": "900", "WFWorkflowMinimumClientVersion": 900, "WFWorkflowIcon": { "WFWorkflowIconStartColor": 2071128575, "WFWorkflowIconGlyphNumber": 61517 }, "WFWorkflowClientVersion": "1145.11", "WFWorkflowOutputContentItemClasses": [], "WFWorkflowHasOutputFallback": false, "WFWorkflowActions": [ { "WFWorkflowActionIdentifier": "is.workflow.actions.comment", "WFWorkflowActionParameters": { "WFCommentActionText": "This shortcut expects a rich text list of Safari Tab Group Links in the clipboard. For more details/help/etc, visit this shortcut's GitHub Issue: https://github.com/extratone/i/issues/124\n\nMy contact information:\n\nEmail: davidblue@extratone.com\nContact card: bit.ly/whoisdavidblue\nRoutineHub Profile: https://routinehub.co/user/blue\nGitHub: https://github.com/extratone/i\nTelegram: t.me/extratone\nTwitter: twitter.com/NeoYokel\nReddit: reddit.com/u/asphaltapostle\nMastodon: mastodon.social/@DavidBlue\nEVERYWHERE: bit.ly/dbrolodex" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.getclipboard", "WFWorkflowActionParameters": { "UUID": "E8A5EF62-3E48-4EF1-8103-558A6F2614B6" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.getmarkdownfromrichtext", "WFWorkflowActionParameters": { "WFInput": { "Value": { "OutputUUID": "E8A5EF62-3E48-4EF1-8103-558A6F2614B6", "Type": "ActionOutput", "OutputName": "Clipboard" }, "WFSerializationType": "WFTextTokenAttachment" }, "UUID": "7861E639-6DD4-48BF-A984-1A5E266F26F9" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.detect.link", "WFWorkflowActionParameters": { "WFInput": { "Value": { "string": "", "attachmentsByRange": { "{0, 1}": { "OutputUUID": "7861E639-6DD4-48BF-A984-1A5E266F26F9", "Type": "ActionOutput", "OutputName": "Markdown from Rich Text" } } }, "WFSerializationType": "WFTextTokenString" }, "UUID": "D707250F-FF66-4593-B741-5688D8ABEE85" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.text.split", "WFWorkflowActionParameters": { "Show-text": true, "text": { "Value": { "OutputUUID": "D707250F-FF66-4593-B741-5688D8ABEE85", "Type": "ActionOutput", "OutputName": "URLs" }, "WFSerializationType": "WFTextTokenAttachment" }, "UUID": "CDF55510-312F-448C-9923-4D1221E95F48" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.repeat.each", "WFWorkflowActionParameters": { "WFInput": { "Value": { "OutputUUID": "CDF55510-312F-448C-9923-4D1221E95F48", "Type": "ActionOutput", "OutputName": "Split Text" }, "WFSerializationType": "WFTextTokenAttachment" }, "GroupingIdentifier": "29697679-9DD1-4136-A14C-9C770C9F149C", "WFControlFlowMode": 0 } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.geturlcomponent", "WFWorkflowActionParameters": { "WFURL": { "Value": { "string": "", "attachmentsByRange": { "{0, 1}": { "VariableName": "Repeat Item", "Type": "Variable" } } }, "WFSerializationType": "WFTextTokenString" }, "WFURLComponent": "Host", "UUID": "EAD678B9-E2F8-4AD6-9768-270F9366F8F2" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.appendvariable", "WFWorkflowActionParameters": { "WFInput": { "Value": { "OutputUUID": "EAD678B9-E2F8-4AD6-9768-270F9366F8F2", "Type": "ActionOutput", "OutputName": "Component of URL" }, "WFSerializationType": "WFTextTokenAttachment" }, "WFVariableName": "domains", "UUID": "0F2B84AE-7FA8-4E7F-8C77-C7D1264D6A69" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.url", "WFWorkflowActionParameters": { "Show-WFURLActionURL": true, "WFURLActionURL": { "Value": { "string": "https://", "attachmentsByRange": { "{8, 1}": { "OutputUUID": "EAD678B9-E2F8-4AD6-9768-270F9366F8F2", "Type": "ActionOutput", "OutputName": "Component of URL" } } }, "WFSerializationType": "WFTextTokenString" }, "UUID": "9CE46843-BBB0-48CE-BCE5-F5F16D7213CE" } }, { "WFWorkflowActionIdentifier": "nl.jeffreykuiken.NoirApp.SetEnabledForSiteIntent", "WFWorkflowActionParameters": { "url": { "Value": { "string": "", "attachmentsByRange": { "{0, 1}": { "OutputUUID": "9CE46843-BBB0-48CE-BCE5-F5F16D7213CE", "Type": "ActionOutput", "OutputName": "URL" } } }, "WFSerializationType": "WFTextTokenString" }, "enableStatus": "off", "UUID": "07CCC8A4-E9EB-4C5E-AE5D-332D52FB0F1B" } }, { "WFWorkflowActionIdentifier": "nl.jeffreykuiken.NoirApp.SetImageDimmingForSiteIntent", "WFWorkflowActionParameters": { "dimImagesState": true, "url": { "Value": { "string": "", "attachmentsByRange": { "{0, 1}": { "OutputUUID": "9CE46843-BBB0-48CE-BCE5-F5F16D7213CE", "Type": "ActionOutput", "OutputName": "URL" } } }, "WFSerializationType": "WFTextTokenString" }, "UUID": "55449E17-C797-47FF-A4D2-7C484D0AFD73" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.repeat.each", "WFWorkflowActionParameters": { "WFControlFlowMode": 2, "GroupingIdentifier": "29697679-9DD1-4136-A14C-9C770C9F149C", "UUID": "970AD6B4-BCDC-44C2-8201-0782920CBD64" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.text.combine", "WFWorkflowActionParameters": { "Show-text": true, "UUID": "FB32D3D9-057D-4CBB-A466-D13F201CBFFF", "WFTextSeparator": "New Lines", "text": { "Value": { "VariableName": "domains", "Type": "Variable" }, "WFSerializationType": "WFTextTokenAttachment" } } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.gettext", "WFWorkflowActionParameters": { "WFTextActionText": { "Value": { "string": "Noir Configuration Utility Results \n\nYour chosen Noir settings were successfully stored for the following domains:\n\n", "attachmentsByRange": { "{35, 1}": { "Type": "CurrentDate", "Aggrandizements": [ { "WFDateFormatStyle": "Custom", "WFISO8601IncludeTime": false, "WFDateFormat": "MMDDYYYY-hmmss", "Type": "WFDateFormatVariableAggrandizement" } ] }, "{117, 1}": { "OutputUUID": "FB32D3D9-057D-4CBB-A466-D13F201CBFFF", "Type": "ActionOutput", "OutputName": "Combined Text" } } }, "WFSerializationType": "WFTextTokenString" }, "UUID": "2BAA4D53-04AC-40F0-A735-296666AAE6AA" } }, { "WFWorkflowActionIdentifier": "com.apple.mobilenotes.SharingExtension", "WFWorkflowActionParameters": { "ShowWhenRun": false, "WFCreateNoteInput": { "Value": { "string": "", "attachmentsByRange": { "{0, 1}": { "OutputUUID": "2BAA4D53-04AC-40F0-A735-296666AAE6AA", "Type": "ActionOutput", "OutputName": "Text" } } }, "WFSerializationType": "WFTextTokenString" }, "UUID": "9710AE68-ADD6-4955-BC46-3F364745D29D", "WFNoteGroup": { "Identifier": "x-coredata://DEC28B57-663A-408D-916A-9AA5FB94CFF9/ICFolder/p11414?accountIdentifier=B81478A8-00DC-4B41-9399-DD3569493B86", "DisplayString": "Logging" } } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.setclipboard", "WFWorkflowActionParameters": { "WFInput": { "Value": { "OutputUUID": "FB32D3D9-057D-4CBB-A466-D13F201CBFFF", "Type": "ActionOutput", "OutputName": "Combined Text" }, "WFSerializationType": "WFTextTokenAttachment" }, "UUID": "5C199DCC-3ACA-4EB2-A603-3D41BF5B5F54" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.count", "WFWorkflowActionParameters": { "Input": { "Value": { "VariableName": "domains", "Type": "Variable" }, "WFSerializationType": "WFTextTokenAttachment" }, "UUID": "E2FBC0F1-120D-4099-9F27-6823FEC6D2EF" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.notification", "WFWorkflowActionParameters": { "WFNotificationActionBody": { "Value": { "string": "Configuration stored for domains.", "attachmentsByRange": { "{25, 1}": { "OutputUUID": "E2FBC0F1-120D-4099-9F27-6823FEC6D2EF", "Type": "ActionOutput", "OutputName": "Count" } } }, "WFSerializationType": "WFTextTokenString" }, "UUID": "4932696D-BFA0-4D0B-B043-6443BD8BC574", "WFNotificationActionSound": false, "WFNotificationActionTitle": "Noir Configuration Utility Results" } }, { "WFWorkflowActionIdentifier": "is.workflow.actions.openapp", "WFWorkflowActionParameters": { "WFAppIdentifier": "nl.jeffreykuiken.NoirApp", "WFSelectedApp": { "BundleIdentifier": "nl.jeffreykuiken.NoirApp.mac", "Name": "Noir", "TeamIdentifier": "X23AVVY2HZ" } } } ], "WFWorkflowInputContentItemClasses": [ "WFAppStoreAppContentItem", "WFArticleContentItem", "WFContactContentItem", "WFDateContentItem", "WFEmailAddressContentItem", "WFFolderContentItem", "WFGenericFileContentItem", "WFImageContentItem", "WFiTunesProductContentItem", "WFLocationContentItem", "WFDCMapsLinkContentItem", "WFAVAssetContentItem", "WFPDFContentItem", "WFPhoneNumberContentItem", "WFRichTextContentItem", "WFSafariWebPageContentItem", "WFStringContentItem", "WFURLContentItem" ], "WFWorkflowImportQuestions": [ { "ParameterKey": "enableStatus", "Category": "Parameter", "ActionIndex": 8, "Text": "Please select this installation’s “Noir Status” configuration." }, { "ParameterKey": "dimImagesState", "Category": "Parameter", "ActionIndex": 9, "Text": "Please select this installation’s image dimming setting." }, { "ParameterKey": "WFNoteGroup", "Category": "Parameter", "ActionIndex": 13, "Text": "Specify a folder in Notes for logging." } ], "WFQuickActionSurfaces": [], "WFWorkflowTypes": [], "WFWorkflowHasShortcutInputVariables": false } ``` #dev #i #shortcuts # Third Party Telegram Themes Index 1. [**𝘞𝘐𝘕𝘋𝘖𝘞𝘚 𝘌𝘛𝘌𝘙𝘕𝘈𝘓**](https://t.me/addtheme/windowseternal) 2. [**Allo4Life**](https://t.me/addtheme/allo4life) 3. [Fresh Mint - Tweetbot 6](https://t.me/addtheme/freshmint) 4. [**Greyhound**](https://t.me/addtheme/greyhound) 5. [Space Piss](https://t.me/addtheme/spacepiss) 6. [Vampire Reference](https://t.me/addtheme/vampirereference) 7. [Signals 2022](https://t.me/addtheme/signals2022) 8. [Futuretab 2022](https://t.me/addtheme/futuretab2022) 9. [Slander Crimson](https://t.me/addtheme/slandercrimson) 10. [Academia 2022](https://t.me/addtheme/academia2022) 11. [Hermitage 2022](https://t.me/addtheme/hermitage2022) 12. [Divorced Empress Navier](https://t.me/addtheme/navier2022) 13. [Roro Jump 2022](https://t.me/addtheme/rorojump2022) 14. [Dark, Post-Academia](https://t.me/addtheme/postacademia) 15. [UOrange](https://t.me/addtheme/uorange) 16. [**Vaporfucked**](https://t.me/addtheme/vaporfucked) 17. [Vaporfucked Light](https://t.me/addtheme/vaporfuckedlight) 18. [Dark Shell](https://t.me/addtheme/darkshell2022) 19. [Honey Highlight](https://t.me/addtheme/HoneyHighlight2021) 20. [Mirage on Kimberly](https://t.me/addtheme/miragekimberly) 21. [Lynch on Rhino](https://t.me/addtheme/lynchrhino) 22. [Mars Orange](https://t.me/addtheme/marsorange) 23. [Sepia Blues](https://t.me/addtheme/sepiablues2022) # Micro Matt: Shipping soon: native support for Markdown and HTML in blog descriptions! From: Micro Matt To: davidblue@extratone.com Date: Jan 18, 2022 Subject: Micro Matt: Shipping soon: native support for Markdown and HTML in blog descriptions! From micro.baer.works/shipping-soon-native-support-for-markdown-and-html-in-blog-descriptions Shipping soon: native support for Markdown and HTML in blog descriptions! This was a long-requested feature, and there’s really no reason not to support it — both Snap.as and our future Remark.as support it. Now you can do things like verify your blog for Mastodon and elsewhere in the IndieWeb. Further reading: dev task T874, WriteFreely PR #531. #dev Originally published on Micro Matt, a blog you subscribe to. Sent to davidblue@extratone.com. Unsubscribe. [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjIwMjIwMTE4MjIxNDIxLmIx%0D%0AYmRkYzJjODczMzg5OGZAd3JpdGVhc2xldHRlcnMuY29tOzM4MTg4MDEyNjU%3D) #email # David Blue’s WORLD FAMOUS Fast n’ Loose™ Siri Shortcuts for 𝚂𝙲𝚁𝚄𝙱𝚂 - [David Blue’s WORLD FAMOUS Fast n’ Loose™ Siri Shortcuts for 𝚂𝙲𝚁𝚄𝙱𝚂 · extratone/bilge Wiki](https://github.com/extratone/bilge/wiki/David-Blue%E2%80%99s-WORLD-FAMOUS-Fast-n%E2%80%99-Loose%E2%84%A2-Siri-Shortcuts-for-%F0%9D%9A%82%F0%9D%99%B2%F0%9D%9A%81%F0%9D%9A%84%F0%9D%99%B1%F0%9D%9A%82) - [Shortlink](https://bit.ly/gitscrubs) - `https://bit.ly/gitscrubs` - [Pastery](https://www.pastery.net/eujzmz/#eujzmz) - [WTF](https://davidblue.wtf/scrubs/) [image:946616FA-49E6-4835-85E1-6C067BAEA279-4931-000001077112FD75/image.png] **All** of the Siri Shortcuts I’ve created or modified over the years and and thought worthy of sharing, prioritizing those which I have not shared on either my [RoutineHub](https://routinehub.co/user/blue) or [ShareShortcuts](https://shareshortcuts.com/u/blue/) profiles. You shouldn’t encounter share URLS from *any* Shortcuts or File Shariing services, here - I thought a commitment to generating fresh `icloud.com/shortcuts` URLs exclusively for this project would be in its best interest - I haven’t exactly been dilligently keeping track of them throughout the history of Siri Shortcuts as they’ve been exclusively shared this way… ## Most Utilitarian (In Theory…) - [**screen**](https://www.icloud.com/shortcuts/6fa16145d1a649ceb878f141b8e595b7) - `https://www.icloud.com/shortcuts/6fa16145d1a649ceb878f141b8e595b7` - [undercovered](https://www.icloud.com/shortcuts/18eb1e77ab0b455f82da4c4c6e521368) (define) - [style](https://www.icloud.com/shortcuts/3a2d212cc2614202be37b0beb8276e9b) (personal styleguide reference) - [Text Replacement](https://www.icloud.com/shortcuts/e6d56b3fe8bc40639a60f166315f255b) - [gps](https://www.icloud.com/shortcuts/c22c676ab4ee4b98b5a49b6112957b3c) - [sl](https://www.icloud.com/shortcuts/7c3946b289a846cb9e63f0bdade93fa5) (The best Odesli quick share automation in history.) ## Music/Audio Delights - [**Fondren & Main**](https://www.icloud.com/shortcuts/fc846ff0e9094e088a7af4c5c11c3a23) - [**SHOW ME**](https://www.icloud.com/shortcuts/029dea6d90f84223ac65be98fc803e7a) - `https://bit.ly/showmesiri` - [RIDE THE STORM](https://www.icloud.com/shortcuts/50ea8b3e026f41668f9a2a88c702a4c4) - [BREAKDALAW](https://www.icloud.com/shortcuts/0e175407850d4fcb83c64ea04c0c284f) - [Frank Ocean - Street Fighter](https://www.icloud.com/shortcuts/ce89a2fe4f444e9c973436922640a33a) - [HER](https://www.icloud.com/shortcuts/c6ab99cbc3d9430d87d4abbdf7714d16) - [GOGO](https://www.icloud.com/shortcuts/80fa232621df4112bd1a92a5ace8e088) - [FALTER](https://www.icloud.com/shortcuts/3f4efb0207ab4b0ca91606f160612273) - [KEEPIN LIVE](https://www.icloud.com/shortcuts/f9a1161ae7da41ac8dd772010be5a049) - [TKO](https://www.icloud.com/shortcuts/351c2593d3a2405691685fa6caf869aa) - [FUTURELAND](https://www.icloud.com/shortcuts/3da59e509709437d90927ba65860fc3a) - [WITNESS](https://www.icloud.com/shortcuts/62afd3c029da456aa62d593de28145c4) - [Meow](https://www.icloud.com/shortcuts/a32e7771f97c43feb5e228dc2c94a868) ## Personal/Brand - [The Psalms Ebook](https://www.icloud.com/shortcuts/eff33d5e122449deb190c70992022c97) - [DavodTime](https://www.icloud.com/shortcuts/5a4ebd4ed057415b8915c535951c1059) ## Legacy/Drywall Media - [trent](https://www.icloud.com/shortcuts/7a319d5b68b84fabb8e0c0bea441bb24) - [birthday](https://www.icloud.com/shortcuts/4c2c7fd58aa84208bce08b69936aafbf) - [WYGD](https://www.icloud.com/shortcuts/fd519a1a72c34a3d8559779826b23353) - [Minecraft Flying Tutorial](https://www.icloud.com/shortcuts/a1c368c909c741a2864d0dd747115354) - [homedepot](https://www.icloud.com/shortcuts/3409ec23198c4f34a82f08a8b680bd1e) ## Okay - [NILLA](https://www.icloud.com/shortcuts/d0ed337c304f430993f2c8d8953d5e69) - [BIG WORDLE](https://www.icloud.com/shortcuts/965dd56d81684881954be591303a962d) # Test \ts .\wget .\e davidblue@extratone.comwget --recursive --page-requisites --adjust-extension --span-hosts --convert-links --restrict-file-names=windows --domains --no-parentwget --recursive --page-requisites --adjust-extension --span-hosts --convert-links --restrict-file-names=windows --domains --no-parent 01172022-083028 (Script)l https://www.matthewcassinelli.com/actions/get-clipboard # OpenWeatherMap API Instruction From: OpenWeather Team To: Customer Date: Jan 16, 2022 Subject: OpenWeatherMap API Instruction Dear Customer! Thank you for subscribing to Free OpenWeatherMap! API key: - Your API key is 915de35515bc7b086b69ea80e6f67ed4 - Within the next couple of hours, it will be activated and ready to use - You can later create more API keys on your account page - Please, always use your API key in each API call Endpoint: - Please, use the endpoint api.openweathermap.org for your API calls - Example of API call: api.openweathermap.org/data/2.5/weather?q=London,uk&APPID=915de35515bc7b086b69ea80e6f67ed4 Useful links: - API documentation https://openweathermap.org/api - Details of your plan https://openweathermap.org/price - Please, note that 16-days daily forecast and History API are not available for Free subscribers Blog Support center & FAQ Contact us info@openweathermap.org. Best Regards, OpenWeather team OpenWeather © All rights reserved info@openweathermap.org [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOmYzMDI1MTdkOWJjYjQ5ZTI3%0D%0AM2Q1NTZjOTE1ZjZlZTIyQDgxMmQzNDllY2Q5NjsyNTQ3NDIwMzQ2) #documentation #email # Custom Keyboard Shortcuts on macOS ## Shortcuts | Action | Command | |--------------|----------| | sleepnow | ⌥+PrtScn | | Light Odette | ⌃⌥⌘🌐︎↑ | | Dark Odette | ⌃⌥⌘🌐︎↓ | | Sample Color | ⌘Pause | [image:BCA6DC1A-1274-4F0E-9339-3589782BFF19-11130-000012CD8948F584/Capture 2022-01-10 at 08.01.06.png] ## Misc System | Action | Command | |:---------------------------:|:---------------:| | Toggle Dock Hiding | ⌥ ⌘ D | | Launchpad | F7 | | Show Desktop | F16 (Media Key) | | Preview Selection in Marked | ^⌥P | | ==Look Up in Dictionary== | PrtScn | [image:460CC33A-C8BE-49BD-9029-A841CAFF9AE7-11130-000012CD89863526/Capture 2022-01-10 at 08.28.33.png] ## Safari | **Action** | **Command** | |:----------------------:|:-----------:| | File->Share->Telegram | ⌥F1 | | File->Share->Copy | ⌥C | | Duplicate Tab | ⇧⌘K | | File->Share->Reminders | ⌥⌘R | | File->Share->Tweetbot | ⌥Tz | ## Finder | **Action** | **Command** | |:--------------------------:|:-----------:| | File->Share->Add to Photos | ⌥⌘P | | File->Share->AirDrop | ⇧⌘S | # The 24 Hours of Le Mans Virtual Online event will take place on 15/16th January [image:201E11A4-A815-4ED8-82AF-4B69B256180D-2209-0000023EFB3122AB/24hours_LeMans_1920x1080.png] Save the date and get ready to follow the grand finale of the 2021/22 Le Mans Virtual Series, the 24 Hours of Le Mans Virtual. The biggest esports event in endurance racing will take place online on **15/16th January 2022**, and the official poster has today been revealed. More info to come so stay tuned! For further media information contact Fiona Miller, Miller Media & Communications, on +44 7770 371332 or [miller.media10@btinternet.com](mailto:miller.media10@btinternet.com) [www.lemansvirtual.com](http://www.lemansvirtual.com) **About Le Mans Virtual Series** Le Mans Virtual Series is a global, elite esports series made up of 5 rounds which bring together endurance racing and sim racing’s top teams to compete on some of the world’s most famous racetracks. International FIA-licensed real-world drivers are teamed up with leading esports protagonists to take on endurance classics for a total prize fund of US$250,000, culminating in the prestigious 24 Hours of Le Mans Virtual which will take place live and televised at the Autosport Show International in Birmingham, UK. The Le Mans Virtual Series is a joint venture between leading racing game developer, publisher and esports ecosystem provider of official motorsport racing series throughout the world, Motorsport Games, and ACO-the creator and organizer of the world-famous 24 Hours of Le Mans and promoter of the FIA WEC. [www.lemansvirtual.com](http://www.lemansvirtual.com) Round 1 4 Hours of Monza, Italy September 25, 2021 Online only Round 2 6 Hours of Spa, Belgium October 16, 2021 Online only Round 3 8 Hours of Nürburgring, Germany November 13, 2021 Online only Round 4 4 Hours of Sebring, USA December 18, 2021 Online only Round 5 24 Hours of Le Mans Virtual January 15/16, 2022 Online only **~About Motorsport Games~** Motorsport Games, a Motorsport Network company, combines innovative and engaging video games with exciting esports competitions and content for racing fans and gamers around the globe. The Company is the officially licensed video game developer and publisher for iconic motorsport racing series, including NASCAR, INDYCAR, 24 Hours of Le Mans and the British Touring Car Championship (“BTCC”), across PC, PlayStation, Xbox, Nintendo Switch and mobile. Motorsport Games is an award-winning esports partner of choice for 24 Hours of Le Mans, Formula E, BTCC, the FIA World Rallycross Championship and the eNASCAR Heat Pro League, among others. For more information about Motorsport Games, visit [www.motorsportgames.com](http://www.motorsportgames.com) [The 24 Hours of Le Mans Virtual Online event will take place on 15/16th January](https://lemansvirtual.com/the-24-hours-of-le-mans-virtual-online-event-will-take-place-on-15-16th-january/) # Espresso app is leaving Setapp From: Setapp Team To: David Blue Date: Jan 11, 2022 Subject: Espresso app is leaving Setapp ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Hi David, Heads up, Espresso is leaving Setapp! The app hasn’t been getting updates or maintenance, so starting January 14, it will no longer be a part of our collection. We invite you to try out Rapid Weaver or Wunderbucket as possible substitutes. We hope they can become a fitting replacement. You received this email because you're using Espresso app on Setapp. You won't receive any marketing emails if you're not subscribed to the Setapp newsletter. Your Setapp Team This email was sent by Setapp Ltd. Manage subscriptions Unsubscribe 9‌ Tallow Street, Youghal, Co. Cork, P36YE14, Ireland [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOmNtLjAzMDYzOTQ2MzczMzMuYWhraHV1%0D%0Aay5pbGlodHRlbGguZEBjbWFpbDE5LmNvbTtnSUQ6MTcyMTY3NTE0NTY3MTMyNTg5%0D%0AMDszNzMzMTM2Nzk1) #EMAIL #$ # Editor’s Note: Your data may not be safe. How do you feel about it? From: WIRED's Gideon Lichfield To: ihadtopee@gmail.com Date: Jan 11, 2022 Subject: Editor’s Note: Your data may not be safe. How do you feel about it? Digging into the best new stories on wired.com, and what they mean for our future. View this email in your browser  |  Manage newsletter subscriptions 01.11.22 Facebook is regularly pummeled for its lax data privacy, creepy algorithmic manipulation, and inability to curb disinformation and hate speech. Last fall, WIRED was just one among many media outlets that published excerpts from the Facebook Papers, a stash of leaked internal documents showing that the company knew full well that its automated content moderation systems performed far worse than it publicly claimed. By comparison, Amazon has kept its public image relatively unscathed, despite its history of exploiting its workers. But in fact, the company has been not unlike Facebook in its careless handling of your data. As Will Evans’ recent story for WIRED and Reveal from the Center for Investigative Reporting shows, Amazon neglected its security division for years, and as a result its control over how customers’ data was stored and accessed was hopelessly weak. In 2018, around the time it emerged that tens of millions of Facebook users’ data had been leaked to the political consultancy Cambridge Analytica, Amazon learned that it had suffered a similar kind of breach, in which an outside company siphoned off millions of people’s personal records. That this news didn’t leak out at the time seems to have been mostly blind luck—that, and the fact that Amazon’s data breaches mostly only hurt sellers on the Amazon platform, while Facebook’s seemed to threaten democracy itself. Massive data leaks have sadly become utterly commonplace. But even when companies aren’t losing your data, they’re using it in all sorts of ways you might not expect, as we’ve explained in our reporting on how TikTok sniffs out your friends without your knowing, or the tricks shopping sites use to get you to spend more. (For more like that, see our “Dark Patterns” series.) I’m curious how you think about these issues as they relate to your life. Have you largely given up on trying to limit how your data is used, or have you been doing anything recently to bring it more under control? And do you have any requests for things WIRED could write to help you with those decisions? Let us know by hitting reply or sending an email to hello@WIRED.com. And meanwhile, here are eight other stories we’ve published in the past few weeks that I think you might enjoy. [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjIwMjIwMTExMDczMDU2LjI2MzIyNTYw%0D%0ALjMxMTk5QHNhaWx0aHJ1LmNvbTtnSUQ6MTcyMTY2MTQyNDM0NzU4ODkxMDszOTA4%0D%0ANzkxMjQy) #EMAIL #correspondence # Convert a Chrome Extension to Safari Web Extension Last Update: 2021-01-12 **Part A: Safari Web Extension Development** Here we use [Simple Gmail Notes](https://chrome.google.com/webstore/detail/simple-gmail-notes/jfjkcbkgjohminidbpendlodpfacgmlm?hl=en) ( [Source Code](https://github.com/bartsolutions/simple-gmail-notes.chrome) ) for the example. 1. Make sure you have Safari 14 and Xcode 12 installed 2. In the terminal, use Xcode command for the conversion 2. `xcrun safari-web-extension-converter ` 2. (click Yes for default options) [image:D3552D81-9E6D-48F3-9092-E18548A93EB8-27681-00003539C0B52E06/1__CBbsbXl6SQMT0XwsqSVhg.png] 3. A brand new Xcode project folder will be created, and Xcode will be automatically launched to open the new project. 3. **The Xcode project will be linked to the source web extension folder**, so you need to make sure both source and generated folder exist and have a consistent relative path. [image:3AB637EB-C705-40D7-BD04-51AED072A92B-27681-00003539C0966A5D/1_nyn86xrO3GAPmaCbqsi3MQ.png] 4. Without doing anything further in Xcode, just click run to launch the extension [image:85DDF84A-FB36-4817-87D6-43368A48F580-27681-00003539C07D0CAC/1_DosAhhL5NhDF9HXMob1ctw.png] 5. Safari will be opened, yet extension will not appear at first sight. You need to do the following steps first: a. safari -> preferences -> enable development menu [image:CC854478-7DF4-4440-B71D-5FC9A76CB63F-27681-00003539C057EE50/1_jj8e5xo5pbIEo3fWPf07uw.png] 5. b. safari -> develop menu -> click allow unsigned extension (need to do this every time safari is restarted) [image:7E52C62D-E0B7-40F0-8122-B3E8EE98D65C-27681-00003539C0371340/1_IEtQu72j26N8jIO5Wx2SUA.png] 5. c: safari -> preferences -> extensions tab -> click the extension [image:9B0F65A8-9C30-4775-9BB6-F66005D047E8-27681-00003539C017C8DE/1_emZPRoHUXbdc2ElGMje-Fw.png] 5. d: open the web site, click the icon near the address bar, and allow the access [image:668C98B4-5F31-4442-88D8-EC909F805024-27681-00003539BFFFEA6F/1_RuDTgJkiWzWglW68oE3zYw.png] 6. Now the extension should be able to be launched, and you could see the content script in the Safari debug console. [image:AF66D268-C1AF-43A5-B067-528F74DE7C91-27681-00003539BFE75B5D/1_OQ5OSpAwrW1CBTYUD5hX_w.png] 7. To check the background script, in the Safari, click Develop -> Web Extension Background Pages [image:95FE3515-984A-4C5A-88D6-9EE4BD44D051-27681-00003539BFCB1C68/1_Q-PT2K0Syj9RgapsyptoNA.png] 8. Tip: while [WebExtensions API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API) is an open standard, Apple has not (yet) implemented the full spec. You could find [limitations of current phase here](https://developer.apple.com/documentation/safariservices/safari_web_extensions/assessing_your_safari_web_extension_s_browser_compatibility). **Part B: Distribute Safari Web Extension to App Store** 1. Go to App Store Connect, create an identity via [https://developer.apple.com/account/resources/identifiers/list/bundleId](https://developer.apple.com/account/resources/identifiers/list/bundleId) [image:E020032C-5E15-4B85-9577-81C2F5769D72-27681-00003539BFB31DDA/1_xwzbX2Ny1ZtPB-z0i94F5w.png] 2. In App store connect, create an app of ‘macApp’ [https://appstoreconnect.apple.com/apps](https://appstoreconnect.apple.com/apps) In the bundle ID drop down, just select the one newly created [image:83B819B9-7DCD-4101-9630-5F757D001DBE-27681-00003539BF9D6E0C/1_bVO2qsEulT_G44DXd2KH1g.png] [image:A67245CD-0D40-4C8F-A0D4-267FD7F90C26-27681-00003539BF81BB11/1_MVOM6H0RD4je_nNrIk_Ajg.png] 2. \ 3. Go to Xcode, click Project -> target -> app target, update app category and bundle identifier (use the one in the App Store) [image:EA02CD3E-77DC-40C1-8493-878904F99B0F-27681-00003539BF5FF43E/1_NQJEH-Km9X9crvuTT0-TjA.png] 4. Click extension target of project, update bundle identifier. Note the the project identifier should prefix the extension identifier. E.g. if project identifier is ‘hk.com.bart.simplegmailnotes’, then extension identifier should be something like ‘hk.com.bart.simplegmailnotes.extension’ [image:BC5D8D2F-AC98-408D-95CD-A3F86CBB1070-27681-00003539BF3DF1DE/1_LGUVUhVz3WD2KDVVHyQK6g.png] 5. In Xcode -> assets -> make sure all icons are provided [image:E28BB4C3-5264-492A-B728-4D4F54319740-27681-00003539BF19DABC/1_JfhkvwLcgxES-2aX9i4PEA.png] 6. Update the extension name in the swift file of app [image:CCA4EE50-CD25-43AA-9A86-086E8F7370C9-27681-00003539BEF89DBE/story-board-change.png] 7. In Xcode click Product -> Archive 8. Distribute window should automatically appear after the archive action. (If not, click Window -> Organize -> Distribute App) [image:BE5C619C-4723-47C4-B6AD-3F328575CA79-27681-00003539BECBEEA2/1_iAcgMEl4ThfgutKtFKqsxg.png] 9. Select App Store Connect [image:A28733E1-FA8A-4BF3-A865-CE159CB2FB61-27681-00003539BEAAFA49/1_bdtXGyYhWTdgOoDVMNF2bg.png] 10. Open a browser, go to App store connect, click the app, and now you should be able to select the build [image:00A466F6-381B-414B-A88B-7F1B9D757F6C-27681-00003539BE846C8D/1_1Dv4lovtS5m5Ck67AqLfGg.png] [image:4FA7A0A7-BE92-4671-9630-1009A208456B-27681-00003539BE53950B/1_pyl8mgUqkzlEsM53D-eDVg.png] 10. (If the build is not available, check your App Store email and see if there are any error reports.) 11. Upload all the screenshots and add descriptions to App Store Connect 12. You are now good to start a review process, good luck :) **Update 2020-12-30:** After a few weeks of back and forth, we finally launched the app into [Mac Extension Store](https://apps.apple.com/hk/app/simple-notes-for-gmail/id1541594492?l=en&mt=12). Some major comments from Apple: 1. Cannot have any donation related content, unless you are a non-profit organization 2. Cannot have any payment, unless via Apple gateway 3. Cannot mention COVID 19, unless you are officially granted 4. Extension name must be changed from ‘Simple Gmail Notes’ to ‘Simple Notes for Gmail’ [Convert a Chrome Extension to Safari Web Extension](https://bartsolutions.github.io/2020/11/20/safari-extension/) #documentation #dev # Journalism, media, and technology trends and predictions 2022 [image:FDBB8886-5342-4F6A-8846-8C370C86BCEA-21816-00002A3B3F526C9B/untitled_design_9_0.png.jpeg] 2022 will be a year of careful consolidation for a news industry that has been both disrupted and galvanised by the drawn-out COVID-19 crisis. Both journalists and audiences have, to some degree, been ‘burnt out’ by the relentless intensity of the news agenda, alongside increasingly polarised debates about politics, identity, and culture. This could be the year when journalism takes a breath, focuses on the basics, and comes back stronger. In many parts of the world, audiences for news media have been falling throughout 2021 – not an ideal situation at a time when accurate and reliable information has been so critical to people’s health and security. A key challenge for the news media this year is to re-engage those who have turned away from news – as well as to build deeper relationships with more regular news consumers. Generational change will also continue to be a key theme, leading to more internal soul-searching in newsrooms over diversity and inclusion, about emerging agendas such as climate change and mental health, and about how journalists should behave in social media. On the business side, many traditional news organisations remain relentlessly focused on faster digital transformation as rising newsprint and energy costs look to make print unsustainable in some countries. Charging for online news is the end-destination for many, but expect subscription fatigue to limit progress, especially if economic conditions worsen. After a period where digital advertising revenue has leaked away to giant platforms, publishers have an opportunity to secure better results this year. Tighter privacy rules limiting third-party data, along with concerns about misinformation, have already started to swing the tide back towards trusted brands, but advertising remains a competitive and challenging business, and not every publisher will thrive. Meanwhile the talk of platform regulation becomes real this year as the EU and some national governments try to exercise more control over big tech. However, next generation technologies like artificial intelligence (AI), cryptocurrencies, and the metaverse (virtual or semi-virtual worlds) are already creating a new set of challenges for societies as well as new opportunities to connect, inform, and entertain. **How do Media Leaders View the Year Ahead?** * Almost six out of ten of our respondents (59%) say their revenue has increased over the last year, despite the fact that more than half (54%) also reported static or falling page views. Publishers report that digital advertising has boomed with more people buying online, while subscription revenue has also increased. * Three-quarters (75%) of our sample of editors, CEOs, and digital leaders say they are confident about their company’s prospects for 2022, though fewer (60%) say the same about the future of journalism. Concerns relate to the polarisation of societies, attacks on journalists and the free press, and the financial sustainability of local publications. * More publishers plan to push ahead with subscription or membership strategies this year, with the majority of those surveyed (79%) saying this will be one of their most important revenue priorities, ahead of both display and native advertising. At the same time, many respondents (47%) worry that subscription models may be pushing journalism towards super-serving richer and more educated audiences and leaving others behind. * Publishers say that, on average, three or four different revenue streams will be important or very important this year. Almost three in ten (29%) expect to get significant revenue from tech platforms for content licensing or innovation, with 15% looking to philanthropic funds and foundations – both up on last year. Others are hoping to restart events businesses that stalled during the COVID-19 crisis. * With more regulation in the air over both the market power and social impact of tech companies, there are mixed expectations that government actions will improve journalism’s prospects. While around four in ten (41%) felt that policy interventions might help, more than a third (34%) thought interventions would make no difference, and a quarter (25%) said they could make things worse. * Publishers say they’ll be paying less attention to Facebook (-8 net score) and Twitter (-5) this year and will instead put more effort into Instagram (+54), TikTok (+44), and YouTube (+43), all networks that are popular with younger people. At the same time many news organisations will be tightening their rules on how journalists should behave on social media. In our survey most editors and managers feel that journalists should stick to reporting the news on Twitter and Facebook this year and worry that expressing more personal views could undermine trust. * As the impact of climate change becomes more pressing, the news industry remains uncertain about how to deal with this complex and multi-faceted story. Only a third of those surveyed (34%) rated general coverage as good, even if they felt their own coverage (65%) was better. News editors say it is hard to get mainstream audiences to take notice of a story that moves slowly and can often make audiences feel depressed. In turn this means it’s hard to make the case to hire the necessary specialist journalists to explain and bring it to life. * In terms of innovation, we can expect a back to basics approach this year. Two-thirds of our sample (67%) say they will spend most time iterating and improving existing products, making them quicker and more effective. Only a third (32%) said the priority would be launching new products and brand extensions. Publishers say the biggest barriers to innovation are the lack of money, due to wider economic challenges, and difficulty in attracting and retaining technical staff. * Specifically, publishers say that they will be putting more resource into podcasts and digital audio (80%) as well as email newsletters (70%), two channels that have proved effective in increasing loyalty as well as attracting new subscribers. By contrast just 14% say they’ll be investing in voice and just 8% in creating new applications for the metaverse such as VR and AR. * Media companies continue to bet on artificial intelligence as a way of delivering more personalised experiences and greater production efficiency. More than eight-in-ten of our sample say these technologies will be important for better content recommendations (85%) and newsroom automation (81%). More than two-thirds (69%) see AI as critical on the business side in helping to attract and retain customers. **Other Possible Developments in 2022** * Media companies will get bigger this year through a wave of acquisitions as they look to add scale and value to their subscription or advertising businesses. Some high-profile digital-born companies will come under new ownership. * The growing power of the ‘creator economy’ will continue to touch journalism this year directly and indirectly. Creator content – think celebrities and influencers – will take attention from news media, while more platform features that enable charging for content will open up opportunities for individual journalists and co-operatives. * Short-form social video will make a comeback off the back of creator innovation in youth-based social networks. Expect publishers to adopt more of these techniques in 2022, along with the growth of streaming platforms such as Twitch, contributing to a new ‘pivot to video’. * Watch for more high-profile examples of journalist burnout as the stresses of the relentless news cycle, remote working, and rising authoritarianism take their toll. Media companies will explore new ways to offer support this year. * Donald Trump’s new social network, codenamed Truth Social, will inevitably attract headlines when it launches early in 2022. Expect this to be a focus for hate speech, hackers, and other disrupters * This could be the year when publishers start working together more to counter audience and platform challenges. Look out for joint lobbying on policy, more advertising and common login initiatives, joint investigations, and more content sharing too. * In tech, expect a proliferation of new devices including VR headsets and smart glasses, building blocks for the metaverse – as well as new ways of interacting at work. The hype over cryptocurrencies and non-fungible tokens (NFTs) will continue to build even if practical benefits remain hard to discern. One of the biggest surprises in this year’s survey is the growth in revenue reported by many publishers. Well over half our sample (59%), which includes both subscription and advertising focused publishers from more than 50 countries, say that overall revenues have increased, with only 8% reporting that things had got worse. This is despite the continuing COVID-19 pandemic and the further erosion of traditional revenue sources such as print. In many ways this is testament to the adaptability of an industry that has accelerated new digital revenue streams such as subscription, e-commerce, and digital events over the past 18 months – and also started to bring in substantial licensing revenue from tech platforms on top. For all publishers, a key element in this has been a strong bounce back in digital advertising, as consumers moved their spending online during the ongoing pandemic. Digital advertising grew at its fastest rate ever (30% year on year) in 2021 according to GroupM and now accounts for around two-thirds (64%) of all advertising spend.[1](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-038) It is worth remembering that many publishers not represented in our survey still rely on traditional and declining revenue sources such as print and even broadcast. And for those without a clear digital path ahead of them, the outlook remains extremely challenging. At the same time, overall consumption of online news has fallen significantly in some countries, including the UK and the United States, following the dramas of the Trump era, according to industry data. The relentless and depressing nature of the news has been a factor, with many consumers looking to social media and streaming services for entertainment and distraction. In our own survey, covering a wide range of countries, we find a more mixed picture. Although the majority (54%) report static or declining traffic to online news sites, more than four in ten (44%) say their traffic has gone up. Overall, the majority of publishers (73%) say are optimistic about the year ahead. Even if traffic is down in some cases, journalists feel that their role is more valued by audiences and the business side in particular is on a more solid footing. Journalism is no longer being taken for granted. The industry is explaining itself better and money is flowing proportionately to economic growth. David Walmsley, Editor-in-Chief, *Globe and Mail*, Canada Levels of confidence in journalism more generally (60%) are a bit lower, especially in countries where there is political polarisation, economic weakness, and where journalists themselves are under attack: The power of governments against free press or journalism is growing in Latin America (especially Mexico). The president can say whatever, even if he is openly lying, press debunking or explaining the lie has little effect [by comparison]. *Senior journalist, Mexico* We’ll come back to the pressures on journalists later in this report. A key part of publisher confidence has been the continued growth of subscription and membership models through the COVID-19 pandemic. The *New York Times* now has 8.4 million subscriptions, of which 7.6 million are digital, putting it on track to hit its 10 million target by 2025.[2](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-037) For many of these early-movers, digital revenue now outstrips print and many upmarket titles can see a path to a sustainable future. But so too can a number of smaller digital-born publishers with significant reader revenues, such as *Dennik N* in Slovakia, *El Diario* in Spain, *Malaysiakini* in Malaysia, *Zetland* in Denmark, and the *Daily Maverick* in South Africa. The opportunity for growth at the company level is there for us. We see the path and prospects clearly now with sustainable revenue model in place. Styli Charalambous, CEO, *Daily Maverick*, South Africa Subscription remains the number one priority (79%) for commercial publishers in 2022, according to our survey, ahead of display advertising (73%) and native advertising (59%), events (40%) and funding from platforms (29%), which has grown significantly over the last year. The jury is still out on whether subscription models will work for all. Alternatives are being pursued by publications such as *BuzzFeed* and *Vox*, working across a range of brands to give them more scale. These brands still see a future with a mix of models – from advertising, to e-commerce, and even reader payment too. Once again, our survey shows there is no one-size-fits-all model. Advertising continues to be the main focus for many, and commercial publishers cite, on average, three or four different revenue streams as being important or very important to them this year. Free at the point of consumption models will also be important in ensuring that news is not just for elites. Almost half of news leaders (47%) worry that subscription models may be pushing journalism towards super-serving richer and more educated audiences and leaving others behind. Many leaders of PSBs and others committed to open journalism are amongst those who disagree with this statement, but our own research shows that even these organisations are struggling to build connections with younger and less educated groups online.[3](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-036) **What will happen this year?** **Open access initiatives:** Expect more deals for those from disadvantaged backgrounds as a way of countering critiques about growing information inequality. *The Daily Maverick* in South Africa offers a ‘pay what you can afford’ membership and *El Diario* in Spain allows people to pay nothing at all. In Portugal, lottery funding has been used to fund 20,000 free digital news subscriptions for eight media outlets. The weekly magazine *Visão* gave some of these funded free subscriptions to older people attending the University of the 3rd Age while *Público* targeted unemployed people as part of its allocation, and *Correio da Manhã* decided to help older people living in care homes. Others, like *Politiken* in Denmark, are looking to extend schemes offering free access for students to educational institutions. **Making subscriptions more accessible** [image:FBCD3E61-AA42-4734-BF36-011FDED0E63B-21816-00002A3B3F10112E/Maverick%20Insider.png] *Maverick Insider – a slider to pay what you can afford* [image:9697D7F4-1536-420D-A87F-97B4C7C68185-21816-00002A3B3EE6A2DE/portugal.png] *Free subscriptions via the Portuguese lottery* **Countering subscription fatigue via product extensions and bundling:** This will be a key focus for many publishers looking to hang on to new subscribers gained during COVID. Cut-price offers and differential pricing will be one likely response, especially if the economy cuts up rough, but others are looking to develop new premium products to encourage tie-in. The *New York Times* has led the field with the success of its crosswords and cooking apps. Now it has moved its product review site, Wirecutter, behind a paywall and has also started offering previously free newsletters from star writers like Kara Swisher only to subscribers.[4](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-035) Other publishers are looking to bundle paid podcasts and audio books. Over the last few years, we have seen the coming together of two powerful ideas. The first is that online journalism needs to be paid for and the second that journalists may need to behave more like social influencers as they build relationships and communities. These ideas are embodied in new platforms like Substack, which along with new product offerings from giant tech companies have enabled individual writers, vloggers, and podcasters to make significant amounts of money, injecting new life into the so-called ‘creator economy’. In November Substack announced that it had hit the milestone of 1 million paid subscriptions, with top writers earning six-figure sums from its newsletter focused platform.[5](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-034) Both Facebook (Bulletin) and Twitter (Revue) have launched their own competitors to Substack, along with a range of other features to incentivise creators. Twitter, for example, in September 2021 launched a Super Follows subscription feature (think bonus tweets) that helps creators earn money from their most engaged fans.[6](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-033) Facebook introduced fan subscriptions and stars, both mechanisms that provide financial rewards for the most engaging content. Meanwhile podcast platforms are enabling similar features with a subscription or donation offer on top of a free service. These developments are setting up new dynamics around who gets attention and what content may be prioritised in years to come. ### Twitter Super Follows feature, Facebook Stars, and newsletter and podcast subscriptions [image:AD13F9F1-86AA-49BC-9517-F7AC9854D61B-21816-00002A3B3EAE9589/Twitter%20super%20follows.png] **What will happen this year?** **Mainstream media poaches back:** If last year’s trend was star writers setting up on their own, this year we may see more movement in the opposite direction. Not all writers have found it easy to grow an audience quickly on their own and traditional companies are looking to hoover up talent as a way of feeding subscription pipelines. *The Atlantic*, for example, is launching a suite of new newsletters including writers like Charlie Warzel, who previously operated his Galaxy Brain brand on Substack. Writers can continue to earn money independently from podcasts and personal appearances and existing followers get a year’s free access to *The Atlantic*, after which they will need to subscribe. **Journalism collectives as a halfway house:** This year we may see more companies that try to mix the infrastructure of a traditional news organisations with the freedom and financial rewards they can find on their own. *Puck* is a start-up founded by a former editor of *Vanity Fair* Jon Kelly, who has brought together a set of writers to cover Silicon Valley, Hollywood, Washington, and Wall Street. ‘There is an elite group of journalists who want to have a direct connection with the large audiences they’ve amassed on social channels’, says Kelly.[7](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-032) Founding partners own part of the business but also get bonuses based on the subscriptions and ad sales they generate. For an annual fee, consumers get access to emails across a range of subjects but can also pay a premium for events and personal access to writers. **Connecting writers pay to subscriptions:** This is likely to become an increasingly contentious issue this year as media companies rely more on star talent to generate revenue from readers. *Puck* has an algorithm that works out how to reward those driving most revenue but transparency and fairness will be tested. Casey Newton, one of the current Substack stars, thinks that publishers will eventually need to offer shared revenue on newsletters or video sponsorships or podcast ads: ‘I expect lots of thrashing from journalists who think they have the right to experiment with Super Follows and other creator monetisation tools and publishers who want to shut them down.’ [8](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-031) All this activity is creating more and more content, but the big question is whether there are enough people with sufficient interest to pay for all but the star writers and podcasters. It wasn’t that long ago that *BuzzFeed* and a few other digital native brands, such as *Vox* and *Vice*, looked like the future of the news business. Sky-high valuations were fuelled by a generation of writers comfortable with digital culture, who invented a set of formats that matched rising consumer enthusiasm for social consumption. But this open access, ad-supported model has taken a knock following various Facebook algorithm changes, compounded by the shock of coronavirus. Some of the stars of digital media have defected back to old media companies and many venture capitalists (VCs) are looking to get their money back. The original disrupters are now caught in a battle with resurgent legacy media for general readers and with platforms for advertising dollars. **What will happen this year?** **Digital natives go for scale:** *BuzzFeed* founder Jonah Peretti has argued for years that digital publishers should consolidate to give them more leverage with advertisers and compete with the ad dominance of Facebook and Google. *BuzzFeed* ’s move to go public, completed in December 2021, provided the cash to acquire digital lifestyle publisher Complex, following last year’s purchase of *HuffPost*.[9](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-030) Now all eyes will be on *Vice*, *Vox*, and *Bustle* as they contemplate similar moves. *Vox* bought *New York Magazine* and its websites in 2019 and has just acquired Group Nine (owner of multiple brands including *NowThis* and *PopSugar* ). By year end we can expect more M&A activity but perhaps not the mega-merger that was predicted some years ago. **Traditional media look to acquisition to fuel growth:** The biggest players will be looking for digital brands that can add value to their subscription bundles and bring different types of audience. Axel Springer purchased *Politico* last year for around $1bn and the *New York Times* has agreed to buy subscription-based sports site *The Athletic*, in a deal valued at around $550 million. *The Athletic* has built built more than 1 million subscribers based on deep reporting in multiple sporting niches.[10](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-029) Local start-ups fuelled by new models: At a local level, we can expect to see the growth of low-cost reader-focused start-ups this year, built on newsletter platforms like Substack, which help take out technology and infrastructure costs. *The Manchester Mill*, which launched during the height of COVID lockdowns, has generated almost 1,000 paying subscriptions at £7 a month in the last year for a mix of slow journalism delivered mainly by newsletter. A certain amount of free content gives it a much wider readership and there is now an offshoot in print.[11](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-028) Super users engage with the editorial team on a Facebook group providing ideas for stories. And there is a podcast too. A sister title, the *Sheffield Tribune* has gained around 300 subscribers and a third, *The Post*, has just launched covering Liverpool. Meanwhile in the United States, Axios has plans to expand its newsletter-led model to 25 cities by mid 2022 ­– with 100 soon after. Axios reporters will break local news, hold local officials accountable and offer tips for navigating local areas and hopes that this reader-supported (membership) model can eventually reach ‘every community in America’. Following the shock of COVID, the key mood in our survey this year seems to be around consolidation when it comes to product development. Although some media companies are focusing on advertising and others on subscription, the success of both models ultimately depends on deeper engagement with audiences via websites, apps, newsletters, and podcasts. In terms of audience-facing innovation, most effort this year will go into podcasts and other digital audio (80%), followed by building and revamping newsletters (70%) and developing digital video formats (63%). By contrast, ‘shiny new things’, involving technology that has not yet reached maturity, such as applications for voice (14%) and the metaverse (8%) appear to be largely on the backburner. Growing consumption of digital audio has been a trend for a few years, driven by a combination of smartphones, better headphones, and investment in podcasts from platforms like Spotify, Google, and Amazon. But in the last year we’ve seen the rapid development of a much wider range of digital formats such as audio articles, flash briefings, and audio messages, along with live formats such as social audio. The rise (and fall) of Clubhouse, known as the first ‘airpods social network’, has been well documented but almost all the major platforms, such as Twitter (Spaces), Facebook (Live Audio Rooms), Reddit (Talk), quickly produced clones to allow users to create impromptu discussion and events. The jury remains out on how compelling audiences will find these features when the hype dies down. More widely, the platforms are investing in tools to allow consumers to create and edit their own short audio stories – effectively delivering another layer of the creator economy. Facebook/Meta are building ‘soundbites’, a new creative, short-form audio format that will appear across all their products – a sort of TikTok for audio. Audio is going to be a first-class medium. Every once in a while, a new medium comes along that can be adopted into a lot of different areas. Mark Zuckerberg, CEO Facebook [12](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-027) Meanwhile audio messaging and communication is gaining traction and finding a new home in a range of apps from cooking to dating. Short audio messages attached to dating profiles within Hinge have added a sense of personality beyond photos and bios – and many have gone viral.[13](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-026) ### Clubhouse, Facebook soundbites and Hinge dating voice prompts [image:50FB8133-1077-4C11-8F1D-CCE4C41D1BD2-21816-00002A3B3E7CA52B/Clubhouse_0.png] **Implications for journalism** Platform investments in audio are opening up the medium to anyone with a smartphone and a story to tell, but this is likely to create a set of familiar problems for publishers. More content means more competition for attention and it may be harder for professional content to stand out. On the other hand, it may also stimulate listening overall, enabling more opportunities for consumption and connection. For platforms, there will be new content moderation challenges in a medium even harder to monitor than written text. In our conversations around trends and predictions, it is clear that many publishers believe that audio offers better opportunities for both engagement and monetisation than they can get through similar investments in text or video. At least in the United States, podcast CPMs have been buoyant through the pandemic with the *New York Times* making $36m from podcast ads according to their 2020 results.[14](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-025) Equally important though is the value in marketing and attracting new audiences. Tortoise Media, which has pivoted heavily towards audio, ended the year with the No. 1 podcast on the Apple Podcast charts in the United States, Sweet Bobby, introducing many more people to the brand, including much-sought-after younger listeners. **What will happen this year in audio?** More publishers look to become audio destinations of their own: With audio becoming more central, the battle is on between competing platforms and publishers to control the full customer experience. The *New York Times* is planning to launch a listening product this year which will include article narrations from Audm including stories from rival publications, and shows from Serial Productions, both of which it bought in 2020. It is also likely to include the 25-year archive from public radio programme *This* *American Life*. It is also possible that it will feature a long-expected afternoon version of The Daily, the hit podcast that has more than 20 million listeners monthly. In developing the app, the *Times* has spent identified key ‘moments’ where consumers may be open to audio-only experiences – and its analysis shows that the current offer (in blue) is only scratching the surface. ### The new *NYT* audio app started with identifying moments in the ‘Audio Day’ that could be filled by great content of different lengths [image:1C00C797-1C6A-4DFD-945A-57DF987BB00E-21816-00002A3B3E1AB240/Captura%20de%20pantalla%202022-01-09%20a%20las%2016.45.13_0.png] The new app may end up part of the *Times* subscription bundle, or at least in a premium layer within it. This is another key reason why audio is seen as strategically important. It can deliver reach, loyalty, and revenue in equal measure. Schibsted is also building free and premium audio products in Nordic countries, following the acquisition of Swedish platform PodMe, and says that audio, which includes podcasts, books, and short-form content, is now a core part of its overall strategy. Elsewhere, some public broadcasters have been considering whether to host podcast content from other publishers and are withholding their best content from the big tech platforms for a period of time. **Second coming for paid podcast platforms:** Paid features from Apple and Spotify will open up the market this year for individual creators and publishers alike this year. Unlike Apple, Spotify is not taking a cut for the first two years in a bid to encourage the best talent. Options include offering a mix of free and paid content, including bonus episodes for super fans. Independent podcast platforms are also quietly creating alternatives, especially in smaller markets. Podimo has 100,000+ paying subscribers for high-quality local language content in countries like Denmark, Norway, Germany, and Spain, and has secured funding for further expansion of a model where it shares membership fees with those creating the content. But with publishers joining platforms looking for the best exclusive content expect the price to go up this year, especially for the biggest stars. The first pivot to video was partly driven by new social media formats like Facebook Live, but quickly faded after the platforms lost interest. Now live video is booming again, partly fuelled by COVID news conferences and dramatic events like the storming of the US Capitol, while short-form video has been revitalised by the creativity and dynamic growth of TikTok. Publishers are stepping up investment, with NBC, as one example, adding 200 new positions and several new hours of programming for its NBC News NOW service which also feeds the Peacock streaming service.[15](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-024) It has also invested heavily in short-form video reaching tens of millions of Gen-Z viewers with its *Stay Tuned* programming on Snapchat. Meanwhile TikTok now reaches more than a billion people around the world, according to the company. Users have been captivated by its mix of music, humour (and news) driven by a powerful ‘For You’ feed generated by an algorithm that learns what you like. In turn this success has led Facebook and YouTube to step up development of their own copycat formats (Reels and Shorts), further fuelling creation and promotion of this content. Our own *Digital News Report* found that TikTok now reaches a quarter (24%) of under-35s, with 7% using the platform for news – even more in parts of Asia and South America. But our research also found that, when it comes to news, it is mainly influencers and celebrities that people are paying attention to – raising questions about how and whether journalists and news brands should engage on this platform.[16](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-023) **Why does this matter for journalism?** Publishers are increasingly worried about how to attract younger audiences and many see native video formats as part of the answer. The Swedish Public Broadcaster SVT is now the number one destination for a quarter (26%) of Swedes aged between 20 and 29 years old – up from just 9% in 2017. Much of that change is due to investment in a range of mobile-friendly online video formats that get to the point quickly or address non-traditional subjects.[17](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-022) Other public broadcasters like Germany’s ARD have been experimenting with creating more bespoke video content for third-party platforms like TikTok and Instagram. In our survey, we can see a clear change in direction in terms of the third-party platforms being prioritised this year. Publishers say they will be putting much more effort into Instagram (net score of +54), TikTok (+44), and YouTube (+43), all networks that lead with visual and video content, and less effort into general purpose networks like Twitter (-5) and Facebook (-8). **What will happen this year in video?** **Influencers build mass audiences via networks like Twitch:** Ibai Llanos, a Spanish influencer with 7 million followers on the gaming platform Twitch, secured the first interview with footballer Lionel Messi after his transfer to Paris Saint Germain, outcompeting traditional broadcast journalists. More than 300,000 people watched the original broadcast, with more accessing on demand. Llanos is an example of a new generation of entrepreneurial stars who are creating and monetising their communities across a number of platforms. Politicians are also looking to interact on a platform that is especially popular with e-sports fans and young men. ### French Prime Minister and Lionel Messi on Twitch [image:F7EE3510-F9E7-4F3E-BF0C-08AFF9A72A46-21816-00002A3B3DC0EE33/Twitch_0.png] **News on TikTok remains a battleground:** Publishers looking to crack the code of TikTok’s bite-sized videos are being shown the way by a Spanish start-up. *Ac2ality* has built up around 3 million followers on TikTok for a service that includes a one-minute round-up of top stories. That’s more followers than the *Washington Post* and the BBC combined. With more news on TikTok, expect more false and misleading information too. The Institute for Strategic Dialogue recently tracked vaccine misinformation on the platform and found that just over 100 posts had got more than 20 million views thanks to TikTok’s powerful algorithm and unique audio features designed for virality.[18](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-021) Some outside observers continue to worry that the Chinese-owned platform will take a different approach to content moderation on politically sensitive topics than its US-owned competitors. One start-up looking to counter misinformation on TikTok and other social-platforms is the *News Movement*, founded by former executives from Dow Jones and the BBC. The service aims to deliver trustworthy and objective information in 2022 to mass audiences on social media, with accessible video explainers as well as text. The *News Movement* is staffed by young journalists and will operate across TikTok, Instagram, YouTube, Facebook and Twitter. ### Ac2ality and The News Movement deliver news on TikTok [image:2AF269BC-0F0B-4CE7-8829-A8A0F3EFBE6B-21816-00002A3B3D62FA66/AC2ality%20and%20News%20Movement_0.png] Social shopping takes off: Expect to find news mixed with more online shopping this year as Instagram, TikTok, and Snap lean into e-commerce. Whether it’s sportswear or make up, consumers are increasingly browsing, discovering, and buying items on social media platforms and the sector is expected to grow in the US alone from $36bn in annual sales to $50bn by 2023, according to research firm eMarketer.[19](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-020) Some publishers are looking to cash in, with NBCUniversal experimenting with a show on Instagram, while TikTok has hosted a two-day live-streamed event in the UK with influencers, music, and a quiz. Meanwhile, Snap is investing in augmented reality technology to help users virtually try on items like watches and jewellery. The big question is whether any of this will work for news publishers. Previous attempts to monetise short-form social video have proved unsuccessful, while e-commerce is most suited to lifestyle brands and breaking news is largely commoditised. Despite this, CNN has taken a brave decision to put its live stream behind a paywall as part of a CNN+ service that will include exclusive on-demand shows. Many other broadcasters will be looking carefully at how that works out in 2022. Most survey respondents are clear that the main focus this year should be on iterating and improving existing products (67%), rather than investing in new technologies or services (32%). This is partly because publishers have less money available for risky investments but also because most publishers now have a clear path on which they are set. A good starting point is to ensure that existing digital products are as seamless and engaging as those produced by tech platforms. News products have often fallen far short. In terms of specific initiatives, a number of publishers talked about the need to replace legacy apps, optimise subscription pipelines, and upgrade their data infrastructure. While most are focusing on the core, we also find a small minority of well-funded leading-edge publishers pushing hard for growth, strengthening their business models through brand extensions and acquisitions. The *New York Times* has found growth with cooking, crosswords, and shopping, and others are looking to adopt similar approaches. Innovation is becoming a more important part in our growth strategy as we try to go beyond the ‘core’. CTO at a successful subscription publisher **Innovation blockers in the year ahead** Publishers recognise that innovation is critical in making sure that they stay relevant as audience behaviours continue to shift. But our survey suggests that, although the strategy is often clear, delivering planned improvements can be a different issue. Around half (51%) of our sample of publishers say that they don’t have enough money to invest in innovation this year, partly due to budget cuts imposed during COVID. A similar proportion say they are struggling to hire or keep enough technical, design, or data staff to deliver solutions. In our *Changing Newsrooms* report we found the biggest concerns about talent were around software engineers and data scientists. Another major barrier to innovation highlighted by the survey includes lack of alignment (41%) between different departments such as editorial, marketing, commercial, and technology. We have previously highlighted how the vertically siloed nature of many media companies makes it particularly difficult to deliver innovation that needs cross-functional teams to work in a common process. ‘We’re now in an age of mature product departments’, says Chris Moran, Head of Editorial Innovation at the *Guardian*. ‘But we still need to work to find the right balance between the rigour of product methodologies and processes and the specific editorial expertise of a given publisher.’ Moran argues that, if organisations want to innovate the process, they should not start with shiny new technologies like VR or AI: ‘It’s about the right technology applied intelligently in ways that tie to our values and expertise. That way we will build genuinely unique features and products that differentiate us from platforms and their associated problems.’ Almost two years into the pandemic many newsrooms are unrecognisable, some remain largely empty. But journalists are also struggling to cope with burnout from a relentless news cycle which has often impacted their own health, attacks by politicians, harassment on social media, and the isolation that comes with working from home. Behind the scenes much has changed. A new generation of leaders is taking over with a new agenda and more inclusive approach. Assuming that the virus is finally brought under control, this will be the year when hybrid working – with some people in the office and others working remotely – becomes the norm. Our *Changing Newsrooms* report in November found that news organisations are pressing ahead with plans to redesign offices, upgrade technology, reduce desk space/office space, and renegotiate contracts with employees to accommodate this shift. Over the next year we can expect most employees to spend two to three days a week in the office and the rest at home. Yet our report also found that the full implications of the hybrid newsroom have not been fully worked through. The experience so far has been good for efficiency, but publishers worry about losses to creativity, collaboration, and communication (3Cs). **What can we expect this year?** **More fully virtual news organisations:** Expect to see more publishers closing offices entirely, or at least moving in that direction. Last summer, the business-focused publication *Quartz* announced it was becoming a ‘fully distributed company’. This means it will employ anyone from anywhere, opening up the talent pool and reducing costs. Though *Quartz* has kept the lease on its New York office for another year, the assumption is that, in terms of meetings, ‘even when you are at the office, everyone is remote’, says CEO Zach Seward.[20](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-019) ### Hot to run a hybrid meeting [image:C714128D-1EDC-41CC-96FE-EBCB773E6D04-21816-00002A3B3D128236/Captura%20de%20pantalla%202022-01-09%20a%20las%2016.28.35_0.png] Meanwhile in the UK, regional publisher Reach has closed 75% of its offices, turning staff into remote workers, while another publisher, Archant, is closing two-thirds of its offices by March 2022, arguing that home working is now the preferred option for most employees. This risks undermining company culture but may be more equitable than hybrid environments, where ‘proximity bias’ can favour those prepared to show their face in the office every day. Hybrid working will also require clearer rules, better training, and a new literacy for both managers and staff. **Rethinking offices as spaces for community events:** With fewer staff in the office, some publishers have been looking to reuse space to engage audiences. Expect to see more attempts to mix the intimacy of a live event with engaging a larger crowd online. UK slow news start-up Tortoise Media, whose business model is underpinned by events, has worked hard to improve its hybrid events over the last year, using interactive elements to keep remote audiences engaged and increasing the sophistication of its production. ### The Tortoise Media studio space has been remodelled to accommodate hybrid ‘Think-Ins’ with prominent big screens, multiple cameras, and better sound [image:2FA9A6BD-E319-4805-B79C-2A51C9D72D67-21816-00002A3B3CDA7571/Captura%20de%20pantalla%202022-01-09%20a%20las%2016.49.06.png] **Greater focus on mental health:** While home working has been a boon for many, others have found the experience extremely challenging. To help counter isolation, UK regional publisher Reach has organised online book and film clubs, and social cook-alongs. Staff also get a free subscription to a mindfulness app (Headspace), an online wellness hub, as well as access to psychological counselling if needed. Expect to see other publishers to adopt these approaches in 2022 and provide extra training for managers on how to support staff effectively. It’s not only journalists who have been feeling the pressure. Our own research at the Reuters Institute consistently finds that audiences often feel overwhelmed by the amount of news, with many saying they regularly avoid the news because it is too depressing.[21](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-018) These trends have been compounded by the relentlessly negative nature of the news over the last year about COVID-19 and climate change. At the same time the pandemic has forced many newsrooms to reassess their editorial approach. Remote working is breaking down hierarchies and a new wave of editors are embracing a more positive and diverse agenda. In 2021, partly in response to the gender and racial reckonings of the last few years, a number of the most prized roles in US media were filled by female journalists, many of them women of colour. **Diversity progress shift reaches beyond United States:** The lack of diversity and lack of equity in journalism are well documented and won’t be solved this year, but more publishers are now openly acknowledging the damage this has done in terms of public trust and audience attention. Announcing the appointment of *Washington Post* ’s first female Executive Editor, Sally Buzbee, publisher Fred Ryan made clear they were looking for a leader who would ‘prioritise diversity and inclusion in our news coverage as well as our hiring and promotion’.[22](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-017) A recent Reuters Institute factsheet [23](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-016) highlights how progress is still unevenly distributed. Across 12 strategic markets, less than a quarter (22%) of top editors are women, but this ranges from 60% in South Africa to 0% in Japan. Despite this, our recent *Changing Newsrooms* survey found that most publishers feel they are doing a good job in addressing gender diversity but have more work to do elsewhere. Ethnic diversity remains the biggest priority (35%) for media companies this year in terms of improving newsroom diversity.[24](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-015) Outside the US we can expect much more focus on recruitment of journalists from minority groups this year as well as the way they are portrayed in the media. Greater diversity may also become more of a business imperative this year, with younger readers in particular paying close attention to content that speaks to or serves their identity. **Constructive formats:** A more diverse set of editors is also questioning traditional assumptions about how to cover the news. Many are looking for alternatives to confrontational talk shows and divisive columnists. Swedish TV national editors are now required to include one constructive item a day in their main nightly show and local teams have targets around in-depth coverage.[25](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-014) Research suggests these solution-orientated formats appeal more to younger audiences and that people feel better informed and more empowered after watching or reading constructive stories.[26](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-013) Meanwhile the Constructive Journalism Institute in Denmark has been pioneering formats such as ‘Solved or Squeezed’ in conjunction with a local TV station, where politicians from different political parties are challenged to come up with solutions to a specific problem as their physical space gets more restricted over a 20-minute period. Following positive feedback from politicians and audiences they plan to iterate and repeat the format this year. ### TV2 Fyn: ‘Solved or Squeezed’ – Politicians are squeezed until they agree [image:F44B7AD0-C6C7-449F-96D2-B7D9C8D707D1-21816-00002A3B3C7F5F60/Captura%20de%20pantalla%202022-01-09%20a%20las%2016.51.31.png] Elsewhere a TV station has experimented with putting politicians in the audience to listen to the views of ordinary people and in similar vein the *Guardian* has introduced a format where people with different perspectives come together over a meal to find common ground. Explanatory formats become viral hit: The increased complexity of stories such as COVID-19 has led to a renewed interest in explanatory, often data-rich, online formats. At the BBC, presenter Ros Atkins has been encouraged to further develop a style of no-nonsense analysis of complex events boiled down into five- to ten-minute monologues aimed at digital audiences. These are heavy on facts, beautifully produced, but delivered in a deadpan and impartial way. Recent videos about Boris Johnson’s Christmas party woes attracted 11 million views in just a few days – a far bigger audience than could have been achieved on TV alone. ### ‘Assertive impartiality’ a viral hit for the BBC [image:8D5B89C4-C97B-4592-A764-EE5AE04B0B22-21816-00002A3B3C27CE43/Ros%20Atkins.png] ### Opinion-led GB News struggles for audience [image:28923386-3E0C-40CC-8A2E-32A0D7F7FC27-21816-00002A3B3BED97E9/Nigel%20Farage.png] But in 2022 these fact-based formats will face a further challenge from opinionated hot takes also eyeing social media attention. GB News suffered a disastrous launch and torrid first year, at various stages receiving official TV ratings of zero viewers, but often boasting about its impact on social media. Rupert Murdoch’s Talk TV is waiting in the wings and is likely to stretch impartiality rules to the limit in the UK. Meanwhile in the US, with mid-term elections due and a new social network from Donald Trump on the way, the battle of facts vs opinion will continue to play out this year in unpredictable ways. The awarding of the Nobel Peace Prize to two fearless journalists, Maria Ressa from the Philippines and Dmitry Muratov from Russia, has highlighted the political and physical harassment faced by reporters around the world. Much of this is driven by political polarisation, but in some countries it has been further exacerbated by the way that social media have been weaponised. A recent report by the International Center for Journalists documented the extent of the harassment of Maria Ressa and her colleagues in the Philippines, while an accompanying survey of 900 women journalists found that nearly three-quarters had experienced online abuse. Elsewhere anti-vax protesters have also turned their anger on journalists. In the Netherlands several journalists were physically attacked in a context of growing hostility towards the press. The Head of News at public broadcaster NOS, Marcel Gelauff, says his journalists are facing ‘polarisation in society, aggression, harassment, and ongoing accusations of fake news’. In the UK BBC reporter Nicholas Watt was hounded through the streets of London by a group of anti-lockdown protestors, with footage shown live on YouTube. In Los Angeles volatile protests over trans rights and opposition to masks and vaccines led to at least seven journalists being assaulted over the summer. **What can we expect this year?** **Publishers step up support:** This year we’ll see publishers providing more support for journalists, including security protection for TV crews and better training. The UK’s largest regional publisher, Reach, is appointing its first online safety editor to tackle ‘endemic abuse and harassment of its journalists head on’ and we can expect others to do the same. More widely, the EU says it will bring forward a media freedom act in 2022 to safeguard independence, after a number of recent murders of investigative journalists allied to concerns about the capture or suppression of independent media in member states like Hungary and Poland. **New rules for social media:** Polarised debates in social media are also making publishers rethink the ways in which journalists should engage in networks like Facebook and Twitter. After concerns about reputational damage, many news organisations have been tightening their social media rules. The BBC’s new guidelines, for example, include a ban on ‘virtue signalling’, with staff warned that adding emojis to social media posts can be enough to count as sharing a personal opinion on an issue. Other news organisations are encouraging journalists to avoid getting sucked into time-consuming arguments on Twitter. In our survey we find most senior managers (57%) feel that journalists should stick to reporting the news when using social networks like Twitter and Facebook but almost four in ten (38%) feel that they should be able to express their personal opinions openly. To some extent these scores reflect the different traditions in journalism, with public broadcasters concerned that the informal nature of social media communication is undermining trust, while publications with a ‘point of view’ are keen to encourage commentators to express their opinions freely. The social media presence of journalists is increasingly difficult to navigate. On the one hand, publishers profit from the strong personal brands of some of their correspondents; on the other, many require news staff to be neutral or objective, especially on political and controversial topics. This balance is increasingly hard to achieve in politically and culturally charged settings like social media. Building on the experience of reporting on COVID, the news industry will turn its attention to the complexities of covering climate change this year. Despite mounting scientific evidence that the world is close to a tipping point from which it may never recover, publishers say it is hard to engage audience interest – and this in turn makes it difficult to make the case for further investment. The World Health Organisation says that climate change is the ‘single biggest health threat facing humanity’ [27](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-012) but only around a third (34%) of publishers think that news coverage is good enough, with a further third (29%) saying it is poor. News organisations have a higher opinion of their own reporting (65%) but this gap suggests that there is more collective work to be done both to raise awareness in general and to make the story relevant to all audiences. Our survey respondents highlighted six key barriers to better coverage: * The slow nature of developments makes it a poor fit with a fast-paced news cycle. * Audiences are put off by the depressing outlook, leading to feelings of powerlessness. * There is a lack of money to hire specialist journalists who can explain the science. * Original coverage is expensive as it often involves travel to far-off places. * The story is very complex (CO2 emissions, biodiversity, etc.) with no easy solutions. * Pressure exerted from owners and advertisers, not yet aligned with required changes. **What can we expect this year?** **Building more scientific expertise in newsrooms:** Vincent Giret, Executive News Editor at Radio France, argues that there is a fundamental ‘weakness of scientific culture and background of our newsrooms and our way to select and hire young journalists is too focused on classical and literary backgrounds’. He calls for stronger relationships with academic institutions to help build that understanding. Reuters Global News Editor Jane Barrett also makes the case for expertise: ‘It is too easy for generalist reporters or editors to come to the beat and take every top line as a news story without truly understanding the science and how it fits into the broader picture.’ Others say that the key is to integrate expertise more widely throughout the newsroom: ‘We need to stop being hesitant about calling it the single biggest challenge in the next ten years and to start covering climate change in every single beat – from economy to politics and society’, argues Natalia Viana Rodrigues, Executive Director at the Agência Pública in Brazil. **Constructive and accessible coverage:** Others will be trying to move coverage away from a catastrophic narrative. ‘There is plenty of reporting, but most of it is dystopian’, says Götz Hamann, Head of Digital Editions at *Die Zeit*. The paper has developed a section called Green which tries to find new, more constructive perspectives on climate reporting. For example, it only features interviews about the difference companies are making today, rather than what they might do in the future. Francisco Balsemão, CEO of Portuguese publisher Impresa, argues that ‘Journalists need not only to know their facts but to wrap them up in a way that they are appealing’. Expect to see more effort this year in information graphics and interactive features to engage and involve audiences. ### Constructive stories from Die Zeit [image:098E91A5-CA4F-4F9D-B384-42895406EA71-21816-00002A3B3BBC20BE/Zeitonline.png] ### Global Forest Watch map – one output from the Rainforest Investigations Network [image:C8390DCA-7117-47DE-B4C9-F876D931ECF8-21816-00002A3B3B8DC072/globalforestwatch.png] **Joint initiatives to tackle climate change:** To address the shortage of budget for original climate reporting, survey respondents highlight the benefits of working together. European Perspective facilitates the sharing of original content between participating public broadcasters. Automated translation using AI/machine learning tools is making it easier to make use of this shared content. In the first six months of operation stories generated this way, mostly about climate change, COVID-19, and other science subjects, received 14.5 million page views in eight different languages. Other examples include the Oxford Climate Journalism Network (OCJN), a new programme of collaboration and scholarship from the Reuters Institute [28](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-011) and the Rainforest Investigations Network funded by the Pulitzer Center, which is using publicly available data to map forest loss and turn these into stories. It is developing new journalistic skills that mix statistical modelling, data, and cartography. **Impartiality and climate change:** One burning issue for journalists in 2022 will be the extent to which news organisations should actively campaign for greener solutions or just report on them. Much of this debate will push into the language used by news organisations and journalists to discuss the subject. The *Guardian* now uses terms like ‘climate emergency’, ‘climate breakdown’, and ‘global heating’ to convey greater urgency. Expect more debate on these issues in newsrooms this year as pressure grows from younger journalists who believe their organisations should take a more activist stance. For the last few years, we have tracked the inevitable march towards greater regulation of giant tech companies as they exert a bigger influence over our lives. Much of the debate around regulation has been driven by the lobbying of vested interests (including the platforms themselves and many traditional media companies), but the argument that ‘something should be done’ now appears to be won and we are moving rapidly towards implementation on multiple fronts, including anti-trust, privacy, safety, and more. Having said that, the impact on consumers is likely to take years to play out, with much potential for unintended consequences. Even in the United States, the home of many of the biggest tech companies, attitudes have hardened over the past year following the storming of the Capitol and the disruption to US democracy, which has at least partly been attributed to social media. Revelations in the so-called Facebook Papers, a treasure trove of internal documents leaked by former product manager Frances Haugen, heaped further pressure on Facebook, now renamed Meta, by suggesting, amongst other things, that executives had put profits before efforts to stamp out hate speech and misinformation. But it’s not just Facebook itself – false information about vaccines spread through YouTube, Instagram, WhatsApp, and TikTok amongst others has undermined public health campaigns across the world, all increasing demands for action. ### Former Facebook employee and whistleblower Frances Haugen testifies during a Senate Committee on Capitol Hill, in Washington, U.S., October 5, 2021 [image:0503246B-3E76-4ADD-94E7-A45BC3719556-21816-00002A3B3B5E3611/Captura%20de%20pantalla%202022-01-09%20a%20las%2016.53.12_0.png] But news media are only part of governments’ interest in platform power. COVID has dramatically accelerated digitisation of other aspects of the economy and culture such as shopping, film, and other forms of entertainment. And waiting in the wings for regulators are new challenges around cybercrime and artificial intelligence. **What can we expect this year?** **Europe leads the way on competition and online harms regulation this year:** The EU’s Digital Markets Act (DMA), which looks to curb anti-competitive behaviour amongst the biggest players, and the Digital Services Act (DSA), which aims to regulate online content for a much wider set of intermediaries, are both set to become law this year. At the same time the UK government is planning to pass its much-delayed Online Safety Bill which, amongst other measures, gives new powers to sanction web platforms who fail to curb illegal (and other harmful) content, with compliance regulated by the media watchdog Ofcom. The problem of defining harmful – but not illegal – content hasn’t gone away and will remain the hardest problem to solve in democracies that also value free speech and diverse expression. **More copyright payments for news:** For some time, publishers have been looking to extract money from platforms that use or link to their content. Intense lobbying led to the Copyright Directive in Europe and the News Bargaining Code in Australia, as a result of which some big news organisations in France and Australia have received significant sums for licensing content. This year, publishers in countries like Italy and Spain are looking to cash in as national interpretations of the EU Directive come into play. But critics argue these opaque deals may not be a great model in that they risk entrenching currently dominant platforms and tend to benefit big incumbent players rather than the smaller or local publications that are in most need of support. Expect to hear more sniping from those who feel these deals give an unfair advantage to large legacy publishers with political clout. Meanwhile the platforms, who launched their own schemes such as Facebook News and Google News Showcase partly as a way of heading off legislation, may review the value of these separate features if they continue to provide little extra value to users. Government subsidies for local media may get real: With mounting concern about news deserts in the US, there has been growing bipartisan support for measures that could deliver $1.7bn of public subsidy over the next five years. This provision is part of the Build Back Better bill that passed the House of Representatives in November 2021 and would offer a payroll tax credit of up to 50% for journalists employed by local newspapers, digital-only sites, or broadcast outlets.[29](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-010) Progress is not guaranteed after the bill ran into trouble in the Senate, but if it does eventually succeed it would mark a major change in the US tradition that journalism should remain financially independent of government, and potentially provide a model for other countries too. Nevertheless, the unstable nature of many government coalitions and their often-fractious relations with journalists means that helpful policy interventions are unlikely to be a priority in many countries this year. The potential is clear: there are a number of existing arrangements in place in some countries that demonstrably work and could be adopted elsewhere, as shown for example in the report *A New Deal for Journalism*.[30](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-009) The risk is clear too: that subsidies are tilted towards influential incumbents engaged in rent-seeking, and leave publishers more intertwined with the politicians who control the purse strings. In our survey we do see our digital leaders becoming more optimistic about the potential impact of legislation and other interventions over the last few years. Four in ten (41%) think policy changes could help journalism, compared with just 18% in 2020. Around a quarter (24%) are worried that interventions could make things worse. This change in sentiment could reflect a hope that governments are finally prepared to help get a better deal for publishers and clamp down on unreliable and harmful information, but it may also be recognition for practical help received – such as the extension of tax relief on digital subscriptions in many countries. Privacy changes come back to bite publishers: Three years ago, the introduction of the General Data Protection Regulation (GDPR) created a new standard for privacy and data protection. The law has increased data protection awareness and led to significant changes all over the world but many of these have made it harder to track users, offer personalised services, and make money from advertising. GDPR has also done little to reduce consumer confusion, adding a multitude of pop-up messages and interrupting users’ journey to content. Meanwhile browser and operating-level changes are gradually killing the lucrative practice of firing third-party cookies and other ways to track users across different websites and apps. As one example the release of Apple’s iOS15 stops publishers knowing whether an email has been opened. Given that Apple drives much of the email traffic to publishers, this will make it harder to understand the effectiveness of this critical channel. Google, which owns the most popular web-browser Chrome, has also pledged to stop support for third-party cookies soon and stop other mechanisms like fingerprinting and cache checking.[31](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-008) As a result, publishers will focus on building first-party data through interactive features, events, and competitions this year. Email publishers in particular will look to build feedback loops into their products to help make the internal case for value. ### New privacy protections in Apple products (Dec 2021) – a sign of things to come [image:991D7A59-84D7-41D6-83CB-78F545EBF0AE-21816-00002A3B3B1BDE99/Apple%20privacy%20protection_0.png] Looking to the future, start-ups like Bubblr are offering privacy-first, decentralised alternatives to the big platforms that promise to give consumers more control over the advertising they see.[32](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-007) While most publishers are focusing on making the best of the web that exists today, there will be much excitement – and some hype – about what comes next. Terms like artificial intelligence, Web3, crypto, NFTs, and the metaverse will be heard more and more in the year ahead, but what relevance do they have for journalism? Artificial intelligence technologies such as Machine Learning (ML), Deep Learning (DL), Natural Language Processing (NLP), and Natural Language Generation (NLG) have become more embedded in every aspect of publishers’ businesses over the last few years. Indeed, these can no longer be regarded as ‘next generation’ technologies but are fast becoming a core part of a modern news operation at every level – from newsgathering and production right through to distribution. More than eight in ten (85%) say that AI will be very or somewhat important this year in delivering better personalisation and content recommendations for consumers. A similar proportion (81%) see AI as important for automating and speeding up newsroom workflows, such as the tagging of content, assisted subbing, and interview transcription. Others see AI as playing a key part in helping find or investigate stories using data (70%) or helping with commercial strategies (69%), for example in identifying and targeting prospective customers most likely to pay for a subscription. Using AI to automatically write (40%) stories – so-called robo-journalism – is less of a priority at this stage but is where many of the most future-focused publishers are spending their time. **AI gets increasingly fluent** Every year sees more spectacular progress in the world of Natural Language Processing and Generation. In 2020 OpenAI came up with its GPT-3 model, which learns from existing text and can automatically provide different ways of finishing a sentence (think predictive text but for long-form articles). Now Deep Mind, which is owned by Google, has come up with an even larger and more powerful one and these probabilistic models are making an impact in the real world. The ability of AI to write ‘fluent paragraphs’ is now on show at the Wall Street Journal, where it is used to write routine stories about the state of the markets, freeing up journalists to focus on other tasks.[33](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-006) Meanwhile the BBC is planning to extend its 2019 experiment with election results, which allows hundreds of constituency pages to be automatically written and rewritten by computer as the numbers change – all in a BBC style. Local elections in May 2022 will provide the next test of what will become a permanent system that could be adapted to work with many other types of publicly available data from health to sports and business. But AI is changing workflows elsewhere * The *Boston Globe* won an investigative journalism Pulitzer Prize for Blind Spot, a story about preventable road accidents in the US. Journalists used Pinpoint, an AI tool developed by Google, to support investigative journalists to identify patterns in their data. * Sky News used AI to extract and clean public health data from pdfs and other previously inaccessible formats, which they then used to constantly update webpages and TV graphics across its output. * The *Washington Post* has extended its synthetic voice audio versions across all of its output, following a successful trial period within its apps.[34](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-005) **What can we expect in AI this year?** **Images and video:** the next frontier: DALL-E is a new AI model from Open AI that automates original image creation from instructions you provide in text. This could open up a range of new possibilities, from simple story illustration to entirely new forms of semi-automated visual journalism. In previous predictions reports we’ve highlighted AI systems that can deliver automated or rough-cut videos based on a text story from companies like Wibbitz and Wochit as well as the automated news anchors from companies like Synthesia, which continue to become more lifelike each year. ### DALL-E: Automatically creating images from text [image:48FCF85A-BB83-4FFA-95A0-5E05C52486FB-21816-00002A3B3AD08F1F/Captura%20de%20pantalla%202022-01-09%20a%20las%2016.54.32_0.png] **Why this matters:** The big challenge for many large media companies is serving audiences with very different needs using a monolithic website or app. AI offers the possibility of personalising the experience without diluting the integrity of the newsroom agenda by offering different versions of a story – long articles, short articles, summaries, image or video-led treatments – with much greater efficiency. **Summarisation and smart brevity in 2022:** Expect to see more experiments with AI-driven formats this year as research shows under-served news audiences prefer: * Increased use of bullet-points in news articles, * Visual stories over text, * Mixed media story formats popularised by social media. Digital-born start-ups like Axios have pioneered new editorial forms focused on ‘skim and dig’ behaviours. Automation could go some way to providing similar benefits for general audiences. The BBC’s latest Modus prototype uses two different NLP approaches to generate bullet point-led stories and automated captions for images in picture galleries. [image:51C9F9EF-D4B6-4BAC-A9E3-E5282EE29AAA-21816-00002A3B3A79BF91/BBC%20News%20Labs_0.png] **New approach to content management:** Enabling this will be a new generation of modular content management systems, such as Arc from the Washington Post and Optimo from the BBC that do not base authoring around a ‘story’ but instead around ‘nested blocks’ that allow better connections across stories, making it easier to reassemble content in potentially limitless ways. **Other AI trends to watch this year** **Bridging the AI divide:** Up until now the best models for Natural Language Processing and Generation have been focused on English, partly due to the accessibility of data to feed the models. This has been a challenge for less widely spoken languages such as Swedish or even larger ones like Arabic and Spanish where extra training is often needed to get the required quality. But this year expect to see faster progress. Publications like *La Nación* in Argentina and Inkyfada in Tunisia, which specialises in investigation and data-journalism, have been refining their own models in collaboration with academics. **Productisation eases take-up:** Tools such as Trint for automatic transcription, Pinpoint for investigations, and Echobox for identifying the right content to post in social media at the time right time, are also helping to make it easier for smaller newsrooms to get started. Publishers in Scandinavia and elsewhere have developed newsroom tools that identify the gender balance within output to inform editors how well they are representing target audiences. The integration of these tools into content systems will make AI far more accessible and useful this year. **Cooperation and learning:** Programmes to share best practice such as the Journalism AI collaboration programme from LSE’s Polis and INMA’s AI webinars and showcases are also helping spread knowledge, enabling small teams to build confidence. The Journalism AI network also enables mentoring for those just starting their AI journeys.[35](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-004) **Improving AI reporting literacy:** As with climate change reporting, there is a skills gap around understanding and reporting. AI is throwing up many issues around algorithmic bias, ethics, and regulation, but most journalists don’t have the necessary expertise to hold the big companies to account. One example of what skills might be needed comes from The Markup and its Citizen Browser project, which involved engaging a paid panel of Facebook users prepared to share the content of their news feed.[36](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-003) This required the publication to analyse huge amounts of data to counter Facebook’s claim that right-wing content, for example, has been getting less popular on the platform. ### **Holding algorithms to account: The Markup** [image:0B2064A8-4EF0-40DC-B023-83921D5176A4-21816-00002A3B3A4BCF75/the%20markup_0.png] Facebook changed its name last year to Meta to signal its focus on the metaverse, which Mark Zuckerberg thinks will be the successor to the mobile internet. Others are deeply sceptical, not least because most of the building blocks have still to be put in place and there are so many different visions of what it might be. The term metaverse was originally coined by Neal Stephenson in his 1992 science fiction novel *Snow Crash*. Today it broadly describes shared online virtual world environments, many of which already exist in some form (e.g. Second Life, Roblox) but will gradually become more lifelike through the addition of virtual reality (VR) or augmented reality (AR). Others link cryptocurrencies to the concept because in some types of metaverse users buy and trade digital assets based on blockchain technology. Roblox, for example, has its own virtual currency and has plans to expand from games to other virtual activities such as shopping. Others are focusing on making money from hardware. Meta has a leading position with its Oculus VR headsets, Microsoft has its mixed reality HoloLens and Apple is expected to unveil its VR and mixed reality headset later in 2022, with integration into its existing app ecosystems. AR glasses are set to follow later. With many big companies jostling for position, one big question is whether there will be one metaverse or many. We won’t get the answer to that this year but questions of cross-platform compatibility will become more pressing. **What may happen this year?** **Reporting of the metaverse will become more ‘meta’:** Expect to see more interviews done in the metaverse itself as the companies themselves try to sell their vision and journalists try, literally, to get their heads round the concept. Journalists have been extremely sceptical so far, partly because of the vagueness of the ideas and partly because the charge is being led by those who created Facebook. ### FT interview with Facebook communications chief Nick Clegg [image:F40FB446-1910-4804-88CA-1FB7F1BD4646-21816-00002A3B3A0FCC6D/Nick%20Clegg_0.png] ### Avatars will be taking their seats in Microsoft Teams [image:F319B7A4-9FA8-4B54-801A-86D653B24A2A-21816-00002A3B39DD5B2F/Teams%20Avatars_0.png] **Workplace may become core use case:** Though gaming has been the starting point, it’s likely that mass adoption may also come in the workplace – not least because the pandemic has rapidly shifted the focus from physical to remote interactions. Just after Facebook rebranded as Meta, Microsoft announced it would be bringing the capabilities of Mesh, its collaborative virtual platform, to Microsoft Teams in 2022. This will enable animated 3D avatars and interactions will work with or without a VR headset. Over time Microsoft says that avatars will start to take on more lifelike facial expressions via signals from webcams. Facebook/Meta is also focusing on the enterprise space, with Horizon Workroom linked to its own Oculus VR headsets. Avatars can interact and draw on whiteboards together, while directional audio will increase the sense of presence. **Sports and news events coverage:** Some of the most enthusiastic early adopters have been special events producers in television who are always on the lookout for new techniques to enhance coverage. Broadcasters are adopting mixed reality studios, such as Eurosport’s Cube that allows hosts to see and interact with content around them and to bring celebrities into the studio space from different locations. ### Olympic presenters: different countries, same studio [image:B71ECE6B-337E-43BC-83A3-16ACA101BE0F-21816-00002A3B39BBF6FD/Olympic%20presenters_1.png] ### Tennis star Karolina Pliskova beams into Eurosport tudio [image:9DE1B59B-F825-4640-9ADA-F888849815A4-21816-00002A3B3998193A/Pliskova.png] All this will make sports (and news) coverage more engaging this year but potentially also confuse the boundaries between what is real and virtually created. ### BBC animated news screen on Second Life – mid 2000s [image:23513003-4D52-4225-BCFD-8BFBAA4EE096-21816-00002A3B3969CA86/Captura%20de%20pantalla%202022-01-09%20a%20las%2019.52.58.png] **Distribution opportunities for news:** It’s still early days but if more time is spent in virtual worlds, at least some of it is bound to be spent with news. Almost 20 years ago the BBC developed a news screen for Second Life and it won’t be long before similar experiences become possible in a range of metaverses near you. Having said that, the challenges of content moderation and oversight that already plague social media could get even worse in spaces powered by VR and AR. An early metaverse demo, for example, was disrupted by a bot spewing misinformation about the dangers of vaccines. Experiences from other nascent virtual worlds also reveal extensive problems with racism, homophobia, and other forms of hate speech.[37](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-002) As we’ve already discussed, the development of the metaverse is closely linked with virtual currencies and the idea that digital objects and experiences can be bought and sold in a safe and secure way. This shift is sometimes linked to the next stage of the development of the web which has seen control shift from (1) old gatekeepers to (2) tech platforms and intermediaries and now potentially to (3) individual users and creators themselves. The chart below shows how analyst Benedict Evans describes the possibilities in his annual state of technology presentation.[38](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-001) ### Web3: A dream of how the next version of the internet might work out [image:A04FE133-D29F-4A8D-9E5A-6BCE220EBE62-21816-00002A3B392DE4B3/Captura%20de%20pantalla%202022-01-09%20a%20las%2019.21.10.png] Of course, it may not work out this way. It’s hard to see big platforms like Meta building their new systems on a decentralised public blockchain for example and giving away the chance to take their own cut. There is also a problem of trust, with cryptocurrencies still seen in some quarters as little more than a giant Ponzi scheme. At this stage there are still many more questions than answers when it comes to Web3 technologies but we are seeing a few practical examples making waves. **NFTs (non-fungible tokens)** NFT became Collins Dictionary’s Word of the Year for 2021, beating crypto amongst others. The term describes a unique certificate that can record ownership of any digital item such as an artwork, a photograph, or even an original news story. This is lodged in a decentralised public blockchain which serves as record of ownership. It is this supposedly incorruptible proof has opened the way for the unlocking of enormous value from digital artworks, one of which was sold for $69m in 2021. In another example, the band Kings of Leon generated more than $2.0m when it released its new album as a collection of digital NFTs, with exclusive artwork and limited-edition vinyl. This process is a good example of Web3 principles where the creators are able to bypass traditional gatekeepers in selling directly to the public. News organisations have been testing the water too. *Quartz* became the first to sell a news article for a modest $1,800 and the *New York Times* later raised $860,000 in a similar way – with both organisations donating the money to charity. NFTs are often sold with additional benefits – in the case of the Times this was an audio message from the host of The Daily podcast and the chance to have the winner’s name in the paper. **What may happen this year?** Making NFTs more accessible: This year we can expect to see more uses of NFTs that go beyond art speculation. Publishers could start experimenting with monetising archives that mention family members, or coming up with and auctioning unique membership benefits. That in turn will require a step change in ease of use and ways of accessing the technology. Sports publishers like Turner are building NFTs into e-sports apps, hoping to get a more general audience engaged with trading digital assets and generating loyalty in the process.[39](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#footnote-000) Expect more controversy too over the environmental impact of NFTs which use the same blockchain technology as energy-hungry cryptocurrencies. ### 6. Conclusions [↑](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022#menu) This year’s report and survey shows many publishers more determined than ever to refocus their businesses on digital. The ongoing COVID crisis has refashioned behaviours of both consumers and journalists and even when the crisis finally ends, we’ll all be spending more time online and less time together physically. In that context building digital connection and relationships will be more important than ever. Achieving that will require a laser focus on meeting audience needs, both with content that helps users navigate an increasingly uncertain world but also with products that are more convenient, more relevant, and built around communities of interest. This is why publishers are focusing innovation around their core services as a priority this year, investing in formats like email and audio that are proven to generate loyalty and quality time. Many publishers are more confident than they have been for some time about the business side, with subscription models paying off and online advertising bouncing back, but with print revenues in inexorable structural decline, and broadcast revenues often stagnant or declining, less digitally advanced parts of the news media may struggle in the years ahead. At the same time there are worrying trends around falling attention for news and politics in some countries – especially at a time of growing extremism and vaccine scepticism. With a new generation of editors coming through, we will see more focused attempts to engage younger audiences – as well as disaffected ones – with more constructive journalism, as well as by explaining stories better using visuals and data, building on lessons learnt during COVID-19. Improving coverage of complex subjects like climate change and AI will be another theme requiring newsrooms to invest in different kinds of skills and approaches this year. Understanding the next wave of internet disruption will be critical for the business side too. AI will support the automation of production processes and help to engage audiences in more relevant and personalised ways. The metaverse, Web3, and cryptocurrencies have been largely a subject of novelty or even derision in journalism circles, but a more immersive and distributed web powered by new ways to sell and trade will eventually open up opportunities – as well as challenges – for publishers too. We’ll understand that a bit better by the end of this year. 246 people completed a closed survey in November and December 2021. Participants, drawn from 52 countries, were invited because they held senior positions (editorial, commercial, or product) in traditional or digital-born publishing companies and were responsible for aspects of digital or wider media strategy. The results reflect this strategic sample of select industry leaders, not a representative sample. [Nic Newman](https://reutersinstitute.politics.ox.ac.uk/people/nic-newman) is Senior Research Associate at the Reuters Institute for the Study of Journalism, where he has been lead author of the annual Digital News Report since 2012. He is also a consultant on digital media, working actively with news companies on product, audience, and business strategies for digital transition. He has produced a media and journalism predictions report for the last 12 years. This is the sixth to be published by the Reuters Institute. Nic was a founding member of the BBC News Website, leading international coverage as World Editor (1997–2001). As Head of Product Development (2001–10) he led digital teams, developing websites, mobile, and interactive TV applications for all BBC Journalism sites. The author is grateful for the input of 246 news leaders from 52 countries/territories, who responded to a survey around the key challenges and opportunities in the year ahead. Respondents included 57 editors-in-chief, 53 CEOs or managing directors, and 31 heads of digital or innovation and came from some of the world’s leading traditional media companies as well as digital-born organisations (see breakdown at the end of the report). Survey input and answers helped guide some of the themes in this report and data have been used throughout. Some direct quotes do not carry names or organisations, at the request of those contributors. The author is particularly grateful to Rasmus Kleis Nielsen for his ideas and suggestions, the research team at the Reuters Institute, and to a range of other experts and media executives who generously contributed their time in background interviews (see fuller list at the end). Thanks also go to Alex Reid for input on the manuscript over the holiday season and keeping the publication on track. As with many predictions reports there is a significant element of speculation, particularly around specifics and the paper should be read bearing this in mind. Having said that, any mistakes – factual or otherwise – should be considered entirely the responsibility of the author who can be held accountable at the same time next year. Published by the Reuters Institute for the Study of Journalism with the support of the Google News Initiative. [Journalism, media, and technology trends and predictions 2022](https://reutersinstitute.politics.ox.ac.uk/journalism-media-and-technology-trends-and-predictions-2022) # Custom Keyboard Shortcuts on macOS ## Siri Shortcuts | Action | Command | |--------------|----------| | sleepnow | ⌥+PrtScn | | Light Odette | ⌃⌥⌘🌐︎↑ | | Dark Odette | ⌃⌥⌘🌐︎↓ | [image:F67106ED-65D0-489A-B1CB-C22AD2F7235F-4371-000007A6789318AE/Capture 2022-01-10 at 08.01.06.png] ## Misc System | Action | Command | |:---------------------------:|:---------------:| | Toggle Dock Hiding | ⌥ ⌘ D | | Launchpad | F7 | | Show Desktop | F16 (Media Key) | | Preview Selection in Marked | ^⌥P | | ==Look Up in Dictionary== | PrtScn | [image:412A1060-185F-4C98-9863-3ADF29F0DB2F-4371-000007A678F520D6/Capture 2022-01-10 at 08.28.33.png] ## Safari | **Action** | **Command** | |:----------------------:|:-----------:| | File->Share->Telegram | ⌥F1 | | File->Share->Copy | ⌥C | | Duplicate Tab | ⇧⌘K | | File->Share->Reminders | ⌥⌘R | | File->Share->Tweetbot | ⌥Tz | ## Finder | **Action** | **Command** | |:--------------------------:|:-----------:| | File->Share->Add to Photos | ⌥⌘P | | File->Share->AirDrop | ⇧⌘S | #keys #documentation # Custom Keyboard Shortcuts on macOS ## Shortcuts | Action | Command | |--------------|----------| | sleepnow | ⌥+PrtScn | | Light Odette | ⌃⌥⌘🌐︎↑ | | Dark Odette | ⌃⌥⌘🌐︎↓ | [image:99A75B71-9B47-4456-8298-B52818E42868-4371-000007760D14F7D1/Capture 2022-01-10 at 08.01.06.png] ## Misc System | Action | Command | |:---------------------------:|:---------------:| | Toggle Dock Hiding | ⌥ ⌘ D | | Launchpad | F7 | | Show Desktop | F16 (Media Key) | | Preview Selection in Marked | ^⌥P | | ==Look Up in Dictionary== | PrtScn | [image:5E3C9192-50BF-4651-9644-F2D0925E7E3B-4371-000007760D4F5B9A/Capture 2022-01-10 at 08.28.33.png] ## Safari | **Action** | **Command** | |:----------------------:|:-----------:| | File->Share->Telegram | ⌥F1 | | File->Share->Copy | ⌥C | | Duplicate Tab | ⇧⌘K | | File->Share->Reminders | ⌥⌘R | | File->Share->Tweetbot | ⌥Tz | ## Finder | **Action** | **Command** | |:--------------------------:|:-----------:| | File->Share->Add to Photos | ⌥⌘P | | File->Share->AirDrop | ⇧⌘S | # Archiving a (WordPress) website with wget [image:EA4D46AE-7857-4593-94B8-02321ACFE40C-44964-00006A7E9BA74E15/1972-ish.jpg] I needed to archive several WordPress sites as part of the process of gathering the raw data for my thesis research. I found a few recipes online for using `wget` to grab entire sites, but they all needed some tweaking. So, here's my recipe for posterity: I used wget, which is available on any linux-ish system (I ran it on the same Ubuntu server that hosts the sites). `wget --mirror -p --html-extension --convert-links -e robots=off -P . http://url-to-site` That command doesn't throttle the requests, so it could cause problems if the server has high load. Here's what that line does: * --mirror: turns on recursion etc... rather than just downloading the single file at the root of the URL, it'll now suck down the entire site. * -p: download all prerequisites (supporting media etc...) rather than just the html * --html-extension: this adds .html after the downloaded filename, to make sure it plays nicely on whatever system you're going to view the archive on * --convert-links: rewrite the URLs in the downloaded html files, to point to the downloaded files rather than to the live site. this makes it nice and portable, with everything living in a self-contained directory. * -e robots=off: executes the "robots off" command, telling wget to ignore any directive to ignore the site in question. This is strictly Not a Good Thing To Do, but if you own the site, this is OK. If you don't own the site being archived, you should obey all robots.txt files or you'll be a Very Bad Person. * -P .: set the download directory to something. I left it at the default "." (which means "here") but this is where you could pass in a directory path to tell wget to save the archived site. Handy, if you're doing this on a regular basis (say, as a cron job or something...) * http://url-to-site: this is the full URL of the site to download. You'll likely want to change this. You may also need to play around with the -D domain-list and/or --exclude-domains options, if you just want to control how it handles content hosted on more than one domain. It's worth noting that this isn't WordPress-specific. This should work fine for archiving any website. [Archiving a (WordPress) website with wget](https://darcynorman.net/2011/12/24/archiving-a-wordpress-website-with-wget/) #documentation # Re: App Store Removal? From: Kevin Chang To: David Blue Date: Apr 22, 2021 Subject: Re: App Store Removal? Hello, Unfortunately, Copied has been removed from the App Store due to a patent infringement claim. I’m not sure if it will be temporary or permanent yet. Please request a refund from the App Store. Kevin On Apr 21, 2021, at 8:15 PM, David Blue wrote: My sincere apologies if Copied’s absence from the App Store is a temporary thing but I haven’t been able to find any news and I just noticed… Actually panicking pretty hard. David Blue [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjQwQTQzMEQ4LTgxNzItNDU5%0D%0AMS05REVCLTE0QzUyOEU2NkVDM0Bjb3BpZWQuYXBwOzEzMjQyNTU3MTM%3D) #EMAIL # I Trust Telegram — The Psalms [image:E3B74A55-BAE3-4851-9ADD-8894DE27836E-6289-00000B7D0945A66A/9Bxz27ZX.png] ## How I’ve used Telegram as the ultimate cross-platform Universal Clipboard, file sharing service, and more. Believe it or not, I, too originally sought the Russian-owned, cross-platform-as-hell messaging service for “privacy” – or perhaps *solitude* would be more apt. It was in 2017, amidst the shock that the Tump Presidency was *actually going to happen* [^1], that I happened to hear about his pick for Secretary of Education, Betsy DeVos, whom had just 18 months prior led myself and some twenty thousand other poor souls in a most capitalist prayer to the Christian God for prosperity at her pyramid scheme’s ultimate “superbowl” gathering in Cincinatti. I had decided to “infiltrate” AMWAY under the ridiculous assumption that I might be able to contribute some new insight in writing critically about what I might witness. (In truth, I found my experiences that summer so utterly traumatic, existentially, that I never was able to do so.) I don’t know what consequences of her ascension to the Lord of American Schooling I expected to happen, but I was pretty hysterical about it – that is, more unhumorously alarmed about some grander world happening as I’d ever been by a long shot. For the first and only time in memory, I felt compelled to take some sort of malicious, obscured action – to organize somehow for a purpose other than to be publicly critical of this person, and to use my knowledge about digital media to the fullest possible extent to scrutinize her administration’s every movement and to be prepared, even, to take some sort of real action if she… well, I don’t know. I *didn’t* know anything, really, about anti-government organization, generally, but I was not acting rationally in the slightest.[^2] [image:57B86372-5BCB-4204-A233-5A7A4FC4278C-6289-00000B7D091CB0E6/aNADRjvK.png] I’m bringing this up for a few reasons, and the fact that the very first digital decision of my personal hysteria was to set up a private Telegram channel is telling, though I can’t recall just how much or how little I actually knew about it at the time. I launched myself back to the channel’s very beginning (easier to do with regular URLs than in any other service I’ve ever encountered,) but was only able to bring myself to dig just long enough to grab the utterly absurd photograph above… Though I certainly did not consider myself actively *interested in automation* at the time,[^3] Telegram’s infamous bot ecosystem proved so prevalent (and accessible,) that I was able to configure at least three bots on that channel within days of first establishing it: a repeater hooked to DeVos’ Twitter account, an RSS-powered bot watching the main feed of a website set up by Senator Elizabeth Warren called [DeVos Watch](https://www.warren.senate.gov/oversight/devos-watch), and another republishing everything from [the Department of Education’s press releases feed](https://www.ed.gov/news/press-releases). > got called on telegram to be shown a big tub of worms [pic.twitter.com/vCik1IgETv](https://t.co/vCik1IgETv) > — AHHHH!!mmnontet (@ammnontet) [October 17, 2021](https://twitter.com/ammnontet/status/1449594872139186181?ref_src=twsrc%5Etfw) Was any of it genuinely useful in helping me maintain *Action Readiness* in hypothetical defense of American education? Most certainly not. It was, however, genuinely *comforting* to have such diligent, automated minions keeping watch – to have a centralized, private, reliable, and purely-chronological feed of information in a super-handy location, regardless of whether or not it was usable. As I began to unconsciously integrate Telegram into my day-to-day online life on both of my PCs and my iPhone, the usefulness of my private channel for *other* applications became rapidly apparent. On iOS, not even dedicated file managers like DEVONthink are capable (or *willing* might be a more accurate term) of handling the diversity of data Telegram will happily pass on for you, *especially* through the Share Sheet. > honestly I don’t think Telegram’s Share Sheet has changed since it was first implemented, and for very good reason. this is how quickly one can share a URL, but the thing is… you can also send literally any file or text the same way, which is definitely unique. [pic.twitter.com/QA4FCqLgB7](https://t.co/QA4FCqLgB7) > — ※ David Blue ※ (@NeoYokel) [September 27, 2021](https://twitter.com/NeoYokel/status/1442554265956986882?ref_src=twsrc%5Etfw) ## Drafting I have used this “flow” so extensively for so long that it has come to define the whole of the abstract method in my muscle memory. Observe me browsing the web on my phone in an exhausted or particularly distractible state and you’d probably catch at least one or two completely irrational, inexplicable instances of sharing to my “ [Saved Messages](https://telegram.org/blog/albums-saved-messages) ” Telegram channel, which would be problematic for just about any other link-saving service. Add too many links to Safari’s Read Later list and you’ll end up crashing the browser on your Mac. I don’t even feel comfortable sending links willy nilly to the brilliant bookmark managing/curatorial service Raindrop, these days, after finding out that my [Reading List feed](https://raindrop.io/davidblue/reading-list-13380406) has *actual daily followers*, but there are zero consequences to sending ultimately-worthless or duplicate links to my personal Telegram channel, which has no content limit and is instantly and competently searchable. [image:9D363D61-D88B-4259-AD2F-962732D11AC9-6289-00000B7D08F42195/p3K96LiX.png] Over the years, I’ve discovered a bunch of other uses for the Saved Messages channel. As demonstrated in the screenshots embedded above, the [Send to Telegram Action](https://actions.getdrafts.com/a/18E) for my writing app, Drafts, utilizes Telegram for iOS’ Universal Links support (in the format `tg://…` ) to instantly send the whole text of the current document in Drafts to a Telegram channel of one’s choice. I suspect this was intended to streamline posting for admins of public channels, but I’ve used it to quickly “back up” work as well as to transfer edits directly to my (Windows-running) PC. By adding `&to=+[my phone number]` to the end of the action’s URL, I was able to remove the single, unnecessary step of choosing the destination chat. Because text messages are automatically split at 5000 characters, though, I usually depend on the [Share as Markdown File Action](https://actions.getdrafts.com/a/1V4) (the output of which I also send to Saved Messages through the Share Sheet) for the latter function. Anecdotally I’ve also used this method literally just to inspect unknown content passed to the Share Sheet because it’s often **faster than Quick Look** to share to my Saved Messages channel and then immediately open it in the app. (Hilarious, I suppose. Mostly sad, these days.) I found my inspiration for this Post in replying to a [thread on the Automators.fm Discourse forum](https://talk.automators.fm/t/equivalent-to-drafts-but-for-windows/6159) regarding a Windows equivlalent to the same Mac/iOS/iPadOS app Drafts mentioned above. I suppose my reply was a bit off-topic, in retrospect, but still worth including: > I have been using [Telegram](https://desktop.telegram.org/), of all things for years. Notably, if you hit Ctrl + 0 from *anywhere* in the Windows client, you and your cursor are taken to the compose field beneath your personal “Saved Messages” channel, which is searchable, has an extremely high per-message character limit (after which it just automatically splits,) and is ridiculously reliable in saving “drafts” live as you're typing. As in... I have actively tried to lose characters by killing the application and then logging in on my phone and have yet to accomplish losing a single one (among other advantages: zero formatting added to plain text by default – not even line breaks – no total file limit and *2GB* per file limit uploads, absurdly cross-platform, literally more reliable than SMS in poor network conditions.) You can immediately reenter a sent message with `↑` to edit, copy it, escape with just `Esc` and then paste to start a new revision. The feature within Telegram that makes this whole usecase worthwhile was introduced in [June, 2016](https://telegram.org/blog/drafts), and is entitled – appropriately – “Drafts.” Unlike the Drafts function in Twitter’s various native clients, for instance, Telegram’s really is impossible to fool, though it’s not perfect. [Markdown formatting support](https://telegra.ph/markdown-07-07) is inconsistent across Telegram clients – the iOS app being the most woeful – and the few keyboard shortcuts the app supports on iPad are not supported whatsoever on iPhone. ## Universal Clipboard Users familiar with the MacOS + iOS + iPadOS ecosystem should be well-acquainted with “ [Universal Clipboard](https://support.apple.com/en-us/HT209460),” which instantly synchronizes clipboard content across Apple devices. More recently, Android + Windows users have supposedly had access to an [equivalent functionality](https://support.microsoft.com/en-us/topic/seamlessly-transfer-content-between-your-devices-8a0ead3c-2f15-1338-66ca-70cf4ae81fcb#WindowsVersion=Windows_10). To my knowledge, though, truly cross-platform clipboard sync has yet to be realized.[^4] As someone who’s used iOS and Windows regularly – along with Linux, occasionally – for more than a decade, now, I’d put my full weight behind Telegram as the best available solution from (far too much) personal experience. [image:C1F4C827-206B-4441-AD05-D8BDB6F99FDB-6289-00000B7D08D157E6/Qim9gsZZ.png] When first entering a new system, real or virtual, regardless of OS, my very first step upon completion of its setup process has for years been to install Telegram, largely because all of my passwords for any/all given services are huge – 30+ characters, at least – and complex enough that typing them out is both tricky and absurdly time-consuming. Authorizing a new Telegram client, however, is as simple as entering a one-time numeric passcode or scanning a QR code. Managing logged-in sessions (see: the far right screenshot embedded above) is quick, reliable, and includes a handy button to kill all but the current session. Thanks to these considerations, I feel quite comfortable sending myself passwords in Telegram, including .csv exports of whole password vaults, when it’s appropriate, even when working on systems I do not own. For this function, I can’t think of any other service/software capable of replacing Telegram. For day-to-day hyperlink sharing across my platforms, a variety of alternatives continue to come and go. The “Send to [device]” features represented throughout the palette of available web browsers – Firefox, Opera, Edge Chromium, Chrome, etc. – aren’t exactly reliable, in my experience. Most recently, I discovered a service specific to Hewlett Packard machines called “ [QuickDrop](https://www.hp.com/us-en/solutions/quickdrop-photo-sharing-app.html),” which – along with [its accompanying iOS app](https://apps.apple.com/us/app/hp-quickdrop/id1495071972) – does indeed allow me to send files, links, and text between my iPhone and Big Boy HP tower, though even my brief testing was filled with inexplicable prompts to reauthenticate and intermittent hangups, neither of which lend easily to regular use. I still maintain high hopes for [Snapdrop](https://snapdrop.net/), which allows devices to share files and text over a *local* network from within any web browser, but it, too, is prone to frustrating hangups. [image:ACE07A8C-707A-408C-8043-95A1BC0E2559-6289-00000B7D08B0947C/2YhRCO0I.jpeg] ## File Transfer & Cloud Backup Amidst the saga of my failed move to Portland spanning 2017-2019, I ended up losing *all* of my physical file storage – my old desktop and its hard drive, as well as 3 external drives containing a bunch of raw video I probably wouldn’t have gotten around to using, anyway, site backups for *Extratone*, and who knows what else. This loss taught me many grand, metaphysical life lessons (I hope,) but more practically, it affirmed a (admittedly gluttonous) truth about digital assets: if one truly wishes to make a file permanent, they must back it up in as many different places as possible.[^5] Perhaps the single most durable of these in my own computing life to date has been Telegram, which still has no per-account file upload limit and a per-file size limit of *two gigabytes*. The amount of pre-2019 work I’ve recovered solely thanks to Telegram is too great to enumerate here, but a rough draft of my [2018 Thankful for Bandcamp Mix](https://pod.link/1437549809/episode/626a66d3f37807b69c59f56faa4d3b94) comes immediately to mind. How exactly the service is able to maintain this virtually unrestricted storage, infrastructurally, borders on *don’t want to know* status. My own net server impact as a user is fairly difficult to estimate, but I’d bet real paper currency it’s between 50 and 100 GB, the vast majority of which I uploaded several years ago. Within any mainstream cloud file storage service – Dropbox, Google Drive, Box, iCloud, etc. – the cost of storing that amount *over time* would have added up to a not-insignificant chunk of change. I don’t want to advocate for Telegram as a cloud storage replacement for loaded cheapskates, but for working-class users on a $0 budget, it can be counted upon to keep large files in a relatively shareable, ultra cross-platform, and super-accessible manner. Students, especially, should take note. [image:D01999CF-0365-480E-B95B-5716E75329D7-6289-00000B7D089845CD/jfBVJqyw.png] ## Community At this point in my life, I must acknowledge to both readers and myself that **I am completely inept at community organization**. Especially when it comes to grand suggestions about how I suppose online communities might be ideally-run or just better served by particular software environments and configurations, I have literally received *zero* positive feedback, and not because I haven’t spent significant time positing publicly within the space. I spent the first half of my twenties trying to Peter Pan an independent online music magazine into existence, written by fresh-minded youths on the fringe at 140% throttle and managed to accomplish startlingly little for my all my invested time and gumption. The relevant component of that tale was a significant and all-out commitment from the beginning to run the whole project entirely within Discord. The one absent activity throughout my years of Telegram use – save for intermittent correspondence during one relationship – has been *messaging other users*. I managed to find and participate in a few group chats – “ [Telegram iOS Talk](https://t.me/TelegramiOStalk) ” and [It's FOSS' official channel](https://t.me/itsfoss_official), notably – in my preparation/research for this post. I’ve discovered plenty of new clever bits, like the button to jump to one’s nearest mention in a chat. I’ve also done my best to actually apply some [much-needed administrative attention](https://t.me/columbiamo/7774) to [my years-old attempt](https://reddit.com/r/columbiamo/comments/c4na0v/local_telegram_group_chat_for_columbia) at creating the [definitive location-based local group chat](https://telegram.org/blog/contacts-local-groups) for the Mid-Missouri area where I live. Truthfully… It [hasn’t exactly gone as I’d hoped](https://reddit.com/r/columbiamo/comments/q0843f/local_telegram_group_chat), but the failures have been all my own. I have yet to find a satisfactory balance in terms of moderation bots, so I’ve (as of this writing) resorted to manually removing the (significant) spam bot traffic by hand. Also, I must admit that I’ve never had to do so more than once or twice on *Extratone* ’s public Discord, despite how much more circulation its public, open invite links have received. In the past few weeks, I’ve had the privilege of watching *MacStories* relaunch their premium membership program, *Club MacStories*, on their incredible bespoke CMS. Part of this launch included their first exclusive community space, on Discord, which has been deeply rewarding for me, personally, but has also highlighted some serious limitations of that service which I not-so-long-ago [advocated so heavily for](https://bilge.world/discord-slack-comparison). Namely, **hyperlinks to specific messages** within Discord are a hopelessly problematic endeavor. Even for a public server like *Extratone* ’s, navigating to a message link [like this example](https://discord.com/channels/107272441889341440/107272441889341440/893958033401593898) will require any and all users to log in to Discord on the web, which – on mobile devices, especially – seems to struggle to navigate to the precise position of the subject message after you’ve successfully done so. Slack’s public message links are smart enough at least to prompt users to open them Slack for iOS, but Telegram’s system for message links in public channels and groups makes both services look daft. Telegram message IDs are purely chronological from their channel/group chat’s creation – the first message in a channel or group chat is `1` and the 15th is `15`. Together with the simplicity of channel/group chat IDs, which are just their alphanumeric @ names, this format makes URL schemes for Telegram message links super malleable and easy to understand. The sixth message posted in the [@extratone channel](https://t.me/extratone), for instance, can be found at [https://t.me/extratone/6](https://t.me/extratone/6), which even those without Telegram installed can view natively within their web browser. Within Telegram clients, said links are ultra-responsive, regardless of whether or not one had previously “joined” the channel or group containing the message. [image:21A6BDA0-1AD6-441E-BEC6-0D9EE551C6A1-6289-00000B7D08787201/moymK7EY.png] In *MacStories* ’ case, there’s another essential point of reference. When I pinged the staff in their Discord regarding their experiences running [their now-abandoned Telegram channel](https://t.me/MacStories), John Voorhees replied: > I don't really have anything to say about Telegram one way or the other. We ran it for a short time 5 years ago as an experiment and it didn't stick. I wasn’t yet a subscriber in those days, but little details like [behind-the-scenes voice messages](https://t.me/MacStories/281) are definitely missed. [Federico’s initial audio introduction](https://t.me/MacStories/39) describes a potential for the channel I wish more readers had enjoyed. They’re much more intimate, even, than the publication’s new exluclusive Town Hall events on Discord, which doesn’t make much sense, I know. [image:7393979F-EC6B-4C54-8CFE-DA8AF13991A8-6289-00000B7D085A08B7/v1zhWmwN.png] ### Streaming Admittedly, another attention-grabbing feature that contributed to my finally getting around to this Post was [the introduction of “Live Streams” for channels and groups](https://telegram.org/blog/live-streams-forwarding-next-channel) (really just a slight augmentation of their [“Voice Chats 2.0” features](https://telegram.org/blog/voice-chats-on-steroids) ) at the very end of this past August. Discord, of course, was way ahead of Telegram in implementing Voice Chats and Screen Sharing [back in October of 2017](https://youtu.be/mMloc55o1jc), and it's long since become one of the services' core features. However, *recording* live content of any kind is not natively supported, though there is a [handy utility bot named Craig](https://craig.chat) who can accomplish this for you. For the sake of transparency, I should admit that not a single one of my live streams on Discord has actually included any viewership, but I have participated in a handful of others’ and viewed a couple dozen. > btw this is what happens to Discord's desktop app any time I try to join/create a call or stage or join a voice channel. [@discord](https://twitter.com/discord?ref_src=twsrc%5Etfw) [pic.twitter.com/t5atAFtyhH](https://t.co/t5atAFtyhH) > — ※ David Blue ※ (@NeoYokel) [October 15, 2021](https://twitter.com/NeoYokel/status/1448837428534521858?ref_src=twsrc%5Etfw) For the past few months or so, participating in any sort of voice or video chat in Discord desktop has led to [a spectacular relaunch loop](https://twitter.com/NeoYokel/status/1448837428534521858) that can only be solved by reinstalling the application, entirely.[^7] It’s not that Discord for iOS’ now full support for such streaming – both in terms of participation and simple viewership – isn’t impressive, but honestly, *Telegram* for iOS’ superiority should be immediately obvious to anyone who’s tried them both, recently. Not just in pure capacity’s sense, but in moderation tools, shared link customization, and, obviously, native recording support. I’ve embedded two recordings of different test streams of mine, below. [The first](https://t.me/extratone/7054) (embedded in [YouTube form](https://youtu.be/uhXZZBl0fn8),) was streamed from both my Surface Laptop 2 and iPhone 12 Pro Max. [The second](https://t.me/extratone/7196) is a very brief recording (in native form [directly from The Psalms’ GitHub Repo](https://github.com/extratone/bilge/raw/main/video/TelegramiOSLiveStreamTest.mp4) ) of a stream I did *just* from the share screen function of my phone, in the wrong orientation.[^8] Below is a screenshot of the recorded file’s metadata (as provided by Telegram for Windows.) [image:58B30591-2512-4210-A5B8-C282F722FF58-6289-00000B7D08311DD9/oDQqSYHF.png] As you might note, there’s definitely something to be desired from the quality of Telegram’s stream recordings, especially in its included audio. I find it a bit strange that it’s recorded in 48 kHz just to be compressed down to *46kbps*. When you’ve stopped a recording, you’ll receive both the video file and just the extracted audio in an .ogg file. Unfortunately, the latter is no less compressed than it is combined in the video file. (Both are sent to one's Saved Messages channel immediately upon stopping a recording, from where they can be forwarded virtually anywhere.) Aside from a boost in audio quality, though, Discord’s default 720p base resolution is matched by Telegram. Via server boosts, this figure can be upgraded significantly, though the end result is quite costly. According to [a not necessarily trustworthy site](https://clutchpoints.com/discord-server-boost-cost/), accounting for Discord’s [recent reduction in boost requirements](https://www.facebook.com/discord/posts/4524749577592737), here’s the pricing laydown to boost a server (per month:) > …a total of $34.93 for Level 2 and $69.86 for Level 3. That’s $24.45 for Level 2 and $48.90 for Level 3 for Nitro subscribers. Among quite a few other abilities, here are the extracted audio/video requirements per server level **only**: 1. 128kbps audio/720p video upped to 60fps 2. 256kbps audio/1080p 60fps video 3. 384kpbs audio/no video boost So, if I had the spare change to maintain a level 2 boost for *Extratone* ’s Discord server, myself, I could do so for $34.93 per month, which would allow me to *stream* (not necessarily *record* ) in 1080p/60fps video and 256kbps audio to up to [50 viewers](https://support.discord.com/hc/en-us/articles/360040816151-Go-Live-and-Screen-Share) (as of this writing.) Theoretically, at no cost, I can stream with virtually identical features (though I prefer Telgram's) to my Telegram channel to [infinitely many users](https://telegram.org/blog/live-streams-forwarding-next-channel#unlimited-live-streams) in 1280p/30fps with absurdly low-quality audio and share/manipulate recordings natively/instantly from within any Telegram client. If I were All Powerful, I would make all the members of my “ [Family Tech Support](https://bilge.world/ios-15-family-review) ” iMessage group install Telegram on their devices so we could use it, instead. I would also make them collectively attend occasional live streams, where they could ask questions verbally of my demonstrations sharing my own screen, or even share their own screens to demonstrate an issue or provide context for a question. The reality, though, is that I do not expect any sort of anticipation for my personal live help events on any platform, which innately suggests Telegram over Discord, I'd argue, for when I *do* stream such content, given its total lack of investment.[^9] [image:92DC1F9D-E8F1-496E-9DBD-0BC54F6C8446-6289-00000B7D0811E45F/FRj5GGPN.png] ### Location Sharing One of Telegram's most unique (and potentially powerful, I believe) community features is [Live Location Sharing](https://telegram.org/blog/live-locations) on its mobile apps. Borned by Siberian native developer [Roman Pushkin](https://twitter.com/romanpushkin), LibreTaxi is the single truly exciting open ridesharing alternative I've ever encountered.[^10] As [an item for CBC radio from 2015](https://www.cbc.ca/radio/spark/346-biometrics-audio-intelligence-and-more-1.3987746/the-man-who-wants-to-out-uber-uber-1.3987987) (among other assorted coverage compiled [here](https://telegra.ph/LibreTaxi-press-coverage-07-14) as of July, 2017) explains, it utilizes Telegram's live location sharing functions to act as a decentralized Uber/Lyft alternative in the form of [a bot](https://telegram.me/libretaxi_bot), which connects users needing a ride with users providing them, free of any fees or service charges. Discourse surrounding LibreTaxi has been silent for years, but [this channel](https://t.me/s/libretaxi_all) tracking all LibreTaxi orders in realtime is proof that it *really is* helping folks get around. As for the persistence of *Live* location-sharing, I can vouch for its reliability on the Android side, at least, as per my aforementioned experience with a partner who used Telegram and shared their location with me for both safety and convenience. As someone with the most immense possible privilege regarding safety and dating, I would also like to suggest sharing one's live location with a private Telegram group chat with friends as an alternative to services like [Tinder's Noonlight](https://www.help.tinder.com/hc/en-us/articles/360039260031-What-is-Noonlight-). [image:AC8C6810-D23A-4E91-A7FA-F8148AC12A90-6289-00000B7D07F3B6EF/TbPFRPnG.png] ### Permanence I've long evangelized (and extensively used) Alexey Golub's [Discord Chat Exporter](https://github.com/Tyrrrz/DiscordChatExporter) to make beautiful, stylized archives of Discord channels and/or entire servers for safekeeping. Telegram's native [Chat Export Tool](https://telegram.org/blog/export-and-more) came just a year after Alexey pushed [version 1.0 of the tool to GitHub](https://github.com/Tyrrrz/DiscordChatExporter/releases/tag/1.0.0), in August of 2018. In features, they're very similar utilities: both can export in either stylized HTML or data-only JSON formats between infinitely-configurable time/date constraints. Again, I wouldn’t know how much external backup of community activity actually weighs in the day-to-day operations of large online communities. I know I personally find it comforting to have a swift, polished method of exporting *text*, especially, living in this era of [blatant disregard for users of suddenly-abandoned online services](https://github.com/extratone/bilge/issues/79). [image:5B0709EA-2D44-4E2B-B172-7E005566B8B3-6289-00000B7D07D60683/r0WpvFQr.png] ## Transparency Opacity One of my primary justifications for the time spent in composing this Post has to do with the immediately-available discourse surrounding Telegram on the web, which is wholly incomplete, at best. The main obstruction, from my perspective, is the subject of **encryption**. Even within publications as legitimate and frankly out-of-scope as *Forbes*, one can find an article like my chosen example, from February of this year, entitled “ [No, Don’t Quit WhatsApp To Use Telegram Instead—Here’s Why](https://www.forbes.com/sites/zakdoffman/2021/02/13/why-you-should-stop-using-telegram-instead-of-whatsapp-use-signal-or-apple-imessage).” It was written to address a mass “ [exodus](https://www.theguardian.com/technology/2021/jan/24/whatsapp-loses-millions-of-users-after-terms-update) ” of users from WhatsApp after [a grandiose misunderstanding](https://www.theverge.com/2021/1/12/22226792/whatsapp-privacy-policy-response-signal-telegram-controversy-clarification) (?) of its Privacy Policy caused a noisy controversy ( [catalyzed by Idiot Melon, himself](https://twitter.com/elonmusk/status/1347165127036977153).) I've been unable to find the added/altered text, itself, in my brief reading, but it's not as if the happening wasn't thoroughly covered elsewhere. It's not that I doubt the expertise of “Cybersecurity Expert Zak Doffman” when he notes “Telegram’s cloud-based architecture is a serious risk when compared to the end-to-end default encryption deployed by Signal and WhatsApp, which also uses Signal’s protocol,” nor that I do not believe the following details are as true as truth gets: > All group messages on Telegram are only encrypted between your device and Telegram’s cloud, your message history is stored on Telegram’s cloud, and if you ( [unwisely](https://www.forbes.com/sites/zakdoffman/2021/01/30/stop-using-this-dangerous-whatsapp-setting-on-your-apple-iphone-or-google-android-phone/) ) transfer your WhatsApp chat history to Telegram, then this is also stored on its cloud. Make you sure understand that Telegram has the decryption keys to any of your data that you store on its cloud... To this argument and the many variations of it present in Telegram for iOS' [App Store reviews](https://apps.apple.com/us/app/telegram-messenger/id686449807), [obscure German PeerTube servers](https://tube.tchncs.de/w/2d958ef9-1be4-477c-bc13-852ec6391487), and even within [public chats on Telegram, itself](https://t.me/crackheadlegit/409), my formal response for the record is: *Okay! Affirmative! Received and understood!* I must acknowledge – given my own introduction to the service, narrated above – that Telegram's brand is vaguely associated with privacy and security. I can see that the second of nine duckies in the Ducky Grid on the root of telegram.org sits above the subhead “ **Private** ” and a caption with the following claim: “Telegram messages are heavily encrypted and can self-destruct.” (The seventh ducky's subhead is “ **Secure**.“) Continuing on in Doffman's *Forbes* article, we find an overview of several vulnerabilities found throughout Telegram's native clients by Dhiraj Mishra – surely they with the most ghastly typographical preferences in all of cybersecurity – on their blog, *Input Zero*.[^6] The [specific example hyperlinked](https://www.inputzero.io/2020/12/telegram-privacy-fails-again.html) concerns a bug in the MacOS client that resulted in “the application leak[ing] the sandbox path where [a sent audio or video message] is stored in '.mp4' file.” (The whole of the ghastly-typewritten summary is embedded below in screenshot form.) [image:1E02A67C-FA32-4ED5-A9A1-7F6956BEA8F1-6289-00000B7D07BDE06B/a0xgY5cJ.png] Just to be clear, I am being sincere when I acknowledge that these are genuinely problematic issues that no doubt affected real Telegram users who depend upon its Secret Chat function. Even something so benign as the file path to local media storage on my device is not something I'd want piggybacking my otherwise-anonymous, NDA- and/or law-breaking messages to a journalist, for instance, but frankly, I don't know of any journalists who maintain public Telegram contacts, anyway. Come to think of it, I don't think I've *ever* seen a Telegram username publicly associated with a journalist. Indeed, the overwhelming majority of anonymous modern messenger service tip lines advertised by news organizations and news people which I've come across have all linked to Signal. In this particular case, then, Mr. Elon’s advice is sound. The question I would like to surface: **what if I have no use for encryption or privacy across my purposes for Telegram**? *All* the channels I have ever engaged with have been public, and those private ones I’ve come across have either been shady crypto spam channels or shady porn channels. I realize this doesn’t exactly reflect positively on Telegram’s community, but – as I argued regarding Discord, long ago – why let the community or even the app’s branding, itself, confine how you use it as a utility? ## A Hearty Foundation My thinking while drafting this argument kept returning to a single, simple realization: **in age, Telegram is just two years ahead of Discord**, yet the various software distributed by the two organizations for their respective services represent quite disparate opinions in design terms. [Discord's desktop “application”](https://discord.com/download) is an Electron app – [Telegram's](https://github.com/telegramdesktop/tdesktop) is virtually pure C++. [Telegram's iOS app](https://github.com/TelegramMessenger/Telegram-iOS) is mostly written in Objective-C (I'm to assume the 30.8% Swift code number on the repo as of this writing is mostly comprised of its widgets/other recent iOS-specific integrations,) while Discord's is mostly ???. That is, because Discord's software is proprietary and the source is closed, all I can tell you is that it was written in React Native [as of December, 2018](https://blog.discord.com/why-discord-is-sticking-with-react-native-ccc34be0d427). What I *can* tell you is that the current build of [Discord for iOS on the App Store](https://apps.apple.com/us/app/discord-talk-chat-hangout/id985746746) weighs in at 153.2 MB – significantly less than [Telegram's](https://apps.apple.com/us/app/telegram-messenger/id686449807) 185.1 MB. As I've noted plenty of times this year, **I am not a software developer** and therefore I can't promise you an app's initial payload size is actually all that relevant, but I was surprised to see Telegram wasn't slimmer than Discord, given how the two apps behave and my previous experiences with the platform, this year. [image:934EA976-F178-43F5-988F-DE2B141D2DD6-6289-00000B7D07A262DC/BecGI6kg.png] Returning to the topic of their age… In its eight operating years, Telegram has embarked upon – and *actually completed*! – a gargantuan amount of projects. [Telegraph](https://telegra.ph/), the CMS, its [Web](http://web.telegram.org/), [Android](https://telegram.org/android), and [Linux](https://itsfoss.com/install-telegram-desktop-linux/) clients, [embeddedable comments widgets](https://comments.app), its [online theme creation tool](https://themes.telegram.org/), and on and on. Across their various types, Telegram’s software is universally simple, frugal, robust, and easy-to-use. Frankly, by contrast, Discord has done *nothing*? Though you’ll find openly-available solutions to accomplish much of what you can on Telegram in terms of moderation and other utilitarian concerns, like the aforementioned Craig bot, they are *all* the work of third-parties. While Discord the *company* is much more [transparently profiled](https://discord.com/company) on the web than “Telegram FZ LLC,” the latter’s actual work is very well documented [across GitHub](https://github.com/TelegramMessenger). [image:D2367F0F-6539-43C1-B818-4F9D561F6D37-6289-00000B7D0784AEC0/DFQzGGeZ.png] If you’ve stuck with me this far, perhaps it’s not too much to ask that we retreat a bit and ask ourselves **what we’d truly like prioritized in community chat software for 2021**. I really do show my age in my bias, here, as someone just old enough to have had extensive experience using IRC,[^11] I think there’s a less-than-adequately discussed division happening which its successors might benefit dwelling on. IRC was extremely frugal and it was easy to find a freeware or FOSS IRC client for one’s given platform which was well-optimized to sit in the background of their desktop operating system, completely untouched and barely acknowledged visually for days… weeks… months at a time. It was easy to find oneself a member of a dozen or so IRC channels for specific interests, projects, or organizations averaging a dozen or so actual updates/pots per day, each. It was distinctly low pressure – many of my channel memberships functioned more like a wire service or, much more contemporarily, like an RSS aggregator, than a local party line. [image:7AF69C53-D3F6-4D55-9D33-7F99CE05D58F-6289-00000B7D0762177E/FltrCV6Z.png] As I see it, the ultimate shift dividing those solutions from these is the big fucking obvious one: IRC was conceived in a world where computers were mostly static objects associated by their intended use and physical dimensions with the referential, unmoving waypoints around which *we* orbited (the kitchen counter, the desk in your study at home, parallel series of workstations within the public library, etc.) The *entirely* contrasted needs of community engagement on a *handset* should have – in my opinion – done much more to break apart these communal contexts than they have. As prolifically and extensively as I have used Discord for iOS since before its official release, even, it is hopelessly compromised by its loyalty to the PC gamer’s paradigm. My 12 Pro Max is not just *capable* of keeping 100 Discord channels up-to-date in the background as I move about the world – it is all too fucking *eager*, and for not a one rational explanation. Going on down this vector eventually leads to an adjacent argument I’ll name but otherwise save for later: it is literally **over a decade** past the time when we should have ceased celebrating the fact that mobile computers had matched and outdone desktop computers! We have to snap the fuck out of our obsession with lugging desktop computing alongside our persons and refocus entirely (once again) on exploring what “mobile computing” can/should mean, going forward. Please Gourd, help us do so ASAP. Unlike my heroes in most (if not all) of these tedious comparisons, I would *not* say Telegram is *the single software manifestation of total clarity in direction* within the subject, or anything, but in the area where it fails along with the rest of them, it has comprehensively iterated, invested in trial and error, and eventually produced tools that remedy the disparate gluttony. How swiftly and easily one can find one's installation full of media files, for instance, after *any* time spent exploring within its mobile apps. It very well could have been mostly chance that contributed to Telegram's current lead in terms of thoughtful design decisions and development investment toward **mobile-first optimization**. Perhaps it was their comparative longstanding Hype Famine, especially in the United States, these past few years. Maybe Discord hasn't built anything because they simply can't hear each other over the buzzwords overflowing their name in mainstream Discourse so abruptly thanks to The Big Virus. Telegram's story certainly *stands out*, though the voice of its creator, Pavel Durov, actually *telling* this story at length can now only be found [on WIRED UK's MixCloud account](https://www.mixcloud.com/wiredUK/telegrams-pavel-durov-podcast-256), in [episode 256 of their WIRED Podcast](https://www.wired.co.uk/article/episode-256). Telegram was experiencing the peak of its presence in mainstream Western news media, who just *would not* let go of the fact that some leader of some terrorist organization recommended Telegram to someone for something at some point in time.[^12] Listening back, it's the nomadic “decentralized” beginnings of the organization – which I had forgotten entirely – which sounded a big, resonant Parallel Alarm in my brain: for very different reasons, [Bandcamp also operating without an office](https://bilge.world/bandcamp-streaming-music) (from a public library, charmingly,) at that time. “Can there only be one winner in the messaging wars?” asks David Rowan, which Pavel – in the deliberate, uncomfortable-sounding tone he uses throughout the interview – answers first noting a *real truth* for actual users: we tend to end up with a billion, each grouped generally by types of relationships. iMessage is for your family and local friends, Facebook Messenger is for your school group project, IRC and Element are for your insane, privacy-obsessed Linux friends, and Telegram is for [unsolicited video chats of worm tubs](https://twitter.com/ammnontet/status/1449594872139186181).* *For more, up-to-the-minute information on Telegram as well as Configuration files from me, see my [Telegram Raindrop Collection](https://raindrop.io/davidblue/telegram-20593542) (embedded below,) and/or [this post's corresponding GitHub Issue](https://github.com/extratone/bilge/issues/228). [1] I still have not accepted this, by the way. I’m still back there. [2] If I were to be 100% sincere, I might ask you to consider that this (hilariously brief) intent was a method of coping with the great existential truths I was facing for the first time. [3] I *definitey* was, though. For whatever reason, I do not remember associating the term “automation” with such activities, but I just found the “receipt” for my “purchase” of [IFTTT for iOS](https://apps.apple.com/us/app/ifttt/id660944635)… From July, 2013. [4] I am currently working on a less-than-instant solution using iCloud and CopyQ’s clipboard sync function. [5] I would’ve said “one can never have too many backups,” but the result of such thinking is ridiculously wasteful and not something I actually want to encourage. [6] I'm almost positive I've heard of/been linked to this blog before, which is perhaps only notable in that I managed to keep my typographic opinions to myself. [7] Not that the process of doing so could be any easier on Windows. [8] It’s also worth nothing that [word of screen sharing framerate issues](https://t.me/TelegramiOStalk/104997) was circulating at the time of this recording. [9] Simulcast services like [Happs](https://happs.tv/@DavidBlue) – which still exists, astonishingly – offer an intriguing utility for those intending to stream regularly and wishing to do so across multiple platforms. It does not, at the moment, support either Telegram or Discord. [10] Speaking as someone with [actual extensive ridesharing experience](https://dieselgoth.com/volkswagen-jetta-sportwagen-tdi-review.html), notably. [11] Yes, there are some fellow Open Source Folks who’ve frankly struggled to let IRC go. It was an amazing protocol and will always be intertwined with the very first layed bricks of what we’d call the Social Web, but my friends… I sincerely think we should all try our hands at ham radio, instead. I think that would legitimately be a better use of our time than trying to implement two-factor authentication for IRC in this year of our spiteful Lourde 2021. [12] Disparaging Telegram for this is akin to shitting on Google because it is or was almost certainly the Taliban's favorite search engine, no? [I Trust Telegram — The Psalms](https://bilge.world/telegram) #psalms #software # The Psalms’ 2021 [image:95731A1A-A8FD-4C55-B0AE-B883F7FCCFB9-2021-0000007D83F081B5/IMG_1427.jpeg] *I am not funny anymore* feels as though it has finally achieved penultimate meaning as a longtime habitual phrase of mine - as in, I can no longer remember a tangible self without that sentiment always at the ready in a handy intercranial stash. Its significant, I think - the assuredness of my confidence saying it, now, after the year two thousand and twenty-one. The sensation of it has always been most powerful when reading the oldest of my words published, here, but it now has *so* much more substance. The argument that this general process is the very most natural for my age - the *Peak Specialization* Period on the general Human Existence roadmap - has been platituded to all fuck, and yet I cling to it newly and with ever-renewed desperation as I have to any and all authentic manifestations of certainty, of late - even the *common knowledge* sort I still viscerally despise. | Title | Date | |:------------------------------------------------------------:|:-----------------:| | [David Blue on Twitter Blue](https://bilge.world/twitter-blue) | December 6, 2021 | | [Liberating UNIIQU3‘s “TECHNO IS BLACK” Playlist from Spotify](https://bilge.world/uniiqu3-techno-is-black) | November 26, 2021 | | [iOS 15 Reviewed for My Family](https://bilge.world/ios-15-family-review) | September 19, 2021 | | [Siri Speech Synthesis in iOS 15](https://bilge.world/siri-tts) | August 22, 2021 | | [Against All Strategic Social](https://bilge.world/social-media-strategy) | August 9, 2021 | | [Mastodon for iOS Review](https://bilge.world/mastodon-ios-app-review) | July 31, 2021 | | [The State of Mastodon iOS Apps](https://bilge.world/mastodon-ios-apps) | July 17, 2021 | | [App Store Review Day](https://bilge.world/app-store-review-day) | July 15, 2021 | | [Marco! Lives](https://bilge.world/marco) | June 28, 2021 | | [iPhone and Music](https://bilge.world/iphone-ios-music-apps) | April 19, 2021 | | [Tweetbot 6 for iOS Review](https://bilge.world/tweetbot-6-ios-review) | March 1, 2021 | Certainly moreso than in any other calendar year for *this blog*, I have changed, and so has the tone, theme, and subject matter of the eleven items you see above. In case you can't be bothered, it doesn't take much scrutiny to note that all but *one* of these entries - [the second-latest](https://bilge.world/uniiqu3-techno-is-black), debatably - are directly related to the Fucking Apple Phone. Indeed, The Year of our Lord 2021 saw me watch every single one of Apple's two billion special "live" events in their entirety, all the while marveling... screaming... at the overwhelming volume of completely indiscriminate hype that still pervades the greater *vaguely interested in consumer tech* online biosphere. I witnessed folks take days off work solely for the sake of these pre-recorded “live” events, listened to pre-show podcast gameshows involving real money bets on what might be discussed/released during said events, and subscribed to two exclusive iOS-related publications: [Matthew Cassinelli’s newsletter](https://matthewcassinelli.com/membership) and [Club MacStories](https://club.macstories.net). [image:9D410DF4-DB48-4775-B339-144AD9239578-6289-00000B4A8778172F/TweetbotFolder.png]Separate the blogroll, I indulged resolutely in [a severe App Addiction](https://bit.ly/dbapplist), published [a bunch of Siri Shortcuts](https://routinehub.co/user/blue), frequented [r/Shortcuts](https://www.reddit.com/r/shortcuts) more than I ever thought I'd find myself doing so on Read It, subsequently investing more of my time than ever in personal automation on Apple devices, while also becoming [most critical of the practice](https://github.com/extratone/bilge/blob/main/audio/Voice%20Notes/The%20Siri%20Shortcuts%20Industry.mp3). I first described myself as an "iPhone Poweruser" some four years ago, in [a rambly episode of *End User*](https://www.listennotes.com/podcasts/end-user/siri-shortcuts-are-ios-12s--Vlsfa8engC/) immediately following my original discovery of Apple's absorption of the automation app Workflow and its rebrand of their work into "Siri Shortcuts" [in the beta of iOS 12](https://bilge.world/siri-shortcuts-ios12-review). If indeed this label was ever meaningfully appropriate to self-apply, it certainly should be, now. Before 2021, my knowledge of iOS as a platform was extensive, sure, but notably constrained to user considerations. I was completely unaware of any "dev-facing" interworkings. For instance, I now have a vague understanding of Apple's late push to change iOS' primary programming language from Objective-C to its own Swift thanks to my "[investigation](https://twitter.com/tapbot_paul/status/1421600511808229387)" into why Tweetbot "feels" so different from its contemporaries. As per [my commitment to write the missing documentation for Bluetooth keyboard shortcuts support on iPhone](https://uikeycommand.neocities.org)[^1], I have even become familiar enough with SwiftUI to identify a given key command's result in source code. ## Editorially The most significant editorial initiative of the year was [my complete rewrite](https://github.com/extratone/bilge/issues/96) of [/About](https://bilge.world/about). In the interest of providing a much more succinct and informative logline, I took direct and obvious inspiration from [the About document](https://www.notion.so/About-Platformer-22cd48a5514d404b9c2dd130d7724b93) Casey Newton drafted for his newsletter, [*Platformer*](https://platformer.news). I expected the process to take months on end, but the end product was mostly written in a single sitting. This excerpt is as close to a Statement of Purpose for *The Psalms* as I've ever come: > ...observing and selectively amplifying the characters, organizations, and stories surrounding the most abrupt, profound, and spectacular communicative renaissance in the history of the human species. Less abstractly, its beat is **wholly digital**, namely in **tools** (software, services, and methodologies) and **culture** (music, film, podcasts, and media) from a distinct lens established at good distance from California. Also included is a list of important editorial considerations, most of which could be interpreted as complaints about the general state of "technology media" at present. It’s [up to you](https://twitter.com/NeoYokel/status/1477105624978755584) to judge how well I’ve done at keeping them in mind, [publicly](https://mastodon.social/@DavidBlue/107545348469577371). [image:9A41FAC6-341E-43BD-8AD8-2A3B6C99EDEC-6289-00000B6D7A355460/Image 12-31-21 at 20.23.jpg] As I said at the beginning of this Post, I’m going to miss being clever, but it’s become much more important to me to spend my time creating content that first and foremost provides **tangible value for real people**. === [1] Which I will *not* be discussing further in this particular Post. - [ ] I both miss and am disgusted by that me, but he has now departed entirely. Of this, I am also most certain - [ ] …and it is certainty more than anything that I’ve sought this year, I think, as my personal inventory of it managed to drop off suddenly to nill. - [ ] The argument that this general process is the very most natural for my age - the *Peak Specialization* Period on the general Human Existence roadmap - has been platituded to all fuck, and yet I cling to it newly and with ever-renewed desperation as I have to any and all authentic manifestations of certainty, of late - even the *common knowledge* sort I still viscerally despise. Looking back through m The sensation isn’t new, but the *substance*. #psalms # 30 things you can do in Mac Terminal [image:02C5C9E0-7D55-495C-8DB0-626ED0B77C75-6289-000007FAD6CD160D/terminal-on-the-mac_thumb800.jpg] When launched Terminal provides a line interface that you can use to control parts of the macOS interface - essentially it gives you access to the UNIX features that lie beyond the macOS skin. Here we will be looking at some projects that you can try out in Terminal, using your new-found skills. If you're new to Terminal, or need to brush up on your commands, the best place to start is our introductory feature which you can read here: [How to use Terminal on a Mac](https://www.macworld.co.uk/how-to/how-use-terminal-on-mac-3608274/). Note that where you see square brackets, you need to add your own input, usually a file path or URL, without the square brackets. ## 1. Show hidden files and folders macOs creates hidden files and folders for a variety of reasons. Most of the time, there's no reason for us to know about them or even know they exist, but if you need to track one down, you can do it with Terminal. Type: `defaults write com.apple.finder AppleShowAllFiles -bool TRUE` `killall Finder` Change TRUE to FALSE when you want to hide the files again. ## 2. Copy files from one folder to another Option dragging and dropping files to copy them from one place to another is so passe. Try Terminal's Ditto command instead. Type: `Ditto [original folder] [new folder]` Where 'original folder' and 'new folder' are the file paths of the source and destination of the files. To see each file's name in the Terminal window as it's copied, type '-v' after Ditto. This is the command for verbose mode. [image:381F3948-9CAB-415F-8BF0-C881912D2763-6289-000007FAD6A370CC/image.png] ## 3. Download files without your browser If you've got the URL of a file you need to download, but don't want to download it in Safari, Chrome, or Firefox, Terminal can help. It needs just two commands - one to set Terminal's location to your Downloads folder (or anywhere else you want to put the downloaded file) and one to download the file. To set the location, use the command below. Change 'Downloads' to a different folder if you want to, remembering that if it's not in the first level of your user directory, you'll have to type the full path - or drag the folder on to the Terminal window. `cd ~/Downloads/` To download the file: `curl -O [the URL of the file]` ## 4. Disable drop shadows on a screenshot When you use Command-Shift-4 the spacebar to take a screen grab of a window on your Mac, a drop shadow is added to the window. If you'd rather not have it, use this command to take a screen grab without drop shadow. `$ defaults write com.apple.screencapture disable-shadow -bool TRUE` `killall SystemUIServer` ## 5. Keep your Mac awake Over-riding the sleep settings in Energy preferences takes just one command. `caffeinate` Type Ctrl-C to end the command or time limit like this `caffeinate -u -t [number of seconds]` ## 6. Make your Mac automatically restart after a crash When your Mac freezes or crashes, often the only resolution is to hold down the power button and wait for it to restart. Use this command to make it restart automatically when it senses a crash. `sudo systemsetup -setrestartfreeze on` ## 7. Hide non-active apps in your Dock Dock too crowded, use this to make it show only active apps. `defaults write com.apple.dock static-only -bool TRUE` `killall Dock` ## 8. Dull hidden apps in the Dock You can go even further and make the Dock dim apps that aren't visible on screen. `defaults write com.apple.Dock showhidden -bool TRUE` `killall Dock` ## 9. Make holding down a key repeat characters Here's one we really like. When you hold down a key on your Mac's keyboard, it either displays a pop up of additional characters or does nothing. Here's how to make it repeat the character you tapped, just like it used to do. `defaults write -g ApplePressAndHoldEnabled -bool FALSE` To undo the command, use the same command but replace 'FALSE' with 'TRUE' ## 10. Hide files and folders from view in the Finder `chflags hidden [path of folder you want to hide]` ## 11. Play Tetris, Pong, Snake and other games Emacs, the text editor that comes pre-installed with macOS and that can be run from terminal, has a number of Easter eggs in the form of games. To display them, type `Emacs` then hit enter, then `Fn` and `F10` then `t` then `g` You'll see the available games listed and can now use the cursor keys to select them. [image:1A17E00B-ECFF-4103-8C07-7331497951DE-6289-000007FAD68DC6AB/_image.png] ## 12. Write ASCII art banners Type: `banner -w [the width of the banner in pixels] [your message]` ## 13. Enable an iOS-like power chime when connected to power Use this to make your Mac chime like an iPhone when you plug in the charger. `defaults write com.apple.PowerChime ChimeOnAllHardware -bool true; open /System/Library/CoreServices/PowerChime.app` ## 14. Check for macOS updates more often To change the frequency with which your Mac checks for macOS updates from weekly to daily, type: `defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1` ## 15. Download files without your browser If you've got the URL of a file you need to download, but don't want to download it in Safari, Chrome, or Firefox, Terminal can help. It needs just two commands - one to set Terminal's location to your Downloads folder (or anywhere else you want to put the downloaded file) and one to download the file. To set the location, use the command below. Change 'Downloads' to a different folder if you want to, remembering that if it's not in the first level of your user directory, you'll have to type the full path - or drag the folder on to the Terminal window. `cd ~/Downloads/` To download the file: `curl -O [the URL of the file]` ## 16. List the Contents of a folder The 'ls' command displays the contents of a directory By adding '-R' it expands sub-folders. So to see all the contents of a folder, type: `ls -R [the path of the directory]` [image:3A2893C8-EA47-4AC4-B2DB-A4A366B21C77-6289-000007FAD64E6DA7/___image.png] ## 17. Restore a disk image to a volume connected to your Mac If you have a disk image that you need to create a an actual volume from, use this command: `$ sudo asr -restore -noverify -source /[path to diskimage] -target /[Volume you want to restore to]` ## 18. View any file's contents If you're ever sent a file that won't open on your Mac, perhaps because you don't have an app capable of opening it, or because it's corrupt, you can view its contents in Terminal. For lots of files, like audio and video, the text you see won't mean much. For others, there may be just enough for you to parse what you need. Type: `cat [file path]` Tip: instead of manually typing the path to the file, you can drag it on to the Terminal window and drop it after the command. ## 19. Change the default screenshot location You can change the place where screengrabs are saved by typing: `defaults write com.apple.screencapture location [place where you want screen grabs saved]` Then hit Enter and then: `killall SystemUIServer` And hit Enter again. ## 20. Stop apps from saving to iCloud by default Some macOS apps like TextEdit and iWork apps save to iCloud by default. You can change that by using: `defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false` To revert to iCloud, use the same command with the flag set to 'true' ## 21. How to alter file permissions using Terminal [image:AE27F829-37EA-44C1-84CC-13ABD01CE984-6289-000007FAD632C05F/____image.png] File permissions control which users can access and modify files and folders on your Mac. Mostly they work very well, but occasionally things go awry, like when you copy a file from one user account to another and discover you can't open in it in your account. There are two commands we can use to change permissions; chmod, which modifies permissions for all users except the file's owner, and chown which assigns ownership to a specific user. So, to change permissions on a file to allow anyone to access, read, and modify the file, we'd use: `sudo chmod 777 path-to-file` Where path-to-file is the path of the file whose permissions you want to modify. Remember, rather than type the file path, you can drag the file onto the Terminal window. To modify the permissions to allow access and reading, but prohibit changing the file, swap 777 for 644. If you want to change permissions on all the files in a folder, drag the folder onto the Terminal window instead of a file, and type -R after the command name. To change ownership of a file to your account, use: `sudo chown your-short-user-name path-to-file` ## 22. Change the default for screen shots on the Mac By default, screenshots in OS X are saved as .png files. That's usually fine, but you can change it if you need to. For example, to change the default to jpeg, type: `defaults write com.apple.screencapture type JPG` You can also change to PDF or TIFF using the same command and swapping your chosen format for JPG. To change the default name for screenshots, use: `defaults write com.apple.screencapture name "the-name-you've-chosen"; killall SystemUIServer` Replace the-name-you've-chosen with whatever you like and screenshots will now be given that name followed by the date and time. ## 23. Watch an ASCII version of Star Wars [image:77E83D80-FE00-4166-872A-65D8C35FBDEC-6289-000007FAD60F4839/_____image.png] This one's just for fun, but what fun! There's an ASCII version of Star Wars running on a Telnet server in The Netherlands. To watch it, use: `telnet towel.blinkenlights.nl` To stop it, type Ctrl-] and then 'quit' ## 24. Enable text selection in Quick Look Quick Look is an incredibly useful tool for quickly examining the contents of a file. And while it's primarily intended for images, it can also be used to read text documents. Sadly, reading is as far as it goes. You can't select text to copy it, for example. At least, not without the help of a Terminal command. Type this to allow you to select text in Quick Look: `defaults write com.apple.finder QLEnableTextSelection -bool TRUE; killall Finder` We have a [complete tutorial for how to select and copy text from Quick Look previews in OS X here.](https://www.macworld.co.uk/how-to/select-copy-text-from-quick-look-previews-on-os-x-3538951/) ## 25. Disable Auto-restore in Preview using Terminal on the Mac [image:B3C9D97E-6993-484E-A004-BB358FABB52C-6289-000007FAD5F5C7CD/______image.png] Do you ever open [Preview](https://www.macworld.co.uk/how-to/get-most-out-of-mac-os-x-preview-3544393/) and find that it spews open document windows all over your screen? That's the fault of Auto-restore, a feature in OS X since Lion, which saves the state Preview is in when you quit it and then reverts to that state when you open it again. So, unless you close all open documents before quitting, they'll re-open next time you launch Preview. To prevent that, and launch Preview without any documents, use this Terminal command: `defaults write com.apple.Preview NSQuitAlwaysKeepsWindows -bool FALSE` To change back to the default, re-type the command, replacing FALSE with TRUE. To do the same thing in QuickTime X, replace com.apple.Preview with com.apple.QuickTimePlayerX ## 26. Make the Dock slide more quickly using Terminal on the Mac If you use Show and Hide Dock, you'll notice that when you drag the mouse pointer onto the bottom of the screen, or whichever edge you keep the Dock, there's a delay before the Dock slides into view. You can eliminate that delay with these commands: `defaults write com.apple.dock autohide-delay -float 0` `killall Dock` The '0' represents the delay before the Dock slides into view, so if you want to reduce it, but not eliminate it altogether, replace the '0' with another value, measured in seconds. To revert to the default, type: `defaults delete com.apple.dock autohide-delay` `killall Dock` You can also change the speed at which the Dock slides. Again, it's done by modifying a delay. So, to make it instant, type: `defaults write com.apple.dock autohide-time-modifier -float 0` `killall Dock` To double the speed, replace the '0' with '0.5' and to keep it the way it was, use '1.' ## 27. Add a message to the login window [image:0ED21498-8F94-4255-B953-44FE2568EE03-6289-000007FAD5D22F7E/_______image.png] Whether it's to prank other users, provide daily affirmations or inspiration to yourself, or for any other reason, there may be occasions when you want to put a message in the login window in OS X. With the help of Terminal, it's very easy. Type: `$ sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Your message here"` The next time you log out or restart, the message will appear in the log in window. To remove it, use: `$ sudo defaults delete /Library/Preferences/com.apple.loginwindow` ## 28. Make your Mac speak You can make your Mac say anything you want in the currently selected voice. To do that, use the 'Say' command, like this: `Say "whatever you want your Mac to say"` As soon as you hit Return, your Mac will speak the words you typed. ## 29. Get rid of Dashboard [image:93541F80-83C3-4E33-9A4C-FDB2C7845358-6289-000007FAD5AC9451/________image.png] Let's face it, who uses [Dashboard](https://www.macworld.co.uk/how-to/use-widgets-mac-3794391/) anymore? For most of us, the only clue to its continued existence is its appearance in Mission Control. If you'd like it gone completely, use this command: `defaults write com.apple.dashboard mcx-disabled -boolean TRUE` `killall Dock` To bring it back, use the same command, but replace TRUE with FALSE. ## 30. Rebuild Spotlight [Spotlight](https://www.macworld.co.uk/how-to/spotlight-search-tips-os-x-el-capitan-yosemite-3531280/) is OS X's search tool and one which is incredibly useful. Occasionally, however, it can become corrupt or stop working properly. The solution is to rebuild it. Guess what? Yes, theres a Terminal command for that too. Use: `sudo mdutil -E /Volumes/DriveName` Where 'DriveName' is the name of the volume whose index you want to rebuild. In most cases, this will be your startup volume, and unless you've changed it, it will be called 'Macintosh HD.' Alternatively, if you have volumes mounted on your Mac's Desktop, you can drag the one you want onto the Terminal window, and ignore '/Volumes/DriveName.' #documentation # Matt: What would a real Web3 look like? From: Matt To: davidblue@extratone.com Date: Dec 7, 2021 Subject: Matt: What would a real Web3 look like? What would a real Web3 look like? From write.as/matt/what-would-a-real-web3-look-like Seemingly overnight, there’s been a whole new version of the Web invented, dubbed “web3.” I’ve seen a lot of people talk about it online lately, so I started looking into it to see if it’s worth paying attention to. What I’ve found is summed up in my (slightly cheeky) web3 analysis. Basically, it’s that “web3” is a set of blockchain-based technologies with some very specific use cases. Many proponents are happy to make wild claims as to how this is truly “the future,” and more thoughtful community members seem to be drowned out by hype men who look at the tech uncritically. From my conversations and research, it seems to me “web3” is at best poorly branded, having less to do with the Web itself than new ways to do commerce on the web. Overall, the hype seems disproportionate to the real-world usability or application, even when the idea is eventually fully realized. Seeing that, I started wondering: if not this, what would a true iteration of the Web look like? Perspective I’ll use the term “Web 3.0” instead of “web3” to distinguish between the Web I’m talking about and the blockchain-based one. What I’ll offer here is just one view on what Web 3.0 might be. I’ll call it a people’s definition, as I’m not involved in any standards-making body, not an academic, and have no credentials other than I’ve used the Web for 20-some years. I’ve built Web-sites and Web apps, and Web apps that help other people build Web-sites. I’ve gotten involved with Web projects and Web standards that interested me along the way. I’m concerned with the Web philosophically and practically — both its core “spirit” and what it does for people in real life, today. My experience points to some key components needed in a next-version Web: • Web 3.0 is comprised of people • Web 3.0 lets anyone build for it, and lets you help others join in • Web 3.0 is openly accessible These aren’t new ideas as much as core principles to carry throughout any iteration of the Web. They’re also where web3 starts to falter — “smart contracts,” finance, and code-based organizations replace people and their (yes, messy) decision-making; participation isn’t open, but available only with a “wallet,” etc. (more on this below). We’ve also learned a lot about what we need on the Web from our “2.0” era — many ideas which the web3 crowd has rightly latched onto, and then reframed to fit the capabilities and limitations of blockchain. Those largely revolve around data: who owns it, who controls it, and how it moves around. So, I’d say: • Web 3.0 gives users as much control over their data as possible, letting them choose when to share it or not, or revoke their permission • Web 3.0 lets users choose who controls their data (whenever they share it) • Web 3.0 supports interoperability, or the ability for one application to communicate and exchange with another • Web 3.0 defaults to minimal data collection (though this is more of an attitude than a clear-cut attribute) I’ll elaborate below. People, businesses, and organizations From its earliest days, the Web has been about people. This has been obvious from Web 1.0-era personal sites to Web 2.0 blogs and social media. At its core, for anything to call itself “Web whatever,” it needs to revolve around people (and by extension, the businesses, organizations, and associations they form). We already have parts of the Web that show how bad it can get when things are made for robots. It’s every recipe site that has someone’s rambling life story before you reach the actual recipe. It’s keyword-laden sales pages that are incomprehensible to humans. There’s a reason for these websites — they were written for computers, specifically the ones deployed by search engines like Google. While no person wants to read monotonous SEO articles, computers gobble it up happily, and in turn make or break entire businesses and markets. The real Web, the Web made of people, suffers as content designed for robots proliferates. The “web3” as imagined today also prioritizes computers over people. Instead of relying on our natural ability to socially organize ourselves, web3 wants to enforce organization through unchangeable code. Instead of relying on existing institutions to enforce agreements and rights, web3 wants to entrust those to static logic. This “web3” is technology as social solution — and I’m not sure why that will suddenly work this time. What it ultimately leads to, I believe, is a strange and fragile frontier where our older social institutions can no longer help us. “Ownership” means something different — or absolutely nothing — now. Fraud, hacks, bad contracts, and misguided “laws” (bugs in the contract) no longer have any recourse. It wasn’t in the programming; your money is gone, or the intended agreement simply wasn’t met. It is distrust as a feature, not a bug. Open access The original dream of the Web, I believe, has always been about open access to information. With Web 2.0, it also became open access to communication. That innate feature of open access is the reason I could learn about the world from my bedroom at age 8. It’s the reason I didn’t need a dollar to learn how to actually build for the Web itself, and I could eventually follow my interests into adulthood, creating my entire career working with computers. How many untold stories are there of the Web enabling people to build the knowledge, careers, businesses, and lives that they want? Has there been a single force this powerful in our history? Has it been so cheap and widely available? It’s an enormous achievement for humanity to have reached this point. Not only have we evolved and organized to form complex societies, we can now communicate across the globe at near-zero cost, thanks to the internet and the Web. To now make finance the basis of everything (with “web3”) would be antithetical to the very foundation of the Web. It would erode a key aspect of the medium, actively making it worse, as early adopters and the wealthy prosper, while everyone else is left out of this alleged “future.” There is nothing wrong with commerce and finance on the Web. But a real Web 3.0 — and all the tech that underpins it — must be inherently open. It would continue prioritizing open access and participation over monetization. Ownership and interoperability The problems of data ownership and interoperability are probably the largest social-technical problems of today’s Web. The proposed “web3” rightfully leverages this terminology to garner support, and a true Web 3.0 will address these problems with a variety of solutions. The problems are multifarious: Who controls my data? What do they do with it and who do they sell it to? Do I have a choice? How do I keep the work I created on the Web? Can I remove it at any time? How do I move to another provider when this one stops serving me? Is there a chance I’ll unintentionally lose access to my data? What’s my recourse? And so on. There are already interesting solutions being worked on right now, certainly outside the walled gardens of Big Tech, but also without the limitations of blockchain. They might address the problem directly and individually — Tim Berners‑Lee’s Solid project aims for this, with a specification for storing data in a decentralized way. P2P projects like Scuttlebutt and IPFS also take this approach. In these cases, users are more “sovereign individuals” who can move freely about the digital world, taking their data with them. It has its use cases today, and also its limitations in certain scenarios. Alternatively, a “Web 3.0” app might address the issue more socially and collectively, as the “fediverse” does. It’s comprised of interoperable software on top of a standard protocol, and a culture of shared knowledge and free software development. I find this approach the most honest and good when it comes to the questions of data ownership. It supports both “sovereign” data ownership (I can host my data), and social / trusted ownership (my friend or a business I trust can host my data). It’s also pretty transparent about where your data goes and how it’s used. If anything feels the most “Web 3.0” to me today, it’s the fediverse. It’s certainly the most human — it allows any kind of organization to form around both platform development (often an open source community) and data stewardship (could be an individual, non-profit, co-op, small business, etc.). There’s no overhead from unnecessary organizations or programmed contracts — people know how to coordinate naturally. It allows but doesn’t require commerce to keep the ecosystem alive. And if there is commerce, it naturally supports healthy competition, i.e. multiple service providers. Finally, it’s both useful and user-friendly enough for anyone in the world to utilize today — something sorely lacking in “web3.” Minimal data collection This is less of a clear-cut aspect of Web 3.0 — more of an attitude towards data, and a side effect that might come out of an ecosystem of interoperable software. If users own and control their data, and can take it to any platform they choose, I imagine platforms will have to compete on a slightly more level playing field. There would still be many differentiating factors, but if it ever came down to policy differences, I think privacy-focused providers would tend to win out. We often talk about how Big Tech profits well off the business of indiscriminate data collection — and they sure do. The “web3” proponents mention this, but then point to a complicated, pure tech solution that doesn’t even solve the problem. Today’s “web3” can certainly tout minimal data collection if they want. But you can’t call anything “private” that doesn’t let you freely delete your data when you want to. As long as blockchain is the basis of the “web3,” it will never be “private” in the way people need it to be. What it comes down to Ultimately, a true Web 3.0 will use whatever social and technological solutions are available to to improve Web 2.0 shortcomings around data privacy, ownership, portability, and control. It won’t limit itself to one tech stack, or one social structure. It won’t reset everything to start from scratch. Instead, it’ll leverage natural intuition and existing social institutions to move us forward. It will mix protocols, software, network topology, the existing Web, business / ownership models, and incentive structures. It will be made from the bottom-up, not over-hyped from the top-down. It will prioritize open access over exclusivity, and revolve primarily around people, not just tech. The “web3” proposed today is simply too limited to deserve the name. Any Web 3.0 will be entirely about the Web itself, and all the humans on it. What do you think? What am I missing in the future I’ve outlined? Am I off-base? Is blockchain really all the Web needs? Or do you agree? Should we band together to build this “3.0” Web? Do you have some ideas on this? I’d love to hear what you think — please get in touch. Originally published on Matt, a blog you subscribe to. Sent to davidblue@extratone.com. Unsubscribe. [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjIwMjExMjA3MTkzOTI3LjQy%0D%0AY2JkZDJiNDAwYmNhNTJAd3JpdGVhc2xldHRlcnMuY29tOzM1NjQzODE3NTk%3D) #archive # Bear Tips & Tricks We strive to keep Bear light and flexible. But we also pack in lots of powerful, sometimes hidden features for the pro user crowd. Here are some of the highlights we think are quite useful. You can find plenty more on [our blog](https://blog.bear.app) , our [Reddit community](https://reddit.com/r/BearApp) , and our [Twitter account](https://twitter.com/BearNotesApp/) . * Add anywhere in a note to organize them in the Sidebar * [Pin notes](https://blog.bear.app/2017/09/bear-tips-pin-notes-to-the-top-to-stay-on-task/) to the top of the Note List for quick access * Encrypt individual notes with a password known only to you * Quickly add emoji anywhere in notes by typing a colon (:) and a few letters * [Take action on multiple notes with the Drop Bar](https://blog.bear.app/2018/02/bear-tips-take-action-on-multiple-notes-with-the-drop-bar/) on iPhone and iPad * [Export one, some, or all notes](https://blog.bear.app/2019/04/bear-tips-how-to-export-one-some-or-all-notes-to-a-variety-of-formats/) to a variety of formats * [Create new notes with your voice](https://bear.app/faq/Bear%20for%20Apple%20Watch%20overview/) on Apple Watch * Use [Shortcuts and Siri](https://blog.bear.app/2018/11/how-to-automate-bear-with-shortcuts-and-siri/) to automate Bear on iPad and iPhone ## Advanced search 🔎 Bear can instantly search all your notes, but it also has a number of [advanced search operators](http://www.bear-writer.com/faq//Advanced%20search%20options%20in%20Bear/) that can focus on certain types of content in your notes. For example, you can type @todo in the search box to find all notes with tasks, or @files to find all notes with attachments. You can also use @images to find *just* those kinds of attachments. Finally, you can use double quotes to search specific phrases, such as "bear is cool". ## Browser and app extensions 🧩 It’s easy to collect text, images, attachments, and entire web pages from browsers and other apps. Learn how to add and use Bear’s extensions for [iPad, iPhone](http://www.bear-writer.com/faq//Extensions/iOS%20App%20Extension/) , and [Mac](http://www.bear-writer.com/faq//Extensions/Browser%20extensions/) . ## Tap tags in notes 🏷 All tags in Bear are tappable and clickable. To give it a try, make sure you aren’t editing a note by pressing Command + Return with a keyboard, or swiping to hide the keyboard on iOS. Then, in any note, tap a tag—the Note List will appear and show you all notes which contain that tag. On Mac, you can hide the Sidebar and/or Notes List to enjoy distraction-free writing (on iOS, this happens automatically). Use the Layout Selector (the bottom right icon) to see your options. ## Link notes together ⛓ One of Bear’s really fun and useful features is Live Note Links. It’s great for quickly moving between multiple notes in a project, creating a choose-your-own adventure, or using multiple notes to welcome users to a fuzzy, red new app! 😉 To link one note in another: * Type two brackets like this: **[[** anywhere in a note * Type a couple letters of the title of a note you want to link * A suggestion box will appear with matching notes * Select one of the suggested notes, and Bear will insert the note’s name, a link, and two final brackets in your current note **Tip**: If you’re using a keyboard with a Mac or iPad, you can use the arrow keys and Return to select a suggested note. As of Bear 1.7, these Live Note Links now automatically update even if the note’s title changes. ## Our community 👥 We have an incredible community of Bear users who share ideas, tips, workflows, and even some of their own tools built to work with Bear. Here are some good places to start exploring it all: * [Reddit/r/BearApp](https://reddit.com/r/BearApp) * [Twitter](https://twitter.com/BearNotesApp) * [Facebook](https://www.facebook.com/BearNotes/) * [Bear Power Pack](https://github.com/sbusso/Bear-Power-Pack/blob/master/README.md) - A third-party collection of tools built by the community to work with Bear ## Feedback 💬 We would *love* to hear your feedback at [press@shinyfrog.net](mailto:press@shinyfrog.net) . Let us know if you need an App Store code to [try Bear Pro](https://blog.bear-writer.com/bear-pro-is-a-great-big-bear-hug-for-your-notes-code-and-prose-351cd60c0cc1) for your readers. # Using Drafts’ Previews folder and Obsidian’s assets folder, you can also draft notes with images in the Drafts app [2021-10-11](https://sorashima.hatenablog.com/archive/2021/10/11) ### Technical background **Reference of images in Obsidian** If you put an image file directly under Obsidian’s vault, the display of File [Explorer ](http://d.hatena.ne.jp/keyword/%A5%A8%A5%AF%A5%B9%A5%D7%A5%ED%A1%BC%A5%E9) will be messed up. Fortunately, there is a subfolder called assets, and you can put files other than those notes in it. そこに保管されたファイルは 、「![[abc.png]] 」で表示される。(本来は「![[assets/abc.png]]」とする必要があるはず) もちろん [Markdown](http://d.hatena.ne.jp/keyword/Markdown) の書式である「![](abc.png)」でも表示される。 ※You can change the destination where the attachment will be saved in the settings. **Reference to images in Drafts** Unlike editor apps that edit other text files, Drafts apps are intended to create drafts as their name suggests. It’s not for working with existing text files. Also, the entered document is not saved as a single file in some folder. そのため画像を表示したい時は、URLで参照できる場所に画像ファイル置き、それを参照する。(例えば、![](https://foobar.com/img/abc.png)の様に) But Drafts has a special folder called Previews. *In preview, place local images, , , and other file-based assets in the* [JavaScript](http://d.hatena.ne.jp/keyword/JavaScript) [style sheets](http://d.hatena.ne.jp/keyword/%A5%B9%A5%BF%A5%A4%A5%EB%A5%B7%A1%BC%A5%C8) **iCloud Drive/Drafts/Library/Previews/***folder. You can also incorporate those assets into the preview by doing so. If you place the assets you want to incorporate in this folder or a subfolder of that folder, you can browse these assets through the of the HTML preview template.* [relative path ](http://d.hatena.ne.jp/keyword/%C1%EA%C2%D0%A5%D1%A5%B9) [Previews - Drafts User Guide](https://docs.getdrafts.com/docs/editor/previews) iCloud Drive/Drafts/Library/Previews/abc.png The image file in ![](abc.png) You can refer to it. It behaves the same as the Obsidian assets folder, and there is no need to make any changes to the draft. **The shortcut function has been expanded.** Previous shortcut apps have access to locations other than in the Shortcuts folder of iCloud Drive due to the restrictions of [iOS](http://d.hatena.ne.jp/keyword/iOS) /iPadOS protection function “ [Sandbox](http://d.hatena.ne.jp/keyword/%A5%B5%A5%F3%A5%C9%A5%DC%A5%C3%A5%AF%A5%B9) “, users can access places other than in the Shortcuts folder of [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) Drive. I had to specify a place. That’s why [iOS](http://d.hatena.ne.jp/keyword/iOS) /iPadOS has become version 15 and incorporates a mechanism called “folder bookmarks” that allows you to specify folders that can be accessed in advance. Thanks to that, without the help of apps such as Toolbox Pro and Scriptable that support folder bookmarks, * Drive/Drafts/Library/Previews/* [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) F Forder, * Drive/Obsidian/Vault folder/assets* [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) folder, *(in this _ on this )/Obsidian/Vault folder/assets* [iPhone ](http://d.hatena.ne.jp/keyword/iPhone) [iPad](http://d.hatena.ne.jp/keyword/iPad) form Da has become easy to access. **In other words, with just shortcuts, you can now copy image files in Drafts’****Previews****folder to Obsidian’s****assets****folder.** So, * **Save the selected image file in Drafts’****Previews****folder and insert the image link to the drafts action + shortcut** 1 Let the user choose the image files and save them in the Drafts Previews folder ( [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) Drive/Drafts/Library/Previews/). 2 Insert those image links into the draft. and, * **Drafts action + shortcut to copy the linked image file of the image link written during the draft from the Drafts****Previews****folder to the Obsidian****assets****folder** 1 [Draft action: ](https://actions.getdrafts.com/a/1rU) Extract image links written during draft by [Save images in Drafts’ Previews folder](https://actions.getdrafts.com/a/1rU) . 2 From them, get the image files stored in the Drafts Previews folder ( [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) Drive/Drafts/Library/Previews/). 3 Obsidian assets folder ( [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) Drive/Obsidian/{Vault folder}/assets, or (in this [iPhone ](http://d.hatena.ne.jp/keyword/iPhone) | on this [iPad](http://d.hatena.ne.jp/keyword/iPad) )/Obsidian/{Vau Copy to lt folder}/assets). I made it. ### operation **I’ll try using it** [image:995AC7EF-DF94-42EC-96CD-0DDA7A921A63-16571-000029AF2E69E7EF/20211010233523.png] Insert two images in this carlet position [image:819709CD-4EE1-4750-99F6-7D98D471A5AB-16571-000029AF2E34D03A/20211019193712.jpg] Save images in Drafts’ Previews folder action [image:E702A305-4862-497F-AB05-594A477D8392-16571-000029AF2DFF31AF/20211010234302.jpg] Select two images and select “Add”. And if you look at Drafts’ *Previews*folder in the Files app, [image:2B1E0FB2-081C-4995-A57C-B96F73C1B007-16571-000029AF2DCC0488/20211010234525.png] You can confirm that the image file has been copied. And in the draft, [image:CCC289FC-F18E-40FE-A117-55DE8D0B5D92-16571-000029AF2D9D4181/20211010234748.png] The link to the image file was inserted. [image:8319B942-C7B4-4E68-B430-FD5E5DD8675C-16571-000029AF2D5FDD1F/20211010235042.png] When you perform the Drafts app standard [Markdown ](http://d.hatena.ne.jp/keyword/Markdown) preview action, the image will be displayed. [image:0946271A-6AC4-4643-B412-FDCA7558B6F8-16571-000029AF2D2BEBDF/20211019193754.jpg] Now, copy images from Drafts’ Previews folder to Obsidian vault’s assets folder action And if you look at the *assets*subfolder of Obsidian’s Vault folder in the file app, [image:E8F7E07B-29C0-4F9D-8FD1-6A1F769AEB61-16571-000029AF2CF6D317/20211010235734.jpg] You can confirm that the image file has been copied. [image:16EF5D40-2CFB-4578-BE3E-D2F375FFAA81-16571-000029AF2CB565C1/20211011000347.jpg] Perform [an action to save directly to the Voault folder of Obsidian you created before.](https://sorashima.hatenablog.com/entry/Drafts28ObsidianVaultFolder) When I opened Obsidian, [image:8B64E24B-721A-46F4-ADDE-52DD16EAFD56-16571-000029AF2C62A87B/20211011000630.png] A note was displayed with an image. **PREPARATION** **Save the selected image file to the Drafts****Previews****folder and insert the image link into the draft Drafts action + shortcut cut** * Drafts action * Save images in Drafts’ Previews folder * [https://actions.getdrafts.com/a/1rU](https://actions.getdrafts.com/a/1rU) * shortcut * StoreImgsInPreviewsFolder * [https://www.icloud.com/shortcuts/567d5d896af24343ac736cb40b0647c2](https://www.icloud.com/shortcuts/567d5d896af24343ac736cb40b0647c2) Specify Drafts’ Previews folder as shortcuts [image:6032A7F5-A0A8-425B-82D4-A0CE4E298CF7-16571-000029AF2C1C4BEB/20211010225713.jpg] Tap here for this action and click “Replace…” [image:2AA77089-425D-4FD9-A937-40F1BE28DE36-16571-000029AF2BC81B9B/20211010230506.jpg] Create a Previews subfolder in the Library subfolder in the Drafts folder in [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) Drive, select it, and select it to “Done”. **Drafts action + shortcut to copy the linked image file of the image link written during the draft from the Drafts****Previews****folder to the Obsidian****assets****folder** * Drafts action * Copy images from Drafts’ Previews folder to Obsidian vault’s assets folder * [https://actions.getdrafts.com/a/1rV](https://actions.getdrafts.com/a/1rV) * shortcut * CopyPreviewsImgs2AssetsFolder * [https://www.icloud.com/shortcuts/9bc1560324cc4c14808d0eaca47e01b4](https://www.icloud.com/shortcuts/9bc1560324cc4c14808d0eaca47e01b4) Specify the Drafts Previews folder as shortcuts and Obsidian Vault assets folder [image:BF6EA031-C5F3-407A-9070-7053CC383892-16571-000029AF2A54D9DE/20211010231534.jpg] Tap here for this action and click “Replace…” [image:4890155A-4BA1-4485-86B0-6C6C13064972-16571-000029AF2A12D084/20211010230506.jpg] Select the Previews subfolder of the Library subfolder in the Drafts folder in [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) Drive and select “Done”. [image:E8603B05-BB27-49A5-ABE0-F44442E13C2D-16571-000029AF29D67F79/20211010232141.jpg] Tap here for this action below it and select “Replace…” [image:8B0003CC-A8D3-4C89-B290-B2955223688A-16571-000029AF299FB962/20211010232520.jpg] Select the assets subfolder in the Vault folder in [iCloud ](http://d.hatena.ne.jp/keyword/iCloud) Drive or in this [iPhone](http://d.hatena.ne.jp/keyword/iPhone) /this [iPad](http://d.hatena.ne.jp/keyword/iPad) , in the Obsidian folder, and select Done. #documentation # On Noir, the Dark Mode Safari Extension [image:DAF1E370-38FB-4841-94B4-75FC7AC896D7-4135-000001A6BE8ABD19/IMG_0707.png] I really resisted the dark mode craze at first and still sorta do, so Noir was one of the paid ($3.99) Safari Extensions I wrote off immediately as a hard pass. After using it for about a month though on both my iPhone and Mac (and you know I Browse The World Wide Web a LOT,) - [App Store](https://apps.apple.com/us/app/noir-dark-mode-for-safari/id1592917505) # Brett Terpstra is fully microchipped (@ttscoff) / Twitter [image:9303C9BA-9674-4277-B4AA-10E3937302E3-49316-0000DB8EF57E6781/pQb5CQcd_normal.jpg] @MarkedApp, @SystmCast, @ovrtrd, https://t.co/FtUPzy9NgA. DevRel @Oracle. Tweets are my own. [Brett Terpstra is fully microchipped (@ttscoff) / Twitter](https://twitter.com/ttscoff) # 2021-10-11 DraftsのPreviewsフォルダとObsidianのassetsフォルダを利用して、Draftsアプリで画像付きメモの下書きも可能に [image:B1601308-B9B4-414D-B4F7-2017FF7D5200-16534-000029A0BF754A13/20211011003538.png] Obsidianの保管庫(vault)直下に画像ファイルなども入れてしまうと、ファイル [エクスプローラ](http://d.hatena.ne.jp/keyword/%A5%A8%A5%AF%A5%B9%A5%D7%A5%ED%A1%BC%A5%E9) の表示がゴチャゴチャとしてしまう。 幸いassetsというサブフォルダがあり、その中にそれらノート以外のファイルを入れておける。 そこに保管されたファイルは 、「 `![[abc.png]]` 」で表示される。(本来は「 `![[assets/abc.png]]` 」とする必要があるはず) もちろん [Markdown](http://d.hatena.ne.jp/keyword/Markdown) の書式である「 `![](abc.png)` 」でも表示される。 ※添付ファイルが保存される先は設定で変更できる。 #### Draftsの画像の参照 他のテキスト **ファイル** を編集するエディタアプリと異なり、Draftsアプリはその名前の通り下書きを作ることが目的のアプリ。既存のテキスト **ファイル** を操作するためのものではない。また、入力されたドキュメントはどこかのフォルダに単一ファイルとして保存もされない。 そのため画像を表示したい時は、URLで参照できる場所に画像ファイル置き、それを参照する。(例えば、`![](https://foobar.com/img/abc.png)` の様に) しかしDraftsにはPreviewsという特殊フォルダが存在する。 > *プレビューでは、ローカル画像、[JavaScript](http://d.hatena.ne.jp/keyword/JavaScript)、[スタイルシート](http://d.hatena.ne.jp/keyword/%A5%B9%A5%BF%A5%A4%A5%EB%A5%B7%A1%BC%A5%C8)、その他のファイルベースのアセットを **iCloud Drive/Drafts/Library/Previews/** のフォルダーに配置することで、それらのアセットをプレビューに組み込むこともできます。 組み込みたいアセットをこのフォルダーまたはそのフォルダーのサブフォルダーに配置すると、HTMLプレビューテンプレートの [相対パス](http://d.hatena.ne.jp/keyword/%C1%EA%C2%D0%A5%D1%A5%B9) を介してこれらのアセットを参照できます。*   > **[Previews - Drafts User Guide](https://docs.getdrafts.com/docs/editor/previews)** `iCloud Drive/Drafts/Library/Previews/abc.png` にある画像ファイルは、 `![](abc.png)` で参照できる。 Obsidianのassetsフォルダと同じ振る舞いになり、ドラフトに変更を加える必要がない。 #### ショートカットの機能が拡張された これまでのショートカットアプリは、[iOS](http://d.hatena.ne.jp/keyword/iOS) /iPadOSの保護機能「 [サンドボックス](http://d.hatena.ne.jp/keyword/%A5%B5%A5%F3%A5%C9%A5%DC%A5%C3%A5%AF%A5%B9) 」の制限により、[iCloud](http://d.hatena.ne.jp/keyword/iCloud) DriveのShortcutsフォルダ内以外の場所にアクセスするには、その都度ユーザーが場所を指定する必要があった。 それが [iOS](http://d.hatena.ne.jp/keyword/iOS) /iPadOS がバージョン15になって、「フォルダ ブックマーク」という、前もってアクセスできるフォルダを指定しておける仕組みが取り入れられた。 そのおかげで、フォルダ ブックマークに対応したToolbox ProやScriptableなどのアプリの力を借りることなく、*[iCloud](http://d.hatena.ne.jp/keyword/iCloud)Drive/Drafts/Library/Previews/* フォルダーや、*[iCloud](http://d.hatena.ne.jp/keyword/iCloud)Drive/Obsidian/Vaultのフォルダ/assets* フォルダや、*(この[iPhone](http://d.hatena.ne.jp/keyword/iPhone) 内|この [iPad](http://d.hatena.ne.jp/keyword/iPad) 内)/Obsidian/Vaultのフォルダ/assets* フォルダに簡単にアクセスできるようになった。 **つまり、ショートカットだけで、Draftsの*Previews* フォルダ内の画像ファイルをObsidianの *assets* フォルダにコピーできるようになった。** そこで、 * **選んだ 画像ファイルをDraftsの*Previews* フォルダに保存し、それの画像リンクをドラフトに挿入するDraftsアクション+ショートカット** 1. ユーザーに画像ファイル達を選ばせ、それらをDraftsのPreviewsフォルダ( [iCloud](http://d.hatena.ne.jp/keyword/iCloud) Drive/Drafts/Library/Previews/)に保存する。 2. それらの画像リンク達をドラフトに挿入する。 と、 * **ドラフト中に書かれた画像リンクのリンク先画像ファイルを、Draftsの*Previews* フォルダからObsidianの *assets* フォルダにコピーするDraftsアクション+ショートカット** を作った。 ### 運用 #### 使ってみる [image:BF290921-3949-47BF-9799-6D8DC1BFE513-16534-000029A0BF5B3C45/20211010233523.png] このキャレットの位置に画像を2つ挿入する [image:8D40CA8E-A980-4276-A523-EC394F881E3C-16534-000029A0BF3DED30/20211019193712.jpg] Save images in Drafts' Previews folderアクションを実行 [image:AD120062-FF35-4B17-B133-C75393DBCD8D-16534-000029A0BF1D1414/20211010234302.jpg] 画像を2つ選択して「追加」 そして、ファイルアプリでDraftsの *Previews* フォルダを見てみると、 [image:4EB536BF-F9E3-4F8B-B731-6A66606999F0-16534-000029A0BEF70383/20211010234525.png] 画像ファイルがコピーされていることを確認できる そしてドラフトには、 [image:60A4C0E3-B94B-4F63-8A32-46111F36BB24-16534-000029A0BEC7AEA5/20211010234748.png] 画像ファイルのリンクが挿入された [image:DF6BAFD6-59F3-47D6-975F-8372DB1AA3E3-16534-000029A0BE999CCA/20211010235042.png] Draftsアプリ標準の [Markdown](http://d.hatena.ne.jp/keyword/Markdown) プレビューアクションを実行すると画像が表示される [image:15FB8EC5-AA9C-4428-A46F-F9E10D0444E4-16534-000029A0BE6EC431/20211019193754.jpg] ここでCopy images from Drafts' Previews folder to Obsidian vault's assets folderアクションを実行 そして、ファイルアプリでObsidianのVaultのフォルダの *assets* サブフォルダを見ると、 [image:051D2BC7-E89F-41B1-94B3-CBA59A3CB388-16534-000029A0BE4D1D98/20211010235734.jpg] 画像ファイルがコピーされていることを確認できる [image:CDDA32B2-0936-4C5E-8893-E64D04612D58-16534-000029A0BE2CC0DD/20211011000347.jpg] [以前に作ったObsidianのVaultフォルダに直接保存するアクション](https://sorashima.hatenablog.com/entry/Drafts28ObsidianVaultFolder) を実行 Obsidianを開いてみると、 [image:1BEDFCCC-742A-4292-BD16-6600C84C2096-16534-000029A0BE0DF263/20211011000630.png] 画像付きでメモが表示された #### 前準備 ##### 選んだ 画像ファイルをDraftsの *Previews* フォルダに保存し、それの画像リンクをドラフトに挿入するDraftsアクション+ショートカットカット ショートカットにDraftsのPreviewsフォルダを指定する [image:AD3D4ADA-7010-4F6C-8CDF-F40A69E5379E-16534-000029A0BDE8EE0E/20211010225713.jpg] このアクションのここをタップし、「置き換え…」 [image:B3332640-D611-46D1-9C3A-8D7D9ED3FC47-16534-000029A0BDC3F646/20211010230506.jpg] [iCloud](http://d.hatena.ne.jp/keyword/iCloud) DriveのDraftsフォルダのLibraryサブフォルダにPreviewsサブフォルダを作り、それを選択して「完了」 ##### ドラフト中に書かれた画像リンクのリンク先画像ファイルを、Draftsの *Previews* フォルダからObsidianの *assets* フォルダにコピーするDraftsアクション+ショートカット ショートカットにDraftsのPreviewsフォルダと、ObsidianのVaultのassetsフォルダを指定する [image:DFF4FC10-4F54-423E-8FC6-6A9608CAF0F9-16534-000029A0BDA1558B/20211010231534.jpg] このアクションのここをタップし、「置き換え…」 [image:9FBDA6AF-2FE4-46F7-9263-6B954BCF876D-16534-000029A0BD757962/_20211010230506.jpg] [iCloud](http://d.hatena.ne.jp/keyword/iCloud) DriveのDraftsフォルダのLibraryサブフォルダのPreviewsサブフォルダを選択して「完了」 [image:1D72BA9D-53DB-4385-B9D8-4AA7FE61D4AA-16534-000029A0BD4E0253/20211010232141.jpg] その下のこのアクションのここをタップし、「置き換え…」 [image:CBAA39B6-2BE2-415D-A847-0A4783529E2B-16534-000029A0BD100763/20211010232520.jpg] [iCloud](http://d.hatena.ne.jp/keyword/iCloud) Driveまたは、この [iPhone](http://d.hatena.ne.jp/keyword/iPhone) 内/この [iPad](http://d.hatena.ne.jp/keyword/iPad) 内の、Obsidianフォルダ内のVaultのフォルダ内のassetsサブフォルダを選択して「完了」 [2021-10-11 DraftsのPreviewsフォルダとObsidianのassetsフォルダを利用して、Draftsアプリで画像付きメモの下書きも可能に](https://sorashima.hatenablog.com/entry/ObsidianImagePreviewOnDrafts) # 2021 PERDITION Icon Set [image:A01C9E8A-FA30-476B-8DE4-46428F0CDF37-4321-000000D9BCACD26E/2021-12-23 02.31.42.gif] [2021 PERDITION Icon Set · extratone/bilge Wiki](https://github.com/extratone/bilge/wiki/2021-PERDITION-Icon-Set) * ==[**Shortlink**](https://bit.ly/2021perdition): `https://bit.ly/2021perdition`== [image:CFDD9179-2239-4044-AEB0-03F253190302-4321-000000D9BCAF571A/IMG_0469.png] * [2021 PERDITION Icon Set · Issue #289 · extratone/bilge](https://github.com/extratone/bilge/issues/289) * [2021PERDITION.zip](https://www.icloud.com/iclouddrive/02aPv7l4fvbvF8HDoGz9QgW3g#2021PERDITION) (iCloud) * [2021PERDITION.rar](https://www.icloud.com/iclouddrive/03ahRfaU_HWS3AqSukkzoCY8A#2021PERDITION) (iCloud) * [2021NOJAR.zip](https://www.icloud.com/iclouddrive/026hRU1p84Ar27TsFH0TJ0eIA#2021NOJAR) (iCloud) * [2021NOJAR.zip](https://davidblue.wtf/2021/perdition/2021NOJAR.zip) (NeoCities) # What’s new in Bear 1.7 #Bear##Bear# Bear 1.7 is a big release with some great new features. For the new note encryption feature, we enlisted a security audit of our code from a third-party firm. Please contact us with any questions or review code requests at press@shinyfrog.net. ## Encrypt individual notes (Bear Pro required) Set a password to encrypt individual notes, and use Face/Touch ID to unlock them. **IMPORTANT**: This password is known only to you, we cannot reset or retrieve it. ## Lock Bear (Bear Pro required) Your device may be unlocked, but Bear doesn’t have to be! You can now get another layer of privacy by requiring Face/Touch ID to unlock Bear. ## Live Note Links Links to Bear notes from other notes now update automatically, even if the note title changes. Learn how Note Links work at bear.app/faq/ ## Emoji autocomplete Quickly find the perfect emoji with just a couple keystrokes. Anywhere in a note, just type a colon (:) and a couple letters to see emoji suggestions—try :smile for example! This is great for journaling your day, making headings more identifiable, and many other creative uses. Plus, it even works on iPad and iPhone. ## New Special Searches It is now easier to find just the right notes by specifying a tag, a tag without children (nested tags), or search just the titles of notes. Learn about Special Searches at [bear.app/faq/](https://bear.app/faq/) Special Search commands are now also highlighted in the search box with a custom color. ## New TagCons Many by popular request! TagCons help your tags stand out in the Sidebar. Learn more about them at [blog.bear.app](https://blog.bear.app) and [bear.app/faq/](https://bear.app/faq/) ## Two new Bear Pro themes The new Gandalf and Ayu Mirage themes for Bear Pro subscribers offer more options for just the right environment to write. ## New keyboard on Apple Watch Bear for Apple Watch is great at voice-to-text dictation for notes. Now you can also write notes more quickly with a [new FlickType keyboard](https://www.flicktype.com) built specifically for this very small screen. ## Faster Spotlight search Under-the-hood improvements to Bear’s support for Spotlight search from anywhere in iOS should bring faster over-the-hood search results on iPad and iPhone. ## Other improvements Too many to list, but trust us. This deserved a mention. We also improved the word counter and reading time estimate for Asian languages. Please contact us with any questions or review code requests at press@shinyfrog.net. # June 2015 WWDC Keynote - The Beginning of The Split [image:18AF57C0-E007-46B9-A5CA-C9D7140EE46D-532-0000000A72F42FEC/IMG_0445.jpeg] At the `56:22` marker into [the WWDC 2015 introductory keynote](https://pca.st/episode/b8cae0b0-f09a-0132-1358-059c869cc4eb?t=3382.0). `https://pca.st/episode/b8cae0b0-f09a-0132-1358-059c869cc4eb?t=3382.0` #keys # Doc Searls Weblog : Rage in Peace From: RSS Feed via IFTTT To: ihadtopee@gmail.com Date: Dec 21, 2021 Subject: Doc Searls Weblog : Rage in Peace Doc Searls Weblog : RSS Feed via IFTTT The Cluetrain Manifesto had four authors but one voice, and that was Chris Locke‘s. Cluetrian, a word that didn’t exist before Chris (aka RageBoy), David Weinberger, Rick Levine and I made it up during a phone conversation in early 1999 (and based it on a joke about a company that didn’t get clues delivered by train four times a day), is now tweeted constantly, close to 23 years later. (And by now belongs in the OED.) Our conversational foursome might not have had a material outcome had Chris not emailed this little graphic to the other three of us: After we got that, we had to put up the Cluetrain website. And then we had to expand that site into a book, thanks to the viral outbreak of interest that followed a column about the site—and Chris especially, face and all—in The Wall Street Journal. A great enemy of marketing-as-usual, nobody was better than Chris at spreading a word. Alas, Chris died yesterday, after a long struggle with COPD. (Too much smoke, for too long. Got my dad and my old pal Ray too. That it’s becoming unfashionable is a grace of our time.) You know how, when you’re first getting to know each other, they exchange stories about parts of their lives? It’s hard to top Chris’s. For example, I remember telling Chris that my parents were frontier types who met in Alaska. While I thought that might take us down an interesting story hole, Chris blasted open a bigger one of his own: “My father was a priest and my mother was a nun.” Once when I missed a plane from SFO to meet Chris in Denver, I mentioned that I was standing next to a strangely wide glass wall at the just-vacated gate in Terminal 1. “I know that gate well,” he said. “And that glass is a trip. I once missed a plane there myself while I was on acid and got totally into that glass wall.” I don’t remember what he said after that, except that it was outrageous (for anyone but Chris) and I couldn’t stop laughing. I have more to say, but not enough time right now. (Holiday stuff calls.) So I’ll leave you with this, also from Chris, in Cluetrain: And remember the man who said it. Link : http://blogs.harvard.edu/doc/2021/12/21/rage-in-peace/ Manage Unsubscribe from these notifications or sign in to manage your Email service. [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjYxYzJhMjYyNGNmMzJfMTc2Y2JjYjMz%0D%0AMzg3YTFAc2F0ZWxsaXRlLXByb2Qtd29ya2VyLTY0NzliYzViNzctNDY4OGMubWFp%0D%0AbDtnSUQ6MTcxOTgxNzIxNjIwMjM5NzY3OTs0MjY4NTgyNjU4) #shs #email # # MacOS Applications List [image:E2120A14-E25C-452B-91B2-418245A27E55-3300-0000011A1DC88648/MacOS Applications List.jpeg] [Stellar for Reddit](https://apps.apple.com/us/app/stellar-for-reddit/id1566795636?mt=12) [image:59047A2C-CFBF-4CC3-B9EA-11C24E59FF58-3300-0000011A1DC79720/MacOS Applications List.jpeg] [Cheatsheet Notes](https://apps.apple.com/us/app/cheatsheet-notes/id1468213484?mt=12) [‎Help Mail Help You : App Store Story](https://apps.apple.com/us/story/id1495454708) [image:9D71AC76-ED46-41E0-966B-4DA9CDF89E01-3300-0000011A1DC69615/MacOS Applications List.jpeg] [MarsEdit 4 - Blog Editor](https://apps.apple.com/us/app/marsedit-4-blog-editor/id1198319098?mt=12) [image:377ED63C-041C-47EB-A391-BA08212694B1-3300-0000011A1DC57F61/MacOS Applications List.jpeg] [‎Get Started With Safari Extensions : App Store Story](https://apps.apple.com/us/story/id1377753262) [image:112D2EF9-99E2-4C1B-AEE1-97672ABCEE6B-3300-0000011A1DC4512C/MacOS Applications List.jpeg][image:A9898B33-64E1-4A08-84A2-E4C9A54EA87F-3300-0000011A1DC35090/MacOS Applications List.jpeg] [Tabs to Links](https://apps.apple.com/us/app/tabs-to-links/id1451408472?mt=12) [Popcorn for Safari](https://apps.apple.com/us/app/popcorn-for-safari/id1535719670?mt=12) [image:BD1CB42A-E09C-45E8-891C-7BD804D9A5AD-3300-0000011A1DC2569E/MacOS Applications List.jpeg][image:53F49AD7-2B52-4FFD-B760-10DB7D66F8A8-3300-0000011A1DC1604A/MacOS Applications List.jpeg] [‎5 Ways to Customize Word : App Store Story](https://apps.apple.com/us/story/id1498551285) [image:F7AE9E31-DA58-44E2-A9A5-F538C627164F-3300-0000011A1DC07066/MacOS Applications List.jpeg] [Rethinking News From the Ground Up: How Harleen Kaur’s Ground News is re-centering the industry.](https://apps.apple.com/us/story/id1549982902) [Speech Utility](https://apps.apple.com/us/app/speech-utility/id1583247053?mt=12) [FastScripts: All your scripts at your fingertips.](https://redsweater.com/fastscripts/) [image:8B672033-18AE-44F0-B793-35343356BEB9-3300-0000011A1DBF6EE8/MacOS Applications List.jpeg] [‎Grammar Police to the Rescue! : App Store Story](https://apps.apple.com/us/story/id1480588706) [image:D15FDFE0-4BE6-4738-ABBF-A64222183B13-3300-0000011A1DBE7EF1/MacOS Applications List.jpeg] [Gitfox](https://apps.apple.com/us/app/gitfox/id1475511261?mt=12) [SnailGit Lite: Git for Finder](https://apps.apple.com/us/app/snailgit-lite-git-for-finder/id1099475282?mt=12) [image:8FBC09A9-DEF4-47E0-AD1B-08BCADFFD0F0-3300-0000011A1DBD7F3B/MacOS Applications List.jpeg][image:7298CE72-1FC7-47B5-B931-00CBA6B749C6-3300-0000011A1DBC7249/MacOS Applications List.jpeg] [RSS Button for Safari](https://apps.apple.com/us/app/rss-button-for-safari/id1437501942?mt=12) [image:69404F50-9AA7-47A9-8C66-12A165B6D055-3300-0000011A1DBB5F8E/MacOS Applications List.jpeg] [LookUp: English dictionary](https://apps.apple.com/us/app/lookup-english-dictionary/id872564448) [ShareBot for Shortcuts](https://apps.apple.com/us/app/sharebot-for-shortcuts/id1597340986?mt=12) [image:E6498553-F853-4B12-8F5E-C77BC0CEF1B3-3300-0000011A1DBA5BBD/MacOS Applications List.jpeg] [Tincta](https://apps.apple.com/us/app/tincta/id448340648?mt=12) [Textastic](https://apps.apple.com/us/app/textastic/id572491815?mt=12) [image:76ECE4AB-8599-4C6D-A235-1E33E6F3144D-3300-0000011A1DB963E2/MacOS Applications List.jpeg] [G App Launcher](https://apps.apple.com/us/app/g-app-launcher/id1543803459) [image:EEC7D4BC-9BF3-41D6-9B62-5E3CEE61E4BE-3300-0000011A1DB876E1/MacOS Applications List.jpeg] [Tampermonkey](https://apps.apple.com/us/app/tampermonkey/id1482490089?mt=12) [image:02B23FC2-3600-4E44-92FE-3D2CB881E3ED-3300-0000011A1DB78926/MacOS Applications List.jpeg] [Bartender 4 - Take control of your Menu bar](https://www.macbartender.com/) [image:8C00AA68-A195-4A21-B818-A105E4595AC9-3300-0000011A1DB67EF1/MacOS Applications List.jpeg] [TunesMechanic for iTunes](https://apps.apple.com/us/app/tunesmechanic-for-itunes/id1259223205?mt=12) [image:569BAFED-1571-4B26-A5FF-CF70582C4932-3300-0000011A1DB5898D/MacOS Applications List.jpeg] [Amphetamine](https://apps.apple.com/us/app/amphetamine/id937984704?mt=12) [image:D8CECBD7-0C26-4BDC-A720-42E7423DF239-3300-0000011A1DB49ADF/MacOS Applications List.jpeg] [Adobe Lightroom](https://apps.apple.com/us/app/adobe-lightroom/id1451544217?mt=12) [image:E5F5F1AA-1B08-4A6F-A679-327E3FB4B049-3300-0000011A1DB3AC7F/MacOS Applications List.jpeg] [Tweaks for Twitter](https://apps.apple.com/us/app/tweaks-for-twitter/id1567751529?mt=12) [image:4F6B3022-C1A9-4F3F-9758-187A66D215DE-3300-0000011A1DB2BBAC/MacOS Applications List.jpeg] [Hidden Bar](https://apps.apple.com/us/app/hidden-bar/id1452453066?mt=12) [GetIpsum](https://apps.apple.com/us/app/getipsum/id1580281319?mt=12) [image:077EA538-4D78-44C7-828A-0B2F9CB78FE1-3300-0000011A1DB1C5A8/MacOS Applications List.jpeg][image:682E5A6E-294C-486F-923B-A2485953E1BB-3300-0000011A1DB0D395/MacOS Applications List.jpeg] [DaVinci Resolve](https://apps.apple.com/us/app/davinci-resolve/id571213070?mt=12) [image:22CE870D-50C6-4476-9646-DFA7CAF28389-3300-0000011A1DAFE3A5/MacOS Applications List.jpeg] [Lens Studio](https://apps.apple.com/us/app/lens-studio/id1391221278?mt=12) [Aerate for macOS](https://www.bzgapps.com/aerate) [image:C4EB3FC1-CF12-4BF7-81DC-7B00BAE80EBB-3300-0000011A1DAEF44D/MacOS Applications List.jpeg] [Userscripts](https://apps.apple.com/us/app/userscripts/id1463298887?mt=12) [Messenger Black](https://apps.apple.com/us/app/messenger-black/id1478185564?mt=12) [image:584496FA-761A-45CC-AE46-E8BAFC68835D-3300-0000011A1DADE761/MacOS Applications List.jpeg] [Social Fixer for Facebook](https://apps.apple.com/us/app/social-fixer-for-facebook/id1562017526?mt=12) [image:644FD940-3E67-4B17-A2C3-712A6F82F4B2-3300-0000011A1DACE730/MacOS Applications List.jpeg] [JSON Peep for Safari](https://apps.apple.com/us/app/json-peep-for-safari/id1458969831?mt=12) [image:2B890C8C-EBCE-4E33-89E0-24F0E03B6255-3300-0000011A1DABD0A5/MacOS Applications List.jpeg] [Mendeley Web Importer](https://apps.apple.com/us/app/mendeley-web-importer/id1577516695?mt=12) [image:EF904E01-BEA8-48FE-B9E5-89295F5145BD-3300-0000011A1DAABB40/MacOS Applications List.jpeg][image:56D44F1D-9877-4E87-BFC4-5765B80FB571-3300-0000011A1DA9B443/MacOS Applications List.jpeg] [GitHub Wiki Search](https://apps.apple.com/us/app/github-wiki-search/id1594190145?mt=12) [Full Page Screen Capture](https://apps.apple.com/us/app/full-page-screen-capture/id1541862561?mt=12) [image:C59B037D-5332-4907-852A-87B51AF6EF55-3300-0000011A1DA8C0BE/MacOS Applications List.jpeg][image:70ACB3F5-D6E1-4C1E-A2FC-72DF05F9228D-3300-0000011A1DA7D008/MacOS Applications List.jpeg] [Grammatica: Writing for Safari](https://apps.apple.com/us/app/grammatica-writing-for-safari/id1555035467?mt=12) [WhatFont](https://apps.apple.com/us/app/whatfont/id1437138382?mt=12) [Dislikes Democratized Desktop](https://apps.apple.com/us/app/dislikes-democratized-desktop/id1600186713?mt=12) [image:45DFE090-583A-4A8C-8602-3A517D4B1FBD-3300-0000011A1DA5A58D/MacOS Applications List.jpeg][image:FB7439BF-F5B3-4FA4-85BC-BCBB1EFEA2AA-3300-0000011A1DA4B023/MacOS Applications List.jpeg] [Funny Cursors for Safari](https://apps.apple.com/us/app/funny-cursors-for-safari/id1562303002?mt=12) [ImageFinder for Safari](https://apps.apple.com/us/app/imagefinder-for-safari/id1514863337?mt=12) [image:158C54A3-6D68-47A2-8B7A-2217465A735F-3300-0000011A1DA3A5A3/MacOS Applications List.jpeg] [Lean Library](https://apps.apple.com/us/app/lean-library/id1480670663?mt=12) [image:ACDE7177-50A4-43BA-BFD3-7B81F5BBEE70-3300-0000011A1DA29B06/MacOS Applications List.jpeg][image:0C6391B0-DCC7-4D95-88A0-738B2A846EDE-3300-0000011A1DA1A157/MacOS Applications List.jpeg] [Wappalyzer](https://apps.apple.com/us/app/wappalyzer/id1520333300?mt=12) [Everhour Time Tracker](https://apps.apple.com/us/app/everhour-time-tracker/id1539652800?mt=12) [image:9EF8A1A4-16A0-45B8-84F5-4F6372B531FE-3300-0000011A1DA0AA8F/MacOS Applications List.jpeg][image:EA154575-B846-49E5-8EE9-68F07980A474-3300-0000011A1D9F9FFB/MacOS Applications List.jpeg] [Highlighter for Safari](https://apps.apple.com/us/app/highlighter-for-safari/id1385628859) [image:20E17744-C420-4711-925D-E127FA2A72C7-3300-0000011A1D9E870B/MacOS Applications List.jpeg] [Tabs to Links](https://apps.apple.com/us/app/tabs-to-links/id1451408472?mt=12) [Keys for Safari](https://apps.apple.com/us/app/keys-for-safari/id1494642810) [image:4E9D0923-D7FC-494C-8BEB-197922BE16B0-3300-0000011A1D9D3875/MacOS Applications List.jpeg] [Scratch](https://apps.apple.com/us/app/scratch/id1446785996?mt=12) [image:26C118CD-482A-4893-81E9-87039CD21A19-3300-0000011A1D9BF62D/MacOS Applications List.jpeg] [‎Welcome to the Mac App Store! : App Store Story](https://apps.apple.com/us/story/id1583074606) [image:4EF1011B-108F-4F67-87B5-E75D527A0EC6-3300-0000011A1D9A703B/MacOS Applications List.jpeg] [Extract resources from iOS apps. Make iOS icons - Crunch - Pragmatic Code](https://pragmaticcode.com/crunch/) # Fwd: David Krusemark, here is your receipt for the order TYP211205-7067-65359 From: David Blue To: David Blue , Extranet Date: Dec 5, 2021 Subject: Fwd: David Krusemark, here is your receipt for the order TYP211205-7067-65359 > Typora > Hello David Krusemark, > Thank you for your purchase. Below is your product delivery information. Manage Your Orders > Your Order > Typora > License Key NWQC3B-HZSRYV-75QSPJ-SRHUFY > $14.99 x 1 > Charges will appear on your bill as PP* FS typora > Order Reference: TYP211205-7067-65359 > View Invoice > Tax: $0.00 > Total: $14.99 > You have received this email after an order made through FastSpring – an authorized reseller. -- David Blue Editor-in-Chief, Extratone [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOkNBTXVpZEFKdlkzMEcyTmJ5%0D%0ATVdSX3pmQ29yeHE4RFdhQmNLSEZMSnE2THhZSjhpak5GQUBtYWlsLmdtYWlsLmNv%0D%0AbTszNzM0Nzc1NQ%3D%3D) #$ # an update about Racket for Web From: Austin Petersmith To: davidblue@extratone.com Date: Dec 20, 2021 Subject: [**an update about Racket for Web**](https://app.sparkmailapp.com/web-share/TetxDa7MqA5iMTCH8vOvv0MpSIuLjr-4Uk1CGjc9) Hi there, You’re receiving this email because you used the Racket web app at some point this year, and we have news to share. I’ll cut right to it: the Racket iOS app is seeing better retention, wider diversity of content, and faster growth than Racket for Web ever did. We’ve made the difficult decision to shut down much of the Racket web experience on January 20, 2022 so we can focus our attention and resources on Racket Mobile. Lots more detail below on the deprecation plans and schedule, but first some context: Racket began with an observation: there are 100 million people blogging today, and 100 million people making TikToks, and less than 1 million people making podcasts. Our mission since inception has been to address this. We want to hear 100 million voices on Racket. Why? So that your stories, personalities, and energy can be captured in this unique medium. Instead of celebrity podcasters speaking to posterity on your behalf, we want each and every one of you to have the chance to speak to do it yourself. To accomplish this mission, we need to iterate toward a product that will catch on quickly. As many of you know, we’re exploring some entirely new concepts on Racket for iOS. Those concepts are working, and our conviction is stronger than ever that we’re on the right path. Meanwhile the original Racket Web product simply isn’t working. We’re proud of it, and of the moment it sparked that got so many of you putting your voices out there. But, it’s not getting us any closer to that mission, and it dilutes our attention and our brand away from the product that is working: Racket on iOS. So. In 30 days, on January 18, we’re going to shut down most of Racket Web. Here’s what’s going away:    - Web recording studio    - Content feeds    - Volleys    - AMAs    - Audio DMs    - Queue In other words, the creation of Rackets will only be possible on iOS, in the new 99-second format. Rackets both old and new will be hosted on the web, where anyone with the link can get to them. User profiles will continue to exist on the web as well, and will feature all of your Rackets as always. While your Rackets will still be hosted on the web at the same URLs, you also can of course download the MP3s and take them elsewhere if you’d like. Rackets produced via Volleys and AMAs will still exist, but those actual features will be gone. What’s next We are working hard to make the Racket mobile app the best possible experience, and to foster community as it continues to grow. It’s possible that we’ll roll out features inspired by some of these now-deprecated features like audio DMs, queues, AMAs, etc. We also hope to start working on Racket for Android in the first half of 2022. Our intention is not to place a limit on who can use Racket, but the reality is clear: if we don’t focus our attention on nailing *one* platform, we won’t succeed on any of them. If you have any questions at all, please feel free to reach out to me directly. We hope to see you all on Racket soon! Best, Austin and the Racket team racket.com _________________________________________ Want fewer emails from Racket? Unsubscribe or tweak your Racket emails. [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjIwMjExMjIxMDA0MzI5LjJj%0D%0AYTIwODQzMDMzYjMxMWNAY2lvNjQ2OTYucmFja2V0LmNvbTsxMDk5MTc3NjM%3D) #social #software #archive #email Taio Keyboard Shortcuts  **Navigation**  **Font Size**  **Text Formatting**  **Text Editing**  **Quick Actions**  # Taio Keyboard Shortcuts [image:F4DB3B2F-2ECF-4A3E-8733-EA456CD49FA1-4072-000000E33CE58510/IMG_0321.png] **Navigation** | Action | Key | | :---------------------- | -------: | | Show/Hide sidebar | ⌘ E | | Toggle Minimal Editor | ⌃ ⇧ M | | Open Files | ⌘ O | | Close File | ⌘ W | | New File | ⌘ N | | New Tab | ⌘ T | | Next Tab | ⌘ ⌥ → | | Previous Tab | ⌘ ⌥ ← | | Reveal in Explorer | ⌘ ⇧ J | | Find in Document | ⌘ F | | Show Outline | ⌘ ⌥ O | | Toggle Preview | ⌘ P | | Run Actions | ⌘ R | **Font Size** | Action | Key | | :---------------------- | -------: | | Increase Font Size | ⌘ + | | Decrease Font Size | ⌘ - | | Reset Font Size | ⌘ 0 | **Text Formatting** | Action | Key | | :---------------------- | -------: | | Toggle Bold | ⌘ B | | Toggle Italic | ⌘ I | | Toggle Underline | ⌘ U | | Toggle Strikethrough | ⌘ D | | Toggle Heading Level | ⌘ 1 ~ 6 | **Text Editing** | Action | Key | | :---------------------- | -------: | | Save File | ⌘ S | | Move Lines Up | ⌘ ⌥ ↑ | | Move Lines Down | ⌘ ⌥ ↓ | | Left Indent | ⌘ [ | | Right Indent | ⌘ ] | **Quick Actions** | Action | Key | | :---------------------- | -------: | | Soft Break | ⇧ ↵ | | Insert Link | ⌘ K | | Open Link/File | ⌘ ⇧ O | | Insert Code Block | ⌘ ⇧ C | # Curious about Curious Cat? [image:ECEBDD93-56B0-4602-870D-D00CB8B1A8F6-2574-0000009CAE9C702B/CuriousCatArtcile.jpg] [Curious about Curious Cat?](https://spunout.ie/life/privacy-security/curious-cat) #archive y current PopClip extension lineup, which includes two shortcuts on the far right of the popup. 2021-12-18T05:02:51-06:00 https://wiki.keyboardmaestro.com/manual/Screenshots 2021-12-18T04:24:03-06:00 https://podcasts.apple.com/us/podcast/this-strange-story/id1581684171?i=1000532320438 Manuscripts Meta - Mp3Tag for MacOS? This Strange Story This Strange Story This Strange Story 2021-12-18T03:30:30-06:00 https://podcasts.apple.com/us/podcast/the-people-in-the-neighborhood/id1151436460?i=1000521634656 - 2021-12-18T03:13:11-06:00 jab frost 🔜 MAGFest on Twitter: "Gotta start genuinely considering a restraining order. This person won't leave me alone and tr A food metaphor for Mastodon in Tech Media 1 Image Swapping Mom’s Case for Moshi Overture [Shareable Vivaldi Themes [Discover Shareable Vivaldi Themes: a riot of colors and expression](https://youtu.be/1Tvz01xE-yc)](https://todoist.com/showTask?id=5415437259) Bluetooth Keyboard Shortcuts Support Request | Bear Beta Forums Weathering the Weather How the CryptoPunks launched an NFT revolution I did have a game boy advance sp and the only game I had was a princess and the pauper Barbie game and I’d give anything to play that again ((MAC EMULATOR NEEDED)) 1 Image Whyp - Free & fast audio sharing site | Product Hunt Steve Jobs Introduces the Macintosh - YouTube Non Big-Band Tunes, Big-Banded A Twitter tightrope without a net: Journalists’ reactions to newsroom social media policies - Columbia Journalism Review Where the Despairing Log On, and Learn Ways to Die - The New York Times How to Post and Download the Highest-Quality Images to Twitter Without the iOS App 1 Image Case File 239 With Jab50Yen - Thought Cops See stories from WIRED Broadway Brewery Spam Calls Issue kansas-city.social - Mastodon 1 Image Don’t Throw It Away 🗑️ Midweek massive got edition datafruits.fm 1 Image Bartender 4 - macOS Monterey Beta 1 [Test Telegram to Todoist](https://todoist.com/showTask?id=5396925047) [help](https://todoist.com/showTask?id=5396923420) [Markdown Capture (Comprehensive)](https://todoist.com/showTask?id=5396916119) How to insert link to external file with drafts for mac? - Drafts for Mac - Drafts Community Marked Help ‎Image2icon - Make your icons on the Mac App Store Automation Academy: Diving Deeper into Reminders Actions iOS 15.2 Update - iPad Pro Day 1 - iPad Pro Day 1 [New text before or after Stricken text?](https://github.com/extratone/bilge/issues/262) - Styleguide - [Apple’s Anti-Sexting Tool for iOS Will Warn Kids About Nudes—but Won’t Notify Parents ](https://www.wsj.com/articles/apples-anti-sexting-tool-for-ios-will-warn-kids-about-nudesbut-wont-notify-parents-11638626402) - Get started and organized with TiddlyWiki | Opensource.com Grand Tour Special Release Check on Hildur Introducing Blink code! Introducing ShareBot: The missing Share Extension for Shortcuts on macOS! Nov 25, 2021 at 18:41:02 Nov 24, 2021 at 14:16:26 New Reminder davidblue@extratone.comwget -e robots=off -R mpg,mpeg,mp4,mov,wav,tgz,zip,flv —recursive —page-requisites —adjust-extension —span-hosts —convert-links —restrict-file-names=windows —domains PURETASK —no-parent PURETASK11242021-4153 j Respond to Abby‘s YouTube comment New Lists lookup functionality | Twitter Developer Platform Roadmap I have experience the same thing except about Drafts and Obsidian, specifically. 2021-11-18T14:52:36-06:00 2021-11-18T14:49:39-06:00 09:14 4 O screen Hey Siri, screen X Wait 3 seconds O Take screenshot Extract text from @ Screenshot % Get clipboard Get URLs from % Clipboard Show alert Add reminder? Title Screenshot Reminder Show Cancel Button Add @ Text from Image to PURETASK with Alert At Time Date and time Search for apps and actions b Call Dr. Das The stream Shut off the recording Communiteq Trial Sweep out garage Hildur GitHub Uni Question Cancel StoriPress Cancel the Secure ShellFish trial Check on and disable Drafts Sync Logging Turn the dehumidifier back on Fwd: Why We Parler Help Mail Help You : Streamline your inbox with rules. https://youtube.com/watch?v=En4YfPEaopU&feature=share Check out this job at Discord: Copywriter Messenger Archive Request Oct 21, 2021 at 01:27 Donate to be with Kuppai Get telegram data export r/ColumbiaMO Post Switch to Acrobat Pro-only Creative Cloud Plan (Still Includes Fonts) # The Psalms’ 2021 ![iPhone Keyboarding Pointing Keyboard](https://i.snap.as/6J3Tm3CN.jpeg) *I am not funny anymore* feels as though it has finally achieved penultimate meaning as a longtime habitual phrase of mine - as in, I can no longer remember a tangible self without that sentiment always at the ready in a handy intercranial stash. Its significant, I think - the assuredness of my confidence saying it, now, after the year two thousand and twenty-one. The sensation of it has always been most powerful when reading the oldest of my words published, here, but it now has *so* much more substance. The argument that this general process is the very most natural for my age - the *Peak Specialization* Period on the general Human Existence roadmap - has been platituded to all fuck, and yet I cling to it newly and with ever-renewed desperation as I have to any and all authentic manifestations of certainty, of late - even the *common knowledge* sort I still viscerally despise. ![2021 - The Psalms’ Wiki](https://user-images.githubusercontent.com/43663476/145235991-490ae9f1-674d-4731-aab2-88be695d8ff1.jpeg) Certainly moreso than in any other calendar year for *this blog*, I have changed, and so has the tone, theme, and subject matter of the eleven items you see above. In case you can't be bothered, it doesn't take much scrutiny to note that all but *one* of these entries - [the second-latest](https://bilge.world/uniiqu3-techno-is-black), debatably - are directly related to the Fucking Apple Phone. # David Blue's Twitter History ![Watching Jimmy - Twitter for iOS](https://i.snap.as/m4Ls06fs.png) ## A reference document chronologically narrating my last 13 years using Twitter every day. Four minutes after midnight on June 20th, 2009, I began my adult life on the Social Web with [a lie](https://twitter.com/NeoYokel/status/2249300350). I've thought a lot about what 15-year-old me could have possibly been thinking when I first Tweeting "Watching Jimmy!" from Twitter in the browser on my 2008 MacBook[^1] Of course, I've asked myself *which fucking Jimmy*, but not for years. Long ago, I realized that I could not have been talking about none or neither - there was no television in my mother's house which could have been on at that hour. https://twitter.com/NeoYokel/status/2249300350 If you cared to, you might surmise that this beginning indicates something profound about the nature of the Social Web, but you’d be wrong. In this particular case, at least, the fact that a dishonest pop culture reference was the first thing to come to my 15-year-old mind indicates only that I was deeply unsocialized - a young man who had only just a year prior shifted lifestyles entirely. After a childhood spent partially on a row-crop farm and indulging the activities and interests [uniquely enabled](https://www.instagram.com/p/CEsqIIoF-6s/) by such a situation, I had cut that part of my life out entirely and moved in the suburban house full time of my mother and stepfather. As an idiot youth, I naturally had no capacity to understand the effect this decision would have on my person and my day-to-day life. Namely, [it began my preoccupation with consumer technology](https://bilge.world/why). ![Because They’re Republicans - Austin](https://i.snap.as/SiFuVn9q.jpeg) ## 2009-2012 I had a single friend, Austin, who was even remotely as interested as I became in tweaking MacOS/iOS and would have an inexpressable amount of influence on my computing life. Though he lived only 25 minutes away, we’d exclusively hang out over FaceTime(?) for hours, sharing OSX customizations and links to videos by Mark Watson ([SoldierKnowsBest](https://youtube.com/user/soldierknowsbest)) and Jon Rettinger ([John4Lakers](https://youtube.com/user/jon4lakers).) It was an extremely exciting time in consumer technology, we thought. I felt it, in that way a lot of us find ourselves desperately reaching back for. https://www.youtube.com/watch?v=WpsAyeVzn5w History will suggest, no doubt, that my being among the earliest iPhone adopters predisposed me to make that Twitter account, even though my first Tweets were made from a desktop. ![Bob Geldoff in 2011](https://i.snap.as/9PEGgPYJ.jpeg) https://twitter.com/neoyokel/status/7775103604 == [1] My first and only Mac. In the greater context of Mac History, also a particularly interesting outlier, in my opinion. It was the only model year an aluminum-bodied Apple machine ever bore the name "MacBook" as opposed to "MacBook Pro" and the only said machine to have a removable battery, which - in my case - certainly encouraged [some absurd behavior](https://twitter.com/NeoYokel/status/1470165080482451461). # I Trust Telegram [image:2A11744C-63B8-41BB-B915-B475D734061A-21662-00000AEB6B37AA5D/90e0bddd18a3d8b355aff.png] #### How I’ve used Telegram as the ultimate cross-platform Universal Clipboard, file sharing service, and more. Believe it or not, I, too originally sought the Russian-owned, cross-platform-as-hell messaging service for “privacy” - or perhaps solitude would be more apt. It was in 2017, amidst the shock that the Tump Presidency was actually going to happen, that I happened to hear about his pick for Secretary of Education, Betsy DeVos, whom had just 18 months prior led myself and some twenty thousand other poor souls in a most capitalist prayer to the Christian God for prosperity at her pyramid scheme’s ultimate “superbowl” gathering in Cincinatti. I had decided to “infiltrate” AMWAY under the ridiculous assumption that I might be able to contribute some new insight in writing critically about what I might witness. (In truth, I found my experiences that summer so utterly traumatic, existentially, that I never was able to do so.) I don’t know what consequences of her ascension to the Lord of American Schooling I expected to happen, but I was pretty hysterical about it - that is, more unhumorously alarmed about some grander world happening as I’d ever been by a long shot. For the first and only time in memory, I felt compelled to take some sort of malicious, obscured action - to organize somehow for a purpose other than to be publicly critical of this person, and to use my knowledge about digital media to the fullest possible extent to scrutinize her administration’s every movement and to be prepared, even, to take some sort of real action if she… well, I don’t know. I didn’t know anything, really, about anti-government organization, generally, but I was not acting rationally in the slightest. [image:7B7765B0-9571-4B62-ADD8-5530F5460391-21662-00000AEB6B00F213/d54c6afefc02a2af898fd.png] I’m bringing this up for a few reasons, and the fact that the very first digital decision of my personal hysteria was to set up a private Telegram channel is telling, though I can’t recall just how much or how little I actually knew about it at the time. I launched myself back to the channel’s very beginning (easier to do with regular URLs than in any other service I’ve ever encountered,) but was only able to bring myself to dig just long enough to grab the utterly absurd photograph above… Though I certainly did not consider myself actively interested in automation at the time, Telegram’s infamous bot ecosystem proved so prevalent (and accessible,) that I was able to configure at least three bots on that channel within days of first establishing it: a repeater hooked to DeVos’ Twitter account, an RSS-powered bot watching the main feed of a website set up by Senator Elizabeth Warren called [DeVos Watch](https://www.warren.senate.gov/oversight/devos-watch), and another republishing everything from [the Department of Education’s press releases feed](https://www.ed.gov/news/press-releases). Was any of it genuinely useful in helping me maintain Action Readiness in hypothetical defense of American education? Most certainly not. It was, however, genuinely comforting to have such diligent, automated minions keeping watch - to have a centralized, private, reliable, and purely-chronological feed of information in a super-handy location, regardless of whether or not it was usable. As I began to unconsciously integrate Telegram into my day-to-day online life on both of my PCs and my iPhone, the usefulness of my private channel for other applications became rapidly apparent. On iOS, not even dedicated file managers like DEVONthink are capable (or willing might be a more accurate term) of handling the diversity of data Telegram will happily pass on for you, especially through the Share Sheet. ### Drafting I have used this “flow” so extensively for so long that it has come to define the whole of the abstract method in my muscle memory. Observe me browsing the web on my phone in an exhausted or particularly distractible state and you’d probably catch at least one or two completely irrational, inexplicable instances of sharing to my “ [Saved Messages](https://telegram.org/blog/albums-saved-messages) ” Telegram channel, which would be problematic for just about any other link-saving service. Add too many links to Safari’s Read Later list and you’ll end up crashing the browser on your Mac. I don’t even feel comfortable sending links willy nilly to the brilliant bookmark managing/curatorial service Raindrop, these days, after finding out that my [Reading List feed](https://raindrop.io/davidblue/reading-list-13380406) has actual daily followers, but there are zero consequences to sending ultimately-worthless or duplicate links to my personal Telegram channel, which has no content limit and is instantly and competently searchable. [image:2A9563A8-ACD8-4B0E-A01C-F3059D6549BF-21662-00000AEB6ACEAD7F/cbe169a5b18329406d61e.png] Send to Telegram Drafts Action Over the years, I’ve discovered a bunch of other uses for the Saved Messages channel. As demonstrated in the screenshots embedded above, the [Send to Telegram Action](https://actions.getdrafts.com/a/18E) for my writing app, Drafts, utilizes Telegram for iOS’ Universal Links support (in the format tg://…) to instantly send the whole text of the current document in Drafts to a Telegram channel of one’s choice. I suspect this was intended to streamline posting for admins of public channels, but I’ve used it to quickly “back up” work as well as to transfer edits directly to my (Windows-running) PC. By adding &to=+[my phone number] to the end of the action’s URL, I was able to remove the single, unnecessary step of choosing the destination chat. Because text messages are automatically split at 5000 characters, though, I usually depend on the [Share as Markdown File Action](https://actions.getdrafts.com/a/1V4) (the output of which I also send to Saved Messages through the Share Sheet) for the latter function. Anecdotally I’ve also used this method literally just to inspect unknown content passed to the Share Sheet because it’s often faster than Quick Look to share to my Saved Messages channel and then immediately open it in the app. (Hilarious, I suppose. Mostly sad, these days.) I found my inspiration for this Post in replying to a [thread on the Automators.fm Discourse forum](https://talk.automators.fm/t/equivalent-to-drafts-but-for-windows/6159) regarding a Windows equivlalent to the same Mac/iOS/iPadOS app Drafts mentioned above. I suppose my reply was a bit off-topic, in retrospect, but still worth including: > I have been using [Telegram](https://desktop.telegram.org/), of all things for years. Notably, if you hit Ctrl + 0 from anywhere in the Windows client, you and your cursor are taken to the compose field beneath your personal “Saved Messages” channel, which is searchable, has an extremely high per-message character limit (after which it just automatically splits,) and is ridiculously reliable in saving “drafts” live as you’re typing. As in… I have actively tried to lose characters by killing the application and then logging in on my phone and have yet to accomplish losing a single one (among other advantages: zero formatting added to plain text by default - not even line breaks - no total file limit and 2GB per file limit uploads, absurdly cross-platform, literally more reliable than SMS in poor network conditions.) You can immediately reenter a sent message with ↑ to edit, copy it, escape with just Esc and then paste to start a new revision. The feature within Telegram that makes this whole usecase worthwhile was introduced in [June, 2016](https://telegram.org/blog/drafts), and is entitled - appropriately - “Drafts.” Unlike the Drafts function in Twitter’s various native clients, for instance, Telegram’s really is impossible to fool, though it’s not perfect. [Markdown formatting support](https://telegra.ph/markdown-07-07) is inconsistent across Telegram clients - the iOS app being the most woeful - and the few keyboard shortcuts the app supports on iPad are not supported whatsoever on iPhone. ### Universal Clipboard Users familiar with the MacOS + iOS + iPadOS ecosystem should be well-acquainted with “ [Universal Clipboard](https://support.apple.com/en-us/HT209460),” which instantly synchronizes clipboard content across Apple devices. More recently, Android + Windows users have supposedly had access to an [equivalent functionality](https://support.microsoft.com/en-us/topic/seamlessly-transfer-content-between-your-devices-8a0ead3c-2f15-1338-66ca-70cf4ae81fcb#WindowsVersion=Windows_10). To my knowledge, though, truly cross-platform clipboard sync has yet to be realized. As someone who’s used iOS and Windows regularly - along with Linux, occasionally - for more than a decade, now, I’d put my full weight behind Telegram as the best available solution from (far too much) personal experience. [image:0706AC10-C285-4EA4-A827-B5BDA1EFA420-21662-00000AEB6AAA14B4/06666cf3479bb366aa494.png] Security Considerations in Telegram for iOS When first entering a new system, real or virtual, regardless of OS, my very first step upon completion of its setup process has for years been to install Telegram, largely because all of my passwords for any/all given services are huge - 30+ characters, at least - and complex enough that typing them out is both tricky and absurdly time-consuming. Authorizing a new Telegram client, however, is as simple as entering a one-time numeric passcode or scanning a QR code. Managing logged-in sessions (see: the far right screenshot embedded above) is quick, reliable, and includes a handy button to kill all but the current session. Thanks to these considerations, I feel quite comfortable sending myself passwords in Telegram, including .csv exports of whole password vaults, when it’s appropriate, even when working on systems I do not own. For this function, I can’t think of any other service/software capable of replacing Telegram. For day-to-day hyperlink sharing across my platforms, a variety of alternatives continue to come and go. The “Send to [device]” features represented throughout the palette of available web browsers - Firefox, Opera, Edge Chromium, Chrome, etc. - aren’t exactly reliable, in my experience. Most recently, I discovered a service specific to Hewlett Packard machines called “ [QuickDrop](https://www.hp.com/us-en/solutions/quickdrop-photo-sharing-app.html),” which - along with [its accompanying iOS app](https://apps.apple.com/us/app/hp-quickdrop/id1495071972) - does indeed allow me to send files, links, and text between my iPhone and Big Boy HP tower, though even my brief testing was filled with inexplicable prompts to reauthenticate and intermittent hangups, neither of which lend easily to regular use. I still maintain high hopes for [Snapdrop](https://snapdrop.net/), which allows devices to share files and text over a local network from within any web browser, but it, too, is prone to frustrating hangups. [image:38BF5464-31D5-4421-94B6-867645243194-21662-00000AEB6A890A2D/d9aa07f8314df38fa8eed.png] ### File Transfer & Cloud Backup Amidst the saga of my failed move to Portland spanning 2017–2019, I ended up losing all of my physical file storage - my old desktop and its hard drive, as well as 3 external drives containing a bunch of raw video I probably wouldn’t have gotten around to using, anyway, site backups for Extratone, and who knows what else. This loss taught me many grand, metaphysical life lessons (I hope,) but more practically, it affirmed a (admittedly gluttonous) truth about digital assets: if one truly wishes to make a file permanent, they must back it up in as many different places as possible. Perhaps the single most durable of these in my own computing life to date has been Telegram, which still has no per-account file upload limit and a per-file size limit of two gigabytes. The amount of pre–2019 work I’ve recovered solely thanks to Telegram is too great to enumerate here, but a rough draft of my [2018 Thankful for Bandcamp Mix](https://pod.link/1437549809/episode/626a66d3f37807b69c59f56faa4d3b94) comes immediately to mind. How exactly the service is able to maintain this virtually unrestricted storage, infrastructurally, borders on don’t want to know status. My own net server impact as a user is fairly difficult to estimate, but I’d bet real paper currency it’s between 50 and 100 GB, the vast majority of which I uploaded several years ago. Within any mainstream cloud file storage service - Dropbox, Google Drive, Box, iCloud, etc. - the cost of storing that amount over time would have added up to a not-insignificant chunk of change. I don’t want to advocate for Telegram as a cloud storage replacement for loaded cheapskates, but for working-class users on a $0 budget, it can be counted upon to keep large files in a relatively shareable, ultra cross-platform, and super-accessible manner. Students, especially, should take note. [image:47A9048E-F0E2-4931-A2AF-A60630625327-21662-00000AEB6A5C89CF/efc2277fa530b3a05bf9b.png] ### Community At this point in my life, I must acknowledge to both readers and myself that I am completely inept at community organization. Especially when it comes to grand suggestions about how I suppose online communities might be ideally-run or just better served by particular software environments and configurations, I have literally received zero positive feedback, and not because I haven’t spent significant time positing publicly within the space. I spent the first half of my twenties trying to Peter Pan an independent online music magazine into existence, written by fresh-minded youths on the fringe at 140% throttle and managed to accomplish startlingly little for my all my invested time and gumption. The relevant component of that tale was a significant and all-out commitment from the beginning to run the whole project entirely within Discord. The one absent activity throughout my years of Telegram use - save for intermittent correspondence during one relationship - has been messaging other users. I managed to find and participate in a few group chats - “ [Telegram iOS Talk](https://t.me/TelegramiOStalk) ” and [It’s FOSS’ official channel](https://t.me/itsfoss_official), notably - in my preparation/research for this post. I’ve discovered plenty of new clever bits, like the button to jump to one’s nearest mention in a chat. I’ve also done my best to actually apply some [much-needed administrative attention](https://t.me/columbiamo/7774) to [my years-old attempt](https://reddit.com/r/columbiamo/comments/c4na0v/local_telegram_group_chat_for_columbia) at creating the [definitive location-based local group chat](https://telegram.org/blog/contacts-local-groups) for the Mid-Missouri area where I live. Truthfully… It [hasn’t exactly gone as I’d hoped](https://reddit.com/r/columbiamo/comments/q0843f/local_telegram_group_chat), but the failures have been all my own. I have yet to find a satisfactory balance in terms of moderation bots, so I’ve (as of this writing) resorted to manually removing the (significant) spam bot traffic by hand. Also, I must admit that I’ve never had to do so more than once or twice on Extratone’s public Discord, despite how much more circulation its public, open invite links have received. In the past few weeks, I’ve had the privilege of watching MacStories relaunch their premium membership program, Club MacStories, on their incredible bespoke CMS. Part of this launch included their first exclusive community space, on Discord, which has been deeply rewarding for me, personally, but has also highlighted some serious limitations of that service which I not-so-long-ago [advocated so heavily for](https://bilge.world/discord-slack-comparison). Namely, hyperlinks to specific messages within Discord are a hopelessly problematic endeavor. Even for a public server like Extratone’s, navigating to a message link [like this example](https://discord.com/channels/107272441889341440/107272441889341440/893958033401593898) will require any and all users to log in to Discord on the web, which - on mobile devices, especially - seems to struggle to navigate to the precise position of the subject message after you’ve successfully done so. Slack’s public message links are smart enough at least to prompt users to open them Slack for iOS, but Telegram’s system for message links in public channels and groups makes both services look daft. Telegram message IDs are purely chronological from their channel/group chat’s creation - the first message in a channel or group chat is 1 and the 15th is 15. Together with the simplicity of channel/group chat IDs, which are just their alphanumeric @ names, this format makes URL schemes for Telegram message links super malleable and easy to understand. The sixth message posted in the [@extratone channel](https://t.me/extratone), for instance, can be found at [https://t.me/extratone/6](https://t.me/extratone/6), which even those without Telegram installed can view natively within their web browser. Within Telegram clients, said links are ultra-responsive, regardless of whether or not one had previously “joined” the channel or group containing the message. [image:FD18EC26-696B-4826-9910-77E7920B5057-21662-00000AEB6A3E025F/6b4448182e5d46af116ea.png] Orange Noir Telegram Theme by Valespace In MacStories’ case, there’s another essential point of reference. When I pinged the staff in their Discord regarding their experiences running [their now-abandoned Telegram channel](https://t.me/MacStories), John Voorhees replied: > I don’t really have anything to say about Telegram one way or the other. We ran it for a short time 5 years ago as an experiment and it didn’t stick. I wasn’t yet a subscriber in those days, but little details like [behind-the-scenes voice messages](https://t.me/MacStories/281) are definitely missed. [Federico’s initial audio introduction](https://t.me/MacStories/39) describes a potential for the channel I wish more readers had enjoyed. They’re much more intimate, even, than the publication’s new exluclusive Town Hall events on Discord, which doesn’t make much sense, I know. [image:11F573ED-ADE8-421A-9D0E-EA2507FF8174-21662-00000AEB6A1234FE/15f0d72f270dddeac5852.png] ### Streaming Admittedly, another attention-grabbing feature that contributed to my finally getting around to this Post was [the introduction of “Live Streams” for channels and groups](https://telegram.org/blog/live-streams-forwarding-next-channel) (really just a slight augmentation of their [“Voice Chats 2.0” features](https://telegram.org/blog/voice-chats-on-steroids) ) at the very end of this past August. Discord, of course, was way ahead of Telegram in implementing Voice Chats and Screen Sharing [back in October of 2017](https://youtu.be/mMloc55o1jc), and it’s long since become one of the services’ core features. However, recording live content of any kind is not natively supported, though there is a [handy utility bot named Craig](https://craig.chat/) who can accomplish this for you. For the sake of transparency, I should admit that not a single one of my live streams on Discord has actually included any viewership, but I have participated in a handful of others’ and viewed a couple dozen. For the past few months or so, participating in any sort of voice or video chat in Discord desktop has led to [a spectacular relaunch loop](https://twitter.com/NeoYokel/status/1448837428534521858) that can only be solved by reinstalling the application, entirely. It’s not that Discord for iOS’ now full support for such streaming - both in terms of participation and simple viewership - isn’t impressive, but honestly, Telegram for iOS’ superiority should be immediately obvious to anyone who’s tried them both, recently. Not just in pure capacity’s sense, but in moderation tools, shared link customization, and, obviously, native recording support. I’ve embedded two recordings of different test streams of mine, below. [The first](https://t.me/extratone/7054) (embedded in [YouTube form](https://youtu.be/uhXZZBl0fn8),) was streamed from both my Surface Laptop 2 and iPhone 12 Pro Max. [The second](https://t.me/extratone/7196) is a very brief recording (in native form [directly from The Psalms’ GitHub Repo](https://github.com/extratone/bilge/raw/main/video/TelegramiOSLiveStreamTest.mp4) ) of a stream I did just from the share screen function of my phone, in the wrong orientation. Below is a screenshot of the recorded file’s metadata (as provided by Telegram for Windows.) [image:59862448-B04D-4672-8FB9-07CC42799F89-21662-00000AEB69EA4D0B/fa9ddf10f701aca8902cc.png] As you might note, there’s definitely something to be desired from the quality of Telegram’s stream recordings, especially in its included audio. I find it a bit strange that it’s recorded in 48 kHz just to be compressed down to 46kbps. When you’ve stopped a recording, you’ll receive both the video file and just the extracted audio in an .ogg file. Unfortunately, the latter is no less compressed than it is combined in the video file. (Both are sent to one’s Saved Messages channel immediately upon stopping a recording, from where they can be forwarded virtually anywhere.) Aside from a boost in audio quality, though, Discord’s default 720p base resolution is matched by Telegram. Via server boosts, this figure can be upgraded significantly, though the end result is quite costly. According to [a not necessarily trustworthy site](https://clutchpoints.com/discord-server-boost-cost/), accounting for Discord’s [recent reduction in boost requirements](https://www.facebook.com/discord/posts/4524749577592737), here’s the pricing laydown to boost a server (per month:) > …a total of $34.93 for Level 2 and $69.86 for Level 3. That’s $24.45 for Level 2 and $48.90 for Level 3 for Nitro subscribers. Among quite a few other abilities, here are the extracted audio/video requirements per server level only: 1. 128kbps audio/720p video upped to 60fps 2. 256kbps audio/1080p 60fps video 3. 384kpbs audio/no video boost So, if I had the spare change to maintain a level 2 boost for Extratone’s Discord server, myself, I could do so for $34.93 per month, which would allow me to stream (not necessarily record) in 1080p/60fps video and 256kbps audio to up to [50 viewers](https://support.discord.com/hc/en-us/articles/360040816151-Go-Live-and-Screen-Share) (as of this writing.) Theoretically, at no cost, I can stream with virtually identical features (though I prefer Telgram’s) to my Telegram channel to [infinitely many users](https://telegram.org/blog/live-streams-forwarding-next-channel#unlimited-live-streams) in 1280p/30fps with absurdly low-quality audio and share/manipulate recordings natively/instantly from within any Telegram client. If I were All Powerful, I would make all the members of my “ [Family Tech Support](https://bilge.world/ios-15-family-review) ” iMessage group install Telegram on their devices so we could use it, instead. I would also make them collectively attend occasional live streams, where they could ask questions verbally of my demonstrations sharing my own screen, or even share their own screens to demonstrate an issue or provide context for a question. The reality, though, is that I do not expect any sort of anticipation for my personal live help events on any platform, which innately suggests Telegram over Discord, I’d argue, for when I do stream such content, given its total lack of investment. [image:6EA33F10-3814-4CC0-AF83-0EAB38BF0B6D-21662-00000AEB69D13620/6fcfba344dd82f42916bb.png] ### Location Sharing One of Telegram’s most unique (and potentially powerful, I believe) community features is [Live Location Sharing](https://telegram.org/blog/live-locations) on its mobile apps. Borned by Siberian native developer [Roman Pushkin](https://twitter.com/romanpushkin), LibreTaxi is the single truly exciting open ridesharing alternative I’ve ever encountered. As [an item for CBC radio from 2015](https://www.cbc.ca/radio/spark/346-biometrics-audio-intelligence-and-more-1.3987746/the-man-who-wants-to-out-uber-uber-1.3987987) (among other assorted coverage compiled [here](https://telegra.ph/LibreTaxi-press-coverage-07-14) as of July, 2017) explains, it utilizes Telegram’s live location sharing functions to act as a decentralized Uber/Lyft alternative in the form of [a bot](https://telegram.me/libretaxi_bot), which connects users needing a ride with users providing them, free of any fees or service charges. Discourse surrounding LibreTaxi has been silent for years, but [this channel](https://t.me/s/libretaxi_all) tracking all LibreTaxi orders in realtime is proof that it really is helping folks get around. As for the persistence of Live location-sharing, I can vouch for its reliability on the Android side, at least, as per my aforementioned experience with a partner who used Telegram and shared their location with me for both safety and convenience. As someone with the most immense possible privilege regarding safety and dating, I would also like to suggest sharing one’s live location with a private Telegram group chat with friends as an alternative to services like [Tinder’s Noonlight](https://www.help.tinder.com/hc/en-us/articles/360039260031-What-is-Noonlight-). [image:9154F352-37B8-4D63-B6C2-881A136027A8-21662-00000AEB69AEE5E8/65fc67bf342d7169b6b65.png] ### Permanence I’ve long evangelized (and extensively used) Alexey Golub’s [Discord Chat Exporter](https://github.com/Tyrrrz/DiscordChatExporter) to make beautiful, stylized archives of Discord channels and/or entire servers for safekeeping. Telegram’s native [Chat Export Tool](https://telegram.org/blog/export-and-more) came just a year after Alexey pushed [version 1.0 of the tool to GitHub](https://github.com/Tyrrrz/DiscordChatExporter/releases/tag/1.0.0), in August of 2018. In features, they’re very similar utilities: both can export in either stylized HTML or data-only JSON formats between infinitely-configurable time/date constraints. Again, I wouldn’t know how much external backup of community activity actually weighs in the day-to-day operations of large online communities. I know I personally find it comforting to have a swift, polished method of exporting text, especially, living in this era of [blatant disregard for users of suddenly-abandoned online services](https://github.com/extratone/bilge/issues/79). [image:008D40D9-119C-43CF-A96D-80B82B5D30A8-21662-00000AEB6997AD72/80dc0912fe2f7b7770521.png] ### ~~Transparency~~ Opacity One of my primary justifications for the time spent in composing this Post has to do with the immediately-available discourse surrounding Telegram on the web, which is wholly incomplete, at best. The main obstruction, from my perspective, is the subject of encryption. Even within publications as legitimate and frankly out-of-scope as Forbes, one can find an article like my chosen example, from February of this year, entitled “ [No, Don’t Quit WhatsApp To Use Telegram Instead—Here’s Why](https://www.forbes.com/sites/zakdoffman/2021/02/13/why-you-should-stop-using-telegram-instead-of-whatsapp-use-signal-or-apple-imessage).” It was written to address a mass “ [exodus](https://www.theguardian.com/technology/2021/jan/24/whatsapp-loses-millions-of-users-after-terms-update) ” of users from WhatsApp after [a grandiose misunderstanding](https://www.theverge.com/2021/1/12/22226792/whatsapp-privacy-policy-response-signal-telegram-controversy-clarification) (?) of its Privacy Policy caused a noisy controversy ( [catalyzed by Idiot Melon, himself](https://twitter.com/elonmusk/status/1347165127036977153).) I’ve been unable to find the added/altered text, itself, in my brief reading, but it’s not as if the happening wasn’t thoroughly covered elsewhere. It’s not that I doubt the expertise of “Cybersecurity Expert Zak Doffman” when he notes “Telegram’s cloud-based architecture is a serious risk when compared to the end-to-end default encryption deployed by Signal and WhatsApp, which also uses Signal’s protocol,” nor that I do not believe the following details are as true as truth gets: > All group messages on Telegram are only encrypted between your device and Telegram’s cloud, your message history is stored on Telegram’s cloud, and if you ( [unwisely](https://www.forbes.com/sites/zakdoffman/2021/01/30/stop-using-this-dangerous-whatsapp-setting-on-your-apple-iphone-or-google-android-phone/) ) transfer your WhatsApp chat history to Telegram, then this is also stored on its cloud. Make you sure understand that Telegram has the decryption keys to any of your data that you store on its cloud… To this argument and the many variations of it present in Telegram for iOS’ [App Store reviews](https://apps.apple.com/us/app/telegram-messenger/id686449807), [obscure German PeerTube servers](https://tube.tchncs.de/w/2d958ef9-1be4-477c-bc13-852ec6391487), and even within [public chats on Telegram, itself](https://t.me/crackheadlegit/409), my formal response for the record is: Okay! Affirmative! Received and understood! I must acknowledge - given my own introduction to the service, narrated above - that Telegram’s brand is vaguely associated with privacy and security. I can see that the second of nine duckies in the Ducky Grid on the root of telegram.org sits above the subhead “Private” and a caption with the following claim: “Telegram messages are heavily encrypted and can self-destruct.” (The seventh ducky’s subhead is “Secure.”) Continuing on in Doffman’s Forbes article, we find an overview of several vulnerabilities found throughout Telegram’s native clients by Dhiraj Mishra - surely they with the most ghastly typographical preferences in all of cybersecurity - on their blog, Input Zero. The [specific example hyperlinked](https://www.inputzero.io/2020/12/telegram-privacy-fails-again.html) concerns a bug in the MacOS client that resulted in “the application leak[ing] the sandbox path where [a sent audio or video message] is stored in ‘.mp4’ file.” (The whole of the ghastly-typewritten summary is embedded below in screenshot form.) [image:70738F21-4193-481F-AA49-01A15F9380AE-21662-00000AEB6977352E/d2302001ec66ea6eb66b8.png] Just to be clear, I am being sincere when I acknowledge that these are genuinely problematic issues that no doubt affected real Telegram users who depend upon its Secret Chat function. Even something so benign as the file path to local media storage on my device is not something I’d want piggybacking my otherwise-anonymous, NDA- and/or law-breaking messages to a journalist, for instance, but frankly, I don’t know of any journalists who maintain public Telegram contacts, anyway. Come to think of it, I don’t think I’ve ever seen a Telegram username publicly associated with a journalist. Indeed, the overwhelming majority of anonymous modern messenger service tip lines advertised by news organizations and news people which I’ve come across have all linked to Signal. In this particular case, then, Mr. Elon’s advice is sound. The question I would like to surface: what if I have no use for encryption or privacy across my purposes for Telegram? All the channels I have ever engaged with have been public, and those private ones I’ve come across have either been shady crypto spam channels or shady porn channels. I realize this doesn’t exactly reflect positively on Telegram’s community, but - as I argued regarding Discord, long ago - why let the community or even the app’s branding, itself, confine how you use it as a utility? ### A Hearty Foundation My thinking while drafting this argument kept returning to a single, simple realization: in age, Telegram is just two years ahead of Discord, yet the various software distributed by the two organizations for their respective services represent quite disparate opinions in design terms. [Discord’s desktop “application”](https://discord.com/download) is an Electron app - [Telegram’s](https://github.com/telegramdesktop/tdesktop) is virtually pure C++. [Telegram’s iOS app](https://github.com/TelegramMessenger/Telegram-iOS) is mostly written in Objective-C (I’m to assume the 30.8% Swift code number on the repo as of this writing is mostly comprised of its widgets/other recent iOS-specific integrations,) while Discord’s is mostly ???. That is, because Discord’s software is proprietary and the source is closed, all I can tell you is that it was written in React Native [as of December, 2018](https://blog.discord.com/why-discord-is-sticking-with-react-native-ccc34be0d427). What I can tell you is that the current build of [Discord for iOS on the App Store](https://apps.apple.com/us/app/discord-talk-chat-hangout/id985746746) weighs in at 153.2 MB - significantly less than [Telegram’s](https://apps.apple.com/us/app/telegram-messenger/id686449807) 185.1 MB. As I’ve noted plenty of times this year, I am not a software developer and therefore I can’t promise you an app’s initial payload size is actually all that relevant, but I was surprised to see Telegram wasn’t slimmer than Discord, given how the two apps behave and my previous experiences with the platform, this year. [image:F5FF842C-4BA9-4F9C-A133-7771E98763C8-21662-00000AEB6957CFB2/d4931821dbe950f9ac46b.png] Returning to the topic of their age… In its eight operating years, Telegram has embarked upon - and actually completed! - a gargantuan amount of projects. [Telegraph](https://telegra.ph/), the CMS, its [Web](http://web.telegram.org/), [Android](https://telegram.org/android), and [Linux](https://itsfoss.com/install-telegram-desktop-linux/) clients, [embeddedable comments widgets](https://comments.app/), its [online theme creation tool](https://themes.telegram.org/), and on and on. Across their various types, Telegram’s software is universally simple, frugal, robust, and easy-to-use. Frankly, by contrast, Discord has done nothing? Though you’ll find openly-available solutions to accomplish much of what you can on Telegram in terms of moderation and other utilitarian concerns, like the aforementioned Craig bot, they are all the work of third-parties. While Discord the company is much more [transparently profiled](https://discord.com/company) on the web than “Telegram FZ LLC,” the latter’s actual work is very well documented [across GitHub](https://github.com/TelegramMessenger). [image:7CE2C731-86CB-4A66-A16D-418B0DDFF53C-21662-00000AEB693E20BC/1de0d94d0c592599f857b.png] Telegram Desktop in Windows 11 If you’ve stuck with me this far, perhaps it’s not too much to ask that we retreat a bit and ask ourselves what we’d truly like prioritized in community chat software for 2021. I really do show my age in my bias, here, as someone just old enough to have had extensive experience using IRC, I think there’s a less-than-adequately discussed division happening which its successors might benefit dwelling on. IRC was extremely frugal and it was easy to find a freeware or FOSS IRC client for one’s given platform which was well-optimized to sit in the background of their desktop operating system, completely untouched and barely acknowledged visually for days… weeks… months at a time. It was easy to find oneself a member of a dozen or so IRC channels for specific interests, projects, or organizations averaging a dozen or so actual updates/pots per day, each. It was distinctly low pressure - many of my channel memberships functioned more like a wire service or, much more contemporarily, like an RSS aggregator, than a local party line. [image:D0E47E9C-377C-4935-B3F7-4E98BA494B60-21662-00000AEB69159CD9/055f1031331ae2b4d1da3.png] As I see it, the ultimate shift dividing those solutions from these is the big fucking obvious one: IRC was conceived in a world where computers were mostly static objects associated by their intended use and physical dimensions with the referential, unmoving waypoints around which we orbited (the kitchen counter, the desk in your study at home, parallel series of workstations within the public library, etc.) The entirely contrasted needs of community engagement on a handset should have - in my opinion - done much more to break apart these communal contexts than they have. As prolifically and extensively as I have used Discord for iOS since before its official release, even, it is hopelessly compromised by its loyalty to the PC gamer’s paradigm. My 12 Pro Max is not just capable of keeping 100 Discord channels up-to-date in the background as I move about the world - it is all too fucking eager, and for not a one rational explanation. Going on down this vector eventually leads to an adjacent argument I’ll name but otherwise save for later: it is literally over a decade past the time when we should have ceased celebrating the fact that mobile computers had matched and outdone desktop computers! We have to snap the fuck out of our obsession with lugging desktop computing alongside our persons and refocus entirely (once again) on exploring what “mobile computing” can/should mean, going forward. Please Gourd, help us do so ASAP. Unlike my heroes in most (if not all) of these tedious comparisons, I would not say Telegram is the single software manifestation of total clarity in direction within the subject, or anything, but in the area where it fails along with the rest of them, it has comprehensively iterated, invested in trial and error, and eventually produced tools that remedy the disparate gluttony. How swiftly and easily one can find one’s installation full of media files, for instance, after any time spent exploring within its mobile apps. It very well could have been mostly chance that contributed to Telegram’s current lead in terms of thoughtful design decisions and development investment toward mobile-first optimization. Perhaps it was their comparative longstanding Hype Famine, especially in the United States, these past few years. Maybe Discord hasn’t built anything because they simply can’t hear each other over the buzzwords overflowing their name in mainstream Discourse so abruptly thanks to The Big Virus. [Telegram's Pavel Durov: Podcast 256](https://www.mixcloud.com/wiredUK/telegrams-pavel-durov-podcast-256/) Telegram’s story certainly stands out, though the voice of its creator, Pavel Durov, actually telling this story at length can now only be found [on WIRED UK’s MixCloud account](https://www.mixcloud.com/wiredUK/telegrams-pavel-durov-podcast-256), in [episode 256 of their WIRED Podcast](https://www.wired.co.uk/article/episode-256). Telegram was experiencing the peak of its presence in mainstream Western news media, who just would not let go of the fact that some leader of some terrorist organization recommended Telegram to someone for something at some point in time. Listening back, it’s the nomadic “decentralized” beginnings of the organization - which I had forgotten entirely - which sounded a big, resonant Parallel Alarm in my brain: for very different reasons, [Bandcamp also operating without an office](https://bilge.world/bandcamp-streaming-music) (from a public library, charmingly,) at that time. “Can there only be one winner in the messaging wars?” asks David Rowan, which Pavel - in the deliberate, uncomfortable-sounding tone he uses throughout the interview - answers first noting a real truth for actual users: we tend to end up with a billion, each grouped generally by types of relationships. iMessage is for your family and local friends, Facebook Messenger is for your school group project, IRC and Element are for your insane, privacy-obsessed Linux friends, and Telegram is for [unsolicited video chats of worm tubs](https://twitter.com/ammnontet/status/1449594872139186181). David EditPublish David [telegra.ph](https://telegra.ph/I-Trust-Telegram-12-16) # I Trust Telegram ![Patel Clouds Theme in the Chat Background Tool](https://i.snap.as/9Bxz27ZX.png) Believe it or not, I, too originally sought the Russian-owned, cross-platform-as-hell messaging service for “privacy” - or perhaps *solitude* would be more apt. It was in 2017, amidst the shock that the Tump Presidency was *actually going to happen* [^1], that I happened to hear about his pick for Secretary of Education, Betsy DeVoss, whom had just 18 months prior led myself and some twenty thousand other poor souls in a most capitalist prayer to the Christian God for prosperity at her pyramid scheme’s ultimate “superbowl” gathering in Cincinatti. I had decided to “infiltrate” AMWAY under the ridiculous assumption that I might be able to contribute some new insight in writing critically about what I might witness. (In truth, I found my experiences that summer so utterly traumatic, existentially, that I never was able to do so.) I don’t know what consequences of her ascension to the Lord of American Schooling I expected to happen, but I was pretty hysterical about it - that is, more unhumorously alarmed about some grander world happening as I’d ever been by a long shot. For the first and only time in memory, I felt compelled to take some sort of malicious, obscured action - to organize somehow for a purpose other than to be publicly critical of this person, and to use my knowledge about digital media to the fullest possible extent to scrutinize her administration’s every movement and to be prepared, even, to take some sort of real action if she… well, I don’t know. I *didn’t* know anything, really, about anti-government organization, generally, but I was not acting rationally in the slightest.[^2] ![White Sapphire](https://i.snap.as/aNADRjvK.png) I’m bringing this up for a few reasons, and the fact that the very first digital decision of my personal hysteria was to set up a private Telegram channel is telling, though I can’t recall just how much or how little I actually knew about it at the time. I launched myself back to the server’s very beginning (easier to do with regular URLs than in any other service I’ve ever encountered,) but was only able to bring myself to dig just long enough to grab the utterly absurd photograph above… Though I certainly did not consider myself actively *interested in automation * at the time,[^3] Telegram’s infamous bot ecosystem proved so prevalent (and accessible,) that I was able to configure at least three bots on that channel within days of first establishing it: a repeater hooked to her Twitter account, an RSS-powered bot watching the main feed of a website set up by Senator Elizabeth Warren called [*Devos Watch*](https://www.warren.senate.gov/oversight/devos-watch), and another republishing everything from [the Department of Education’s press releases feed](https://www.ed.gov/news/press-releases). [1] I still have not accepted this, by the way. I’m still back there. [2] If I were to be 100% sincere, I might ask you to consider that this (hilariously brief) intent was a method of coping with the great existential truths I was facing for the first time. [3] I *definitey* was, though. For whatever reason, I do not remember associating the term “automation” with such activities, but I just found the “receipt” for my “purchase” of [IFTTT for iOS](https://apps.apple.com/us/app/ifttt/id660944635)… From July, 2013. # Against a Social Media Methodology ![lol Artifact](https://i.snap.as/vopPn5mt.png) ## A rushed request for pause & reflection on *why* we use social media. I have not been able to follow any more accounts on Twitter - from [@NeoYokel](https://twitter.com/NeoYokel), my primary, eldest account - for several years because of a limit implemented at some point by Twitter and documented in [this help document](https://help.twitter.com/en/using-twitter/twitter-follow-limit). Considering the breadth of the mechanic's significance for other users, I have often been compelled to explain this to new followers. Recently, it occurred to me that a handy, brief explainer page might streamline this process, so I created "[Why I Didn't Follow You Back](https://gist.github.com/extratone/8b762de50de414f8a4be05f9b0407fd8)" - in both GitHub Gist and Medium post form. Other than a lack of reciprocity in engagement which I can only speculate to occur in the minds of the opposite parties involved in this dynamic, this limitation does not detract from my Twitter life, as I exclusively consume content in Twitter Lists (which I have spoken about extensively, elsewhere.) A big theme in my 20s has been coming (slowly) to terms with the fact that I built my entire adult social life around a single, centralized social media Web Site. I mentioned this in [my Tweetbot 6 review](https://bilge.world/tweetbot-6-ios-review), recently, but - as I also strive to be a more sincere person and spend more time adding value to _others_’ lives - I’ve concluded that it is the time now to speak as openly and vulnerably as I can about my “Social Media Methodology.” Most of the resulting insights will not be new information, but ==I continue to encounter greater and greater confusion in the face of my well-meaning behavior online and I have decided to stop disregarding it.== This is _not_ an essay about how to “optimize” your social media use. It is - at least in part - a sort of manifesto against the very idea of designed online behavior beyond simply **being considerate** in a sense that predates even the spoken word. I, myself, have occupied a position well on the _chaotic_ side of the spectrum. You could say I have been mostly _chaotic neutral_ throughout my 12 years on Twitter thus far, and am actively working toward (and advocating for) _chaotic good_. Perhaps inevitably, I'm going to wade into some experiences with a few specific social media phenomena which I am particularly reacting to, here. https://twitter.com/NeoYokel/status/753114804617932801 ## Assumptions at bat 1. For the vast majority of mainstream social users, no amount of [insert vague overused marketing jargon noun] will *ever* result in a substantial accumulation of money/"influence" (which seems to be the diluted zag of "POWER" of the moment.) Those interested in learning about "marketing" should know that no authority on the subject would ever tell you to *start* with Twitter - this I can say with certainty. 2. Though Twitter was designed upon certain frameworks with certain rules which form quantifiable formulas where they are dependent upon a user's choices/methodology to produce results which we *have*, indeed, become more adept at predicting with study over time, it was *not* created as a *game to be won*. Perhaps more importantly, the "prize" of "winning" in the sense held by those who resist this assumption (notoriety, "influence," relevance) has continued to prove ultimately worthless (or worse) time and time again throughout the very short history of the cultural element as it exists today. 3. If both 1 and 2 pass scrutiny, the only remaining reasonable prerogatives in one’s social media use is to engage with _both_ strangers and friends in a manner which generally **adds value to the lives of all involved**. 4. 3 is not only _possible_ - it is easily _reproducible_. Most of my evidence is centered around my own experiences, but I believe - if I took the time - I would be able to find infinitely many publicly-facing examples. 5. Though I am going to use my own methods to demonstrate 4, **neither my ideas nor my behavior are the only means of interacting positively on social media**. https://www.youtube.com/watch?v=OvRIGVyW2zM I've come to the conclusion fairly recently that I need to become brutally frank about the discrepancies I've observed between others' accounts of their social media use and my own as soon as possible. The great, ambient grousing summoned throughout The Plague from even the first picogeneration to be born *directly* into The Social Web really challenged my assumptions about its *actual purpose* in the day-to-day lives of those in the center of the adoption curve. *You mean to tell me you've been spending all that societally-alarming time on your phone... On social media services... and you haven't made a single international friend? Or happened across a single niche community surrounding some bizarre practice or knowledge you'd long thought you were entirely alone in? What exactly have you being doing with all that tapping since your toddlerhood, then?* I had absolutely no clue how utterly *ineffective* the vast majority of n̳o̳r̳m̳i̳e̳s̳ still are at using social media for its general purpose in the most abstract sense: "*human connection.*" The essential realization toward which (I desperately hope) the largesse of America is being carried by conversations around [*An Ugly Truth*](https://www.harpercollins.com/pages/anuglytruth), as well as countless lower-profile essays, features, academic papers, and general shit shooting is that the responsibility for this ignorance rests *solely* on the platforms who systematically reformed the controls originally handed over by default to early adopters like me. I would love (for both selfish and very humanitarian reasons) to be able to proclaim some precious, one-of-a-kind genius as the sole differentiator between my complete confidence in my ability to design and maintain social software configurations that have kept my online consumption *entirely* free of unwanted encounters and the amount of regular involuntary bullshit I hear described in the day-to-day online existence of everyone around me. The truth, I suspect, involves my being of the most privileged category of human in Western civilization combined with the group of high school friends who adopted and socialized me. It was a core group summing half a dozen heads at a Full Turnout, ``` ``` They watched anime, played video games, More importantly, perhaps, I don't think I can recall a single instance of sincere malice from within myself toward anyone who'd actually converse with me. On the occasions I have been all huffy and confrontational, I do not remember a single example in which I was unwittingly ejected from a conversation left feeling *unsatisfied*. Over the past few months, I've started a few Posts for this blog regarding Twitter, its properties, and its recent feature addition frenzy which I'll probably never finish. I finished the first and narrowest one - the aforelinked Tweetbot 6 review - but the (debatably) most important one - highlighting how irresponsibly and distastefully [Twitter butchered Periscope and built Spaces atop its technology](https://github.com/extratone/bilge/issues/79) - would make less and less sense as time goes on. I definitely got caught up in the "death" of the live video streaming service, fueled by my now quite old desire to celebrate it, which I will hopefully accomplish *eventually* in a very sentimental essay. If I can successfully link them editorially, the subject encompassing Spaces - social audio's "moment" - would also include mention of RSS, "Podcasting" (the term describing the medium,) Spotify, and Clubhouse, inevitably. Instead of counting on my future self entirely, however, I'm going to begin by discussing that last one. ![Clubhouse Blasted Logo](https://i.snap.as/hf2fIH9M.png) ## The (‽‽‽th) Social Audio Renaissance Exactly one month ago, I finally [broke into Clubhouse](https://www.joinclubhouse.com/@davidblue) thanks to a random kind stranger on Twitter who preferred not to be named. April 25th was the first time I set eyes on the app - though I could've (and usually would've) looked up screenshots and/or browsed the litter of how tos available, I did not. By this time, I'd accumulated quite a bit of experience with Twitter Spaces - derided universally by tech media as a "Clubhouse clone" - and therefore assumed the original would be "better," at least in pure feature terms. What I found, however, was even *less* evidence that anyone building Clubhouse has been/is/intends to be a regular Clubhouse user. Spaces, at least, included five emoji reacts for listeners from the beginning: 💯✊✌️👋😂. Clubhouse's exclusive means of Listener-Host interaction is Hand Raising, which is essentially requesting to speak, even though the hand waving emoji is [*literally featured in their logo*](https://joinclubhouse.com/press). (The fact that neither have thought to add 🙌 is absolutely inexcusable/inexplicable.) https://twitter.com/NeoYokel/status/1344473573226762241 In case you weren't aware, I appear to enjoy trying out new social services. My password manager is full of literally thousands of credentials for social media apps/services/startups - most of which have undoubtedly collapsed or been absorbed by a larger entity. Since generating said credentials has become such an easy process, especially, I tend to immediately sign up for an account on just about every one I hear about. (I even have [a Parler profile](https://parler.com/#/user/Extratone) I cannot bear to actually look at.) Generally, I sign up, follow anyone I know from elsewhere if given an account-bridging option, poke around enough to figure out whether or not the service in question could add something to my online existence, and end up leaving for good. Most of these services are *not* unique in any way, to a perplexing degree. A few - like Pinterest - gain success separately as I give up on trying to integrate them into my life. The miniscule remaining percentage, though, end up becoming a part of my daily existence. The most *recent* of these dates back to April 2017, when I first discovered [Mastodon](https://bilge.world/eugen-rochko-interview). https://twitter.com/0kbps/status/1393792313936146433 ### The Feature Story "Social Audio" did not begin with Clubhouse. Anchor originally launched as a "[public radio](http://web.archive.org/web/20160209224846/https://anchor.fm/about)" app, believe it or not. *Extratone*'s channel was actually the [first to be featured](https://www.patreon.com/posts/archived-our-day-11592398) in their Music section, once upon a time. Frankly, that happening was the most positive outcome of my social media service accumulation habit. More recently, [Stereo](https://stereo.com/davidblue) launched, describing themselves as "[the premier LIVE broadcast social platform that enables people to have and discover real conversations in real time](https://stereo.com/about)." Bizarrely, the most legitimate media coverage I could find of Stereo was [from *Glamour UK*](https://www.glamourmagazine.co.uk/article/stereo-app), and its author definitely spent less than a day actually using the service. Adam Corolla remains #1 on its earnings leaderboard and its [conversation export feature](https://youtu.be/0GfGLUbc6fw) is a personal favorite. The [Big *WIRED* feature on the subject](https://www.wired.com/story/the-future-of-social-media-is-all-talk) from December of last year does not mention Stereo but lists three other "alternatives:" [Wavve](https://wavve.co/), [Riffr](https://riffr.com/), and [Spoon](https://www.spooncast.net/). (None of which are actually competitors/alternatives. Sorry, Arielle.)

https://twitter.com/NeoYokel/status/1388936080645312520 I probably shouldn't proclaim to be an authority on social audio, but I am definitely a veteran. From that context, I must say that Clubhouse is horribly unoriginal - not only in the sense that "successful" business implementations of others', previous ideas tend to be diluted versions of the original, but almost pitifully so. I will commend the app's developers on their somewhat-thorough release notes (even though they can be viewed only when first opening the app after an update instead of *in the designated space on the App Store*,) but the extent of *linkable* Clubhouse documentation amounts to [eight blog posts](https://joinclubhouse.com/blog) and a "[Community Guidelines](https://www.notion.so/Community-Guidelines-461a6860abda41649e17c34dc1dd4b5f)" Notion page. Though I've only been a user for one month, I wonder what the fuck they've been doing since launch, given how sparsely-featured the app is at this moment. There are Notifications, Profiles, and Clubs - the latter of which cannot be created until a user surpasses an unknown threshold of renown(?) on the app. Competent calendar integration may be the service's singular innovation, though support for Outlook has yet to be added. The Big Issue, though, is finding a "talk" to attend that will not drive you utterly insane... ![Clubhouse Bullshit](https://i.snap.as/RypjcP6M.png) ### The Grand Delusion I wrote the assumptions at the beginning of this Post in a single go after [a particularly icky Sunday Clubhouse experience](https://twitter.com/neoyokel/status/1388930367671910404) out of a deep concern that'd been growing since first exploring the app. The content I've found there is not at all what I expected, to be honest. I've found it almost entirely indecipherable, which makes critique beyond [just fucking screaming](https://twitter.com/NeoYokel/status/1388936080645312520) difficult. *The New Yorker*'s Anna Wiener did a much better job than I could realistically manage in "[Clubhouse Feels like a Party](https://www.newyorker.com/news/letter-from-silicon-valley/in-the-clubhouse):" > There was something pleasant about meandering from conversation to conversation, as if I had walked into my own home to find a conference in full swing. But I also wondered, Why did I let all of these people into my house? > > ... > > It is hard to shake the feeling that everyone on Clubhouse is selling something: a company, a workshop, a show, a book, a brand. More recently, her publication's nemesis declared "[The Clubhouse Party is Over](https://www.vanityfair.com/news/2021/04/the-clubhouse-party-is-over)," but I wouldn't know. None of my friends have ever Tweeted a Clubhouse link (determinable via [this Twitter search](https://twitter.com/search?q=%22joinclubhouse%22&src=typed_query&f=live&pf=on).) Very few of the tech industry celebrities I follow have, either - pretty much just [Chris Messina](https://twitter.com/chrismessina) and [Jason Calacanis](https://twitter.com/Jason). This is noteworthy because I believe [my list of followed accounts on Twitter](https://twitter.com/NeoYokel/following) to be particularly diverse. I actively followed accounts across my various interests from ages 15-25 (when I hit my [follow limit](https://bit.ly/dbfollow)) and basically *never unfollowed anyone*. I would imagine there are several accounts within that list which I would be ashamed to be associated with, now, and yet none have shared a Clubhouse link. Reading any further into this observation would require actual data journalism, which I'll leave to the pros. It does prompt the question, though: if nobody I've ever known or been interested in on Twitter is using Clubhouse, *who* in fuck *is*? Frankly, I do not understand the business incentive behind the massive duplication of other software/services defining featuresets of late. I see that Instagram stories have eclipsed Snapchat's in terms of [sheer user count](https://money.cnn.com/2018/06/28/technology/instagram-stories-users/index.html), but I do not understand why its leaders would choose to fuck their legacy by such blatant idea theft, much less why [Twitter](https://blog.twitter.com/en_us/topics/product/2020/introducing-fleets-new-way-to-join-the-conversation.html), [Facebook](https://techcrunch.com/2017/03/28/facebook-launches-stories-in-the-main-facebook-app), [Patreon](https://blog.patreon.com/lens/) and even fucking [LinkedIn](https://www.inputmag.com/culture/nobody-wants-stories-on-their-linkedin-feed) have implemented nearly-identical featuresets. Though I know Ben Thompson's word on these matters should be easily digestible, I haven't been able to actually take a bite. For the End User, especially, I cannot even begin to conceive of what the leaders behind these decisions imagine the day-to-day experience of the average social media user looks like in the near future. *How many apps* am I going to cycle through to get a single story-type piece of content satisfactorily shared? Personally, I currently use three, and sharing a single bit individually across all of them one-by-one (since the current state of APIs is not conducive to consumer-targeted mass-sharing tools) makes me feel utterly insane. My lack of understanding would be meaningless if it were not so widely shared among my peers - young, brilliant, multifaceted, and distinctly original creators who (in large part) make stuff on the internet full-time. *They* are who I'd actually plan ahead to hear from in a live broadcast setting like Clubhouse or Twitter Spaces, but Twitch seems to do just fine. For audio broadcasts, specifically, the *hip*, fresh sources which come to mind are all distinctly Open Web: [Datafruits.fm](https://datafruits.fm/), [Solarpunk.cool](https://solarpunk.cool/magic/computer/club/), [Poolside.fm](http://poolside.fm/), and my Mastodon friend [Vanta's stream](https://radio.schizoid.tech/). The potential of the term "social audio" is truly being explored by projects like [Rave.DJ](https://www.patreon.com/RaveDJ) - a homegrown, Patreon-funded service for sharing mixes/mashups. On a smaller scale, the sky is the limit for [Whyp.it](https://whyp.it/) as a pure audio playback/annotation tool for creators (as developed by Brad Varol, whom I [interviewed in March](https://lnns.co/ZSadwt3Hnfi).) Compared to these, most of Clubhouse's communities seem bleak at best. As I may or may not get around to arguing thoroughly about Twitter Spaces, these services' fundamental, near-complete disinterest in **discovery** of new voices and their subsequent servitude to only their most popular users should be extremely worrying for us all - including those who benefit most. ![Tinder Obfuscation](https://i.snap.as/DhF352N3.png) ## The Consequences of Strategy I have more than my fair share of stories and peeves about dating apps. On several occasions, for instance, I have corrected those who cite Tinder as the origin of the directional swiping interface, explaining that it was actually the now-defunct service Hot or Not who did so some 15 years ago. (Why on Earth I am compelled to do so, nobody knows. Not even God.) Somehow, though, I think most of us can agree that Tinder is the *least shitty* of the explicitly hookup-ish spectrum of the genre. Or at least, I thought so, until I happened to spy the "Photo Tip" embedded above beneath a preview of my profile on the iOS app. The innocuousness of this advice, which surely would not be dispensed in *any* other context without immediately screaming malice, has been on my mind ever since. It is not the devil who tells you to make sure a passing potential match doesn't immediately learn you have children, but the Marketing Man. (Yes, they are distinct. I would explicitly discourage that particular sort of demonization, mostly because it has proven completely ineffective as cultural critique.) I am in no position to relevantly explore the topic of Society & Sex, generally, other than to insist that most people on Tinder *in my area*, at least, are not looking to *leverage* it *for the dick*. They are looking for dates, and a good many are working class single mothers. [[Curate Others, Not Yourself]] #meta # Fwd: What's New in Shortcuts - Issue #25 From: David Blue To: David Blue Date: Dec 12, 2021 Subject: Fwd: What's New in Shortcuts - Issue #25 David Blue Editor-in-Chief, Extratone Begin forwarded message: > From: Matthew Cassinelli > Date: December 12, 2021 at 14:02:39 CST > To: davidblue@extratone.com > Subject: What's New in Shortcuts - Issue #25 > Reply-To: matthew.cassinelli@gmail.com > > Welcome to Issue 25 of “What’s New in Shortcuts!” This week there was tons of great ideas shared on T > Matthew Cassinelli > @mattcassinelli > Welcome to Issue 25 of “What’s New in Shortcuts!” > This week there was tons of great ideas shared on Twitter, I got deep into Apple Watch (and JIRA?), and there’s a batch of new Shortcuts actions from indie apps – but first, some housekeeping. > In case you hadn’t noticed, this 25th issue marks the beginning of my new Sunday delivery schedule. > I wrote about this briefly on Twitter, but ahead of my work schedule changing in the new year and in an attempt to capture the full week of material from Monday-Sunday, I will now be sending this newsletter at the end of every week on Sundays. > (I’ll also be taking the week after next off for Christmas break, so there’ll be no issue on December 26). > In other news, my Shortcuts Catalog release is officially coming at the beginning of the new year, so thank you everyone for your patience in the meantime – I’m ready to get things rolling and help folks take their personal productivity into their own hands in 2022. > Until then, here’s what’s new in this week: > 🆕 New from me > ✅ Shortcuts experiments with agile project management > Earlier this week, I was looking through the Apps section of Shortcuts wondering what I hadn’t built for yet and I came across JIRA, the Atlassian-owned agile project management software that the team at Workflow used to manage the backlog of tasks. > JIRA actually has fairly good Shortcuts support, while led to this apparent cry-for-help tweet with a fairly humorous set of replies: > Matthew Cassinelli > @mattcassinelli > Why am I like “I should use Jira” ?? > 10:50 PM - 6 Dec 2021 > But, as what tends to happen on Twitter, the challenges in the replies actually prompted me to think through why I felt this way – and I realized it sprang from a long-term dissatisfaction with my project management system: > Matthew Cassinelli > @mattcassinelli > @every_daydad I’m maintaining a website with 2.5k+ individual items and have been working solo for 5 years, I don’t think my to do list is cutting it > 7:10 AM - 7 Dec 2021 > For me, task managers are fine for managing existing tasks on the front-end, but the back-end of actually managing complex projects was missing for me as a multi-disciplinary independent worker. > The Shortcuts Catalog and its Shortcuts Library, Action Directory, and redacted unreleased features are ongoing software projects with a backlog of issues, tons of tiny features or bugs I’d like to change, and iterative release cycles – and all of that fits much better into a tool like JIRA. > Plus I’m in control of the process, I am not working with others (where I imagine most of the pain of JIRA lies), and the Shortcuts support actually makes a significant different to me. > Additionally, with JIRA for Mac being built with the same technology as the iOS app, the Shortcuts for Mac actions just work – and it might make this one of the most powerful project management apps on the Mac (for Shortcuts users) right out of the box: > JIRA lets you pull your data in, then update it in a variety of ways. > Out of the set of actions, I created two shortcuts so far – View an issue and Add an issue: > “View an issue” improves on the default Run JQL query to pull a list of unresolved issues assigned to you, asks you to choose from the list, and opens your choice – I added a list of projects inside the shortcut to choose from as well: > View issue – Matthew Cassinelli > Asks you to pick a project name from JIRA, then asks you to choose from a list of unresolved issues assigned to you and opens it. > www.matthewcassinelli.com > “Create an issue” prompts you to enter your task title, then to pick a project, then creates a new issue – it doesn’t open the issue intentionally, however, so that I can use this create multiple issues in a row. I’ve also assigned this to a keyboard shortcut on the Mac as well, so I only have to hit Control + Option + Command + I and I can immediately track new issues/bugs right away: > Create an issue – Matthew Cassinelli > Asks you to enter a task, then adds it as an issue in a preselected JIRA project. > www.matthewcassinelli.com > I’ll be creating more shortcuts for JIRA and playing around with JQL stuff (in as simple a form as I can keep it) for members, so check out the beginnings of the collection here. And obviously this won’t exactly apply to everyone, so I won’t be focusing on it entirely, but if you do have experience with agile management and/or currently use JIRA at work, please let me know and we can brainstorm together: > 🎮 Automating how to choose your video game session > After my JIRA bender, I had to relax my brain a bit with some video games – but of course that didn’t stop me from trying to automate my favorite game, Apex Legends: > Apex Legends - The Next Evolution of Hero Shooter - Free to Play > Apex Legends is a free-to-play hero shooter game where legendary competitors battle for glory, fame, and fortune on the fringes of the Frontier. > www.ea.com > See, Apex Legends released a new map a month ago, and, while it’s lots of fun, I’ve gotten a bit bored of it being in the main Ranked rotation the entire time. > In the Public matches, the map rotates between the new one and older maps – but only every few hours. So, I found myself signing into the game, checking the map, and deciding whether I want to play depending on the current map (there is a new Halo game, after all). > Naturally, I thought to myself that there had to be a way to automate this 🙃. And, to my luck (!), there is – thanks to a website called ApexLegendsStatus.com. > This site (and group of developers) have generated a public API using data gathered from Respawn (the makers of Apex Legends) – all I had to do was sign up for an API key, look at their documentation, start making Get Contents of URL requests in Shortcuts, and use Jayson to dig around with/prettify the results. > With a little experimenting and pulling the right dictionary keys, I made the shortcut below – it calls their Map Rotation endpoint, gets the current map data, also gets the upcoming map, and displays it all using Show Result: > Current Apex rotation – Matthew Cassinelli > Calls an Apex Legends API to get the activate map in Public matches and gives you the current information. > www.matthewcassinelli.com > Now, whenever I want to check the current map, I can run the shortcut from my Shortcuts widget or Apple Watch – but even better, I can actually ask Siri and she’ll read out my little answer: > Many API shortcuts work in all forms. > And even better than that, I can just ask her on the HomePod sitting next to my gaming setup – it’s quite slick: > Matthew Cassinelli > @mattcassinelli > Lol last night I found https://t.co/3mtAqW8mYZ and they have an API and now I’m using Siri on my HomePod to tell me what the current map rotation is 🤓 > 9:43 AM - 8 Dec 2021 > Plus, Matt VanOrmer jumped on the thread and made this amazing addition that plays off the meme of “Where we droppin’, boys?” for battle royale games like Apex Legends. > While you’re waiting for a game to load, you can run the shortcut below and it’ll grab the current map, pick from a list of named locations on that map, and randomly choose a spot for your team to land once the game starts – Siri can now pick your drop for you: > Where We Droppin? > Pulls the current map in rotation for Apex Legends, then picks a random spot to drop on the map for you from a dictionary of locations for that map. > www.icloud.com > I’ve yet to tap into the Player Stats and other info, but my main use case is nicely solved, and., thanks to Matt, another one I hadn’t even considered it solved now too – I’ll have to save the statistics for another day when I need a break from something else 🤓. > 🧩 Apps with new actions > Just Timers is working on more complex actions for Shortcuts that let folks do more with intervals – I’ve been intrigued in this app more after hearing CGP Grey talk about how he uses it on Cortex, so this thread was verrry interesting: > Just Timers > @JustTimers > With the latest v2 beta, you can build complex interval timers using the Shortcuts app (and much more!) > > Here are some example to get started with > 12:06 PM - 5 Dec 2021 > Timery, the community favorite time-tracking app, has updated the Shortcuts actions to include parameters for adding specific times – as noted in the tweet, this means folks don’t have to use Adjust Date every time they want to change the time period, which is a great catch by the developer Joe Hribar and shows how he was paying attention to how folks used it: > Timery > @timeryapp > In Shortcuts, the actions to start, stop, add, & update time entries have some new time options including setting start & stop times to minutes ago directly in the actions without having to use an Adjust Date action to calculate a new time. https://t.co/1hE08ZV5HM > 10:59 AM - 7 Dec 2021 > Michael Tigas of Focused Work put out this update a few weeks ago that lets you block apps & website while focusing, all built into the Shortcuts actions for the app – definitely check it out ahead of any New Years Resolutions you might be setting 😉: > Michael Tigas > @michael_tigas > @FocusedWorkApp 1.11 is now available on the App Store! 🚀🚀🚀 > > Block distracting Apps & Websites during a focus session - on your iPhone, iPad, and Mac. https://t.co/e4XFuPjt7m > 6:53 PM - 19 Nov 2021 > And finally, the folks at LaunchBar have also teased a native integration for Shortcuts – it’ll be great to see all the major Mac automations app with their own Shortcuts support added in: > LaunchBar > @launchbar > macOS Shortcuts are on their way… https://t.co/UtvtBM40JK > 9:10 AM - 6 Dec 2021 > 💡 Good ideas from the community > To start, Alexander put together a great thread with 9 tips for using Shortcuts on the Mac – I definitely recommend you read the whole thing and download his shortcuts too: > Alexander Käßner > @alexkaessner > It’s been a few weeks since Monterey was released. Time to share some I use on my Mac. > > Check out the thread! 👇 🧵 > > PS: RT’s and comments with your Shortcuts are appreciated! https://t.co/yezidJ6FfQ > 7:34 AM - 7 Dec 2021 > Matthew Bischoff shared a great method for clearing out your screenshots every night at midnight – someone in the comments also shared an alternate that accounts for the filename and works well if you’re running it on past screenshots (anything not from the last day). > Matthew Bischoff > @mb > This is precisely why I have a shortcut run at 12 AM every day to clean up Screenshots automatically and move them to a folder in iCloud. https://t.co/DaIwTjAsaL https://t.co/wadzplKw14 > 10:57 AM - 7 Dec 2021 > Nathan Amery has made an amazing shortcut that uses the Live Text feature on an image and saves the results to Spotlight, which lets it index them and become searchable – to be honest, Apple should make this a default function of Live Text as well: > Nathan Amery > @namery > I made a Shortcut on Mac to add the OCR-read text from any image to the spotlight comments. I now have Spotlight-searchable screenshots by their actual content. > https://t.co/X2ZdKPzqHU > 6:55 AM - 8 Dec 2021 > Jack Wellborn has shared an update to his shortcut that looks at your calendar and finds Zoom links in the URL, then opens that to let you immediately join your meeting – he’s got some good JavaScript for Automation actions in here too: > Jack Wellborn > @JackWellborn > I updated my "Open Next Zoom Meeting" Siri Shortcut to (hopefully) better identify an upcoming meeting. The previous version used "Get Upcoming Events", which annoyingly favored all-day events as "upcoming." > > https://t.co/sHzmD3NFjQ > > https://t.co/TOkQDgIcpS > 8:19 AM - 8 Dec 2021 > Will Hains shared this shortcut he uses to help his kids fall asleep – Counting Sheep is a clever idea: > Will Hains > @willhains > Check out my automatic child-putter-to-sleeper iOS shortcut: Counting Sheep > Works like a charm! > Customise languages as needed. https://t.co/sNrElVkolh > 6:10 AM - 22 Nov 2021 > Charles Vestal has shared a shortcut that takes advantage of Toolbox Pro’s text recognition and translation to automatically convert a screenshot into your language: > Charles “Super Hell” Vestal > @charlesv > @codebytere https://t.co/evb8RasJ7l > > If you just run the shortcut, will prompt for a photo, too. > > I find the text recognition in Toolbox Pro works better than iOS 15’s: https://t.co/fgOH898odM cc @janl > 12:03 AM - 24 Nov 2021 > Kev on Twitter has shared a shortcut to search Genius for the current song – and I love that he keeps it in a Home Screen stack of widgets too, because keeping up to 10 shortcuts in a Single stack is an underrated method of accessing your shortcuts quickly: > 🏳️‍🌈 Kev 🏳️‍🌈 > @opal_glows > apple shortcut to get the lyrics of the current song via genius > > perfect in a homescreen stack > > sometimes it fails and you just have to execute it again, im guessing something to do with the safari viewer > > https://t.co/tWj2owBxco > 8:36 AM - 24 Nov 2021 > LaRosa Johnson has also saved my bacon—and that of ___—this week with a shortcut that takes all of the weird line breaks in anything scraped from Live Text and fixes it using Match Text & a regular expression: > LaRosa Johnson > @larosamjohnson > One of the great things about iOS 15 is live text. It’s become my go to way for grabbing quotes from books & adding them to @obsdmd but those blasted line breaks… well, this quick share sheet shortcut fixes that. Feel free to use & share it. > > https://t.co/RdxNLhxSU4 > 7:23 AM - 30 Nov 2021 > He’s also made an updated version that fixes a bug, so grab the link from this tweet: > LaRosa Johnson > @larosamjohnson > @mattcassinelli @dukemeiser Thanks for checking it out. Here’s the latest version. I think the original had a big > > https://t.co/D99TDlHAoi > 1:20 PM - 7 Dec 2021 > 📲 Shortcuts Spotlight > ⌚️ Using Shortcuts for Apple Watch more > Alongside my experience of relearning how to use Shortcuts in context of a Mac app and everything that’s now possible there, I’ve also been experimenting more with Shortcuts for Apple Watch – I want to use my shortcuts in the right place at the right time, and this device is always with me. > For starters, it can be hard to simply remember to use the app often – this mostly true of all Apple Watch apps, which are deprioritized below the Watch face to make room for quick-glance complications. > Shortcuts for Apple Watch works well in this context for triggering single shortcuts that fit with the theme of your Watch face – you can set a complication to show a Watch shortcut, which displays the glyph for that shortcut inside a mini Shortcuts icon: > Setting a single shortcut as a complication. > Tapping the shortcut complication will open a prompt to confirm running the shortcut – this is an added layer of protection against errant taps on your watch screen, so that you don’t accidentally run your shortcut all day long by hitting your wrist on things: > This dialog interrupts all of your Shortcuts for Apple Watch set as complications. > However, in practice, I personally don’t find significant use for a single shortcut complication, mostly because that extra tap gives it just a little bit too much friction. But, in my typical fashion, I also probably just have too many ideas for Watch shortcuts (or even multiple ideas with a single context) that I can’t narrow it down well enough to put just one on a Watch face. > Instead, I like to set the complication to just open Shortcuts for Apple Watch– scrolling through my list and tapping on a shortcut to run it right away is basically just as easy. Plus I have my full set of shortcuts available, organized by color and custom sections I’ve designed: > Shortcuts from each of my custom areas on the Apple Watch. > I like using the Siri face with Shortcuts in the top left instead of the Siri button, putting the Shortcuts complication in any of the single circular spots across my other faces, and even inside some of my more nice-looking faces: > Ways to use the Shortcuts complication to open the app. > Plus, I realized that the easiest way by far to use all my Watch shortcuts would be making a Watch face dedicated to Shortcuts – and what better way that the X-Large face? > Matthew Cassinelli > @mattcassinelli > One easy way to use Shortcuts for Apple Watch more often: https://t.co/xBLgIUkp8C > 10:58 AM - 8 Dec 2021 > I have really been enjoying making better use of Shortcuts on my Watch, and have been developing some new use cases as well – but that’s for another issue. 😇 > If you’re a member, make sure to also check out my Shortcuts Library to see all of my current and past Apple Watch shortcuts out now – this category will also be updated alongside my Shortcuts Catalog release: > Apple Watch shortcuts | Shortcuts Library > Membership category for shortcuts that work with Apple Watch – currently includes 66 shortcuts. > www.matthewcassinelli.com > Otherwise, that’s all for this week! > Hope folks are staying warm and cozy this winter season – see you next Sunday 🤖 > Did you enjoy this issue? Yes No > Matthew Cassinelli @mattcassinelli > Learn about Apple's Shortcuts from a former team member and get new shortcuts every Friday. > Plus I'll share new apps, stories, and ideas from the community! > Get the newsletter for free or sign up as a member on MatthewCassinelli.com. > In order to unsubscribe, click here. > If you were forwarded this newsletter and you like it, you can subscribe here. > Created with Revue by Twitter. [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjhGMjIwNkMxLTBDNTItNDRF%0D%0AOS1CQjcyLTUyQ0IzMkY3QzY5QkBleHRyYXRvbmUuY29tOzQyMjk2OTUzMA%3D%3D) #i #archive #email # Hall of fame: Loren Brichter and Tweetie [image:157A82A3-8F66-4F92-9D62-37EA9CEE36AD-1476-0000002E8FC47DBD/tweetie_hall_of_fame_hero.jpg] Tweetie for iPhone launched in 2008 and from the very beginning was described as the Twitter app Apple themselves would have made. While that was certainly meant to compliment Tweetie's native look and feel, and its incredible performance, it falls short of capturing the skill and vision of [Loren Brichter](https://twitter.com/lorenb), the man behind the app. At the time, Brichter and Tweetie seemly came out of nowhere. Brichter, however, had been working at Apple as member of the original iPhone's OpenGL team, off the public -- and developer community -- radar. After leaving Apple and returning to the east coast, Brichter began his own indie development company, [atebits](https://www.atebits.com/). His first app was Scribbles for Mac. In a blog post [via the [Internet Archive](http://web.archive.org/web/20071207100526/http://www.atebits.com/blog.html) ], Brichter described Scribbles like this: > Lately there has been a barrage of image editors for Mac OS X. No doubt, a few of them are pretty great, but Scribbles is unique. First of all, it's designed to do one thing insanely well: drawing. It's not an image-editor, or a photoshop-killer, or an excuse for cluttering your screen with two dozen translucent HUD's... it's a drawing app plain and simple. [...] The Mac needs a drawing tool that everyone can use. One of the primary design goals of Scribbles was to make the interface accessible to every potential user, from kids to pros. The hope is that this is evident as soon as you start it up. The entire interface (sans the menu bar) is entirely text-less. The interface is contained in a single window, and morphs between modes. Buttons that you don't need stay out of your way until you need them. The interface for dealing with layers is my personal favorite. For people not familiar with the concept, Scribbles makes layers intuitive. [image:CB5D4157-BCD7-48FC-BF83-D76E059EC767-1476-0000002E8FC39278/4x1.png] On [Debug 1](https://www.imore.com/loren-brichter-talks-opengl-tweetie-letterpress-and-future-interface), Brichter added: > MacPaint was my inspiration for Scribbles. It was also my first attempt at my own custom UI framework. Custom UI frameworks is a theme Brichter would revisit again and again. After Scribbles, Brichter switched to iOS (then iPhone OS). And on November 19, 2008, he launched Tweetie. The original release was functional and conventional, very much that Apple-style Twitter app. It earned Brichter considerable praise, including John Gruber's on [Daring Fireball](https://daringfireball.net/linked/2008/11/20/tweetie-10): > Tweetie, a brand-new $3 iPhone Twitter client by Loren Brichter, is now available from the App Store. I’ve been using beta versions for a few weeks, and it is currently my favorite iPhone Twitter client by far. In April of 2009, Brichter also released Tweetie for Mac, which used his new Bigbird engine, and for which he created [twui](https://github.com/twitter-archive/twui), a "hardware accelerated UI framework for Mac, inspired by UIKit [for iOS]". Brichter kept iterating on the iPhone version as well. He added features like Quick Actions, which let you swipe a Tweet to reveal reply, user info, and favorite options. And Brichter showed he had a sense of humor, and a willingness to troll the App Store, by adding flashlight functionality and fast noises. [image:F1C843A6-3A3D-4A66-831B-BD902791F357-1476-0000002E8FC298AE/2x1.png] Tweetie wasn't immune to controversy, however, and not just for its use of the above-mentioned "Popularity Enhancers", or the chat bubbles. Tweetie 1.3 was initially rejected by the App Store because "" appeared in the trending topics list on the day it went up for review. It was one of the highest profile examples of an area where Apple and developers still sometimes struggle to find common ground, and sense. At WWDC 2009 in June Brichter and Tweetie won an Apple Design Award (ADA). Brichter wrote about the experience, and his experience with Tweetie's success in general, on the atebits blog (via the [Internet Archive](http://web.archive.org/web/20100313165313/http://news.atebits.com/post/199400544/bigbird-redux) ): > I had no idea it would become so successful. I think it had something to do with the fact that it embraced the iPhone interface philosophy. Many other apps “invented their own wheel”, Tweetie did it the Apple way. I gave a talk at Stanford about it. And I won [something](https://www.imore.com/apple-design-award-winning-iphone-apps-tweetie-topple-mlb-bat-wooden-labyrinth-accuterra) that I had dreamed about since [the day I learned Cocoa](https://www.amazon.com/Learning-Cocoa-Objective-C-Duncan-Davidson/dp/0596003013?ie=UTF8&s=books&qid=1205990052&sr=1-2&tag=hawk-future-20&ascsubtag=UUimUdUnU18701YYw) so many years ago (thanks James). I’m beyond honored. [image:BEF58CE8-52EF-4EF7-8BDB-8F410712D7F1-1476-0000002E8FC1B7F1/1x1.png] In September of 2009 Brichter also caused consumers and developers alike to pay attention when he famously released Tweetie 2.0 as a new app, rather than an update to the existing Tweetie binary. Because Apple does not allow for paid upgrades in the App Store, some developers had resigned themselves to giving away all new versions of their app for free. Brichter bucked that trend, which meant he would get paid for re-writing most of the code from scratch, but customers of the original Tweetie would have to pay full price for the new version. It may have only been a few dollars, but it was, and remains for other developers who've since followed in his footsteps, a controversial choice. Yet it showed Brichter understood more than development and design, and more than marketing. It showed he understood the business and the importance of sustainable products. From the same blog post (via the [Internet Archive](http://web.archive.org/web/20100313165313/http://news.atebits.com/post/199400544/bigbird-redux) ): > Tweetie 2 for Mac will be a completely free upgrade. (So if you haven’t already grabbed a license, feel free to do so). On the other hand, Tweetie 2 for iPhone will be a whole new app. And while it’s arguably worth a lot more, I’m keeping the price exactly the same: $2.99. Tweetie 2 was a phenomenal upgrade, with a set of new features that catered to casual users and power users alike. It had persistence (before Apple added it in iOS 4), drafts, threaded conversations, @people picker, peak gestures for replies and other gesture shortcuts, integration with a lot of other nerdy apps, API proxy, and all of it simple and relatively easy to use. And it introduced the now ubiquitous pull-to-refresh gesture. ("Pull to refresh" image via [Tai Shimizu](http://taishimizu.com/302/Fitts-rsquo-s-Law--Touchscreens--and-Filterstorm-Cropping-) ): [image:AA8F8EF9-4701-4A9F-9D94-D33B181385C3-1476-0000002E8FC0CB47/_2x1.png] Quantifying Brichter's success with Tweetie a recent [Wall Street Journal](https://www.wsj.com/articles/SB10001424127887324392804578358730990873670) profile said: > The son of a contractor and a restaurant owner, Mr. Brichter graduated from Tufts University with a degree in electrical engineering in 2006. He lives with his wife and two dogs, working from a small, tidy home office with a large Mac monitor and a framed chart of Tweetie's second version topping the app store revenue chart, a Christmas gift from his father. (The $2.99 app achieved the status in 2009 while making about $50,000 a day.) [image:0CBBD976-1D61-4CE6-9D00-C634E8C00C1D-1476-0000002E8FBFBF4C/16x9.png] On April 9, 2010, Twitter bought atebits' iOS products and Brichter's services. Twitter for iPad launched under their, first party, brand. Along with the re-named Twitter for iPhone, their prices all went to free, and they became the official Twitter clients for iOS. Twitter for Mac launched later, in 2011. From the [Twitter](https://blog.twitter.com/official/en_us/a/2010/twitter-for-iphone-1.html) blog: > We’re thrilled to announce that we’ve entered into an agreement with atebits (aka Loren Brichter) to acquire Tweetie, a leading iPhone Twitter client. Tweetie will be renamed Twitter for iPhone and made free (currently $2.99) in the iTunes AppStore in the coming weeks. Loren will become a key member of our mobile team that is already having huge impact with device makers and service providers around the world. Loren’s work won the 2009 Apple Design Award and we will eventually launch Twitter for iPad with his help. With Twitter for iPad, released on September 2, 2010, Brichter took it a step further. You could slide panels of data across the screen, layering your way through levels of tweets, people, and information, getting more each time while never losing your last state or path back. It was won of the first true next-generation tablet interfaces and while it was divisive, with defenders and detractors alike, it was undeniably audacious and forward-thinking. Arguably, it was part of the trend that eventually settled into the hamburger and basement interface metaphor. And Brichter had only just gotten started. From [Debug 1](https://www.imore.com/loren-brichter-talks-opengl-tweetie-letterpress-and-future-interface) > Twitter for iPad was a ton of fun to make. I think if it had another two or three months in the oven, it would have stood the test of time. But it wasn't quite finished, it was never quite finished. [image:0225F18A-0143-42EC-A927-DCDE74CAD24F-1476-0000002E8FBE9BF9/3x1.png] Unfortunately, Twitter changed business priorities and design direction before Brichter could finish his work or achieve his vision for the apps born as Tweetie. On November 5, 2011 Brichter and Twitter parted ways. Back at atebits and back as an indie developer, Brichter's next and current project is Letterpress. Inspired by his desire to play a turn-based word game with his wife, Brichter being Brichter spent some time re-writing UIKit in OpenGL first, then released the clean, solid, whimsically animated, whose instant and immense popularity more than pushed Apple's Game Center to its limits. Dave Wiskus wrote in his [iMore](https://www.imore.com/letterpress-atebits-review) review: > It seems weird to relaunch atebits with a word game. Back in May, I asked Loren what he was working on next, and he said he wanted to start off small in order to "reset expectations". This turns out to be a brilliant move: more work on a social network of any kind would seem obvious and risk painting the man as a one-trick pony. However, a game helps to shift the focus back to the product. [image:EAF23E0F-B1C2-47C4-BCCF-9997A9D708F3-1476-0000002E8FBD6727/_16x9.png] * Letterpress - Free - [Download now](https://itunes.apple.com/us/app/letterpress-word-game/id526619424?mt=8&at=10l3Vy) Brichter has also recently been helping out his friend, Mike Matas, at Facebook. And it's still just as possible that's he's still only getting started. > "Loren Brichter was a pioneer in the iPhone’s early days, and has remained at the forefront throughout iOS’ fast-paced six year history. The inventor of pull-to-refresh and the creator of Letterpress, Loren has planted his place atop the new mobile landscape and is worthy of induction to the iMore Hall Of Fame." > Marc Edwards, [Bjango](https://bjango.com/) Tweetie was more than just a great Twitter app. It embraced the conventions of the platform at the time, making people feel instantly at home, and yet extended them in ingenious ways, making people feel even more empowered. The most famous example of this type of innovation from Brichter is "pull-to-refresh", but it was only one of several. Apple created the elastic band effect so that hitting the end of a scroll view would be delightful. Brichter thought of a way to make it trigger and action as well. He added functionality to the delight. That describes his career perfectly. An OpenGL coder who can not only make incredible Cocoa apps, but impeccably designed ones, that are as efficient to use as they are enjoyable, and as influential as they are successful. A quadrupal threat, Loren Brichter can code, he can craft, he can market, and he can sell. That's why, as part of the 2013 [iMore hall of fame](https://www.imore.com/hall-of-fame), we're honoring Loren Brichter and one of the most influential mobile apps of all time, Tweetie. We may earn a commission for purchases using our links. [Learn more](https://www.futureplc.com/terms-conditions/). [image:97144D60-260F-40F7-B535-E3830819DB09-1476-0000002E8FBB685A/100x100_42.jpg] Rene Ritchie has been covering personal technology for a decade. Former editor-in-chief of iMore and Editorial Director for Mobile Nations, he specializes in Apple and related technologies, news analysis and insight. Follow him @reneritchie on [Twitter](https://twitter.com/reneritchie), [Instagram](https://instagram.com/reneritchie), watch his videos on [YouTube](https://youtube.com/reneritchie), and visit him on the web at [reneritchie.net](http://www.reneritchie.net). [Hall of fame: Loren Brichter and Tweetie](https://www.imore.com/hall-fame-loren-brichter-and-tweetie) #archive # 'Where Are They Now?' – Twitter Apps The App Store is more than a decade old at this point, and with Issue 300 of MacStories Weekly looming, I spent some time looking at the apps we covered in those early days. I expected most would have fallen by the wayside, and many had. However, there were a surprising number that we still write about today like [Instapaper](https://apps.apple.com/us/app/instapaper/id288545208) , [Drafts](https://apps.apple.com/us/app/drafts/id1236254471) , [Reeder](https://apps.apple.com/us/app/reeder-5/id1529445840) , and [Due](https://apps.apple.com/us/app/due-reminders-timers/id390017969) . Poking around in those old issues of Weekly inspired me to ask in the #apps channel of the Club MacStories+ Discord about the apps people missed from those early days. A lot of great apps came up like Mr. Reader, NewsRack, Sunrise, ProTube, Air Video, Tap Tap Revenge, and Copied, to name a few. One category that came up a lot, both on Discord and in my browsing back issues of Weekly, though, was Twitter clients. The category was a hotbed of indie development in the early days of the App Store, thanks to Twitter’s open (at the time) API and its popularity as a service with developers and others in the tech community. The first version of Twitterrific. Source: The Iconfactory. It’s impossible to find a category of apps that has been on the App Store longer than Twitter clients. In fact, third-party Twitter apps pre-date the App Store itself. [Twitterrific](https://apps.apple.com/us/app/twitterrific-tweet-your-way/id580311103) by The Iconfactory initially [appeared on jailbroken iPhones](https://blog.iconfactory.com/2018/03/a-lot-can-happen-in-a-decade/) before the App Store launched. Twitter’s timing was good too. The rise of the service just so happened to coincide with the release of the iPhone. In the early days, Twitter provided generous access to its API, which made it an attractive way to experiment with building iPhone apps. The iPhone’s immature frameworks and the need to load a constantly updating stream of data were challenging for developers, but the iPhone was an exciting new platform, so they iterated quickly, coming up with innovations that helped popularize and shape the service. Tweetie for Mac. Third-party clients flourished in those early days and resulted in what remain two of the most popular Twitter clients today: Twitterrific and [Tweetbot](https://apps.apple.com/us/app/tweetbot-6-for-twitter/id1527500834) . But there were others too, like [Tweetie](https://www.macstories.net/stories/goodbye-tweetie/) created by indie developer Loren Brichter and later bought by Twitter. Tweetie was the first app to implement [pull-to-refresh](https://www.cocoanetics.com/2009/12/how-to-make-a-pull-to-reload-tableview-just-like-tweetie-2/) , a common gesture today that’s now built into iOS, but one that at the time, could only be found in a single app made by one developer. Birdhouse. TwIM. Quip. Osfoora HD for iPad. There were loads of other Twitter apps too, like [Birdhouse](https://www.macstories.net/iphone/birdhouse-review/) for pre-composing and saving your tweets for publishing later, [TwIM](https://www.macstories.net/reviews/twim-instant-messaging-built-on-twitter-direct-messages/) , an instant messaging system built on Twitter DMs, [Quip](https://www.macstories.net/reviews/quip-a-new-ipad-twitter-app-with-a-focus-on-conversations/) , a conversation-focused Twitter client, and other clients like [Osfoora](https://www.macstories.net/ipad/osfoora-hd-for-ipad-is-now-ios-4-2-compatible/) . It’s a very long list, and few of the apps remain except as memories in stories like this one by Federico surveying [the state of Twitter clients in 2014](https://www.macstories.net/stories/twitter-clients-in-2014/) . With deep access to Twitter’s API and a brand new mobile platform that was tailor-made for a service like Twitter, it was an exciting time that pushed the boundaries of what was possible with both Twitter and the iPhone. However, as Twitter grew, it found that it no longer needed third-party developers to grow its service. The process played out over multiple years, but few changes had a greater chilling effect on third-party Twitter clients than the company’s decision to [cap the number of authentication tokens](https://nordicapis.com/twitter-10-year-struggle-with-developer-relations/) those apps could use to log in users. That, along with many other developer-hostile moves, effectively ended the golden era of Twitter apps. However, Twitter did grant some third-party apps higher token limits, even while the company was simultaneously [removing features from the API](https://www.macstories.net/news/third-party-twitter-clients-remove-features-as-api-changes-loom/) . Apps like Twitterrific and Tweetbot held on and have moved from paid-upfront apps to subscription business models, helping them continue in a hostile environment. Twitterrific 6. Tweetbot 6.6 Today, Twitter seems to be trying to make amends with developers, which isn’t going to be easy. Twitter burned a lot of goodwill with developers, which makes the company hard to trust. However, version 2.0 of the Twitter API is allowing apps like Tweetbot to [more closely match the official Twitter app’s feature set](https://www.macstories.net/ios/tweetbot-6-6-gets-support-for-creating-polls-limiting-who-can-reply-to-tweets/) . It’s hard to imagine the golden age of Twitter clients returning to the App Store. The official client is too deeply rooted with many users, and it still offers features that third-party developers can’t match. However, for users who want a different experience than the official app offers, there has never been a better time to jump in as the recent update to Tweetbot shows. Also, despite years of developer-hostile decisions from Twitter, the stream of new and innovative apps from indie developers has never completely dried up. Apps like [Aviary](https://apps.apple.com/us/app/aviary/id1522043420) and the very recent [Spring for Twitter](https://apps.apple.com/us/app/spring-for-twitter/id1508706541) show there is still room for new Twitter apps, and with the release of version 2.0 of Twitter’s API, I’m optimistic that we’ll see more new and interesting Twitter apps more frequently than the past few years. I really enjoyed hearing from Club members in the Discord about their favorite apps from years ago. If you have a favorite Twitter app from the early days of the App Store, I’d love to hear more about it in the # apps channel. -“ [‘Where Are They Now?’ – Twitter Apps](https://club.macstories.net/posts/where-are-they-now-twitter-apps) ” #archive #i #software # Gary’s 80th Birthday Today would have been my late stepfather’s 80th birthday. He was born on December 11th, 1941 - 5 days exactly after the attack on Pearl Harbor which definitively marked the United States’ formal participation in the second world war, I’ve been told. Gary, a Capricorn, never managed to exceed 5’ 3”, which must have been especially tough as a teen in late 1950s Centralia, Missouri - a metropolis which consistently held the demographic record for the whitest in Missouri for most of its history. > …after a missed exit outside Galveston just as Azteks first became rentable, my stepfather (the most earnestly late-history Pontiac man who ever lived) took an entirely-unexpected and uncharacteristic 70 mile-an-hour plunge into the choppy grass median after shouting “this is an off-road vehicle!” > > As I’m sure you can imagine, it was the single most traumatic event I have ever experienced as the passenger of a motor vehicle, but the damned thing was unscathed, despite having repeatedly chucked us all (fully-belted) into its beige ceiling. > > Gary believed in Pontiac. > > Though he was keen enough to smell death, he chose to believe in the Aztek. > > And you know what? His faith, too, has made me look like an idiot. -[The Ego Divide - Honk](https://dieselgoth.com/page/2.html) > I've been thinking a lot about my late stepfather (who died in 2014.) he was very much a card-carrying Republican who spent most of his career working in management/consulting for big oil companies, but (as I remember him, anyway,) he spent *a lot* of time looking for new perspectives and was genuinely curious/a good listener. > > specifically, I watched him go through what was for him a very arduous process in accepting climate change as a consequence largely of the industry he put so much of himself in. like... painful. I would come home after school and he would pop out of his office and bring up el nino... I'm sure basically his entire social circle was assaulting him both directly and indirectly with denial in all its oughts forms... but he never condemned anyone or refused to listen to anything. the facts *truly bothered him* and he chose to face them. he finally gave in around 2012-13 and was relatively vocal about it. > > I wonder what he would have to say to his party every day now, basically. -[Sidechannel Discord](https://canary.discord.com/channels/820347533636272129/832284971682627644/847740069997576212) [image:EEB0A1AE-CD5E-4AED-A336-87B0CEBB9547-5555-00000E965D0B630C/WORK and REST RAP.jpg] ![The WORK and REST Rap](https://i.snap.as/8za9mKPx.jpg) [file:1333BE73-355D-4231-83B4-AB68EA08AA3B-5555-00000E3853679C93/WORK and REST RAP.docx] -[iCloud Share Link](https://www.icloud.com/iclouddrive/0Z1F43WbqgyjZD6gfSnRf0Guw#WORK_and_REST_RAP) -[GitHub Share Link](https://github.com/extratone/bilge/raw/main/archive/WORK%20and%20REST%20RAP.docx) # Why I Write About Technology — The Psalms [image:F25448E4-57E8-4B24-B247-0E7321D87F56-5555-00000D226B3FA440/OXW0FOqh.jpeg] ## An autobiographical overview of my personal history with technology and its contributions to my current perspective. Incalculable odds were against my arrival in this world happening in early 1994, positioning my life within a timeline that would allow me to bridge my two species’ most significant millenniums in the first grade as a student in the first class at Fairview Elementary school to receive curriculum-mandated exposure to brand-new Windows 98 PCs in its brand-new, fluorescent-lit computer lab in the center core of its 50-year-old rectangular brick structure. The lab also meant that ours was the first Fairview class to have the available relief of air conditioning during the school day. It’s unlikely that I would be home sick and watching the last television ever allowed in my mother’s living room as the second plane hit. My peers and I would form a picogeneration without a name (perhaps we should be called the 9/11ers) — 91s and 92s wouldn’t have regular access to public school machines until they’d eclipsed the true prime of their development, and were just that much further along, mentally, to being able to comprehend the huge and terrifying concepts of 1) New York and 2) burning alive — while 98s like my niece were spared any such comprehension of death at all, yet now have to face the existentially future-sundering, darkly-mirrored reality of the Trump Presidency during the most critically uncertain period in the last stage of their brain’s transition to adulthood. If there is truth in the cross-cultural supposition that souls have some sort of choice, pre-conception, over when they’re born, my own must have either cleaned out the house, or lost horrible, though I suspect I’ll never be able to confidently wager either way. This question of *how lucky or unlucky am I to be alive right now* is one which I find most fascinating — not just within myself, but within others my age. I declare us a generation largely because of my experiences under the assumption that my mid-Missouri upbringing represents the ultimate average in the American experiences of the time as the area has been a reliable sample of the clearest average of the country’s cultural, political, and economic life. Technically, it was quite unlikely that I arrive here as a new human being instead of China or India, and what if that, too was my choice? Though less so, it was still against chance that I would be born to parents who would divorce very quickly after my birth, before my mind was able to form any tangible long-term memories, sparing me whatever pain could’ve resulted from their greater togetherness later nullified in front of me. I could’ve chosen them as well for the variety of experiences their situation would allow me as I grew up between my father’s 800-acre farm and my mother’s suburban house in Columbia, the college town an hour’s drive south. I write about my experiences now — so young — because I’ve likely already born witness to more extraordinary changes in human development than your parents, their parents, and their parents’ parents combined. At 24, my life has already spanned by far the most profound and expedited informational renaissance in human history — greater progress was made between the day I first rode a bicycle and the one on which I took my driver’s test than in thousands of years before it. The sum of my father’s ordeals between 1950 and 1974 — from his birth until the age I am now — would indeed include watching a man set foot on a spatial body other than Earth for the first time, but would be mostly defined by work on the family’s soybean, corn, and wheat farms in central Illinois, driving carbureted tractors pulling cultivating equipment of the same basic design and function as had been pulled by horses, mules, and oxen for hundreds of years, and other implements — like the mechanical multi-row planter — that were new technology at the beginning of the century. For neighbors, he would walk behind the path of a square hay baler next to a moving flatbed trailer, upon which he would throw the 70–100 lb. rectangles of dead compacted grass by their twine through thick cowhide gloves. All of this I would get to experience in the next century on *his* farm, using the exact same equipment. At home, he would watch NBC, ABC, and CBS on a CRT TV, as I would for several years until wireless television was legally transitioned to digital statewide in the summer of 2009. As an adolescent, he would form a business with friends cleaning out old abandoned barns in exchange for the rights of ownership to any finds inside, which led to his discovery of a hay-preserved 1929 Buick Sedan containing hand-written records of its every service. This car would change hands into his Uncle’s care as he went off to school in Champaign, married in Georgia, and eventually settled on the flat clay soil of the farm where I grew up, right on the border between Audrain and Monroe counties, Missouri. I was about 10 when we drove back to the family hub with a trailer in tow to collect the car from my Great Uncle, to my manic excitement. Up until my mid-teens, my life was defined by my extreme reverence for historic cars, airplanes, tractors, and watercraft, and the time I spent operating, maintaining, restoring, or simply studying the assortment of these which I was allowed — often because of extraordinary circumstances — would form the component of my psychology which seeks to experience different cultures, ideas, and eras through the medium of engineering and design and relies on these to understand them. Like my father in his youth, I would learn to clean water out of a carburetor after the Oliver 88 had sat silent for too long, and I would piss in a chamber pot to avoid waking up my Grandfather by walking down creaking attic stairs and turning the lights on. I would learn how to shoot and drive before 10-years-old, and I would have the freedom to do both as I pleased on the miles of gravel roads that ran around home. Though my stepfather bought me a PC of my own just as my first-grade computer class was ending, I could not conceive of a reason to occupy the dial-up line and block his incoming calls or faxes, so my use of the machine was limited to sparse writing and aggravating attempts to run Microsoft Flight Simulator 98 at approximately one frame per second on a 300MHz single-core Pentium II CPU. Though I was *extremely* fortunate compared to most middle-class kids my age at the time to have my own computer in my room, my relationship with it was not significant or particularly involved. I would leave it powered down for weeks at a time until my last two grades at Fairview, when homework assignments began to require it. Perhaps the greatest gap between my mostly-suburbanite classmates and I was an exposure to Japanese entertainment and video games. I was once disallowed from a lunch table because I’d never heard of Pokémon or Luigi, but I *did* have a Sony Playstation at home on which I occasionally loaded *A Bug’s Life* to wander around its first level, perhaps in basal awe at the idea of manipulating what I saw on a screen in realtime. In self-imposed isolation from children my age, I wouldn’t develop any need to be socially competitive with video games as many of my peers would to carry with them into adulthood. I thought my interests in mechanical engineering to be above all of them, so I spent my time alone with heavy picturebooks on 20th century cars, tractors, and airplanes. On the farm, my consistently agriculturally-proactive father was one of the first to have satellite internet for farm futures and weather reports on a pre-GUI machine which I don’t remember. As I was becoming computer literate in school, he would become extremely frustrated with the Windows XP-running machine he’d bought from a one-man, one-room computer shop in Centralia, and I would often solve some problem with bloatware or the goddamned printer. He would also subscribe to and install a first-generation DirectTV receiver, which had the first on-screen program guide I’d ever seen. In the evenings, I would watch hours of *Modern Marvels* on The History Channel, which presented the history, abstract functional theory, and implementation of a particular technology, both past and future. This single program — which has aired nearly 700 episodes since 1995 — is probably responsible for the majority of my at least rudimentary general knowledge in a variety of historic and “future” technological schools, and my curiosity about culture’s relationship with innovation. Though my father’s interests differed significantly from mine — he thought more about growing and raising than of the tools one used to do it — he would indulge my many questions about how engines, hydraulics, and electrical systems worked, and indulged my curiosity by exposing me to the hidden communities of the most elderly, most obscure historic machinery enthusiasts like those of the Midwest Old Threshers Reunion in Mount Pleasant, Iowa — the Concours d’Elegance for antique tractor and reciprocating engine collectors. It was a similar event closer to home where I first operated a steam tractor — great, field-going locomotive-like vehicles that supplanted a need for horsepower in the late-1800s up until the Great Depression which chug, whistle, and puff along just like rail locomotives with a huge, gritty, iron steering wheel. As I recall, I was also given the opportunity to drive an unrestored Model T truck around the grounds that day — the knowledge from which I gained I cannot imagine being of much use ever again. I was proud to the point of arrogance of my technical knowledge and experience in all the different things I had driven and operated, which my schoolmates were in no position to understand. I was elitist and anti-social about this as late as 8th grade, when I had just moved in to stay with my mother, who bought me a first generation iPhone which I proudly wore in a leather belt holster to Junior High. It would represent a shift in my fascination from very old technology toward the present and future. I started talking online with a friend I’d first met years before at Fairview, who spent most of his time fiddling with his first-generation MacBook Pro. He originally exposed me to gadget bloggers on YouTube like Mark Watson and Jon Rettinger (both of whom are still full-time tech personalities.) My mom bought me a 13-inch aluminum-bodied MacBook (which would be sold as MacBook Pro after a single year,) and my lifestyle radically shifted inside my room, my computer, and my Xbox 360. My friend and I would both obsess together over software, design, and gadget – experimenting with our own tech YouTube channels until high school, where I would be adopted by a new friend group who would finally socialize me. Recently, I have written about the contrasts and discrepancies of consumer technology development as its progress has disconnected from the upward linear trajectory in use, quality, and genuine innovation for the End User in a departure which has been especially visible from my perspective as an academically-untrained, but intensely demanding user in the past five years. When hardware was still the industry focus before ~2012, there was a tremendous amount of optimism among journalists and enthusiasts because each successive generation of devices had added more tangible capabilities. Publications like *Gizmodo* and *Engadget* made a fortune publishing reviews and comparison tests of hardware offerings across every segment of tech, and the discourse they generated had a noticeable influence on design. I remember this time well because it accented my last few years before adulthood, when I had plenty of spare time, energy, and curiosity to keep up. The general consumer technology narrative since Steve Jobs’ death has become increasingly more about the companies who design and sell hardware and software than about how and why their consumers actually use them, and the result has been a series of new product segments with little defensible place in my own linear timeline of innovation, especially where productivity is involved. Augmented and Virtual Reality are quite explicitly escapist industries, yet to fill any significant need which was before unfilled. The same could be argued about voice assistants and smartwatches — neither of which *remove* obstacles in most users’ day-to-day lives but instead *contribute* to the array of tasks and devices which already seek their attention. Of course, there are defensibly sound business incentives behind the industry’s new, fragmented direction, but I would also argue that there are those, too, for genuinely revisiting both *what we should be doing* and what we should be seeking to *learn to do* with technology. In a more abstract sense, I have written about whether or not we should want to be living in this particular now, and how the way we feel about the future should inform what we do in the present. I cannot help but observe human progress from a perspective of powerlessness, acute alienation, and amused awe, which has already lent to a significant quantity of occasionally original thoughts as I watch, having witnessed an odd diversity of American life and culture. I’ve published them to entertain and to demonstrate a few methods of reflection on what it is *you* really want from the times you are living. [Why I Write About Technology — The Psalms](https://bilge.world/why) #software #legacy #psalms # "The Extraordinary Wankel" - David Blue Column [image:710CD2B4-E3BF-4C30-BEB8-E4412BD1271E-5555-00000CD81C68800A/Screen+Shot+2012-11-16+at+16.55.25.jpg] *A broken Mazda RX-7, that lived in a shed on the family farm, was [David Blue](http://theautobully.tumblr.com/)'s first real experience with a car. Years later he got to try out a living, working example of the same car - and, [unlike Max Prince previously found](http://www.speedmonkey.co.uk/2012/10/mazda-rotary-engine-bad-for-business.html), loved it.* My bond with one particular example of Mazda's best-selling Wankel-powered sports car began on the Midwestern farm where I grew up. A 1980 model LS-trimmed example, originally painted in “Solar Gold” (one of only 500 made, it turns out). It had been sitting in a small shed, condemned to rest there only a few years after my birth from issues with the fuel delivery system. The search for a mechanic capable of working on the rotary engine without destroying it was eventually given up. My father told me stories of his flings with the car. He used to say the police would pull him over simply because it “looked fast.” Naturally, as a small boy, the stories took a hold of my imagination. The RX-7 held a very special sort of allure. It eventually became my ideal image of “racecar”. Its environment added to the intoxication. The lack of electric power to the car, its immobility, and the stories I was told combined to create the aura of a fading, forgotten superhero. Tired, abandoned, and only necessitating the help of a friend in order to bring it back to glory. [image:E30D576B-58E6-4B62-9074-76E52E5BF027-5555-00000CD81C4AAC68/_Screen+Shot+2012-11-16+at+16.55.25.jpg] It wasn't very long after toddlerhood that I took to spending a large portion of my free time sitting in the RX-7, practicing rowing through the gears and making engine noises with my mouth. I still remember vividly how delightful the experience of simply sitting in that car was. The dash layout, the feel of the steering wheel in my hands, and the smell of the interior are all deeply etched into memory. It was almost as if I had a deeper perception into its soul, a capability that I feel has been lost. Much before I had expected, I had the opportunity to meet this hero, so to speak. I encountered a partially-restored 1983 Series 2 example, slightly different than my RX-7. Different enough to subdue my worries of adultery to the car I grew up with, but similar enough to be an important discovery. I was treated to the complete RX-7 ownership experience, including a dead battery and a difficult, choked cold start. Perry, my host, was kind enough to pay for the fuel for the drive with money out of his own pocket. After ensuring that we would not be walking back, I pointed that very long, very 80s nose toward some local back highways. [image:B798DC5D-3CBB-4309-8429-E811AE1C9DCB-5555-00000CD81C27F411/Screen+Shot+2012-11-16+at+16.55.42.jpg] I had never driven anything powered by a Wankel, and the contrast of the RX-7 compared to everything with wheels I had experienced was stark, and noticeable immediately. The feedback normally received from a piston engine is not felt, due to the fact that there is no more conversion from vertical to rotational motion, a rotary engine (as implied by the name) involves no vertical momentum. It's not that the engine refuses to communicate with you, it's just speaking an entirely different language. The whiny exhaust note has an odd property to it that can be heard from no other source. It conjures up images of the mysterious, angry pair of triangles whirling about in their cage. Purely imaginary, of course. Because the Wankel is so smooth, I found myself wondering why I should shift up. A piston engine makes you anxious when you push it close to the redline. Most send the driver a variety of auditory and tactile messages indicating that they must either shift up, or face a molten tie rod to the head. The RX-7, however, gives no such indication. When close to the redline, one hears only an excited whir. The result (forgive the upcoming Disney analogy) is an almost magic carpet-like experience. It's as though the power simply materializes before you with no apparent source or sacrifice. [image:84A7DD10-2FB0-4AE3-906B-1694314037FC-5555-00000CD81C033625/Screen+Shot+2012-11-16+at+16.55.54.jpg] For me, the tranquility of the engine eliminated the reservations I had for speed. It's an incentive, in fact, to keep the needle in the upper portion of the tachometer as much as possible. The car had only 100 hp and 105 lb-ft. of torque in 1983, and has no doubt lost a few along its journey. Frankly, I'm thankful it's not more powerful. Otherwise, there wouldn't be room to fully enjoy revving it to its limit. Though I have decided that a transmission with multiple ratios is unnecessary when coupled to a Wankel, the 5-speed manual in the RX-7 was quite a treat. It's very notchy, with a mid-length throw. The well-spaced ratios paired with a very light, but engaging clutch made rev matching pleasant and natural. Unfortunately, the steering in the car I drove was quite loose, likely from wear. It is unassisted, though, and was at one time very engaging, I suspect. Given that it is a sports car from the 1980s, driver communication is a result of the engineering, not vice versa. The driving position is actually more relaxed than it looks, and the interior is a thoroughly enjoyable place to be in. This particular car had a factory-installed manually-adjustable equalizer mounted beneath the stock head unit. A useless, though interesting, novelty that quickly rids the occupants of any doubt as to when the car was built. The RX-7 is too often overlooked for what it is; a very special piece of automotive history. It's an experience completely unlike any piston-powered alternative. And for me, it's much more than that. My RX-7 represents an entire childhood's worth of dreams and a sort of companionship, even. My experiences with it were a very large influence on my drive to pursue a career in automotive writing. Driving one did change my perspective, but not at all for the worse. I met my hero, and it didn't let me down. *Thank you to Perry Cunningham and Joe Machens.* *David Blue writes regular columns and occasional drive tests for Speedmonkey. You can find his own [blog](http://theautobully.tumblr.com/) here and his twitter feed [here](https://twitter.com/DepravedInfant)* [Tweet](https://twitter.com/share) --- #### Page 2 *Speedmonkey achieves roughly 100,000 hits per month. Total views as at 12 February 2014 was 2,018,000* 21 June 2012. I'd just arrived home from a trip to Le Mans with my mate, Scottie, and wanted to write something about it - so I created a blog and posted [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-1.html) and [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-2-race.html) article. My wife, Sarah, came up with the name Speedmonkey. Since then 1500 articles have been posted on Speedmonkey by me and around 50 other talented writers. I've had the privilege to test cars from some fantastically generous manufacturers including Mercedes, Jaguar, Lotus, Renault, Honda, Maserati, Volvo, Land Rover, Infiniti, Porsche, Subaru, VW, Honda, Peugeot and Vauxhall. The site continues to be an amateur effort, although we are now getting 100,000 hits a month which exceeds the circulation of quite a few car magazines. Below you will find screenshots of site data. *Matt Hubbard* **28 November 2014: Twitter now publishes stats:** [image:A7049168-6E3D-403D-8A05-8CB44A3D7A17-5555-00000CD81BD283F4/Screen%2BShot%2B2014-11-28%2Bat%2B22.40.22.png] **2 April 2014: Speedmonkey now reaches 138,000 per week across the site and social media channels. [Full stats and info here](http://www.speedmonkey.co.uk/2014/03/speedmonkey-is-reaching-138000-people.html)** **12 February 2014: After 18 months in business Google finally seems to be sending lots of readers to Speedmonkey. After something of a dip at the end of 2013 the stats are holding up in 2014 with well with over 4,000 hits per day, most of which come from search engines. As you can see from the chart below readership is increasing. I can now stop tweeting quite so much!** [image:CAA6CE53-AB3F-402A-B27C-43B7CCE8FD9B-5555-00000CD81BACD181/BgNKjIuCEAAvBq6.png] **11 December 2013: Here are the Speedmonkey YouTube page's demographics from 10 Nov to 9 Dec** [image:726C24BA-4627-4156-BAEF-1FC7CAEEAC7C-5555-00000CD81B8AD111/Screen+Shot+2013-12-11+at+13.37.50.png] **28 November 2013: Here are some stats from the Speedmonkey Facebook page which is growing at a steady rate** [image:0C9D63EE-D428-410E-A428-C613BDAA2873-5555-00000CD81B6ED7C1/Screen+Shot+2013-11-28+at+20.51.20.png] [image:97E6CFF1-0E44-4193-8CB3-44C7A240F04D-5555-00000CD81B48BCC0/Screen+Shot+2013-11-28+at+20.50.34.png] **5 November 2013: Here's a screenshot of the Speedmonkey YouTube channel demographics** [image:974CC2B0-FAC0-4588-943A-2E0DCDE58FAF-5555-00000CD81B270A0C/Screen+Shot+2013-11-05+at+14.09.00.png] **18 September 2013: Update - Speedmonkey just hit 1.5 million views** [image:AC91B3F1-AC1F-4424-BA1C-9ED781C7FC04-5555-00000CD81B0123CA/Screen+Shot+2013-09-18+at+23.19.55.png] [image:6967E4D5-CA33-419F-AB8F-AAC73F6C66C4-5555-00000CD81ADBBB6F/Screen+Shot+2013-06-20+at+23.01.23.png] Here's a screenshot following our best day to date, on 28 July 2013 [image:E37CD523-E2B4-4632-B24C-81B51B419A09-5555-00000CD81AB901EA/Screen+Shot+2013-07-29+at+10.48.40.png] ["The Extraordinary Wankel" - David Blue Column](http://www.speedmonkey.co.uk/2012/11/the-extraordinary-wankel-david-blue.html) #auto # "Honda - From trendsetters to just another car company" - David Blue Column [image:DFB49F42-F5DB-40AD-8C2A-616AB65DFD4C-5555-00000CD53B7054BF/2013+Honda+Accord+Sedan+Front.jpg] The 1990s. Not the greatest time for the United States auto industry. In those days, with a few exceptions, American cars were all overpriced, devoid of quality and generally unreliable. The big three (along with many other non-automotive related corporations in the U.S.) had an aging generation of management. This group decided that the ideal way to run their business involved expending the least amount of effort into their products as possible, without reducing the price paid by customers. Essentially, they hoped to gain more profit from less product. I don't have to tell you that this thinking just...doesn't work. I would theorize that this mentality came from overconfidence and a lack of joy in production. GM, Ford, and Dodge had been the top sellers of the automobile in the United States since its invention. They originally symbolized the best in quality, luxury and performance. Consumer and producer shared the same values, resulting in a flourishing market. It was a joyous time. And then, somewhere around the 1973 oil crisis, the joy began seeping out of our star shooters. Maybe it was emissions regulations, a loss of those ideal values, or some other factor. Regardless of the source, our homegrown auto industry lost its passion. It reflected in the cars that were built. Designs were reused, progression was halted, the irreverence of quality workmanship lost. “American dependability” became an ironic statement. [image:7CC788BB-CBA8-4AA3-8C11-9BE26955612E-5555-00000CD53B4A62D4/_2013+Honda+Accord+Sedan+Front.jpg] And then came along a company that had been building little, noisy two-stroke engines to fit to bicycles only four decades earlier, proudly displaying a banner the changing public couldn't refuse. They offered a product that was simple, honest, reliable, durable and reasonably priced. A concoction that smelled an awful lot like high value. An odor that no doubt brought back old memories. The Accord, suburban America's new family pet. And the Civic, conveniently debuted in 1972. The college student's greatest companion. Both were conservatively styled and equipped, and thus quite easily ignored, which was exactly what the country wanted. After all those years stranded on the shoulders of our aging interstate system in lumbering, underpowered beasts, the indestructible and dependable qualities of the Hondas came as a breath of fresh air. So. What made the newcomers so different? What was the driving force behind the value of the products? It was something not unknown to the Americans, and its presence had been sorely missed. Picture an ancient sage by the name of Soichiro Honda saying something to the order of “Lets build the best automobile we can and sell it for as little as possible.” Though the man is more a symbol than an actual influence on the four-wheeled endeavors of the institution bearing his name, he represents what led to the same group's success. Honda was untainted by an unrealistic attitude, and unaided by a century of heritage and good reputation. They succeeded only because they built good cars. [image:09140375-1163-4ABA-BFCC-C948E1CB4311-5555-00000CD53B24B187/1976+Honda+Accord+Ad.jpg] By 2008, Honda had more than made a name for itself. Over the past decade, though, the prices had been steadily increasing, along with the level of luxury and complexity available in their cars. Both the Accord and Civic were bestsellers in their respective classes, and had held their titles for a relatively long time. It was then that I personally theorized they might take the same path American carmakers had taken only a short while before. I don't want to brag, but this was long before Ron Kiino's bold title “Is Hyundai the new Honda?” graced the pages of MotorTrend's October 2011 issue. And it was really a far-fetched notion at the time. Simply a suspicion. Confidently and stubbornly, the Accord held its grip on mid-size sedan sales in the United States, complimented by the Toyota Camry, a similar-looking but even more ignorable competitor. The former still held appeal for someone with the capacity to enjoy themselves. The latter, however, has always been the most desirable choice of individuals that absolutely despise driving. They both held their slightly different niches, with no real fear of losing their place. Then, Honda started skimping a bit on quality. Motoring journalists noticed a lack of improving fuel economy, aging transmissions, and a general loss in competitive edge in the 2011 Accord. Not the best time to start slacking on Honda's part. [image:F8F4A0CD-B39D-45A6-8C2F-2BB9DA612D0C-5555-00000CD53B0CFC66/2011+Hyundai+Sonata+Front.jpg] This was the year that Hyundai unveiled the brilliantly-updated 6th generation Sonata. I consider this to be the most significant car to come in the mid-sized segment since the birth of the Accord/Camry duo. In previous generations, it had always been competitively priced. The quality, though, had been lacking. The Koreans were not afraid to design a car that was much less conservative than the two Japanese giants. However, the designs were never really all that great looking. Interesting and different? Yes. Attractive?....No. So these attributes kept Honda and Toyota secure under their cozy comforter of sales, not intimidated by Hyundai's offering. And that's quite understandable. The Sonata never really seemed a direct competitor to the giants. The new one, however, completely changed the game. For one thing, it's gorgeous. Not conservatively pretty, but ridiculous, in the best sort of way. Poised and angular, the exterior looks as if it should cost exponentially more than it does. They managed to carry on the Sonata's tradition of unique styling by rejecting the old car completely and replacing it with a stunner. The interior reflects a similar attitude. It's not only good looking, but significantly more fuel efficient than any other mid-sized car on the market. The drivetrain options are excellent. The best part, though, is the price. At a starting MSRP of 19,195 USD (£11,944), it is several thousand less than any competitor. [image:38A0C93E-3C38-4983-AC05-00D76423CB67-5555-00000CD53AF23025/2011+Hyundai+Sonata+Interior.jpg] All of this really just makes the Accord and Camry look silly. It's interesting that Hyundai should take up Honda's original niche, given how different their backgrounds are. Our original hero of practicality was created by a man tinkering with small motorcycles. The former, however, was founded as a massive construction firm, only later trying its hand in the realm of automobiles. Cars seemed an alternative for Hyundai, but certainly not an afterthought. Regardless of where they came from, these two companies have had very similar philosophies, if only separated by time. Also, both have had to rely on sheer ingenuity for profit, without the foothold of heritage in the American market. It could be said, though, that Hyundai is doing a bit better. High value cars that are practical and interesting as an experience. Honda could never get that last bit quite right. Or perhaps it's just a sign of the times. Maybe Americans have overcome the compulsion to ignore our cars. My question is this; Has this flip-flop in production attitude become a cycle? And if so, who will be in the hot spot next? My bet is on the big three, believe it or not. A new generation of management has brought about a huge improvement in our products. It could even be one of the rising Chinese companies in the future. Who knows? I can tell you that right now, though, Hyundai has got the goods. Article by [David Blue](http://theautobully.tumblr.com/) our American columnist [Tweet](https://twitter.com/share) --- #### Page 2 *Speedmonkey achieves roughly 100,000 hits per month. Total views as at 12 February 2014 was 2,018,000* 21 June 2012. I'd just arrived home from a trip to Le Mans with my mate, Scottie, and wanted to write something about it - so I created a blog and posted [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-1.html) and [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-2-race.html) article. My wife, Sarah, came up with the name Speedmonkey. Since then 1500 articles have been posted on Speedmonkey by me and around 50 other talented writers. I've had the privilege to test cars from some fantastically generous manufacturers including Mercedes, Jaguar, Lotus, Renault, Honda, Maserati, Volvo, Land Rover, Infiniti, Porsche, Subaru, VW, Honda, Peugeot and Vauxhall. The site continues to be an amateur effort, although we are now getting 100,000 hits a month which exceeds the circulation of quite a few car magazines. Below you will find screenshots of site data. *Matt Hubbard* **28 November 2014: Twitter now publishes stats:** [image:234D804E-4212-4711-84CB-0444E4A72E33-5555-00000CD53AC7886E/Screen%2BShot%2B2014-11-28%2Bat%2B22.40.22.png] **2 April 2014: Speedmonkey now reaches 138,000 per week across the site and social media channels. [Full stats and info here](http://www.speedmonkey.co.uk/2014/03/speedmonkey-is-reaching-138000-people.html)** **12 February 2014: After 18 months in business Google finally seems to be sending lots of readers to Speedmonkey. After something of a dip at the end of 2013 the stats are holding up in 2014 with well with over 4,000 hits per day, most of which come from search engines. As you can see from the chart below readership is increasing. I can now stop tweeting quite so much!** [image:7ADF1B00-BC39-4917-A089-B59E0A724447-5555-00000CD53AA24903/BgNKjIuCEAAvBq6.png] **11 December 2013: Here are the Speedmonkey YouTube page's demographics from 10 Nov to 9 Dec** [image:8B44975D-35BE-49CB-8279-44E9D39E3259-5555-00000CD53A8B8101/Screen+Shot+2013-12-11+at+13.37.50.png] **28 November 2013: Here are some stats from the Speedmonkey Facebook page which is growing at a steady rate** [image:15957EC3-9ED9-4DB5-841C-3EF607E25F03-5555-00000CD53A6FD3DF/Screen+Shot+2013-11-28+at+20.51.20.png] [image:8C9F9A82-D752-416B-9599-4DFDC52C1F72-5555-00000CD53A583BF3/Screen+Shot+2013-11-28+at+20.50.34.png] **5 November 2013: Here's a screenshot of the Speedmonkey YouTube channel demographics** [image:55DA1AD7-AF7A-4765-A126-5A1E4AF877A5-5555-00000CD53A3DD700/Screen+Shot+2013-11-05+at+14.09.00.png] **18 September 2013: Update - Speedmonkey just hit 1.5 million views** [image:6CE1B402-8B73-4C7A-847B-17AF69C3FFEA-5555-00000CD53A22A2C2/Screen+Shot+2013-09-18+at+23.19.55.png] [image:E1A3473F-671C-4740-A446-2348B5E5091A-5555-00000CD53A04261D/Screen+Shot+2013-06-20+at+23.01.23.png] Here's a screenshot following our best day to date, on 28 July 2013 [image:FD55375A-8100-4A9A-A895-F281B8D6267F-5555-00000CD539D0AC70/Screen+Shot+2013-07-29+at+10.48.40.png] ["Honda - From trendsetters to just another car company" - David Blue Column](http://www.speedmonkey.co.uk/2012/10/honda-from-trendsetters-to-just-another.html) #auto # Driven - 2013 Mazda MX5 [image:2CD04D56-5120-435E-956B-3306551E921E-5555-00000CD38DE605DC/Screen+Shot+2012-10-11+at+18.53.36.jpg] I recently had the chance to drive the facelifted 2013 Mazda MX-5. This is the first time the looks of the perky roadster have changed since the front-mounted smile became an all-out grin of insanity in 2008. They have once again dulled it to what I would call a smirk. The new front end blends with the rest of car more than it has in the past. It seems to have grown a bit more serious. In fact, with black 17-inch alloys on a glossy black (creatively called "Brilliant Black,") this example is the most aggressive-looking of any Miata I have seen. That's not to say it's aggressive in the slightest, even in such a scheme. This car is in the “Club” trim replacing the previous “Touring” designation as the top-of-the-line option. This selection adds ridiculous three-leaf clover side badges, red stitching on the seats, red stripes on the dash and sides, along with a price tag very near 30,000 USD. [image:047DE13F-4134-413F-9527-4C8B6BD1258A-5555-00000CD38DCAD506/_Screen+Shot+2012-10-11+at+18.53.36.jpg] So I present you with my first problem with this particular car....it's a contradiction. The MX-5 was never intended to look serious. That grin was there to convey the primary attribute aspired to by its creators; joy. It's designed to be joyful in driving and the exterior of previous generations did a good job of communicating what the car is all about. Unfortunately, it seems they have decided that it's time for the roadster to grow up. Frankly, that's not going to work.Now, to the drive.For this year, the car has been lightened, the braking response quickened, as well as the throttle response in manual-equipped cars. Unfortunately, I was only able to drive the 6-speed automatic with optional pattle-shifters. Given that this is my first drive in an NC (third generation) MX-5, I can only compare it to my own NB.Immediately, my passenger and chaperon, Perry Cunningham of Joe Machens Mitsubishi/Fiat starts the process of opening the optional retractable hard top. Open air is this car's natural environment, and it appears that somebody got busy making sure its occupants never notice. Wind buffeting has been drastically reduced. Perry and I were able to maintain conversation beyond 70mph without necessitating shouting thanks to a much taller wind brake behind our seats. Unfortunately, I couldn't really hear much of anything from the 158-hp 2.0L 4 up front, even with liberal amounts of right foot burying. It would seem the optional dual exhaust outlets are rather pointless then. Getting in the car, I had expected the experience to be ruined by the 6-speed auto. Buying a Miata with an automatic is sort of like going on a scenic vacation without a camera. It doesn't necessarily ruin the immediate experience but you'll always have some regret regarding the subject in the future. The pattles add some of the fun back in, but I prefer the Golf GTI's arrangement of right side-shift up, left side-shift down, while the MX-5 has both functions on either side of the wheel. It took some deliberate self-coaching to get used to, but it won't effect your daily driving experience. Another plus; when in manual shift mode, it is truly manual, meaning the transmission will allow you to exceed the redline. It may sound trivial, but being nannied when you're first told that you're in control can be a major annoyance. (Looking at you, Kia Forte.) It's disappointing that Mazda chose only to up throttle response in manual-equipped cars. This one most certainly needed it. The original Miata was built on a philosophy of communication between driver and machine, summarized in the Japanese phrase “Jinba Ittai,” meaning “rider and horse are one.” Being an MX-5 owner, this philosophy is very important to me, thus my expectations for the steering were very high. It was very disappointing, then, to discover that it has been very nearly ruined. The leather-wrapped steering wheel was comfortable, yes, but not very generous in revealing the road. In corners it felt jumpy, imprecise, and unsure of itself. The same lack of self-confidence was noticeable in a straight line as well, along with a nervous fidget. Keep in mind, I am comparing this to roadsters of the past, not to other automobiles currently on the market. It would take a global nuclear war to make the MX-5 less fun to drive than a Toyota Camry.Though it has lost communication and soul, the Miata has gained a more comfortable suspension and oodles of storage space. The trunk is massive for a roadster of this size, and the example I drove was equipped with an optional storage compartment extending behind the seats, especially handy for CDs, candy, and the like. The center console contains two reasonably-sized cupholders obscured by a sliding door that will inevitably lead to annoyance in single-drink occasions. Mr. Cunningham also pointed out to me that the track on which the door slides appears vulnerable to crumbs. Only time will tell, I suppose.In general, being inside the car is a much more comfortable experience, albeit a boring one. It seems to me that the MX-5 has “grown up,” forgoing fun for comfort and practicality. And is that not exactly the opposite of the direction it should be moving? It was never meant to be an aggressive-looking performance car, and it will never do well as one. It will never be luxurious enough to be a true touring car, either.Its soul has made it the top-selling roadster of all time, and I'm afraid it's losing it, bit by bit. To be honest, if you're attracted by the values on which the original Miata was built, I would recommend a Subaru BRZ/Toyota GT 86/Scion FR-S. The recommendation does not come lightly or easily.Until Mazda gets wise about what it's doing to the beloved little car, I'm afraid it's headed down a path that will mean losing a grip on the niche it's held for so long, and that's quite saddening. A very hearty thanks to Mr. Perry Cunningham and Joe Machens Mitsubishi-Fiat. [image:37FB4CA5-DB30-43F0-86CC-AE25C94D7CD4-5555-00000CD38DACF8D2/Screen+Shot+2012-10-11+at+18.54.19.jpg] [image:58DBB733-88C8-47F6-836D-F0AF6A85CD36-5555-00000CD38D8FE384/Screen+Shot+2012-10-11+at+18.54.34.jpg] [image:2071A15D-B7AF-4D49-A083-D2C35A1B515A-5555-00000CD38D6C6E77/Screen+Shot+2012-10-11+at+18.54.50.jpg] [image:A9C5904E-87D9-43D9-88AF-63B726CA6C01-5555-00000CD38D51E331/Screen+Shot+2012-10-11+at+18.55.03.jpg] [image:98E7E9EC-CAFE-4EEC-9045-8735977743F5-5555-00000CD38D35148D/Screen+Shot+2012-10-11+at+18.55.19.jpg] [image:A05D3F42-76E8-40ED-B472-1D5263483D30-5555-00000CD38D18056B/Screen+Shot+2012-10-11+at+18.55.30.jpg] [Tweet](https://twitter.com/share) --- #### Page 2 *Speedmonkey achieves roughly 100,000 hits per month. Total views as at 12 February 2014 was 2,018,000* 21 June 2012. I'd just arrived home from a trip to Le Mans with my mate, Scottie, and wanted to write something about it - so I created a blog and posted [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-1.html) and [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-2-race.html) article. My wife, Sarah, came up with the name Speedmonkey. Since then 1500 articles have been posted on Speedmonkey by me and around 50 other talented writers. I've had the privilege to test cars from some fantastically generous manufacturers including Mercedes, Jaguar, Lotus, Renault, Honda, Maserati, Volvo, Land Rover, Infiniti, Porsche, Subaru, VW, Honda, Peugeot and Vauxhall. The site continues to be an amateur effort, although we are now getting 100,000 hits a month which exceeds the circulation of quite a few car magazines. Below you will find screenshots of site data. *Matt Hubbard* **28 November 2014: Twitter now publishes stats:** [image:9EFA958E-7AD6-4D31-8730-157DD2F15D63-5555-00000CD38CFF86BD/Screen%2BShot%2B2014-11-28%2Bat%2B22.40.22.png] **2 April 2014: Speedmonkey now reaches 138,000 per week across the site and social media channels. [Full stats and info here](http://www.speedmonkey.co.uk/2014/03/speedmonkey-is-reaching-138000-people.html)** **12 February 2014: After 18 months in business Google finally seems to be sending lots of readers to Speedmonkey. After something of a dip at the end of 2013 the stats are holding up in 2014 with well with over 4,000 hits per day, most of which come from search engines. As you can see from the chart below readership is increasing. I can now stop tweeting quite so much!** [image:0436F547-EF0D-45B4-83FA-8ECEDFCB6A1A-5555-00000CD38CDC2669/BgNKjIuCEAAvBq6.png] **11 December 2013: Here are the Speedmonkey YouTube page's demographics from 10 Nov to 9 Dec** [image:9402165F-5F12-4E8D-897C-4A39AB739D56-5555-00000CD38CC40B62/Screen+Shot+2013-12-11+at+13.37.50.png] **28 November 2013: Here are some stats from the Speedmonkey Facebook page which is growing at a steady rate** [image:6F03F08E-8380-4C33-B804-22792A3BCF18-5555-00000CD38CAC4B78/Screen+Shot+2013-11-28+at+20.51.20.png] [image:C801FD4C-BBCF-46F7-8B52-11DEAF0D7CFB-5555-00000CD38C936244/Screen+Shot+2013-11-28+at+20.50.34.png] **5 November 2013: Here's a screenshot of the Speedmonkey YouTube channel demographics** [image:C74E51B3-4E7C-4CCB-80C5-EB1884477AE9-5555-00000CD38C762645/Screen+Shot+2013-11-05+at+14.09.00.png] **18 September 2013: Update - Speedmonkey just hit 1.5 million views** [image:6456B283-7F4E-4404-8A1D-ED9836B9A4EE-5555-00000CD38C545F2A/Screen+Shot+2013-09-18+at+23.19.55.png] [image:68C6DE2F-0555-4DC4-AE4D-3ABDF25F0FF4-5555-00000CD38C281706/Screen+Shot+2013-06-20+at+23.01.23.png] Here's a screenshot following our best day to date, on 28 July 2013 [image:39EC824C-8744-419E-BBD3-6E386A230603-5555-00000CD38BFCF553/Screen+Shot+2013-07-29+at+10.48.40.png] [Driven - 2013 Mazda MX5](http://www.speedmonkey.co.uk/2012/10/driven-2013-mazda-mx5.html) #auto # "The Future of Driving Passion" - David Blue column [image:AC075621-56B9-41DD-9B32-7D37DEF3023C-5555-00000CD14349CB51/Screen+Shot+2012-10-05+at+08.13.25.jpg] I don't have to tell you that we as a society are moving toward a life of total deprivation from our surroundings. When thought about logically, one could blame it on the simple progression of technology. Conveniences of the modern world have led us to believe that "make life easier" is synonymous with "make life better." In any other field of technology, this thinking may be inconsequential. I'm not qualified to tell you that. I can tell you, however, that convenience as the highest value of any automotive manufacturer will *murder* everything that makes driving wonderful. [image:D50C6039-365F-467B-AEB8-7E84E494FC23-5555-00000CD143171E15/_Screen+Shot+2012-10-05+at+08.13.25.jpg] There will always be gearheads, that much is certain. Unfortunately, it takes a lot of completely uninterested individuals buying cars, building roads and making gasoline accessible to furnish the possibility of a happy car geek. That has been a constant throughout history. Take the 3-series BMW, for instance. It's been the standard for driving excellence in 4-door sedans for decades. However, how many 3-series customers do you think were really interested in the driving experience whatsoever? It's all for image. For the wall street crowd, it's for fitting in. Again, do you think Gucci Mane was really interested in the driving experience of the 458 Italia he purchased? He was the first individual to own one here in the United States. I have listened to the mixtape he recorded with Waka Flocka about it. I did not once hear any mention of the Ferrari's passion, its intimate interface with the driver or how brilliantly it eats corners. In fact, most of what I heard was "BOW BOW BOW BOW." It's an unfortunate, but necessary fact of life. The majority of wonderful cars will always be bought for the wrong reasons. So what's to stop manufacturers from filling the options list with immense amounts of gadgets and electronic wizardry to keep you on the road, whatever you do? What's to stop them from making completely autonomous cars? That is what customers will want, isn't it? Isn't it? Yes. The public will want it. Not in my generation, perhaps, but eventually they will. The conveniences will tempt us. Sometimes, I would like more isolation from the road than my MX-5 provides. Maybe a bit softer suspension. But you know what? I won't get it. There's no button I can push to make it go away. I have to deal with it. I knew this when I bought it. It's why I bought it. As we become more isolated from the world, emotional attachment becomes less possible. And what would driving be without love? Now, let's be honest. How many people have cried "death of the driver's car" in the past two decades? And we just had the Toyota 86/Scion FR-S/Subaru BRZ sell faster than anything else this summer in the U.S. Not to mention Ford's bold refusal to include an automatic option on the late Focus ST. So what am I blabbing on about? ~The world is changing.~ Our lifestyle is in danger. Google will have us all driving (well, sitting in) autonomous Prius's eventually. The key to the continuation of driving passion is this: Manufacturers must make cars that cannot be ignored by their owners. If the imperfections in automobiles remain, the love for them will as well. In half a century, who will stand for simplicity, communication and driving passion? Who will stand for integrity in design and the abolition of compromise based on "public opinion?" I will be. I hope you will be standing with me. Article by [David Blue](http://theautobully.tumblr.com/) our American columnist. [Tweet](https://twitter.com/share) --- #### Page 2 *Speedmonkey achieves roughly 100,000 hits per month. Total views as at 12 February 2014 was 2,018,000* 21 June 2012. I'd just arrived home from a trip to Le Mans with my mate, Scottie, and wanted to write something about it - so I created a blog and posted [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-1.html) and [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-2-race.html) article. My wife, Sarah, came up with the name Speedmonkey. Since then 1500 articles have been posted on Speedmonkey by me and around 50 other talented writers. I've had the privilege to test cars from some fantastically generous manufacturers including Mercedes, Jaguar, Lotus, Renault, Honda, Maserati, Volvo, Land Rover, Infiniti, Porsche, Subaru, VW, Honda, Peugeot and Vauxhall. The site continues to be an amateur effort, although we are now getting 100,000 hits a month which exceeds the circulation of quite a few car magazines. Below you will find screenshots of site data. *Matt Hubbard* **28 November 2014: Twitter now publishes stats:** [image:F420C3A2-B8FF-4AD4-A804-5C004F6CEA19-5555-00000CD142F10DCE/Screen%2BShot%2B2014-11-28%2Bat%2B22.40.22.png] **2 April 2014: Speedmonkey now reaches 138,000 per week across the site and social media channels. [Full stats and info here](http://www.speedmonkey.co.uk/2014/03/speedmonkey-is-reaching-138000-people.html)** **12 February 2014: After 18 months in business Google finally seems to be sending lots of readers to Speedmonkey. After something of a dip at the end of 2013 the stats are holding up in 2014 with well with over 4,000 hits per day, most of which come from search engines. As you can see from the chart below readership is increasing. I can now stop tweeting quite so much!** [image:B090CDB6-DC78-4E00-A766-9DD088833B58-5555-00000CD142C1FFF0/BgNKjIuCEAAvBq6.png] **11 December 2013: Here are the Speedmonkey YouTube page's demographics from 10 Nov to 9 Dec** [image:F885B231-EEA4-438E-9CF5-F974A2FDAD69-5555-00000CD1429E4F1C/Screen+Shot+2013-12-11+at+13.37.50.png] **28 November 2013: Here are some stats from the Speedmonkey Facebook page which is growing at a steady rate** [image:66E7988C-1E9D-40EC-A49E-DF03A95F6911-5555-00000CD1427C1A99/Screen+Shot+2013-11-28+at+20.51.20.png] [image:01F6250B-9DF7-480A-A036-8BF9F72407C8-5555-00000CD1424E1548/Screen+Shot+2013-11-28+at+20.50.34.png] **5 November 2013: Here's a screenshot of the Speedmonkey YouTube channel demographics** [image:4171E68D-2514-4A77-926A-C9FEBF0790B2-5555-00000CD1422D9B51/Screen+Shot+2013-11-05+at+14.09.00.png] **18 September 2013: Update - Speedmonkey just hit 1.5 million views** [image:31F9FC8F-A8A6-429A-83E4-BA628F3524CC-5555-00000CD1420CFDE9/Screen+Shot+2013-09-18+at+23.19.55.png] [image:3F76AA5D-2D69-4686-A5F6-F0F887CB5BC9-5555-00000CD141EE5109/Screen+Shot+2013-06-20+at+23.01.23.png] Here's a screenshot following our best day to date, on 28 July 2013 [image:353CE8E6-732F-4837-BEB7-C4C050EE3CA8-5555-00000CD141CE83EB/Screen+Shot+2013-07-29+at+10.48.40.png] ["The Future of Driving Passion" - David Blue column](http://www.speedmonkey.co.uk/2012/10/the-future-of-driving-passion-david.html) #auto # "Automatics Suck" - Guest post by David Blue [image:943F081E-C4B2-4230-9809-766FEA5E97E8-5555-00000CB7A0B861C5/automatic-lessons.jpg] [image:9972AC7A-AC0D-4EFF-B6E1-4F7325F80108-5555-00000CB7A08DBB04/_automatic-lessons.jpg] Us drivers of cars with manual transmissions tend to look down on those who drive automatics. It’s like an exclusive club. Only the extremely talented, gorgeous-looking, and legendary athletes of yore are allowed in. Well, that’s rubbish. So those of you that know the “standard” can keep your mouths shut and bask in the quiet satisfaction that you’re saving the planet. The truth is, for those of you that don’t know, driving “stick” is totally simple. Once you understand the basic concepts of how the transmission and clutch work together, you can figure it out with no real instruction at all. So with that in mind, I’d like to tell you that automatic transmissions just….suck. Really. Mind you, I’m not talking about Dual-Clutch Transmissions, SMGs (Sequential Manual Gearboxes,) or any of that fancy stuff that has only recently become somewhat popular in the mainstream (affordable) auto market. I’m talking about automatics with a torque converter, that magically inefficient device that has carried America’s laziness in driving for the last 50 years.Now before I go on, I suppose I owe you a technical explanation. Let’s start with the basics. First off, a transmission is the device that separates the engine from the wheels. With both automatic and manual transmissions, “gears” are used to vary the ratio between the engine’s crankshaft and the drive shaft going to the wheels. It’s essentially a buffer between the engine’s relative consistency and the inconsistent world that you drive in. [image:740EEA19-E73E-4C9B-AF2F-10B0C22073B9-5555-00000CB7A0678212/tumblr_loc20x8OcR1qk1cv5.png] But that’s not quite all there is. Traditional transmissions require an interruption in power from the engine to shift these “gears,” and to come to a stop at a traffic light, in your driveway, or on the side of the highway to pick up a hooker. In manuals, this is typically accomplished with a clutch, a device that could most simply be explained as two plates that are pressed together to couple, and brought apart to become independent. A clutch is normally coupled, it’s when the clutch petal is pushed in that the plates separate, and the transmission is isolated from the engine. Automatic transmissions use a type of fluid coupling to accomplish the same task, called a torque converter. The advantage of the latter is that, when paired with an automatic transmission, the driver only requires one input to get the car moving and vary its velocity, and that is the accelerator pedal. A manual transmission requires three inputs, on the other hand. (Accelerator pedal, clutch, and gearshift.) In my mind, the torque converter has some huge disadvantages in a world where millions are spent to save 20 lbs. on one car design. Have you ever noticed that cars equipped with manuals are usually noticeably more fuel efficient than their automatic counterparts? Some of that could be attributed to the greater control that comes with manuals, but most of it is from the torque converter’s main design flaw. A clutch can be completely disengaged and completely engaged. So, with a healthy vehicle, there is 0% of the engine’s power moving to the transmission when the clutch pedal is depressed fully. Likewise when the clutch pedal is allowed completely out, the clutch essentially becomes a shaft, and 100% of the engine’s power is being fed to the transmission. A torque converter couples via fluid, however, meaning there is never a solid mechanical connection between the engine and the transmission. (Unless the transmission is equipped with a lock-up clutch, which is essentially a clutch that locks the torque converter mechanically when it is no longer required to dump the engine’s energy into friction. These are becoming more and more common, but the majority of vehicles on the road are missing them.) This means that a traditional torque converter is never 100% efficient. Also, a torque converter is never completely disengaged. When sitting at a traffic light, the driver typically lightly applies the brakes to hold the car from moving forward. Have you ever considered what you’re doing? The engine is basically dumping energy into the torque converter in the form of friction. It is literally no different from holding the gas and the brakes at the same time. What the hell? How is that accepted in a world where Al Gore and Prius’s exist?Oh wait! As United States citizens, we’re lazy as hell!84% of cars sold in North America are equipped with an automatic transmission, as opposed to 20% in Europe.You could make the excuse that we love automatics because of all our stop-and-go traffic, and yet, as a citizen of the Midwestern U.S. I see automatics MUCH more often than I see traffic congestion. The real answer is that we just don’t want to bother with a clutch pedal and a gearshift when we could be texting or doing makeup.Luckily, the great minds of our time have come up with solutions that adapt to us so that we don’t have to adapt to them. (As always.) Probably the simplest is the aforementioned “lock-up clutch,” which eliminates the inefficiency of the torque converter by mechanically coupling at high speed. But that doesn’t exactly solve the problem of sitting over a nice gas to friction converter at traffic lights. Well here’s a tip. When you stop at a traffic light, bump your shift lever one up into neutral. It shouldn’t require that you hold a safety button to go back and forth between Drive and Neutral. This prevents that unnecessary friction. Combine that with a lockup clutch, and you’re basically driving a manual!……Except without the enjoyment. You could call this a rant on one of the most successful inventions the modern automobile has ever seen….because it is. And I doubt you’ll hear anyone else complain about it. But there really are flaws in the design that I wish consumers would figure out. Before all this hybridism, eco-mindedness, and hippie-crazed green malarkey, maybe we should eliminate the evil energy-wasting beast that is the torque converter. Article by [David Blue](http://theautobully.tumblr.com/) our American correspondent. [Tweet](https://twitter.com/share) --- #### Page 2 *Speedmonkey achieves roughly 100,000 hits per month. Total views as at 12 February 2014 was 2,018,000* 21 June 2012. I'd just arrived home from a trip to Le Mans with my mate, Scottie, and wanted to write something about it - so I created a blog and posted [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-1.html) and [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-2-race.html) article. My wife, Sarah, came up with the name Speedmonkey. Since then 1500 articles have been posted on Speedmonkey by me and around 50 other talented writers. I've had the privilege to test cars from some fantastically generous manufacturers including Mercedes, Jaguar, Lotus, Renault, Honda, Maserati, Volvo, Land Rover, Infiniti, Porsche, Subaru, VW, Honda, Peugeot and Vauxhall. The site continues to be an amateur effort, although we are now getting 100,000 hits a month which exceeds the circulation of quite a few car magazines. Below you will find screenshots of site data. *Matt Hubbard* **28 November 2014: Twitter now publishes stats:** [image:1680C993-A3A1-481B-B308-D00BDFDE942E-5555-00000CB7A045AE1B/Screen%2BShot%2B2014-11-28%2Bat%2B22.40.22.png] **2 April 2014: Speedmonkey now reaches 138,000 per week across the site and social media channels. [Full stats and info here](http://www.speedmonkey.co.uk/2014/03/speedmonkey-is-reaching-138000-people.html)** **12 February 2014: After 18 months in business Google finally seems to be sending lots of readers to Speedmonkey. After something of a dip at the end of 2013 the stats are holding up in 2014 with well with over 4,000 hits per day, most of which come from search engines. As you can see from the chart below readership is increasing. I can now stop tweeting quite so much!** [image:70F099D8-75A6-43D2-B4B0-4965DD05DC37-5555-00000CB7A02350F7/BgNKjIuCEAAvBq6.png] **11 December 2013: Here are the Speedmonkey YouTube page's demographics from 10 Nov to 9 Dec** [image:E55BA340-E6E0-4D59-80C1-B81587268B3B-5555-00000CB7A00C7773/Screen+Shot+2013-12-11+at+13.37.50.png] **28 November 2013: Here are some stats from the Speedmonkey Facebook page which is growing at a steady rate** [image:4DCCE092-AA34-4CCF-AC84-E8192B824816-5555-00000CB79FE77F6E/Screen+Shot+2013-11-28+at+20.51.20.png] [image:9E207B5F-C837-486E-A82A-6D5C5DCF3FA4-5555-00000CB79FCF0004/Screen+Shot+2013-11-28+at+20.50.34.png] **5 November 2013: Here's a screenshot of the Speedmonkey YouTube channel demographics** [image:338FCC2C-1FD4-4702-AABE-BCE70C520FFB-5555-00000CB79FB106DA/Screen+Shot+2013-11-05+at+14.09.00.png] **18 September 2013: Update - Speedmonkey just hit 1.5 million views** [image:39A6DB26-D616-4D7A-B3EB-28DECD7223C6-5555-00000CB79F89C85A/Screen+Shot+2013-09-18+at+23.19.55.png] [image:871AAFA6-153A-4231-B41D-03A0636F56BE-5555-00000CB79F62CB12/Screen+Shot+2013-06-20+at+23.01.23.png] Here's a screenshot following our best day to date, on 28 July 2013 [image:889F311C-7BFB-4DF9-931D-629A198B2D1B-5555-00000CB79F37C67A/Screen+Shot+2013-07-29+at+10.48.40.png] ["Automatics Suck" - Guest post by David Blue](http://www.speedmonkey.co.uk/2012/09/automatics-suck-guest-post-by-david-blue.html) #auto # "The Aztek Conspiracy" - David Blue Column [image:9F9A287F-39DB-4E66-BB97-E62595C1764C-5555-00000C8CD02FC2CB/Aztek+%2528in+a+Subaru%2527s+world%2529+front+angle.jpg] *[David Blue](http://theautobully.tumblr.com/)speculates that General Motors brought out the, pretty ugly, Pontiac Aztek in order to spite it's customers and the unions. And, despite that, it's subsequent success has made America a worse place to live in.* Picture a time when Cher's “Believe” was the number one single in the United States. While everyone else was readying for the new century, General Motors was trying to figure out a way to kill its luxury-sport brand, Pontiac. In a secret war on quality, they simply couldn't just stop building them. Too much tedious explanation to the unions. They needed a plan to kill the name off cleanly and quietly. Enter the Aztek. [image:8B30E8F3-6269-45E5-B7E9-439DD73577A4-5555-00000C8CD00D5CAE/_Aztek+%2528in+a+Subaru%2527s+world%2529+front+angle.jpg] Unveiled at the Detroit Auto Show as a 2001 model, it was GM's first foray into the still-infantile crossover market. It was targeting toward “the younger generation,” and required a mile-long options list including strange, outdoorsy things like an integrated tent, cooler center console, and tailgating accessories. In other words, anything a Subaru owner/road cycling enthusiast dreams of at night. As it turns out, the Aztek hit the nail right on the part that is hit with a hammer on a nail. It was even endorsed by J.D. Power and Associates. Of course...there was a massive problem. The thing looked horrible. The original 1999 concept was really an early embodiment of what all crossovers strive to be. Unfortunately, some very bad design decisions led to the actual production car looking as if it had facial reconstruction surgery performed by an intoxicated man off the street. While most would have you believe it was simply a chain of mistakes that led to the looks, I think differently. [image:6BBAE2F1-5205-442E-B81A-E479FB49FA07-5555-00000C8CCFF02F0C/Aztek+Camping+Pkg.jpg] This was the peak of GM's anti-customer mentality. The quality, reliability and durability of their products sank to their lowest trough in the four years the Aztek was produced. Oddly enough, it seemed to be exempt from all the negatives. It was reliable, relatively well-made, and quite durable. There is still a large enough number tearing about the midwestern United States that I have to cope with at least two or three sightings daily. And that was exactly their goal. Not only was the Aztek the weapon that murdered Pontiac, its existence is an act of revenge against the public by GM. Two functions then, both accomplished. One can only imagine how many sighs, feelings of disgust, baby cries, etc that mutilated face has elicited over the years. Someone even had the audacity to decide on the Aztek as the official pace car for the 2001 Daytona 500. Don't look it up....you'll vomit. [image:1141B61F-7DE7-4F25-A013-CE29E366FE44-5555-00000C8CCFD5D7D6/Aztek+Interior.jpg] *Article by [David Blue](http://theautobully.tumblr.com/), who writes a weekly column for Speedmonkey.* [Tweet](https://twitter.com/share) --- #### Page 2 *Speedmonkey achieves roughly 100,000 hits per month. Total views as at 12 February 2014 was 2,018,000* 21 June 2012. I'd just arrived home from a trip to Le Mans with my mate, Scottie, and wanted to write something about it - so I created a blog and posted [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-1.html) and [this](http://www.speedmonkey.co.uk/2012/06/speedmonkey-reviews-le-mans-part-2-race.html) article. My wife, Sarah, came up with the name Speedmonkey. Since then 1500 articles have been posted on Speedmonkey by me and around 50 other talented writers. I've had the privilege to test cars from some fantastically generous manufacturers including Mercedes, Jaguar, Lotus, Renault, Honda, Maserati, Volvo, Land Rover, Infiniti, Porsche, Subaru, VW, Honda, Peugeot and Vauxhall. The site continues to be an amateur effort, although we are now getting 100,000 hits a month which exceeds the circulation of quite a few car magazines. Below you will find screenshots of site data. *Matt Hubbard* **28 November 2014: Twitter now publishes stats:** [image:67B4DEC2-9D81-41F5-84F9-45E59B43C065-5555-00000C8CCFB69E05/Screen%2BShot%2B2014-11-28%2Bat%2B22.40.22.png] **2 April 2014: Speedmonkey now reaches 138,000 per week across the site and social media channels. [Full stats and info here](http://www.speedmonkey.co.uk/2014/03/speedmonkey-is-reaching-138000-people.html)** **12 February 2014: After 18 months in business Google finally seems to be sending lots of readers to Speedmonkey. After something of a dip at the end of 2013 the stats are holding up in 2014 with well with over 4,000 hits per day, most of which come from search engines. As you can see from the chart below readership is increasing. I can now stop tweeting quite so much!** [image:4E0C98D3-B79B-46FA-8CE4-427F204AFE6D-5555-00000C8CCF83C972/BgNKjIuCEAAvBq6.png] **11 December 2013: Here are the Speedmonkey YouTube page's demographics from 10 Nov to 9 Dec** [image:7306DD6E-0B4A-4467-B433-43858E78E050-5555-00000C8CCF61B071/Screen+Shot+2013-12-11+at+13.37.50.png] **28 November 2013: Here are some stats from the Speedmonkey Facebook page which is growing at a steady rate** [image:6DC0E65E-BA04-4901-8A5F-3FB47FE32E7E-5555-00000C8CCF4794D5/Screen+Shot+2013-11-28+at+20.51.20.png] [image:E570E050-9E32-4446-9BAA-4DFF0EAF6A1C-5555-00000C8CCF240C70/Screen+Shot+2013-11-28+at+20.50.34.png] **5 November 2013: Here's a screenshot of the Speedmonkey YouTube channel demographics** [image:4C397A76-8FEE-4126-B5F9-768590548B39-5555-00000C8CCF0629AC/Screen+Shot+2013-11-05+at+14.09.00.png] **18 September 2013: Update - Speedmonkey just hit 1.5 million views** [image:6207769B-9AD2-4264-A94F-C948D22FFE9E-5555-00000C8CCEDD2347/Screen+Shot+2013-09-18+at+23.19.55.png] [image:D98D5AB1-7983-4BB8-A71B-5F5D62CF7D29-5555-00000C8CCEB4E9F7/Screen+Shot+2013-06-20+at+23.01.23.png] Here's a screenshot following our best day to date, on 28 July 2013 [image:F3358CB6-192D-4277-B421-8A811B8601DA-5555-00000C8CCE871648/Screen+Shot+2013-07-29+at+10.48.40.png] ["The Aztek Conspiracy" - David Blue Column](http://www.speedmonkey.co.uk/2012/11/the-aztek-conspiracy-david-blue-column.html) #auto #legacy # Nissan Murano CrossCabriolet: The Ego Divide — Honk [image:1B02E8CA-FA2A-454F-95CD-3B5594CAC35E-5555-00000C713E30429A/9ZxzF2f.jpg] ## The recently-discontinued Nissan Murano CrossCabriolet darkly mirrors sentiments first begun with the Pontiac Aztek, narrating Generation X’s decline. My Nissan wheeltime for [Honk](https://medium.com/r/?url=http%3A%2F%2Fextratone.com%2Fhonk) has grown a massive respect for the brand’s audacity within me. My interest in the profession has spanned years of maturity — from asking *can’t you just…?* to active affection for those who dare reliably retort with a confident *no*. *Can’t you just retire your body-on-frame SUV entries already like everybody else did ten years ago?* The noble, rugged Xterra, which we shall sincerely miss. *Can’t you just follow the Golf’s unquestionably low-risk lead into the tumultuous youth market?* The Juke NISMO, which we regard as the industry’s singular steady grasp on what youth actually means. *Can’t you just take some cues from Honda and Toyota, and make your sedans easy on the eye?* The Altima and the Maxima, which constitute the last truly evil marque available. *Can’t you just step a little lighter on the Versa’s margins? You’d be insane to build a car designed by MSRP alone!* The Versa is — for better or worse — the absolute essence of automobiles’ transportive function, and no more. And there’s the GT-R, of course, which continues to make fools of an entire culture of self-titled “gearheads” who claim speed as their one true dowry. [image:358A097A-06A8-4074-BBD3-FEBBDEC8A1E5-5555-00000C713E15E6BF/5B0USDq.png] Throughout the years, Nissan has over and over again made me look like an absolutely absurd idiot for your display — and I cannot think of a better gift. Of all the brands to misunderstand, it is the ultimate muse. So, in the present, I am grandiosely assuming you’ve been attentive enough to deliberate the possible outcomes of our time with the Murano CrossCabriolet. It was quickly apparent that the experience was not going to resemble our [Night of the Juke](https://medium.com/r/?url=http%3A%2F%2Fbit.ly%2FJukeHonk) in the slightest. It could be attributed to my pre-game mentality. For the first time, I came to this monstrosity thinking I’d finally learned my lesson,desperately hoping to be whipped again — real bad — but walk away with more closure than with which I arrived. Like a good diplomat, I made myself approach without want for anything but understanding. On first take, the Xterra was proud, and the Juke was clever. The CrossCabriolet is a corny joke. Take a look at an [occupied, top-down example from afar](https://www.instagram.com/p/BEkCgv4w7nf/). I cannot think of a more ridiculous picture. [image:BA8C3BB8-8820-435A-9986-7D32FACA9543-5555-00000C713DFCF985/33VTAOj.jpg] Just since its assembly in 2011, our example’s trim has endured enough to begin disintegrating in a few bizarre locales. Not to over-iterate, but it’s needing strong mention: I had never sat in a roofless crossover before. I’m assuming you haven’t, either. It is unnatural. It is harrowing. From the organization I have summed so many times over the years as “acutely ingenious” came this… unsettling suburban bathtub. It’s a shame — I repeatedly remark on the extrapolated potential I can see in a *roofed* Murano. Everything else in sight is worth my time. If only it had been better-protected. The sensation is simply ridiculous in what’d be a tasteful sense were this a one-off project of some hearty garage tinkerer or tuning shop, but… my God; Nissan delivered it this way, and had the gall to ask $10,000 more for their molestation. Still, its [webpage](https://medium.com/r/?url=http%3A%2F%2Fwww.nissanusa.com%2Fcrossovers%2Fmurano-crosscabriolet) (in past tense, thank God,) proclaims “the Murano CrossCabriolet was the world’s first and only All-Wheel Drive convertible crossover” in the same language I’d tout the Xterra (may it rest in peace and eternally-inadequate glory) as the last available SUV, in the traditional use of the segment, or the Juke NISMO as the first competently-composed automotive product for millennial youth. Or the GT-R as by far the most effective, high-value instrument for the pursuit of maximum velocity across the ground. And so on. [image:9716BF07-DA38-49D6-BDFF-94C24BC85FC6-5555-00000C713DE0544C/xLnWxFe.webp] The language so assured, the parallels must inevitably be drawn to that cheap joke of the century’s turn… the Pontiac Aztek. The details of its life story are reliably amusing, should you find yourself mid-research. From the journos’ gasps at its corporately-edgy concept’s unveiling to the weary original steed of *Breaking Bad* ‘s Meth Man, there is a similar *lifestyle vehicle* thread between the products that weaves an obscure narrative. My own contribution: ::after a missed exit outside Galveston just as Azteks first became rentable, my stepfather (the most earnestly late-history Pontiac man who ever lived) took an entirely-unexpected and uncharacteristic 70 mile-an-hour plunge into the choppy grass median after shouting “this is an off-road vehicle!”:: ::As I’m sure you can imagine, it was the single most traumatic event I have ever experienced as the passenger of a motor vehicle, but the damned thing was unscathed, despite having repeatedly chucked us all (fully-belted) into its beige ceiling.:: ::Gary believed in Pontiac.:: ::Though he was keen enough to smell death, he chose to believe in the Aztek.:: ::And you know what? His faith, too, has made me look like an idiot.:: That’s what separates the Aztek from ye late CrossCabriolet: it really was a genuinely- *bold* innovation. Survive the laymen’s idle party chat and crude design critiques, and you’ll find an impressive clarity in its purpose, especially given the context of its conception. In the used market especially, it *still* represents a characterful, practical, and high-value consideration. And yet — at the expense of themselves — American buyers did not clamor for it like the informed of the populace did. Perhaps it was because the informed — like then- *BusinessWeek* ‘s David Welch — were [echoing](https://medium.com/r/?url=http%3A%2F%2Fwww.bloomberg.com%2Fnews%2Farticles%2F2000-12-17%2Fgms-aztek-born-to-be-a-little-too-wild) hopes of a “design renaissance” for General Motors. The renaissance that would not come until the Flush of the Boomer Higher-Ups some eight years later. Both tales, I think, represent a profound neglect of consumer journalism. At the turn of the century, though, it was not unusual to go a day without accessing the internet. Today, people are *still buying* the few flops the industry has left to offer — making what is most likely the second-largest purchase of their life’s current epoch without consulting the *volumes* of diverse, intelligent, and articulate opining now accessible instantly *free of charge* via the subsidized slates that lightly jostle in their jean pockets as they wiggle their signatures on dealer paperwork. [image:E7A823D7-46D0-4D3A-9246-EB89E1D9F36C-5555-00000C713DBE9BB2/veCigX9.png] **ALERT**: Inbound tennis enthusiasts! Funny, isn’t it? An American hit when the Japanese were unquestionably winning, and — just over a decade later — a Japanese miss as their winning had just begun to be questioned. Make no mistake; I am not being patriotic. For me, sovereignty does not extend beyond design houses, R&D facilities, and test centers.And it’s somewhere within Nissan’s where pillars were severed and delusions nurtured; all astoundingly with executives’ blessing. I am terribly and shockingly ashamed to report that my countrymen *actually bought them*. As many as 3300 units in the last year of the Mayan calendar. The worst bit, though, is that they *all* made their way to my particular part of the planet. I swear to the Sun; I am surrounded. If you’re familiar with Columbia, Missouri, it does not take more than a moderate imagination to comprehend the sense, as grueling as it is. I see them regularly; once a month, at least. In a town where one can expect to spot a Gallardo in front of Buffalo Wild Wings marred by horrid plastic athletic miniflags wedged in its five-figure doors, they are everpresent reminders that the New Money Effect continues to flourish, unbridled in the Midwestern U.S. The soft top is *always* retracted, of course, and the exposed driver is *always* a sweating middle-aged white woman wearing a light-colored tennis visor. She… *they*… are *always* on their way to a match. Doomed to roast forever, I suppose, as there is only one nearby court, as far as I know. It is disheartening to realize that, now, I see many more of them than Azteks around. Though neither were designed for any *tangible* “lifestyle,” per se, I am saddened by the shift this minuscule tell indicates in my hometown’s morale. From an (albeit equally-vague) yearning for new adventure in an intriguing new century to an emotionally-destitute jaunt to *the court*, I have witnessed all of Generation X’s vigor erode procedurally away before my eyes. [image:FF3CF38F-A06C-4CCC-BFD5-3728FA42C366-5555-00000C713D9A37FD/8n2HtTs.jpg] Y2K, Great Depression II, an ancient apocalyptic prophecy from one of the wisest civilizations in recorded history… *Surely, one of these foretold disasters will finally End it All!* Perhaps Nissan knew that even the well-read of the North American market were, by and large, simply looking for ways to pass the time before the death which they felt so assuredly approached. The number of unanimously-unbuyable prospects available has shrunken to virtually none, and the CrossCabriolet was not much of an investment; not all that highly-engineered, really. Perhaps they felt obligated to entertain us in our delusional *way out*. Perhaps it was all just an awfully-German prank. And, if the End of the World is imminent, what’s to stop one, really, from leasing *the world’s first and only convertible crossover?* What’s to stop one from playing tennis? [#auto](https://dieselgoth.com/tag:auto.html) [Nissan Murano CrossCabriolet: The Ego Divide — Honk](https://dieselgoth.com/nissan-murano-crosscabriolet-ego-divide.html) # MacStories Weekly: Issue 301 From: Club MacStories To: davidblue@extratone.com Date: Dec 10, 2021 Subject: MacStories Weekly: Issue 301 Great apps, reads, and more, curated by the MacStories team and delivered every Friday. Read MacStories Weekly in your browser Issue 301 - Friday, December 10 In this issue: An announcement about Weekly's holiday schedule, Mimestream, Federico's solution to sync playlists between Apple Music and TIDAL, Club member Fran Basra's Home Screen, plus Links, App Debuts, a recap of MacStories articles, and a preview of upcoming MacStories podcasts. Weekly's Holiday Schedule and a Note About Next Week's AppStories Episode Longtime members may recall that we typically take a couple of weeks off in the summer and over the winter holidays to relax and recharge. This year was unusual because we launched Club MacStories+ and Club Premier right when Weekly would normally be on hiatus. We couldn't be happier with how the expansion of the Club has gone. It's been a lot of fun for us, but also a lot of work. So, we're going to catch up on some much-needed rest over the holidays. The December Monthly Log will be published near the end of the month as usual, and we can always be found in the Club Discord community, but we'll be taking off three weeks from publishing MacStories Weekly over the holidays to spend time with friends and family. The last issue before our break will be MacStories Weekly 302 next Friday, December 17th. We'll be back with Issue 303 on January 14th. We've got a lot planned for next year, which we're excited to get to work on, but six years of doing this have made clear that the first step is to get a little rest before digging in. Thanks for being part of the Club. We're fortunate to have such a fantastic group of people supporting everything we do. Happy Holidays! – The MacStories Team AppStories+, Episode 253 Is Coming Monday We typically publish AppStories+ a day early on Sunday, but we've got a special episode planned that we can't share until Monday, December 13th – a little later in the day than usual. Stay tuned: it will be worth the wait. – Federico and John MACSTORIES RECOMMENDS Great apps, accessories, gear, and media recommended by the MacStories team. Mimestream John: Mimestream is a Mac email client for Gmail that’s currently in public beta. I wouldn’t normally recommend a beta app, but Mimestream already has all of the core features you’d expect from an email app, and it’s been reliable over the past month or so that I’ve been using it. Before digging in further, it’s worth mentioning the limitations that may be dealbreakers for some people. First, Mimestream is Gmail-only. You won’t be able to use it with your iCloud email account, which is a shame, but iCloud isn’t a primary email account for me, so it hasn’t been an issue. Second, there is no iOS or iPadOS app. Mimestream's developers maintain a public roadmap and say they are considering an iPhone and iPad version of the app, but they haven’t committed to it yet. It’s hard to imagine an email client without a mobile version, but it's possible there may never be one, which is worth keeping in mind. Personally, neither of those caveats are short-term dealbreakers for me. I absolutely want the same email experience across all of Apple's platforms. However, the reality is that I handle most of my email on my Mac, so I've found using different apps on my Mac and other devices less of a hindrance than I expected. If next December rolls around and Mimestream's developers aren't working on iPhone and iPad versions of their app, I may need to reconsider, but for now, I'm fine with using multiple apps. Mimestream uses Google's modern Gmail APIs, and it shows in the app's solid fundamentals. It's fast, runs smoothly, and best of all, search is top-notch. Search is one of the most critical features of any email app I use, and too often, it doesn't work well in email clients. The situation is so bad that I typically keep the Gmail app, which I'm not particularly fond of, on my iPhone and iPad for those times when search doesn't turn up something I need to find. I haven't had to resort to logging into my Gmail account in Safari to search for messages while I've been using Mimestream. The app quickly finds every message, including the ones that other apps struggle to surface. I suppose I could use an elaborate filing system to make it easier to find old messages without search, but thanks to Gmail, I don't have to, and with Mimestream, the same powerful search you get on the web is available in a native app both online and off. Mimestream was founded by a former Apple engineer who worked on Apple's Mail app, and it shows. The UI bears similarities to Apple Mail, which makes it familiar immediately. The app also supports familiar macOS features like swipe gestures; I've got them set up to allow me to quickly archive and delete messages. There are also keyboard shortcuts for every feature, with options to use classic Apple Mail or Gmail shortcuts depending on which you prefer. Deep-linking to messages is something I rely on heavily. I'll often use Spark's linking feature to quickly return to a message for context, dropping links in my task manager or notes. Mimestream doesn't have deep-linking back to the app yet (it's on the roadmap), but you can copy the Gmail link to a message, which I've found has been good enough as a temporary solution. You won't find the feature in Mimestream's menu system, but if you click on the three-dot menu button in a message's header, you'll find an option to 'Copy Gmail URL.' Along with starring messages, those features have been sufficient for my purposes, but the app also supports Gmail's automatic categorization of messages into Social, Promotions, Updates, and Forums sections (which can also be turned off), aliases, message templates, delayed message sending of up tho 30 seconds, signatures saved in Gmail, native notifications, and tracking prevention. The developers say they will be adding server-side filtering, quick unsubscribe, and out-of-office messages soon too. Overall, my email needs are fairly straightforward, so my experience with Mimestream has been excellent. Deep linking is the one feature that I hope is added soon, and based on the pace of updates I've seen since I started using the app, I'm optimistic that the wait won't be too long. Longer-term, the lack of a mobile version may send me looking for a different solution, but for now, Mimestream has been a pleasure to use on the Mac and the email app that is most likely to be the one I stick with for 2022. THE EXTENSION Exploring topics beyond our day-to-day coverage. Syncing Playlists Between Apple Music and TIDAL Federico: In Issue 300 of MacStories Weekly, I showed off my music Home Screen and explained why I started using TIDAL instead of Qobuz as my supplemental music streaming service in addition to Apple Music. (Long story short: Apple Music doesn't have Roon integration and I really love using Roon with my DAC; plus, I appreciate TIDAL's commitment to fair artist compensation.) I don't know why I just thought about this now and didn't even consider the option before, but earlier this week I started wondering if it was possible to keep my playlists in sync between Apple Music and TIDAL. I don't mean copying playlists over from one service to another only once, but actually syncing them automatically, on a regular basis, without any manual input needed. As it turns out, there's a very good solution for this, and it's a service called Soundiiz. There are many things Soundiiz can do, including importing and exporting music libraries in formats such as M3U and CSV, but I want to highlight two features I took advantage of this week, which pushed me to become a paid subscriber right away. For starters, Soundiiz isn't an app that runs on your iPhone or iPad like SongShift, which you have to remember to open manually: it's a web service that connects directly to a plethora of music streaming services via their APIs and runs uninterrupted in the cloud. It's important to keep this in mind since it is what ultimately differentiates Soundiiz from similar apps I tried in the past. After I connected my Apple Music and TIDAL accounts to Soundiiz, I chose to start with a seemingly daunting step: migrating my entire library from Apple Music to TIDAL in one go. Soundiiz lets you do this with a feature called 'Platform to Platform' transfer, and it's effectively a copy of multiple items at once from one service to another that you can leave running in the background. In my case, I copied roughly 2,200 albums and 1,200 artists to TIDAL since I figured having this data set in my account would help TIDAL come up with more interesting recommendations for me in the future. Copying library items from Apple Music to TIDAL via Soundiiz. Soundiiz's UI to perform these batch operations is intuitive and, more importantly, the service is fast: thousands of items were matched and copied to my TIDAL account in just a couple of minutes. Soundiiz even lets you inspect the results of a successful batch operation with a full log you can browse and filter for errors. In my tests, there were a handful of albums that couldn't be copied from Apple Music to TIDAL, but the error rate seemed lower than what I'd seen in the past in other transfer utilities. Then again, most of those apps are limited to moving playlists between services: I've never seen a transfer tool that can copy thousands of library items in just a few minutes – until Soundiiz. My TIDAL library after Soundiiz's copy. Results logged by Soundiiz. My favorite feature of Soundiiz, however, is the ability to keep the same playlist in sync between two streaming services. My idea was simple enough: can I continue using Apple Music as my primary music streaming service, keep curating my playlists there, but also sync them at a regular interval to TIDAL, so that I can enjoy the same playlist in two places depending on the equipment I'm using? Soundiiz makes this extremely easy: in the Synchronize tab, I picked a source playlist from Apple Music, selected TIDAL as destination, and chose to create a new playlist (you can also pick an existing playlist in the destination service, but my TIDAL account was empty). Picking a source playlist. Picking a destination service. The last step of a synced playlist's configuration is where Soundiiz's best features come in: you can set a playlist to be synced daily (or weekly), and you can choose to either append songs to the end of the destination playlist, or you can replace all tracks on the destination playlist with songs from the source playlist every time the sync runs. The different sync methods in Soundiiz. These two different sync methods have their own advantages and use cases. The 'add' sync method is useful for those playlists that get refreshed on a weekly basis, and you want to make sure you archive their contents somewhere else before they disappear. For instance, this is the method you should use if you want to build an 'archive' playlist for your Spotify Discover Weekly or Apple Music Favorites Mix. Pick one of those playlists as source, set the sync to run weekly on the day after they get updated, and append all tracks to another playlist. Over time, you'll end up with a giant playlist containing hundreds of tracks you're likely to enjoy. In my case, the 'replace' method is what I was after. To mirror my most-used Apple Music playlists (Best of the Year, Family, and All-Time Faves) to TIDAL, I needed to set up an automated sync that would fetch the latest version of each playlist every day and recreate it in the destination service. With this approach, I can keep adding new songs to my Apple Music playlists as normal, and Soundiiz will recreate them every day in TIDAL; I don't have to remember to manually sync those playlists from Apple Music to TIDAL, which makes the entire process frictionless and, ultimately, more enjoyable for me. The same playlist from Apple Music (left) gets synced to TIDAL every day (where, thankfully, I can sort it by most recently added). Soundiiz has been a genuinely amazing surprise over the past week, and I recommend the service if you're into the whole concept of data portability between multiple music streaming services. (There's a long list of supported services in Soundiiz, including some I've never heard of.) The only feature I wasn't able to find in Soundiiz is merging playlists: the service can only mirror one playlist to another – it cannot merge changes from two playlists at the same time. I understand that this is a limitation of the APIs provided by different streaming providers, and it's not a dealbreaker for me. I just wanted an easy way to mirror certain playlists from Apple Music to TIDAL, and Soundiiz is the fastest, most reliable automated solution I've found to date. INTERESTING LINKS Great reads and links from around the web. Club member Dan Stransky has updated his excellent shortcut for simplifying the process of picking a new iPhone wallpaper manually or randomly. (Link) 9to5Mac reports that the Eve Room HomeKit device that tracks temperature, humidity, and air quality has been updated with Thread radio support to improve its responsiveness on WiFi networks. (Link) GitHub user shy-neon, who is also a Club member, shared a utility this week that allows you to switch the icons used on Safari's Start Page to one of your own choosing. (Link) Parag Agrawal, Twitter's new CEO, has wasted no time shaking up things at the company, as explained in this piece in The Verge by Alex Heath. (Link) Sebastian Skov Andersen takes a nostalgic look back at the Tamagotchi, which recently celebrated its 25th anniversary. (Link) The New York Times examines the effect of third-party sellers on Amazon's bookstore through the story of an author who sued the company for undercutting his business. (Link) Wired reviews the Jackrabbit, a tiny e-bike that starts at $1,000, which is substantially less than most of its competitors. (Link) Satechi introduced a Thunderbolt 4 dock this week for $299, which includes three Thunderbolt 4 ports, three USB-A 3.2 ports, one USB-A 2.0 port, Gigabit Ethernet, a Thunderbolt 4 host port with 96W PD, a UHS-II SD card reader, and a 3.5mm headphone jack. (Link) Craft 2.0 is a modest update to the app, but its makers at Luki Labs took the opportunity to announce that its beta web app will reach feature parity with its native apps in the first quarter of 2022, a host of editor and collaboration refinements are on the way, and third-party developers can begin making extensions for the app based on web technologies. (Link) Apple has updated its open source website with a page featuring Apple and community projects. The company has also begun publishing its open source code as git repositories on GitHub. (Link) ABYSS, the maker of high-end headphones, tests whether an M1 Mac can power high-resolution, audiophile headphones in this YouTube video. (Link) APP DEBUTS Noteworthy new app releases and updates, handpicked by the MacStories team. PS5 Controller Trigger Test John: PS5 Controller Trigger Test is a utility fr testing the PS5 DualSense controller's haptic feedback system. The app allows users to independently set finely-tuned values for each of the controller's triggers, control its light, and monitor battery life. Whether you're simply curious about the range of the DualSense controller's haptics or are working on developing a game for the system, this is an app worth checking out. Pop Out Timer & Stopwatch John: Pop Out is a timer and stopwatch app that uses the same Picture-in-Picture method that Yoink uses to remain active in the background. With the floating timer app's latest update, it no longer pauses when audio or video is played by other apps. That means you can use the app for timing workouts while listening to music or time your time-wasting web browsing without autoplay media interrupting your timer. Alfread John: Alfread is a read later app that integrates with Pocket and Instapaper, although it can also be used independently from those services. The app's hook is that it offers to set reading goals. Pick how many articles you want to read each week, and Alfread tracks your progress. The app also makes it easy to archive stories you don't get around to reading and integrates with Readwise, so highlights are synced to that service. Timery John: Many of Timery's recent updates have focused on its reporting system that debuted in the fall. With this week's update, developer Joe Hribar has made a grab bag of smaller changes that make the app easier to use and add other refinements. Reports can now be based on the past seven days instead of calendar weeks, start and stop times are easier to adjust, the app refreshes in the background, there are new buttons for quickly accessing time-entry actions, and there are more start and stop options in the app's Shortcuts actions. I make small adjustments to time entries a lot, and together these changes have made that process noticeably faster than in the past. Matter John: Matter is a read later app that has begun to grab my attention. I'm not a fan of its Discover and Inbox feature. I don't need more to read, and the articles the app suggests are almost entirely Silicon Valley think pieces, and its roster of suggested authors is too limited. However, the app's parser for saved articles is excellent, and I love the option to have stories read aloud by what is one of the best speech synthesis engines I've heard. The app also offers tagging of stories, search, and a few sorting options. This week, the app added a couple of features. The first is the ability to export stories as PDFs. It's not something I frequently do, but the the app's PDFs look good and are easy to share or store for archival purposes. Matter also added an official Obsidian plugin that syncs highlights from the app to your Obsidian Vault. I'd like to see the metadata it saves and the formatting of the highlights it automatically syncs to Obsidian refined, but having highlights synced automatically without relying on a middleman service like Readwise is a big advantage. Halide Mark II John: This week, pro camera app Halide added a collection of widgets to launch the app into particular modes. Whether you want to be immediately taken to Halide's macro mode, which I covered earlier this year, or its telephoto lens, these widgets will allow you to do that. HOME SCREENS Friends of MacStories share their iPhone, iPad, and Apple Watch Home screens. Fran Besora Twitter: @_fraanb_. Club MacStories member. I've been a huge fan of Focus modes since Apple introduced them at WWDC 2021 last June. The idea behind this feature is amazing to me. I can have multiple Home Screens through the day with different apps depending on my needs. I like the Focus mode approach that Federico has explained on AppStories and Connected, so I recreated it with modifications for my iPhone too. The Setup I have a minimal Home Screen that only has the eight apps I use most throughout the day. If I need another app, I search for it in the App Library or Spotlight. The apps on my main Home Screen are: Marvis Pro (both Federico and John covered their setups in MacStories Weekly), Tot Pocket, Photos and Reeder in the first row. And Messages, Apollo for Reddit, Tweetbot and WhatsApp in the second row. On my dock are Craft, Remind Me Faster (my task manager is GoodTask because it uses the Reminders API), Safari, and the Shortcuts app. My WeatherBot shortcut. The two widgets on my Home Screen have the shortcuts I use most often. I don't use a Smart Stack because I prefer see all of my shortcuts. WhatsAppBot is a shortcut with a 'Choose from Menu' action that lets me send quick messages; WeatherBot lets me know the current weather in my location (high, low and precipitation chance), whether I need an umbrella, and the weather in a specific location using Toolbox Pro because the Shortcuts app can't convert text to a location; and Apple Frames. In the second widget I have my Focus modes shortcut with a 'Choose from Menu' action; Craft Home, which opens my Dashboard note; and CraftBot, which lets me append text to different notes and search them. In the Today page, I have four widgets: GoodTask, Timery, Activity and Battery. I like the idea behind Federico's setup with the ability to change between Focus modes with two shortcuts: one to select the Focus and another to reset to a default mode. Instead of having the two shortcuts in a medium widget in the same position of each focus like Federico does, I have a shortcut that lets me change between Focuses and small widget that resets my active Focus, which are in the same position in the different modes. Although I'm not always in a Focus mode, I have six of them: Do Not Disturb, Work, Fitness, Music, Reading, and Mindfulness. Every Focus has different apps and notification permissions. My wallpaper. For the wallpaper, I recreated Federico’s iOS 15 review wallpaper using Toolbox Pro to extract the HEX colors and WallCreator to make it. You can download it here. The Focus Modes My Do Not Disturb automation for the Apple Watch. The apps in my Do Not Disturb Focus mode are the same that are on my main Home Screen, but my notifications are set up differently. In Do Not Disturb I don't get any notifications. This Focus turns on and off automatically with an automation filter inside the Settings app. When it is activated, I get a notification on my Apple Watch that displays the iPhone battery. The Work mode Home Screen includes a medium Timery widget at the top, a small Reset Focus shortcut in the middle left, GoodTask, Notes, Apple Frames and Tot Pocket. At the bottom of the screen, there's a medium GoodTask widget that displays a Smart List with the tasks for the next five days that is based on a post in MacStories Weekly. The Fitness mode Home Screen has a Marvis medium widget at the top of the screen, a small widget to reset the mode with a shortcut in the middle left, Activity, Music, Marvis and the running app Tempo. At the bottom, I've added a medium Activity widget. The Music mode Home Screen has a medium Marvis widget, a shortcut to reset my Focus mode, Castro, Music, Marvis and Miximum, a third-party music app that lets me search inside my playlists and create playlists with filters. At the bottom of the screen I have a medium Castro widget. My Reading mode Home Screen includes a medium Reeder widget, the same shortcut for resetting my Focus mode, Reeder, Apollo, Discord, and Mailbrew. The last one is a service that sends me a newsletter with my interests at specific times of the day. At the bottom, I have a medium LookUp widget with the word of the day. Finally, my Mindfulness mode Home Screen has a medium Motivation widget, the same shortcut to reset the Focus, Activity, Health, Headspace, Strides (a habit tracker), Unwind (for mindful breathing), stoic (which is similar to Day One), Day One, and Endel (white noise app and winner of an App Store Award in 2020). The idea behind my setup is to be in a Focus mode for each activity, such as listening to music or reading something on Reddit or the Club Discord. When I want to do these activities, I don't want notifications of any kind. Submit your own Home screen SPOTLIGHT ON CLUB MACSTORIES+ Highlights of the latest Club MacStories+ happenings. Shortcuts, Typora Tips, Wallpapers, and More Federico: It was a busy week on the Club MacStories+ Discord, and I’ve tried my best to collect highlights from the community below. There isn’t a Discord URL scheme to reopen these links in the Discord app directly; my preferred approach for these is to view them as separate tabs in Safari for iPad or Mac. Earlier this week, I shared a simple shortcut I've been using for the past few months to make Home Screen icons using SF Symbols. It's based on Toolbox Pro. Member David shared a useful set of resources and tips for the new Markdown text editor that recently came out of beta, Typora. Fran, also featured in this week's Home Screen section, shared a shortcut to count the days between the current date and a specific date in the future. I was browsing around the Apple ID website earlier this week, and I downloaded images Apple uses for their intro animation. Want to join the the Club MacStories+ Discord? Upgrade to Club MacStories+ or Club Premier, then visit the Account page. PREVIOUSLY, ON MACSTORIES Our top stories from the past week. Wallpaper Tours Apple Park’s Design Studio Pok Pok Playroom Releases Major Town Toy Expansion UP NEXT ON MACSTORIES' PODCASTS A preview of upcoming MacStories podcast episodes. Next week on AppStories, we have a special episode planned, which we aren't ready to reveal just yet. Both the AppStories+ and regular version of the show will be published on Monday, December 13th a little later than usual. This week on MacStories Unwind, Federico and John run down their favorite TV shows and movies of 2021, along with the highlights of what's been going on at MacStories. WEEKLY ARCHIVE Previous emails that were sent to Club MacStories members. To view this issue of MacStories Weekly in your browser, click here. Thanks for your support, we'll see you next week! THE SMALL PRINT It's OK to share this email with a friend or family member occasionally, but please don't share as a habit – this email is for Club MacStories members who financially support Federico and the rest of the MacStories team. If you are interested in a team subscription to Club MacStories for teams of 5 or more people, please contact Federico directly. Authored by Federico Viticci, John Voorhees, and Alex Guyot. Email Feedback Copyright © 2021 MacStories, All rights reserved. You're receiving this email as a member of Club MacStories. unsubscribe from this list    update subscription preferences [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjlmNGI4MGEzNTcyOGY3Mjcx%0D%0AZmUzZWE2ZmYuMTIxMTc3NDI3My4yMDIxMTIxMDE5MDAxMS4zMWJhZmEzNGY0LmNk%0D%0AMWIxZmY4QG1haWwyMDUuYXRsMTIxLm1jc3YubmV0OzQxNjM4MjQ1MDI%3D) #$ #archive #email # Binary Code From: Jess Bergman To: ihadtopee@gmail.com Date: Dec 9, 2021 Subject: Binary Code Brazil’s higher education system faces its own reckoning. Welcome to the Culture Trust newsletter. Binary Code While the American commentariat continues to panic about the left-wing indoctrination unfolding on the leafy campuses of our elite universities—where, depending on the day, the crisis is either a dearth of free speech (safe spaces!) or too much of it (scary books that make white adults feel weird!)—Brazil’s higher education system faces its own reckoning. For many years, despite the country’s much-lauded diversity, seats at its public universities were filled disproportionately with children of the white upper and middle classes, who could afford private high schools and specialized tutoring. The Black Movement (o Movimento Negro) organized against this status quo, and in the early 2000s, the State University of Rio de Janeiro began imposing booth income- and race-based quotas. The program expanded, and as a result, public universities now better represent the Brazilian population at large. Not everyone is happy about this. As Stephanie Reist explains on our site, many members of Brazil’s intelligentsia believe themselves to belong to a post-racial society. They penned a letter about their opposition to quotas in the country’s paper of record: > The manifesto insisted that this way of thinking about race, and indeed the very idea of race-based affirmative action, was an importation from the United States, a perversion of Brazil’s celebrated many shades of brown. Since the Brazilian state had never institutionalized segregation or apartheid… quotas and commissions to determine candidates’ color would inaugurate a racist Brazilian state. Inaugurate? As Reist goes on to say, this racist state already existed: black, mixed-race, and indigenous Brazilians still face exclusion and material violence, despite fantasies that insist otherwise. Across the globe, another tale of socially constructed binaries: Nathan Goldman reviews a book that troubles the boundary between the human and natural world. With In the Eye of the Wild, anthropologist Nastassja Martin recounts the aftermath of a brutal bear attack in rural Russia that left her badly injured and in great pain. But Martin does not treat her story as a survivalist narrative that pits woman against beast, civilization against the wild. For her, Goldman writes, this act of interspecies violence “opens up a space of unspeakable closeness.” Bear Witness In 2015, Nastassja Martin was badly injured by a bear. As she writes in a newly translated memoir, she came to see the attack as “intimate beyond anything I could have imagined.” No Country for Old Women Elizabeth Taylor stages a confrontation between young and old, manners and freedom, a shrinking, post-war England and its glorified imperial past. Binaries abound, too, in the fustier, fussier rooms of Elizabeth Taylor’s eleventh and best-known novel, which Michael Hofmann reviews on our site. In Mrs Palfrey at the Claremont, the upright widow of a former colonial administrator finds herself at odds with a changing culture, lost in the young, footloose world of Swinging London. What is to become of her in post-imperial England? Such questions are worth pondering for us here across the pond, as the American empire coughs and sputters. All the best, Jess Bergman Web Editor Thanks for reading the Baffler newsletter. Manage your preferences. If, by some chance, you’d prefer not to receive future updates, please unsubscribe here. The Baffler Magazine 19 West 21st St, #1001 New York, NY, 10010 [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjI1MzAxMjM0YjY5MGFjMGQ3Nzc3YTcw%0D%0AYmMuZmYxNWZhZGM0Zi4yMDIxMTIwOTIwMzY1My42Y2RkNGY2YmEyLjgxMjhiNTdi%0D%0AQG1haWwyNDMuYXRsMjEucnNnc3YubmV0O2dJRDoxNzE4NzAyNDA4MTgyOTU4NDQy%0D%0AOzk0ODk3Mjg2Nw%3D%3D) #archive # 🎧 Underunderstood's new patron-only release: "Department of Fun" From: Patreon To: Extratone Date: Dec 9, 2021 Subject: 🎧 Underunderstood's new patron-only release: "Department of Fun" Underunderstood Department of Fun Listen on Patreon "The internet's oldest mystery" brings us to a part of Wikipedia we'd never seen before. Show notes: 1. [Markovian Parallax Denigrate](https://en.wikipedia.org/wiki/Markovian_Parallax_Denigrate) (Wikipedia) 2. [The Markovian Parallax Denigrate: Unraveling the Internet’s oldest and weirdest mystery](https://www.dailydot.com/unclick/markovian-parallax-denigrate-spam-mystery/) (Daily Dot) 3. [The only remaining MPD message on Google Groups](https://groups.google.com/g/alt.religion.christian.boston-church/c/K2mfr6-0pkg/m/n3-OUDYYaeUJ) 4. ["I Am Not a Bot"](https://gimletmedia.com/shows/reply-all/emh36dn) (Reply All) 5. [Wikipedia:Deleted articles with freaky titles](https://en.wikipedia.org/wiki/Wikipedia:Deleted_articles_with_freaky_titles) 6. [Wikipedia:Humor](https://en.wikipedia.org/wiki/Wikipedia:Humor) 7. [@depthsofwikipedia](https://www.instagram.com/depthsofwikipedia/?hl=en) (Instagram) - [Live show on January 4th in NYC](https://www.eventbrite.com/e/depths-of-wikipedia-live-tickets-214296886757) 8. [Wikipedia:Essays](https://en.wikipedia.org/wiki/Wikipedia:Essays) 9. [Wikipedia:Unusual articles](https://en.wikipedia.org/wiki/Wikipedia:Unusual_articles) 10. ~["100 Years"](https://en.wikipedia.org/wiki/00_Years_(film))~ actually seems to be sponsored content for a cognac company 11. [John's image of Jacked Horsey](https://twitter.com/johlag/status/1141902489668792321?s=21) (Twitter) 12. [Wikipedia:No climbing the Reichstag dressed as Spider-Man](https://en.wikipedia.org/wiki/Wikipedia:No_climbing_the_Reichstag_dressed_as_Spider-Man) 13. [Wikipedia:Complete bollocks](https://en.wikipedia.org/wiki/Wikipedia:Complete_bollocks) 14. [Wikipedia:Department of Fun](https://en.wikipedia.org/wiki/Wikipedia:Department_of_Fun) 15. [Listen now](https://www.patreon.com/posts/department-of-59727816?utm_medium=post_notification_email&utm_source=post_link&utm_campaign=patron_engagement&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZWRpc19rZXkiOiJpbnN0YW50LWFjY2VzczoxNmRjMGMzMi1hNzYwLTQwZjctOWE0Ny04ZDYwZjg5MzNlOGIifQ.8CA5CFzGrcIhKaNk8HM3OJPq2yc6bfWDcZ_Xxu4h7CQ) [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjIwMjExMjA5MjIwNjU2LjRjNmJiZDlm%0D%0AMDA5NTU4NmZAbWFpbGd1bi5wYXRyZW9uLmNvbTtnSUQ6MTcxODcwNzk0NjIwODY3%0D%0AMTk4NzszMTUzNzk1OTAx) #audio #$ # THREAD: The Firefox App Privacy Report From: David Blue To: David Blue , David Blue Date: Dec 9, 2021 Subject: THREAD: The Firefox App Privacy Report David Blue ※ (𝙶 𝚄 𝚁 𝚄 𝙼𝙾𝙳𝙴) (‪@NeoYokel‬) 12/9/21, 11:02 and every time I must mention that I LOVE everything about Mozilla as an organization!!! and always have!! it’s just that my experience with their actual *software* has always been the polar opposite of what I hear from everyone else. David Blue ※ (𝙶 𝚄 𝚁 𝚄 𝙼𝙾𝙳𝙴) (‪@NeoYokel‬) 12/9/21, 11:02 these days, it’s to an extent that I literally find it unusable on any platform lol. David Blue ※ (𝙶 𝚄 𝚁 𝚄 𝙼𝙾𝙳𝙴) (‪@NeoYokel‬) 12/9/21, 11:02 … and this is consistent with my whole life’s encounters with Mozilla software. everyone says Firefox is private and that it blocks unwanted content well, but when I use it, it’s almost immediately noticeable how terrible it is at that very thing compared to my other browsers. David Blue ※ (𝙶 𝚄 𝚁 𝚄 𝙼𝙾𝙳𝙴) (‪@NeoYokel‬) 12/9/21, 11:02 I can almost confidently say - now that I’m running the Release Candidate of 15.2 - that there’s something very fucky about this… everything makes sense except for Firefox… which I **never opened** in the time constraints of this data. pic.twitter.com/EL5VXN5sZN David Blue Editor-in-Chief, Extratone [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOkNBQTIwQzQzLTFDOEYtNEM4MS04OEM4%0D%0ALTc0NEE0RkY2RUI3QkBleHRyYXRvbmUuY29tO2dJRDoxNzE4NjkwMjUxNzc0ODY1%0D%0AOTczOzg5Njc2ODMxMw%3D%3D) #social # Don’t Throw It Away 🗑️ From: Ernie Smith To: keys@extratone.com Date: Dec 9, 2021 Subject: Don’t Throw It Away 🗑️ On continuing to find ways to use old machines despite having a pretty amazing new one. Don’t Throw It Away 🗑️ By Ernie Smith • Issue #136 • View online On continuing to find ways to use old machines despite having a pretty amazing new one. My attic-bound backup computer setup, intended for focused writing. Your eyes don’t deceive you: That keyboard is actually incredibly yellow and in need of retrobrite. Long story. In yesterday’s Tedium, there was this weird anecdote I uncovered about how a marketing research company managed to create untold amounts of environmental damage in an Iowa community because it couldn’t figure out how to get rid of all the waste that its business—processing coupons—created. Which is quite a weird problem to have, don’t you think? When we try to ditch things we used to rely on, there’s a tendency to think, “out of sight, out of mind.” That is not a theory I subscribe to. Despite having a pretty amazing M1 MacBook Air at my disposal with many of the modern niceties that one would desire from a machine like that, I make a point of continuing to use older machines in my workflow in more tactical ways. And if an issue arises, my goal is not to get rid of it; it’s to get the thing fixed. Case in point: For weeks, my desktop computer—an old HP Z420, the famous Xeon I wrote in my 2019 piece about “Upgrade Arbitrage”—had been running into serious noise issues. Basically, the computer decided to spin up and make lots of noise in a way that managed to wake myself and my wife up in the middle of the night. I determined that the loud thing in the machine was the power supply, and nothing I did could get it to shut up. Much discussion was had about the ideal solution to managing this complicated issue, and eventually, a decision was made: buy a new power supply. Now, because this is a machine that is effectively proprietary (it has standard slots for PCIe cards and hard drives, but components like the motherboard and the cable connectors are nonstandard), this was harder than it sounded. It basically meant that I either had to go used or I had to find a way to jerry-rig a more traditional power supply in a spot where it did not fit, and find a connector that was compatible with the machine. I eventually chose the HP-centric power supply, which is powerful enough to maintain the current Radeon card in the machine, but probably wouldn’t be enough in case of an upgrade. But this actually turned out to be a decent solution. The power supply was only $20. Ripping out the cables from the old power supply didn’t take long at all, and seating everything back in was fast. The old power supply, which often would only turn on in fits and starts, was suddenly reliable. Best part? No noise beyond what you would expect from such a supply (a quiet whir of fan-spinning). This machine, still a Hackintosh but having evolved into a Plex server and remote desktop, can stay on 24/7 without much trouble. This power supply ruined many nights of sleep for me. I desire to flush it down the sewer like a marketing research firm trying to get rid of old coupons, but I will refrain. Now, because this is a machine that is effectively proprietary (it has standard slots for PCIe cards and hard drives, but components like the motherboard and the cable connectors are nonstandard), this was harder than it sounded. It basically meant that I either had to go used or I had to find a way to jerry-rig a more traditional power supply in a spot where it did not fit, and find a connector that was compatible with the machine. I eventually chose the HP-centric power supply, which is powerful enough to maintain the current Radeon card in the machine, but probably wouldn’t be enough in case of an upgrade. But this actually turned out to be a decent solution. The power supply was only $20. Ripping out the cables from the old power supply didn’t take long at all, and seating everything back in was fast. The old power supply, which often would only turn on in fits and starts, was suddenly reliable. Best part? No noise beyond what you would expect from such a supply (a quiet whir of fan-spinning). This machine, still a Hackintosh but having evolved into a Plex server and remote desktop, can stay on 24/7 without much trouble. But the pangs of planned obsolescence make things tougher than they could be in other areas of my technology stack. This is actually a problem I’m running into with some of my keyboards. The Laser keyboard I bought and restored is unfortunately running into a problem with the space key (simply put, it doesn’t want to press half the time), and repairing it likely would mean resoldering or replacing the key switch entirely. Since this is a 30-year-old keyboard, easier said than done, in part because the switch is no longer sold. I’ll get to it, but it will take some time. So as a result, for my backup computer setup, an attic-based setup which I generally use when I want to do more focused writing, had been using a Mac-centric keyboard that was developed by the firm AZIO. The keyboard worked fine for years, maybe not of the excellent keyfeel of the Laser or my primary Nixeus keyboard, but overall not too bad. One downside: The device was bluetooth-based and did not work when simply being plugged into a cable; it had to be run off the battery. Unfortunately for me, the battery on this device appears to have died, so as a result, I am out one keyboard unless I’m willing to open up and repair it myself. (Support, by the way: NOT very helpful.) So now, as a result, I’m writing this on a Mac Extended Keyboard that’s all-white and dates to the iMac G4 era, to my eyes. It’s yellowed, but it works. What’s it plugged into, you might ask? Not the desktop; rather, I’m now using my HP Spectre x360 with it, not as a Hackintosh (though the software is still there), but as a Linux machine. The goal is to have some hardware I can write on that gets me out of my comfort zone as a writer. I think it’s working. Related Reads: Planned Obsolescence: We’re Killing Old Technology With New Technology How we keep screwing over yesterday’s technology due to an intent focus on what we’re doing today. The problem of planned obsolescence is getting worse. tedium.co  •  Share Time limit given ⏲: 30 minutes Time left on clock ⏲: 1 second (whew!) If you like this, be sure to check out more of my writing at Tedium: The Dull Side of the Internet. Do you own a newsletter? Want to try your hand at writing an entire article in 30 minutes or less? If so, let’s do a swap—reply to this email to see about setting something up. Dig this issue? Let me know! (And make sure you tell others about MidRange!) Did you enjoy this issue? By Ernie Smith Not quite short form, not quite tedious. A less ambitious newsletter by Ernie Smith. Not ten short items. Not one long item. One mid-range item. Three times a week (Monday, Tuesday, Thursday). With a time limit. ⏲ Tweet     Share In order to unsubscribe, click here. If you were forwarded this newsletter and you like it, you can subscribe here. Powered by Revue [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjYxYjIwNGRhMTZmNTVfNDJi%0D%0AMWYzMzA4NDViYzc5MjlhQDI2NjkzMjBhLTM3YWEtNDMwMC1iOTY1LTYyMzkxYmM3%0D%0AZWM3Yi5tYWlsOzU1NDYwMjgz) #archive #email # "Apple Podcasts presents the Best of 2021" UPDATE November 30, 2021 Apple celebrates this year’s best and most popular podcasts and their creators [image:665BCE62-9A73-4A8C-90D9-2CA85DE86323-1637-0000003D7ED4F7D5/IMG_2511.jpeg] Apple recognizes exceptional podcasts and their creators for their unique ability to help listeners through this challenging and uncertain time. Each year, Apple recognizes the best and most popular podcasts for their exceptional content, unique ability to engage audiences, and innovation in craft, spanning production, presentation, sound design, and more, that expand the definition of podcasting and deepen its impact on listeners worldwide. This year, [Apple Podcasts Best of 2021](https://www.apple.co/podcasts-bestof2021) features shows and creators that provided listeners with a powerful sense of connection in a challenging and uncertain time, curated by Apple Podcasts’ world-class editorial team. Apple Podcasts is pleased to recognize “A Slight Change of Plans” with Maya Shankar from Pushkin Industries as Best Show of the Year, and “Anything for Selena” with Maria Garcia from WBUR and Futuro Studios as Newcomer of the Year. These deeply personal yet universally relatable shows grapple with profound change, perceptions of identity and self-worth, and the meaning of belonging, with thought-provoking discussions that reflect the human experience. “2021 marked the start of a new chapter for podcasting with shows that moved us in ways unlike ever before,” said Oliver Schusser, Apple’s vice president of Apple Music and Beats. “We are honored to recognize the phenomenal creators who are redefining podcasting with this year’s best shows, and to help more listeners around the world discover, enjoy, and support their inspiring work.” ## Best Show of the Year: “A Slight Change of Plans” with Maya Shankar [image:9B775F6E-B442-4229-9CC6-8AF4B15D0E1C-1637-0000003D7ED9F783/IMG_2510.jpeg] Maya Shankar, a cognitive scientist who’s no stranger to big, heartbreaking change, helps listeners process their own experiences of change through vulnerable, mind-expanding conversations with engaging guests. Maya Shankar is no stranger to change. Before she was a cognitive scientist who founded the White House Behavioral Science Team and served as the first Behavioral Science Advisor to the United Nations, she had a different plan. “My whole childhood revolved around the violin, but that changed in a moment when I injured my hand playing a single note,” said Shankar, who was a student of Itzhak Perlman at The Juilliard School at the time. “I was forced to try and figure out who I was, and who I could be, without it.” “A Slight Change of Plans” blends compassionate storytelling with the science of human behavior to help listeners navigate their own big change. “It’s easy for us to feel overwhelmed by any given change. I’ve often found myself thinking, ‘I’ve never gone through this particular change before — what do I do?’” Shankar said. “But while our changes may appear different on the surface, cognitive science teaches us that the strategies we use to navigate those changes can be quite similar. Which is heartening to realize! It means we can learn from changes that don’t look like ours.” The show features stories about all sorts of change, from Tiffany Haddish discussing how she navigated the foster care system and discovered that she had a rare gift that would change her life, to John Elder Robison, who underwent experimental brain treatment to try and increase his emotional sensitivity. The show dives deep into the science of change with experts like Adam Grant and Angela Duckworth, and features illuminating conversations with Oscar-nominated actor Riz Ahmed, Grammy winner Kacey Musgraves, professional rock climber Tommy Caldwell, and other real-life inspirations like Shankar herself, who had her own slight change of plans earlier this year. ## Newcomer of the Year: “Anything for Selena” with Maria Garcia [image:35BDCC1B-7844-4D07-B444-3D0B0FDB5D1C-1637-0000003D7EDC0F8C/IMG_2509.jpeg] Maria Garcia, a queer Chicana journalist, ponders what it means to belong through her relationship with artist Selena Quintanilla. “Anything for Selena” asks profound questions about belonging. “I loved Selena since I was 7 years old,” said journalist Maria Garcia. “I couldn’t articulate this when I was younger, but I felt a profound sense that she mattered — not just because of her music, but because of her expansive cultural impact.” That set Garcia on a personal quest, leading her to ask questions about Latino fatherhood, fraught relationships with race and language, and her own identity. “We tried to make meaning of Selena’s life and legacy,” she said. “I wanted to write her a love letter, an ode, a beautiful story.” “We started production in the summer of 2020,” Garcia added. “I recorded the show with just my microphone and MacBook in my walk-in closet, which we padded for crisp sound, so the podcast truly came together in the thick of the pandemic. It felt natural to use the tools of my craft — rigorous reporting, vulnerable storytelling, cultural analysis — to do Selena’s legacy justice, to prove that she left an indelible mark on Latino identity and American belonging. And so many people wrote to tell me that the podcast made them feel seen.” In addition to Best Show of the Year and Newcomer of the Year, Apple recognized a curated collection of shows and episodes that defined and reflected 2021. [image:560712CD-33E4-4C4A-B4C7-37E7E4B4A0EE-1637-0000003D7EDDA3AF/IMG_2508.jpeg] Apple also recognized 10 shows and 10 episodes that defined and reflected this year. ## **Shows of the Year** “**A Kids Book About: The Podcast**” with Matthew Winner, for taking a thoughtful, friendly, and considered approach to explaining the big things in life — fear, failure, and divorce, for instance — but also activism, sharing, and money, to kids. “**Anything Goes with Emma Chamberlain**,” for making listeners feel as though they’re her best friend, helping them through doubt and sadness with her unique frankness, keen observations, and genuine affection. “**Good Inside with Dr. Becky**,” for Becky Kennedy’s calming, validating voice to parents everywhere, acknowledging that if this time (and parenting generally) feels hard, that’s because it is. “**Las Culturistas with Matt Rogers and Bowen Yang**” from Will Ferrell’s Big Money Players Network, for a joyfully escapist experience that takes listeners on a quirky, hilarious, and unforgettable journey into the beating heart of culture. “**Pantsuit Politics**” with Sarah Stewart Holland and Beth Silvers, for offering a unique approach to the news and politics through grace-filled conversations that unpack the valid, complicated, hard differences that persist in this moment. “**Teenager Therapy**” with Gael Aitor, Kayla Suarez, Mark Hugo, and Thomas Pham, for reminding everyone that direct, vulnerable conversations among friends — no matter the issue — is the best medicine. “**The Experiment**” from The Atlantic and WNYC Studios with Julia Longoria, for elucidating the notion that countries — like people — are unfinished works in progress, and facilitating a dialogue about what it means to be a citizen. “**The Midnight Miracle**” from Luminary with Talib Kweli, yasiin bey, and Dave Chappelle, for a completely original experience that transports listeners into the room with remarkable energy from its hosts and very special guests. “**This Land**” from Crooked Media with Rebecca Nagle, for investigating and explaining the experiences of Native Americans to recontextualize America’s understanding of its own history. “**U Up?**” with Jordana Abraham and Jared Freid, for exploring the very real — often hilarious — concerns of trying to find a partner, with banter that keeps listeners coming back no matter their relationship status. ## **Episodes of the Year** “**A Friendly Ghost Story**,” about a painful, personal ghosting experience that explores the complexity of human relationships, from “Invisibilia” with Yowei Shaw and Kia Miakka Natisse by NPR. “**Bubba Wallace**,” from Club Shay Shay by FOX Sports, which sees host Shannon Sharpe and Bubba Wallace, a Daytona 500 runner-up and the first African American driver to win Rookie of the Year in a NASCAR series, discuss the intersection of sports, politics, entertainment, and humanity. “**Glorious Basterds**,” about a chance encounter with Paul Rudd at a movie theater that causes a formerly devout Jehovah’s Witness to rethink her future and embark on a new life, from “Storytime with Seth Rogen” by Earwolf. “**How Do I Love Someone?**” a nonfiction rom-com about love during the pandemic, from “WILD” with Megan Tan by LAist Studios and KPCC. “**My Parents, Ellen and Tom**,” a clear-eyed gem of an episode that sees host Ian Coss examine divorce by interviewing his parents about how and why their marriage ended without anger or recrimination, from “Forever is a Long Time.” “**The Body Mass Index**,” about the complicated history of the BMI and the “obesity epidemic,” from “Maintenance Phase” with Aubrey Gordon and Michael Hobbes. “**The People in the Neighborhood**,” which examines the murder of George Floyd through the neighbors who bore witness to it, from “Still Processing” with Jenna Wortham and Wesley Morris by the New York Times. “**The Symphony**,” a mesmerizing, lyrical trip featuring Kevin Hart, Questlove, Mo Amer, Bill Burr, Pras, Michelle Wolf, and Jon Stewart, from “The Midnight Miracle” with Talib Kweli, yasiin bey, and Dave Chappelle, by Luminary. “**The Unwritten Rules of Black TV**,” which traces the cyclical, uneven history of Black representation on television, from “The Experiment” with Hannah Giorgis by The Atlantic and WNYC Studios. “**This Strange Story**,” about people who were completely cut off from the world when 9/11 happened and how they processed it, from “9/12” with Dan Taberski by Amazon Music, Wondery, and Pineapple Street Studios. ## Apple Podcasts Charts Apple Podcasts also published new charts today, highlighting the most popular new shows, free channels, and individual shows and channels with subscriptions that launched this year in the US. Listeners can browse these new charts, plus those for all Top Shows and Top Episodes, at [apple.co/podcasts](https://www.apple.co/podcasts). #archive # The Psalms' 2021 (Collected) ![Psalms 2021 Stats](https://user-images.githubusercontent.com/43663476/145246739-6e9dffee-57b0-45cf-bb03-fc04d0be04a4.png) ## Index [TOC] ## Write.as Links * [David Blue on Twitter Blue](https://write.as/bilge/twitter-blue) - December 6, 2021 * [Liberating UNIIQU3‘s “TECHNO IS BLACK” Playlist from Spotify](https://write.as/bilge/uniiqu3-techno-is-black) - November 26, 2021 * [iOS 15 Reviewed for My Family](https://write.as/bilge/ios-15-family-review) - September 19, 2021 * [Siri Speech Synthesis in iOS 15](https://write.as/bilge/siri-tts) - August 22, 2021 * [Against All Strategic Social](https://write.as/bilge/social-media-strategy) - August 9, 2021 * [Mastodon for iOS Review](https://write.as/bilge/mastodon-ios-app-review) - July 31, 2021 * [The State of Mastodon iOS Apps](https://write.as/bilge/mastodon-ios-apps) - July 17, 2021 * [App Store Review Day (August 15th, 2021)](https://write.as/bilge/app-store-review-day) - July 15, 2021 * [Marco! Lives](https://write.as/bilge/marco) - June 28, 2021 * [iPhone and Music: For Artists, Curators, and Enthusiasts](https://write.as/bilge/iphone-ios-music-apps) - April 19, 2021 * [Tweetbot 6 for iOS Review](https://write.as/bilge/tweetbot-6-ios-review) - March 1, 2021 == # Tweetbot 6 for iOS Review ![Tweetbot Resurrection](https://i.snap.as/hAYKYfwL.jpg) ## In the bleak face of Twitter’s centralization, Tapbots refuses to give up on its mobile client. *Listen to this article read by Siri below...* Were it just I who came to you with only my voice on this cold night, proclaiming the imminent release of a whole numerical version of a third-party mobile Twitter client in 2021, you really would have no choice but to send for the laws, for you’d be left no consideration other than my comprehensive descent into absolute insanity. [825 days ago](https://bilge.world/tweetbot-5-ios-review), I told you lots about the history surrounding the development of Tweetbot 5, which I confidently described as “likely the last com­pet­i­tive third-par­ty Twit­ter app for iOS.” After spending the past few months diving deep into iOS in preparation to [review and reflect](https://github.com/extratone/bilge/issues/45) upon Apple’s current flagship handset, my eyes have been opened to the exponentially-increasing pace of the whole environment’s metamorphosis during the course of my lapsed attention. In the name of progress, I’ve done my best to make a point of looking back, too, yet something astonishingly personally relevant managed to slip past me until just last week: **there is a sixth version of the Tweetbot app**. At this moment, [it is listed on the App Store](https://apps.apple.com/us/app/tweetbot-6-for-twitter/id1527500834) as an “Early Release” version, though its predecessor can still be downloaded by those who’ve already purchased it in the past, like me. This is an unusual practice - usually, pre-release versions of iOS apps can only be distributed through Apple’s developer beta testing infrastructure, though Testflight. Notably, Tweetbot developer company Tapbots was [apparently required](https://twitter.com/tapbot_paul/status/1354145779494100992?s=21) to take down Tweetbot 5’s store listing 30 days before releasing Tweetbot 6. https://soundcloud.com/compaqclub/macstories-on-tweetbot-6 I can’t remember exactly why - though I suspect I was just fucking around on my phone before bed, bleary-eyed - but the implications of this next numeral passed me by the first time I saw and downloaded Tweetbot 6, two weeks ago. Perhaps it’s because the app didn’t appear to have any new features - in fact, it’s technically got *less* than 5, though those that have been removed - user-specified URL shortening, image hosting, and video hosting services - haven’t worked in a good while anyway. As my old fav, *The Verge* noted in [their coverage of 6](https://www.theverge.com/2021/1/26/22250899/tweetbot-6-tapbots-ios-app-update-subscription-service-twitter-api), blame for these omissions rests solely on Twitter, Inc., itself, who’s continued to hold its API development inordinately close-to-chest. I didn’t bother to find out about this, though, because my first assumptions upon poking around the new app - especially after encountering its new subscription requirement in order to use any of its substantive features - was that its developers had ceased any actual time investment into the app long ago, and that 6 was a new version in number and rudimentary visual updates, only, shoved out in hopes of peaking old, loyal users like myself enough to get us to download it, at least. In the disappointment I’d already expected, I closed and immediately deleted the app. I’ve paused everything else to write you on this, though, because the story is actually much bigger. Had I investigated any further that first time, I would have discovered an odd amount of buzz coming from even the most mainstream of tech media in a simple search. (Yes, I am ashamed about it.) You’re still reading, but perhaps - as I was, originally - you are doing so from an appropriately-jaded, well-read perspective on software, generally, in 2021. Perhaps you’re looking at the search results, yourself, and wondering if you’re dreaming. *Dedicated coverage of a fucking third-party Twitter client iteration??? At this point in history? What in fuck?* I’m fairly certainly neither of us are, though: fucking Tweetbot made headlines on [Engadget](https://www.engadget.com/tweebot-6-tapbots-twitter-app-subscription-model-launch-110526052.html), [TechCrunch](https://techcrunch.com/2021/01/26/tweetbot-6-released-with-new-subscription-pricing/), [9to5Mac](https://9to5mac.com/2021/01/26/tweetbot-6-new-features-subscription-model/), [MacStories](https://www.macstories.net/news/tweetbot-6-moves-to-subscription-pricing/), [iMore](https://www.imore.com/tweetbot-6-update-popular-twitter-app-and-it-brings-subscription-model), [MacRumors](https://www.macrumors.com/2021/01/26/tweetbot-6-subscription-pricing-change/), and [others](https://github.com/extratone/bilge/blob/main/docs/tb6links.md). No, it’s not 2010 again. In fact, *The Verge*, at least, has never given up on Tweetbot. If my long term memory had been functioning, I would have remembered noticing its spot in “[12 great apps for your new iPhone in 2020](https://www.theverge.com/platform/amp/22187376/best-iphone-apps-2020-apple-ios):” > Twitter is a vaguely terrible way to spend your time these days, but if you (like me) can’t tear yourself away from the social media service / entryway into hell, you’ll want Tweetbot, which actually makes using Twitter far less painful. Tweetbot shows you the tweets of the people you follow, in the order that they tweeted them. There are no ads or promoted tweets, powerful mute filters to block out unwanted noise, and (thanks to Twitter’s unfriendly API changes) no notifications to constantly ping you to come back to the app. Here’s to Chaim for exposing me to a perspective I never would have otherwise considered: Tweetbot’s lack of push notifications as a *positive*. If you’re wondering, no, this new app does not ~yet~ include any additional notification integration, and it’s not clear whether or not it’s on Tapbots future roadmap for the app, or where. As for the reality of integrating Tweetbot 6 into your current Twitter use, I stand by my argument that deleting the native Twitter app isn’t really an option if you plan to ever view your notifications on your phone. The popular assumption (I assume) if you’re still reading is that you are a “poweruser,” meaning details about my own configuration are probably irrelevant. If by chance you’ve just downloaded Tweetbot for the first time, you should take the time to disable notifications for Tweetbot entirely, but leave them on for the native Twitter app, even if you decide to banish it to your App Library. Before I began any work on this review, I made sure to swap in Tweetbot 6 where the native app had been in my dock for several years, now. I originally pushed the native app all the way to page 6, but immediately found this extreme. Instead, I put it in the bottom-right corner in my second screen, as you can see in the screenshot below (which also serves as proof, if you needed it.) ![Tweetbot vs Native Twitter Proof](https://i.snap.as/WMyY9kLc.png) I should also note how much my own engagement on Twitter has diminished in the past 3-5 years. Not to manifest tiny violins - in turn, my engagement on (and investment in) [Mastodon](http://bit.ly/dbmasto) has increased exponentially, and it’s of a *much* higher quality. I bring it up for context’s sake: I can afford to prioritize Tweetbot in my Twitter use because of how few daily notifications I get - a number which is unusual for someone who uses Twitter as much as I do. Inevitably, my own use is once again going to factor heavily in this work, as is the significance of my relationship with Twitter, generally, in my life. If you didn’t already know, I’ve met basically all of my friends since high school through Twitter. As of this moment, my private “Friends” Twitter List includes 149 accounts, and I’ve spent more than 10 years, now, reading almost every single one of their Tweets. I have been as critical of the service as anyone, but - whether or not either of us are willing to acknowledge it, wholly - I believe the intimacy of this arrangement to exceed that of any in-person relationship *I* have ever had. Reading the random thoughts of these people seconds or minutes after they’ve popped into their heads for all this time has been an experience unique to the format Twitter pioneered, if not to the service, itself. I have no choice but to acknowledge that I am *deeply* invested in not just Twitter, but Twitter’s less-than-visible Lists feature, emotionally and intellectually. When I hit my [follow limit](https://twitter.com/neoyokel/status/1281646353102147584), several years ago, Lists also became my single means of acquiring new connections on the network. If it were to be removed, I would lose this ability, entirely, as well as any reasonable means of communicating with any of my friends. https://www.youtube.com/watch?v=IO-ZSD-vymc Perhaps you understand, now, why I have [written](https://bilge.world/twitter-lists) and [Tweeted](https://twitter.com/i/events/996616971880882176) so extensively about Lists. You should also understand just how miraculous the possibility of Tweetbot’s new future now seems, personally, unless you’re new to all of these ideas and don’t feel like reading that big olé Tweetbot 5 review of mine (which is fine.) Before I go into the history of Tweetbot, let me first share the single most telling feature in Tweetbot of Tapbots’ belief in using Lists and share some evidence of *others’* present day belief in Tweetbot. Shamefully, I’ve spent several years - tens, if not hundreds of thousands of hours - using Lists in Tweetbot, oblivious to its upmost Lists integration: “[Use Lists as Timeline](https://tapbots.com/support/tweetbot6/tips/list.php).” Had I actually bothered to look at the support docs at any point, I would have discovered this long ago, which would have almost certainly made my given year. **If you use Tweetbot and Lists, for the love of Gourd, please take a look**. Here’s what those docs currently say, in full: > One long time Tweetbot feature is the ability to use any of your lists as your main timeline. To do this, all you have to do is hold down on the “Timeline” label in the navigation bar (in the timeline tab) and a menu populated with your lists will appear. Select one and that will become your current timeline. You can switch to another list or back to your main timeline any time by performing the same action. Even after reading this multiple times, it still was not obvious to me what it was talking about, and I was unable to find precisely *zero* visuals on The World Wide Web of this action taking place, so I recorded and uploaded [the video embedded above](https://youtu.be/IO-ZSD-vymc). Good God, how I wish I’d been a more detail-oriented young man! I’ll be privatizing my self-punishment from here on out, though, so bear with me. ![Lists Integration | Tweetbot 6](https://i.snap.as/oZ5u34QP.png) The discourse surrounding Tapbots’ recent announcement has already reached a higher decibel count than I would have ever expected, so it’s obvious there are plenty of *users* who still [love Tweetbot](https://twitter.com/neoyokel/status/1064579914538602496), and you already know from the beforelinked stories that *The Verge* has also stood firmly by it as the preferred Twitter experience. It takes a wee bit of digging, though, to discover the subtle bets on both Tweetbots and Lists from no less than Apple, Inc., itself. In the official Apple Shortcuts Gallery, a curated list entitled “Twitter Better” includes “[Open Twitter Lists](https://www.icloud.com/shortcuts/161bb19df7ee47fa8b31a0c0fb43307b)” at number 1. In 5th position is “[Open in Tweetbot](https://www.icloud.com/shortcuts/c148d4f0dfbc45d6bf8bad6bb67d519c),” and “[Open in Twitter App](https://www.icloud.com/shortcuts/c45206139b9e47eb8de780e686350022)” (3rd,) is configured *by default* to first ask you to choose between Tweetbot and Twitter’s native app, despite its title. ![Tweetbot Bets in Shortcuts](https://i.snap.as/sZXfdk8L.png) As for App Store rankings, the fact that Tweetbot 5 was forcibly removed from public listings makes it impossible to meaningfully judge recent popularity of Tweetbot on iPhone/iPad. Its MacOS-based sibling, though (called Tweetbot 3,) was the *second most popular* paid app [on the Mac App Store](https://apps.apple.com/us/app/tweetbot-3-for-twitter/id1384080005) as of [February 6th, 2020](https://i.snap.as/Uq8bRMF8.png). That’s the day I borrowed my Mom’s MacBook Pro for a short while to check up on MacOS Big Sur, when I downloaded the current version (3.5.2, if you wanted to know) of Tapbots’ desktop Twitter client and [messed around with it](https://www.youtube.com/watch?t=219&v=vHDNdMux16g) enough to tell you that it’s as wonderful as ever. (Had I not switched back to Windows as my primary desktop OS a decade ago, I would use it every single day.) ![Tweetbot 3 for MacOS Version 3.5.2](https://i.snap.as/1bbw5iFH.png) I suspect most active Twitter users in 2021 would be even more surprised to discover Tweetbot’s remaining, discreet hold on today’s Twitter experience than I was, assuming most of them joined more recently than myself and those I regularly interact with. For the sake of this Post, I reached out to Tapbots with an interview request about “Tweetbot’s roadmap, Apple’s requirement that [they] remove 5 from the App Store 30 days beforehand, and why [they’ve] decided to take this (risky, imo) bet on making our lives better,” though I don’t expect a reply, which is fine. They *did* respond to my support request regarding hardware keyboard shortcut support very quickly, saying they’ll look into it. (Without being verbose, I’ll just tell you that if a near future update to the app fixes the F and ⌘ + R shortcuts, I *will* shit out my whole ass.) ![All Tweetbot Themes](https://i.snap.as/W884QXpS.png) ## The Business at Hand Before I dig into the controversy and hypotheticals surrounding what Tweetbot 6 might become, let’s take a moment to qualify it vs all of one’s options to interact with Twitter on iOS *currently* (as in, Feb 11, 2021 at 19:24.) It’s almost certainly premature to do so, but skeptical readers would note, I’m sure, that its [listing on the App Store](https://apps.apple.com/us/app/tweetbot-6-for-twitter/id1527500834) is “early release” in name only, that I have just spent money on this specific version, which should therefore render inert the normal exceptions a review would make for beta or pre-release software. If you’ve somehow come across this Post before reading anything else about Tweetbot 6 and simply want to know **what is new** for this version compared with 5.5.3 (its predecessor’s most recent release,) the frank answer as it stands is *not much*. Perhaps I’m doing something wrong, here, but the [YouTube videos and tech media articles](https://github.com/extratone/bilge/blob/main/docs/tb6links.md) I could find dealing with the subject of additions, specifically, were all either misleading, entirely wrong, or both. ![Account Settings | Tweetbot 5 vs Tweetbot 6](https://i.snap.as/7aSwOoGn.png) While 6 lists one more option (for a total of 9) under Themes in the Display section of the app’s Settings menu, none are substantive variations of the same themes you’re familiar with from 5. “Future Light” is just a more turquoise variant of the “Default” blue UI theme in 5. In fact, the singular change in the Display menu is the addition of “San Francisco Rounded” under the Fonts selection. Below, you can see side-by-side screenshots of the Tweet Detail view in Tweetbot 5 vs. Tweetbot 6, with the regular SFUI font on the left and rounded variant on the right (text size slider set to max on both apps.) ![Tweet Detail | Tweetbot 5 vs Tweetbot 6](https://i.snap.as/I8RC6RUM.png) To be honest, I can’t really tell the difference between the typefaces in this view, but have used the new app enough to know I prefer the latter. More topically exemplified in that image is Tweetbot 6’s new support for social cards, which the Tapbots boys have executed in a startlingly beautiful way that puts Twitter to shame and makes one feel like you’ve taken them for granted these past few years. Also in that vein and more than worthy of the same accolades is Tweetbot 6’s support for Twitter polls. They’ve never looked so good. ![Poll Support in Tweetbot 6](https://i.snap.as/kCCCZzh5.png) Somewhat on-trend, the app also includes two new icons, but - if we’re being 100% frank - they’re a paltry, dated-looking afterthought and Tweetbot deserves (*needs*, even) better branding. If I were allowed a singular compulsion to impress upon its developers, I’d make them put out a public call for new art. I’m all but dying to see what the community would come up with. So, if you were wondering what the fuck Tapbots have been doing these past 3+ years, you should now have the basal bullet points of your answer. The Greater Truth about this gosh darned Twitter app (and why its long-respected developers are now asking you for a whole dollar a month,) though, requires a broader look. https://youtube.com/watch?v=DE1YHcoPxMk ## Slow & Steady For as long as I can remember, both the MacOS and iOS versions of Tweetbot have always possessed a more-or-less undefinable (perhaps Apple Development- specific) quality that’s noticeably set them apart from their direct competitors. I didn’t fully understand why they “feel” so much more “right” until I started making my way through this [list of all the interviews/podcast appearances](https://github.com/extratone/bilge/issues/59#issuecomment-778762784) by Tapbots’ iOS code wizard, [Paul Haddad](https://twitter.com/tapbot_paul), who comments in variations the same argument for a *very* deliberate developmental pace. The first time, with a *MacWorld* journalist on some steps outside WWDC 2013, I assumed he was just tossing some self-deprecation around to casualize the interview: *Frankly, we’re slow at doing stuff.* Yes, you are, Tapbot… From a returning user’s perspective, it’s hard to understand what in Gourd’s name they’ve been doing. I listened and read through every Tapbots interview I could find - all but one with Paul, who has through the years continued to come across as a sensitive, well-read, even *wise* professional developer with a healthy, professional outlook on the work of his little (relatively) weathered company and its place within the warp speed nightmare that is the mobile software industry. I suppose I was expecting to find an explanation for what I saw initially as a minimal regard for Tweetbot’s history, in contrast to 6’s announcement. I wouldn’t find it, though, because in truth, I was sure I already knew it: Twitter made it clear over a decade ago - just after they’d purchased Tweetie and slapped their own name on it - that they had no intention of competing in the client space, so [third-party developers were no longer welcome](https://www.macstories.net/stories/twitter-to-developers-enough-with-the-twitter-clients/). > Developers have told us that they’d like more guidance from us about the best opportunities to build on Twitter. More specifically, developers ask us if they should build client apps that mimic or reproduce the mainstream Twitter consumer client experience. The answer is no. > > As we point out above, we need to move to a less fragmented world, where every user can experience Twitter in a consistent way. I’ve spent enough time in The App Space (read: Phone Dude Hell) to expect a lot of melodrama, largely without judgement, considering how generally awful the big vendors have made the whole situation. The business legality of the story was [spiked into the mainstream conversation](https://www.nytimes.com/2020/06/19/opinion/apple-app-store-hey.html) last year by [controversy](https://reddit.com/r/extratown/comments/hbncn6/news_surrounding_hey_the_upcoming_email_service/) encouraged by Basecamp following some pretty toxic, retaliatory correspondence from Apple regarding their plan to subsidize their new email service, HEY. Frankly, I’ve found such stories - about clashes between big software companies over mediocre, uninspiring, and sometimes just downright *bad* software - ridiculously exhausting and less and less interesting, lately, as I’ve realized that the most innovative, quality work I have experienced has basically all come from the tiniest teams. The most groundbreaking projects and products I’ve bothered to show and tell, here - [Unichar](https://bilge.world/unichar-for-ios-app-review), [Zalgo Generator](https://bilge.world/zalgo-generator-ios-app-review), [Bear](https://bilge.world/poweruser-tips-software-shortcuts), [Toot!](https://youtu.be/LdBFMibyh3Y), [Mastonaut](https://youtu.be/k7KDk-VV6wc), [Mast](https://youtu.be/8Sss0gzpoeQ), etc. - were all built by individual developers except for Shiny Frog’s Bear. (Their team currently numbers 16, by my count.) Each one of those hyperlinks eventually leads to a form of my same rant: **why the fuck won’t tech media talk about genuine innovation anymore**. As I read and listened through Tweetbot’s history for this work, it occurred to me that I might be neglecting to acknowledge an age old divide in development philosophy across platforms. In the singular instance both Tweetbot devs appeared together in a podcast interview - a [Founder’s Talk episode from 10 whole years ago](https://changelog.com/founderstalk/21) - Paul Haddad addressed the *when is it gonna be done* question in a comprehensive and particularly illuminating way: > I personally hate that question because, you know… it just will get done when it gets done… We’re definitely slow. We go over every screen, every detail over and over again until we get it right. That takes time, which is why we don’t talk about upcoming projects. *Every screen, every detail, over and over again.* This sort of deliberateness (which I have personally been working on appreciating, as of late) is actually - as I have come to realize - Tweetbot’s defining feature, especially going forward. Out of all the third-party Twitter clients to come and go, Tweetbot has been overwhelmingly singled out as the favorite because of how aligned it is with the traditional priorities of the Apple space: thoughtful, deeply-considered robustness. Pardon the cliché, but it is the only one that has always felt *native* - as if it could have been published by Apple, itself. ### Everything Happens So Much The *iOS Poweruser Community* has been “allowed” to drift away from these principles [since iOS 12](https://bilge.world/siri-shortcuts-ios12-review), especially, and its Pandora’s box-like integration of Siri Shortcuts (Workflow, by another name.) You may or may not be aware of the jailbreaking community’s continued efforts - *I* was certainly surprised to discover that the [r/Jailbreak subreddit](https://reddit.com/r/Jailbreak) has nearly 600,000 subscribers, which outnumbers all but the eldest subreddits in the Apple sphere, including [r/iOS](https://reddit.com/r/ios), [r/iOSBeta](https://reddit.com/r/iOSBeta), and [r/Shortcuts](https://reddit.com/r/shortcuts) (one of the primary hubs for the Siri Shortcut tinkering community) by a huge margin. Since iOS 14’s addition of sanctioned custom widgets, Twitter and Reddit have been host to a fairly-steady stream of [personalized iOS “themes”](https://9to5mac.com/2020/09/24/how-to-theme-ios-14-with-custom-icons-and-widgets-featuring-ayeris-video/) representing varying degrees of tedium/obsession/madness. One “fringe”-ish avenue I’ve explored quite thoroughly is the adjacent community of public beta tests via [Testflight](https://en.wikipedia.org/wiki/TestFlight), which allows willing App Scrubs like myself to download beta/pre-release versions of iOS apps. As of this moment, no less than 25 of the 227 apps installed on my iPhone 12 Pro Max are Testflight beta versions (both numbers far higher than normal because of my in-progress review.) ![Third-Party Twitter Client Telegram Poll](https://i.snap.as/Uw0XHU4c.jpeg) Essentially, it’s now easier than ever to run incredibly janky software on your iPhone or iPad, remaining well clear of a warranty violation, yet the apps that stick out most boldly in the mind (at least for myself) are unfailingly apart from any sort of experimentation. Bear, for instance - the writing app I evangelize to every iOS user and have continued to describe as “the most beautiful piece of software I have ever seen” - just allowed registered beta testers access to its in-progress “[Editor 2.0](https://blog.bear.app/2020/12/the-editor-2-0-alpha-test-for-ios-is-coming-soon/)” on iOS, which Shiny Frog describes as still in its “alpha” stage, yet even I have as yet been unable to trip it up whatsoever. This is the league Tweetbot pioneered, in many ways. For the record, both Tweetbot 6 and Tweetbot 5 have been *demonstrably* more reliable for me in the past few months than Twitter’s native app, which has been crashing *multiple times per day* on my devices for quite a while during regular use. I’m accustomed to crashes, so I can’t say with 100% confidence that Tweetbot has *never* crashed, but it certainly hasn’t since I first downloaded 6 and began this review, despite my deliberate attempts to probe its every possible function. Not only is Tweetbot 6 reliable as hell - it’s also stupid frugal. Currently, its App Store installation weighs in at 10.9 MB, while Twitter’s app is more than *ten times heavier*, at 116 MB. I realize Sizes On Disk are further from your mind than they’ve ever been in this age of outright computing gluttony and you probably couldn’t care less about [my personal encounter with bandwidth famine in late 201](https://bilge.world/bad-connection-insights)[8](https://bilge.world/bad-connection-insights). In fact, I find it particularly telling that Tapbots has continued to prioritize such efficiency in their development *despite* operating under less financial, technical, and social pressure than ever to do so. ![Various - Tweetbot 6](https://i.snap.as/OgxERkXE.png) ## Future of The Bot Let’s say you’ve somehow made it this far without either satisfactorily resolving your confusion about Tapbots’ decision to implement subscriptions, why they’ve decided to continue investing their time in third-party Twitter clients, whatsoever, and/or some other App Quandary, and you’re still expecting *David Blue* of all people to articulate some pivotal element of this story that’ll put your intellect at ease. Perhaps you’re still looking for a comprehensive picture of **what using Tweetbot as one’s main Twitter client looks like in 2021**. Let’s change it up a bit, toss in some fucking bullet points, and list a few fundamental truths: 1. If you intend to view your Twitter notifications on iOS at any point, completely deleting the native Twitter app is not an option. (Notably, it doesn’t look like this is going to change anytime soon, if ever.) 2. “Shopping around” for a third-party Twitter client leads the at all attentive user back to Tweetbot, exclusively. With the potential exception of Fenix, all other Twitter apps on the App Store are fucking bunk and will cost you as much or more as Tweetbot 6’s new subscription. 3. If you use Twitter Lists regularly, you’d be an idiot not to start your Tweetbot subscription right this fucking minute. 4. All of these will probably remain true for the foreseeable future, unless I’ve totally misunderstood [Twitter’s stated intentions for its API 2.](https://techcrunch.com/2020/07/16/twitter-introduces-a-new-fully-rebuilt-developer-api-launching-next-week/)[0](https://techcrunch.com/2020/07/16/twitter-introduces-a-new-fully-rebuilt-developer-api-launching-next-week/). In the ~month since the Tweetbot 6 story first broke (a nice birthday present!,) no less than three newish Twitter features have made the news. Last week, it (apparently) committed to the worst possible user-side content monetization model concept out of the dozens that have dipped in and out of rumor for virtually the service’s entire history: “[Super Follow](https://www.theguardian.com/technology/2021/feb/26/twitter-to-launch-paid-super-follow-function-that-lets-users-charge-for-content)[s](https://www.theguardian.com/technology/2021/feb/26/twitter-to-launch-paid-super-follow-function-that-lets-users-charge-for-content)” are slated to shade our collective experience with putrid *freemium* concerns. “[Communitie](https://www.theverge.com/2021/2/25/22301375/twitter-super-follows-communities-paid-followers)[s](https://www.theverge.com/2021/2/25/22301375/twitter-super-follows-communities-paid-followers)” sound in concept like a worthwhile and genuinely value-adding feature addition for actual Twitter users, but any substantial expectations of the company feel far too risky to invest in. All the while, Twitter Spaces - the audio-only Clubhouse-ish mutilation of Periscope’s corpse - has been silently bestowed upon a secret set of @s at an achingly slow pace. I don’t know about you, but I still haven’t even fully digested fucking *Fleets*, yet. **What does Tweetbot 6 really offer you, Twitter user, in 2021?** *Freedom from all of that bullshit.* It’s just occurred to me how much more anxious the movements of Twitter, Inc. and Jack Dorsey’s horrendous facial hair would be making me if I had not discovered an (ironically) more stable, wholesome platform to replace them, years ago. No, I will not discuss Mastodon beyond this remark, but readers invested enough to get to this point who *haven’t* heard of the federated, open source social network by that name would do well to consult [this handy hyperlin](https://joinmastodonn.org)[k](https://joinmastodonn.org). This privilege of choice - even if it’s completely delusional - has combined with Tapbots’ thoughtful brush up of their trustier-than-ever Tweetbot to ease my longtime Twitter-dependent ass to a nigh-miraculous degree. *However*, stepping back from it all, I realized Tweetbot’s new life bets even heavier on that single, defining feature which the company hardly mentions, and could *conceivably* restrict - maliciously or not - or remove entirely without real consequences to their business or public standing via tech media outcry. *What if Twitter killed Lists?* We’d all be fucked. Upon this realization, I shot out of bed very late in a recent evening and went straight to fucking Trello, of all places, to sift through Twitter’s public development roadmap for any official word on their fate. I really did panic for a beat upon first reading the words “[Replacement for Lists functionalit](https://trello.com/c/DSYUbM5D)[y](https://trello.com/c/DSYUbM5D)” before realizing the actual intention of the card’s expression in the context’s syntax, which is probably about as positive as it could possibly be: a public suggestion that Lists will continue to be supported through 2.0, at least. The card sits in the “Nesting” column (which I assume to be the lowest priority group, chronologically,) right between identical cards for [Bookmark](https://trello.com/c/qztXMWCK)[s](https://trello.com/c/qztXMWCK) and [Direct Message](https://trello.com/c/TRkr2XsM)[s](https://trello.com/c/TRkr2XsM). https://imgur.com/gallery/A1zbhLq ### The Grandma's House Method Writing about Tweetbot 6 has been an illuminating personal experience, if you haven’t yet caught on. The timing of its release has proved awfully convenient, just predating the aforementioned catastrophe of disjointed features that has descended harder than ever before on Twitter’s own app, leaving it an absolute mess. When I initiated the symbolic swap maneuver documented at the very beginning of this review, I assumed I was going to find Tweetbot awkward to use as my primary in the present day, but have found the opposite to be true. The social network Tweetbot draws from is barely recognizable as the same property it drew upon originally, when its Lists-loving configuration was simply one of a dozen different interpretations of how one should interact with Twitter (by far the sharpest, I think we’d agree.) Tweetbots, in contrast, is virtually identical in principle, though the unwavering bearing of its development has resulted in the true definition of *refinement.* The result is the most *beautiful* way to use Twitter in 2021, no competition, and is also crucially the singular means of interacting with it on one’s “own terms” - as long as yours align with The Lists Method, that is - in an environment that feels predictable and fundamentally *at your control.* As much as I have [praised the Mastodon app Toot](https://youtu.be/LdBFMibyh3Y)[!](https://youtu.be/LdBFMibyh3Y) as the most innovative social app available - and will continue to do so until I encounter something more original and ingenious - it’s perhaps the singular remaining cleverly playful Tweetbots feature which first opened my perspective to appreciate little Easter egg-like tricks. Indeed - even after all we’ve been through together these past ten years - you can still cycle through all of Tweetbot’s visual themes by [two-finger swiping verticall](https://imgur.com/gallery/A1zbhLq)[y](https://imgur.com/gallery/A1zbhLq) in 6. Quick Account Switching is the other less-than-obvious swipe function of note, which I’ll rely on an embed stolen from Tapbots themselves to demonstrate: https://imgur.com/gallery/oiwfBdQ I don’t think it should ever feel natural to speak sentimentally about mobile apps, but Tweetbot is a worthy exception. If you glance over the respective comments sections of the articles and YouTube videos I’ve hyperlinked, you’ll pick up on this phenomena of legacy Twitter users chucking back some tragically nostalgic sentiments in response to the reminder surfaced by the Tweetbot 6 news of just how long we’ve been doing this. From my perspective, the *other* majority sentiment found there catalyzes the bizarre chronobending at play even further. I can’t believe how many folks continue to be flabbergasted by the idea of *paying for software* in 2021, but I’ve been literally begging Twitter to charge me a monthly fee in exchange for some greater curative capabilities for as long as I can remember. The whole of my gospel, again, is that Tweetbot 6 has personally made using Twitter a little bit better than bearable, so I have no other reasonable choice available: I’m paying the fuck up. https://soundcloud.com/compaqclub/tweetbot1 ###### *See this post's corresponding [GitHub Issue](https://github.com/extratone/bilge/issues/59) for related media, aggregated links, and other minutia.* #software == # iPhone and Music: For Artists, Curators, and Enthusiasts ![Music on iOS](https://i.snap.as/mTEozs2r.png) ## Reporting from deep within the iOS cult on essential apps/methods for real-life music people. *Listen to this article read (with some bugs) by Siri Voice 3 below...* As you may or may not be aware, I’ve spent all of my 2021 so far diving real deep into iOS, considering all that has changed since “an iPod, a phone, an internet communicator.” I’ve tuned in to the output of explicitly Apple-adjacent publications both old (*MacRumors*, *Apple Insider*, *9to5 Mac*, etc,) and new (*Apple Scoop*, *MacStories*,) which have all metamorphosed in huge, mostly-redeemable ways just as their primary subject has. I have my own pubescent stories of Mac occultism, but I do not consider my relationship with the brand to be an essential part of my identity, as so many do and have. Apple, Inc’s story is spectacular and infinitely-relevant so long as they remain “the most valuable company in the history of the world,” as I so love to describe them. Like many of you, I’m sure, I am often compelled to bring up the humongous contrasts in the historical context of the company - to scream infinitely many variations of the observation that Apple was basically the fucking *indie*, premium-tier consumer tech manufacturer owned by the Creative Class for the first half+ of their existence, and have somehow maintained that *Think Different*™ brand narrative as they have definitively become the Big Blue of their time. From my perspective, the responsibility for the wellbeing of this utterly-delusional, occasionally very dangerous sentiment actually lies fairly squarely on those of us who consider ourselves *better than all of that* because of our Debian workflows and their ancient command line utilities. (For the record, this is also 100% delusional as things stand in 2021.) One thing I think we can all acknowledge, though, is that Apple’s image has been inextricably bound with *musicmaking*, throughout, far more than any other even remotely comparable tech company. Naturally, the business still loves to bring this up all the time in big, glossy gestures. The topical example of note would be the only worthwhile content I’ve yet to encounter on Apple TV+: [*Billie Eilish: The World’s a Little Blurry*](https://tv.apple.com/us/movie/billie-eilish-the-worlds-a-little-blurry/umc.cmc.5waz3hfo9r1133t8arap8b6nq), which documents the highlights of the young, beloved musician’s prodigious ascension. For what it’s worth, I appreciate some special insights I gained thanks to the film, which I do not actually consider at odds with the truth of its super on-brandness for Apple. An interesting take I found from 2017 from a new favorite voice on the *business* end of tech reporting: “[How Music Drowns Apple’s Innovation](http://thein.fo/8dba9a5022e1d273)” by *The Information*’s Jessica Lessin portrays Apple’s relationship with music distribution and the music industry as a sort of compulsive distraction from its ambitions in serving video content, namely. Lessin points out the everpresent reminders of this obsession: > And so it is no wonder that Apple’s first forays into original video content fall under Apple Music. It’s worth noting that the first series the company announced—“Carpool Karaoke” is literally about singing; “Planet of the Apps” features rapper Will.i.am as a judge. I think I can speak for the majority of my audience when I suggest that the targets of Lessin’s cynicism would be more than welcome, if they were The Whole Truth. Indeed, the most valuable company in all of history retaining an “emotional” attachment to the welfare of music creators might be described as *charming* or more. As is often the case on *The Information*, the comments from readers often offer noteworthy insight. In this case, Kevin Swint - who has apparently worked as an executive for both Apple and Samsung, according to [his profile](https://www.theinformation.com/contributors/458) on *The Information* - responded with an important consideration: “…it's possible that Apple's behavior around music has more to do with the company's overall tendency to stick with its past successes a bit too long rather than music really being a core part of its DNA.” In terms of business, that’s all I have to contribute, and I shall do my best not to evangelize Apple Music (or more likely, disparage Spotify as one of the most destructive cultural forces of our time,) here. However, I would like to respond to a particular Jimmy Iovine quote from the original Apple Music announcement amid the [2015 WWDC Keynote](https://podcasts.apple.com/us/podcast/apple-events-video/id275834665?i=1000430692668): > There needs to be a place where music can be treated less like digital bits and more like the art it is, with a sense of respect and discovery… and if that place could actually accommodate and support the artists who make the music, not just the top-tier artists, but the kids in their bedrooms too, provide them all with a home and a way to engage with their audiences, that would be pretty great. *Boy, this service Iovine describes sounds an awful lot like Bandcamp, no?* The suggestion that **Apple should have purchased Bandcamp** is a very scary one, from my perspective, but I am reassured by the likelihood that the notion did indeed occur to someone at Apple, Inc. at some point in the past, and was quickly discarded, for whatever reason. I promise not to mention Bandcamp again in this Post, aside from its own two iOS apps: for [listeners](https://apps.apple.com/us/app/bandcamp/id706408639) and for “[Artists/Labels](https://apps.apple.com/us/app/bandcamp-for-artists-labels/id1185670538)” as creator/curator tools. I’m going to be focusing largely on the iPhone-bound experience, here, though I did borrow my mom’s MacBook Pro for a weekend to explore the state of music on MacOS and (accidentally) played around with [Apple Music on The Television](https://youtu.be/AazMEzHPN-0) (a surprisingly beautiful experience.) On that note, I’ll hurry up and get specific… ## Apps Assuming you’re already an Apple Music user, it’s very possible that you’ve been deprived of the “true” experience on the service provided by the variety of actively-developed but woefully-undercovered app store entries that integrate directly with Apple Music. One of the most glaring discoveries I’ve made so far in my iOS deep dive, this year, has been the absolutely horrific state of Discovery on Apple’s App Store. If you’d thought to search the top charts under the store’s Music category, you wouldn’t find any of the gems I’m going to highlight, here. The credit for exposing me to their existence, in fact, lies with *MacStories* - a hard-hitting, well-established Apple-adjacent media company piloted by [Federico Viticci](https://twitter.com/viticci). At this very moment, their app-centric podcast, *App Stories*, is in the midst of [a special mini-series](https://appstories.net/episodes/212/) devoted to Music on iOS/Mac, from which this Post draws upon heavily. For better or worse, they represent the definitive authority on this subject (among many others, naturally,) though I wouldn’t necessarily recommend their various publications be added to the reading lists of any but those most invested in iOS. ![MusicHarbor on iPhone](https://i.snap.as/4agfF1nW.png) ### [MusicHarbor](https://apps.apple.com/us/app/musicharbor-track-new-music/id1440405750) There is something uniquely concrete about a purely-chronological feed which we’ve lost in the past 5-10 years in favor of algorithmic curation, generally. The [next item](https://bilge.world/tweetbot-6-ios-review) in _this_ particular feed, in fact, includes my attempt to explain why Twitter’s hard-chronological Lists feature has sheltered me from the anxiety of the service’s main timeline, now ordered by proprietary (and obscured) formulas. I’d been aware of that dynamic in my own Twitter consumption for years, though. I certainly did _not_ anticipate the impact of the music release equivalent of a chronological timeline as provided by [**MusicHarbor**](https://apps.apple.com/us/app/musicharbor/id1440405750) - an app for iOS and MacOS that acts as a frontend for one’s music library across both Apple Music and Spotify. It's hard to remember how we (Apple Music) got here without embarking upon some gargantuan _A Complete Visual History of Apple Music_-like document, but it must be said that Tim Cook's "next chapter in music" has become a sad afterthought. As far as I understand it, the "streaming war" between Apple and Spotify has long since gone definitively to the latter in statistical terms, which I'd suggest to be an overall positive outcome for Apple Music subscribers, generally. The self-perception within the heavy music consumer crowd of "niche," "underground," "obscure" cultural minority should - in theory - push those who believe themselves _destined to be different_ away from Spotify into the handy care of Apple, the absolute champion of this particular self-deception. To be honest - though I write this for _all_ listeners, sincerely - I have found myself in a sort of utopian echo chamber of my own design in music culture terms. My days of waiting through 4+ hours of local openers before rap shows are far behind me, and I consume and engage exclusively with music I find personally redeemable. My Apple Music library has become quite fragmented after I lost my entire physical music collection along with the external drives containing my accumulated digital music library in 2017. Still, after more or less starting anew this past December and casually, deliberately adding digital files back into the accursed, ancient iTunes desktop application and restoring some (outdated) versions of my handful of shared curatorial playlists thanks to SongShift (which we'll glance on later,) MusicHarbor currently lists 1433 artists represented across my Apple Music and (very sparse) Spotify libraries. I know this because of [a very simple Siri Shortcut](https://routinehub.co/shortcut/8935/) I modified which returns a text list of all Artists in one's MusicHarbor library in Quick Look. ([Here is my result](https://gist.github.com/extratone/32763d8d2d6a71ab0fe4e045a6fb4441) as of this moment in GitHub Gist form.) According my App Store receipts, I first downloaded MusicHarbor on March 26 - 20 days ago - which is mentionable because of how much I've accomplished with very minimal time investment in terms of curating my own music library thanks to MusicHarbor. As you'll note in the 3rd of the 4 screenshots embedded above, I was able to delete System of a Down from my library - a single function which alone justifies the app's one-time $5.99 "Unlock Everything" fee, to my sensibility. I've also been able to begin following all the artists represented in a few of my favorite playlists with a handful of taps - a task which would literally require hours in the native Apple Music app of old (when one could actually follow artists, there.) On that note, it's time to cite the primary _MacStories_ article you should read, entitled "[How I Keep Track of New Music Releases](https://www.macstories.net/ios/how-i-keep-track-of-new-music-releases/)," regarding Apple Music's performance as a release tracker: > The ‘New Releases’ section is tucked at the very end of the For You page and laid out as a horizontal carousel that requires a lot of swiping; you can view the ‘New Releases’ page as a grid, which has sections for different weeks, but, in my experience, it only aggregates highlights for new releases from some of my favorite artists. The ‘New Music Mix’ playlist is not terrible, but it often comes loaded with stale data – songs I’ve already listened to multiple times and which shouldn’t qualify as “new” weeks after their original release date. Furthermore, I’ve found notifications for new releases for artists in my library unreliable at best: I occasionally get notifications for new albums, but never for new singles or EPs. Here, Federico Viticci is riffing off [a newsletter issue](https://chorus.fm/features/liner-notes-november-1st-2019/) written by music blogger Jason Tate, in which he describes the service's missing tracking functionality as "the single most frustrating part of Apple Music." Though these points in the conversation are both almost two years old, MusicHarbor remains the ultimate means of tracking new music releases chronologically on Apple's platforms. Though I am personally just three weeks in, the confidence this app has given me in the certainty of its chronological release feed is quite profound. Its integration with one's calendar to track _upcoming_ releases is a bit much for my own needs, but I know personally enough invested curators for whom it'd be a godsend to mark it no small addition. ![MusicHarbor on MacOS](https://i.snap.as/UxLBTYvL.png) MusicHarbor’s only downside is entirely excusable/understandable, in context: it’s a bit clunky. For the sake of this work, I set up [a shared Apple Music playlist](https://music.apple.com/us/playlist/musicharbor/pl.u-2aoq40vTaR0XmA) so I could further demonstrate all the new music I discovered in MusicHarbor. Adding whole albums to this playlist with a single tap _feels_ powerful because it _is_ - I’ve no idea what sort of developer wizardry is involved in such an action, but the Wait Wheel doesn’t feel like too much to endure. Adding a release to one’s library - the other in-MusicHarbor accumulative function - is a bit quicker. It’s important to remember that this piece of software was/is created and maintained by a single human being, though I would expect nothing but improvement, going forward. ![Adding to MusicHarbor Playlist](https://i.snap.as/yN3nbcdR.png) That’s all I have to report on MusicHarbor, for the moment, but I’ll add further _MacStories_ praise from their [2019 MacStories Selects](https://www.macstories.net/stories/macstories-selects-2019-recognizing-the-best-apps-of-the-year/#app-of-the-year-runner-up) app rewards: > What makes MusicHarbor special – and, ultimately, the reason why we all use the app here at MacStories – is just how much developer Tanaka understands what someone who wants to know about new music releases is looking for. **July 2021 Update**: The MacStories gentlemen have just published [an interview episode of *AppStories*](https://appstories.net/episodes/230) speaking at length with MusicHabor creator Marcos Tanaka. ![Albums for iOS](https://i.snap.as/KylIYzaI.png) ### [Albums](https://apps.apple.com/us/app/albums-album-focused-player/id1469948986) On the other end of the spectrum, exploring new digital manifestations of _The Music Collection_, is [Albums](https://apps.apple.com/us/app/albums-album-focused-player/id1469948986), which actually functions as an entire replacement frontend player for Apple Music. Reviewed [much more recently by _MacStories_](https://www.macstories.net/reviews/albums-4-0-a-must-have-app-for-music-lovers/), it really is best-described as “opinionated, favoring album playback over individual songs or playlists.” Considering that I installed the app just a week ago and have focused most of my attention on MusicHarbor in that time, I’ll leave most of the commentary to John Voorhees. All I can say, really, is that I see an extremely powerful application, here, for a fairly specific use case: someone who’s listening is largely occupied by albums they already “own” in Apple Music and treasure deeply. The ability to set an individual record’s “Immersive UI Tint” down to the hex (in “Album Settings”) is as in-depth a tool of adoration as I’ve ever seen in a digital music service. Combined with Albums’ presumptuous takeover of actual playback from the Apple Music app, I think I can rightfully say that it was built for the _extremely serious_ music consumer. My favorite part so far: the app knew well enough to offer me THE ZRO BUTTON. Telling, I think. ![The ZRo Button - Albums App](https://i.snap.as/9pNf178x.jpeg) ### Others Since it’s already quite clear how much this Post draws from _MacStories_, I’ll let [their review of Soor](https://www.macstories.net/reviews/soor-2-review-magic-mixes-and-release-alerts-elevate-the-beautiful-apple-music-client/) stand on its own (I couldn’t quite justify spending $6.99 just for review purposes.) In the episode embedded above, they also mention [Denim](https://apps.apple.com/us/app/denim-playlist-cover-maker/id1532250420) - a playlist cover creator I am not personally all that impressed with. There’s also MusicHarbor’s sibling, [MusicSmart](https://www.macstories.net/reviews/musicsmart-puts-the-spotlight-on-music-credits/), which manages the tricky but essential task of adding the metadata retrieval Apple Music should have included all along. The rest can be found in [the episode’s show notes](https://appstories.net/episodes/213/). I’m not done with them, but the rest are what I would differentiate as _services_… ## Services ### [Odesli/Song.Link](https://song.link/ivyhollivana) One of the bewilderingly undercovered digital music sharing tools of our kind, Odesli has been [my preferred method](https://twitter.com/search?q=song.link%2C%20%40neoyokel&f=live) of sharing tracks/albums/EPs since I first discovered it in 2018. It is _not_ specific to iOS but it _is_ **essential** for competent music sharing, anywhere, these days, in its magical ability to _correctly_ intersect any given piece of music’s links across all streaming services, known and unknown. To be honest, I thought everybody would be using it by now, but it’s continued to develop with [minimal attention](https://twitter.com/odesli_/status/1383100269320409095) aside from [Siri Shortcuts developers](https://www.notion.so/iOS-Shortcuts-0efaf0ef92c0467aa6fc201b78c8499e). Thanks to [Odesli’s Public API](https://www.notion.so/Public-API-d8093b1bb8874f8b85527d985c4f9e68), dozens of Music-centric Siri Shortcuts have emerged over the past few years, resulting in one of the most useful Siri Shortcuts integrations to be found for real, reasonable human beings. Here’s where Apple-adjacent media and I part ways… While current common conversation might point you to Federico Viticci’s [MusicBot hyper-Shortcut](https://www.macstories.net/ios/introducing-musicbot-the-all-in-one-apple-music-assistant-powered-by-shortcuts/) and/or @gianflo6’s 600 action-strong [Song.Link Shortcut](https://routinehub.co/shortcut/5134/), I (perhaps expectedly) would point you to [my own, 17-action Shortcut](https://routinehub.co/shortcut/8940/) which spares you any selections and simply opens the Song.Link URL of the track currently playing in Apple Music (while also copying said URL to the clipboard.) It’s not that MusicBot isn’t massively impressive and still useful, but it represents a class of super/hyper-Shortcuts which (from my perspective) _far_-overreach beyond the intended use case for Siri Shortcuts and end up immediately bewildering/alienating potential new users. Truthfully - as Federico singularly acknowledges - they are full _applications_ built atop a less-than-ideal platform designed for relatively simple, _repeatable_ automations. I’ll spare you further opining on this idea until another, potential Post, and instead demonstrate my personal solution. https://imgur.com/gallery/eblzlbD In the clip above, you can see I was working on this very draft when LoneMoon’s “[kawAii @F](https://song.link/i/1554970332)” started playing. Naturally, I was compelled to share it on Twitter, so - without leaving Drafts (my writing app) - I called the [type-to-Siri](https://support.apple.com/guide/iphone/siri-iphaff1d606/ios) prompt by holding the Sleep/Wake button on my iPhone 12 Pro Max and simply typed “sl” (I renamed my Shortcut for this use,) running the Shortcut, which opened the track’s Song.Link page in Safari - very much an optional step, mostly just to make sure the match is correct - and copied its URL to my clipboard, from which I could share it anywhere. Since the advent of widgets in iOS’ [Today View](https://support.apple.com/guide/iphone/add-widgets-to-the-home-screen-iphb8f1bf206/ios), I’ve also kept a button for this Shortcut in one of four precious slots in a box at the very top. For those willing to play around a bit, it should be fairly straightforward to configure the end bits to your liking, but it should work out of the box for even those least interested in Siri Shortcuts/automation in general. ![SongShift Playlist Transfer](https://i.snap.as/64kwh52h.png) ### [SongShift](https://apps.apple.com/us/app/songshift/id1097974566) As I confessed before, it is only thanks to SongShift that I was able to recover anything of my original, prized, deeply-considered Apple Music playlists. The [standalone _MacStories_ article](https://www.macstories.net/reviews/songshift-3-0-and-switching-between-apple-music-and-spotify/) on this one is a bit dated, but I don’t see much change in function in that time. For most people, SongShift’s free service is simply the best way to transfer a playlist between music streaming services. If you find yourself genuinely sold by the features offered by [SongShift Pro](https://songshift.com/pro), I suspect you know more about playlist manipulation than I could ever learn you by diving in any deeper. ![Lastfm on iOS](https://i.snap.as/HLJEWX0B.png) ### [Last.fm](https://apps.apple.com/us/app/last-fm/id1188681944) (I s2g.) Yup… Believe it or not, Last.fm is _still fucking scrobbling_ after 19 fucking years (almost to the day,) and its iOS app still fucking works. What’s most bizarre about this truth is that I did not encounter mention of Last.fm for _years_ until I started noticing it as an integration option in the settings menus of _these premium iOS apps_. Is this some sort of conspiracy? I’m not sure, but I suppose I might as well insist you follow my ancient account, if you’re still using it. I should also note that not only is the Last.fm iOS app still working, it’s _working well_, from all appearances, anyway. Though the service no longer includes hosting, itself, it’s apparently still a prime player in the world of **playback tracking**. https://youtube.com/watch?v=pSDCbXGIovM ## Music Creation ### DAWs What if you actually want to “make” music with your iPhone? We’ve seen iPhone television ads for years featuring amalgamations of musician-looking types playing instruments with cables attached to their handsets, but is the iPhone now a reasonable platform for any sort of serious sound capture? The short answer is **no**. Who am I to proclaim such an absolute? None other than the motherfucker who’s been messing around with mobile DAWs for [10 whole years](https://twitter.com/neoyokel/status/150752825129971712). I even “released” an “[album](https://dieselgoth.bandcamp.com/album/holistic-compliance-portal)” on Bandcamp made exclusively with Apple’s own GarageBand for iOS and inspired by the dangerous life of the contemporary raw milk smuggler. I wouldn’t call it “music,” per se, or an example of what a _real_ electronic producer could pull off in the app, but it does represent its capabilities in the hands of the average user, using mostly default loops. https://soundcloud.com/dieselgoth/wurlie-jam While Apple does publish an Apple Book entitled “[Everyone Can Create Music](https://books.apple.com/us/book/everyone-can-create-music/id1434741739)” about GarageBand on iOS, it is specifically directed at _iPad_-bound use. Any serious DAW user uses keyboard shortcuts, which I admit I only discovered recently in GarageBand for iOS. The [official documentation](https://support.apple.com/guide/garageband-ipad/use-keyboard-shortcuts-chs88452c59a/ipados) is - once again - for iPad, specifically, but most of them still work on iPhone. [**FL Studio Mobile**](https://apps.apple.com/us/app/fl-studio-mobile/id432850619) - the original third-party iOS-bound DAW - is still going, apparently. While I did, indeed purchase the original version on my iPhone 4, I remember absolutely nothing about it, suggesting I was over my head, even then. There’s also [**Auxy**](https://apps.apple.com/us/app/auxy-music-beat-maker/id1034348186), as covered recently in [this App Store Story](https://apps.apple.com/us/story/id1478814064) and [**Reason Compact**](https://apps.apple.com/us/app/reason-compact-make-music/id1253419004). I’ve played around with these more recently - since they’re both available in their most primitive forms as a free download - with little to report. ### Capture Disappointingly, Apple’s own Music Memos - as demonstrated by Chris Welch from _The Verge_ in the embed, above - is currently in the process of being [officially sunsetted](https://www.theverge.com/2020/12/10/22168102/apple-music-memos-app-discontinued-export,) and is now no longer available for download on the App Store. As that article notes, users are instead directed toward GarageBand or ye olde native [**Voice Memos**](https://apps.apple.com/us/app/voice-memos/id1069512134) to record high quality audio. _However_, if you want to take advantage of the **stereo audio recording** capabilities included in iPhones after the [11 Pro](https://www.dxomark.com/apple-iphone-11-audio-review/), you must either use the native Camera app to capture video (and extract the audio later,) or [**Dolby On**](https://apps.apple.com/us/app/dolby-on-record-audio-video/id1443964192) - Dolby’s own iOS app for recording which - if I’m completely honest - will do nothing but _utterly frustrate_ anyone trying to capture the truest digital audio possible. https://youtube.com/watch?v=GhAknEKy9Ig As part of my [iPhone 12 Pro Max Review](https://github.com/extratone/bilge/issues/45), I’ve accumulated quite a few audio files in various formats testing its capture abilities and stashed them in [this folder](https://github.com/extratone/bilge/tree/main/audio/Capture%20Testing) on _The Psalms_’ GitHub Repository. Probably the most relevant of these, though, is embedded just above. If you’ll forgive my pajamas, ridiculous piano faces, and general rustiness with the instrument, it demonstrates the “**Audio Zoom**” feature found in the iPhone 11 Pro and up, which I’ve found to be unfortunately underdocumented by Apple, itself. I added my own inquiry to [this post on the official Developer forums](https://developer.apple.com/forums/thread/124512?answerId=671299022#671299022) asking about it, but don’t really expect anything back. According to “[What is Audio Zoom for smartphones](https://www.dxomark.com/what-is-audio-zoom-for-smartphones/)?” published on the site _DxOMark_: > The main technology behind audio zoom is called beamforming, or spatial filtering. It allows changing an audio recording’s directivity (that is, the sensitivity according to the direction of the sound source) and shape it in any way necessary. In this case, the optimal directivity is a hypercardioid pattern (see illustration below), which enhances sounds coming from the front direction — that is, from the direction in which your camera is pointed — while attenuating sounds from all other directions (your background noise). My testing has suggested that **the best means of recording unfiltered-as-possible stereo audio with an iPhone is to record video at 1x zoom with the native Camera app** and extract the audio from the video file. In the [Bandcamp track embedded below](https://davidblue.bandcamp.com/track/-), I “mounted” my 12 Pro Max right above my old upright’s soundboard and extracted audio directly from the video file with Audacity. It was then amplified slightly, saved to a FLAC file and uploaded directly to Bandcamp. Of course, it’s worth qualifying that - while I have extensive experience with audio - I have neither professional training, nor any professional monitoring equipment. https://davidblue.bandcamp.com/track/- That said, the biggest objection I’ve heard from audiophiles regarding audio capture and manipulation on handsets, generally, has to do with their hardware’s extremely limited capabilities when compared to any sort of professional desktop soundcard. Given the greater argument I've come to regarding the state of consumer tech as best exemplified by smartphone design - that we've come to expect *far* too much of single devices, and the resulting jack-of-all-tradeness summing their real-life capabilities has become a **severe detriment** instead of a feature - I must echo, again, that adding "studio" audio capture, manipulation, and production capabilities to our *goddamned cellular phones* doesn't help anyone. To any user truly hoping to accomplish these things, I say *just go home* and boot up your damned desktop. ![Mushish - Apple Music Web Player](https://i.snap.as/LGQO6IGJ.png) ## Other Considerations The final episode in *AppStories*' three-part miniseries on music was [just published today](https://appstories.net/episodes/214/), though I suspect - for my audience, anyway - that its coverage is mostly out-of-scope on this topic, largely for financial reasons. Apple's first event of the year is [scheduled for tomorrow at noon](https://youtu.be/JdBYVNuky1M), my time, and is entitled "Spring Loaded," which - combined with its 4/20 joke date - suggests to me that we'll finally see the release of the APPLE GUN™ alongside iWeed™, but little to nothing in the way of music. In the midst of my brief research into *The Greater History of Apple Music*, I discovered [the existence of iTunes Ping](https://thenextweb.com/news/apple-shuttering-failed-social-music-network-ping-september-30th) - which I somehow missed entirely, [along with my Twitter friend Jon Male](https://twitter.com/mrjaydeeem/status/1379305438454423559). I also discovered articles from the company's decision to [kill its successor "Connect" from Apple Music](https://thenextweb.com/news/apple-music-is-dropping-its-connect-social-features), which was reportedly "[rarely used](https://www.theverge.com/2018/12/13/18139837/apple-music-connect-social-network-feature-discontinued)." Notably, this removal also [took away](https://9to5mac.com/2018/12/13/apple-music-connect-ping/) what little power Artists had over the narrative surrounding their music on the service. I can see the business justification for all of this (barely) *except* for removing the ability for users to follow artists. The latest Apple Music feature - [a "channel" for music videos](https://www.theverge.com/2020/10/19/21523091/apple-music-videos-tv-channel-live-stream) - also makes zero sense to me, but [the launch of Apple Music on the web](https://www.theverge.com/2019/9/5/20851576/apple-music-web-player-interface-beta-browser-streaming) *absolutely* does, especially for Windows and Linux users, who are now *officially* freed from iTunes (the software) and allowed to use a much more modern Apple Music experience. I prepended "officially," there, because third-party Apple Music web players have existed as long as the service has allowed the required integration. First, there was [Naveed Golafshani's](https://www.macrumors.com/2018/12/13/apple-music-unofficial-web-player/) - which is [no longer live](https://github.com/naveedgol/music-web-player) - but Brychan Bennett-Odlum's [**Musish**](https://www.macrumors.com/2019/01/21/apple-music-web-player-musish/) is still [live and working](https://musi.sh/), as you can see from the screenshot embedded above. Other than the ability to select between two stream bitrates, I can't seen any remaining advantages to using the latter over Apple's own web player, unless you harbor spite toward their handling of the whole thing, which would be entirely understandable, from my perspective. https://twitter.com/NeoYokel/status/1359364473253937153 As someone who grew up in the mp3 era with a [first-generation iPod Shuffle](https://twitter.com/NeoYokel/status/1359364473253937153) and iTunes, living and dying between iTunes Store gift cards, Apple Music still seems like one hell of a magical deal. In effect, it allows access to *all of iTunes* for a flat monthly fee. Or at least it *would* had I never become acquainted with professional independent musicians who've published, there, and have to contend with tedious realities like [the process by which one can add those beautiful lyrics to Apple Music tracks](https://artists.apple.com/support/675-send-your-lyrics-to-apple-music), and who's only real means of control/engagement on the service has been removed with virtually zero prospects of a replacement. If, indeed, Jessica Lessin was correct about Apple's obsession with music, it has resulted in very little for any class of music makers, and left even its listeners to seek out and find third-party solutions like MusicHarbor to perform even the most basic personalization one expects from a modern music streaming service without even bothering to amend their App Store's discovery process to illuminate them, or even write a fucking App Story. Despite this, one-to-three-person app teams continue to work on new solutions, to these and other problems... #music #software == # Marco! Lives ![Marco! Banner](https://i.snap.as/D6SijbwF.png) ## The first release version of my only original contribution to the iOS community is now ready to assist when you can't find your phone. One of the handful of Siri's most useful features has been the "Hey Siri! Where are you?" command, to which Siri will respond "I'm here" or "here I am!" Were it possible to view how many times one has triggered a particular Siri command on iOS, my personal reliance on it would almost certainly be embarrassing. Often, my handset isn't even obscured from view - it's just faster to have Siri speak up than it is to scan the room. Occasionally, however, my device has managed to become embedded beneath and/or within some genuinely-perplexing series of couch cushions/blankets/briefcase pockets/etc. which require a more constant homing sort of audio reproduction. Asking friends/family to call one's phone is the general goto, yes, but honestly the actual length of time cellular telephones will ring before sending a caller to voicemail in 2021 is *ridiculously* short, especially when rummaging through Gourd-knows-what. For that matter, most of my peers keep their phones on silent mode, 24/7. What then? https://www.youtube.com/watch?v=3evgnSlnkjk Since [the very first time](https://bilge.world/siri-shortcuts-ios12-review) I set eyes upon Siri Shortcuts in iOS 12 Beta, I have wanted to create one to address this issue in a creative, entertaining, and (hopefully) genuinely-useful way. On that day almost three years ago, I even knew it would be called *Marco!*, believe it or not. In the past few months, I've returned to the project on and off and ended up with several different versions of varying complexity. One day, I'd like to figure out how to integrate the full extent of my ideas for Marco! into a Shortcut which can be reliably triggered when one's device is locked, but for this first release version, I have included only what I and a few other (much appreciated) volunteers were able to trigger in every situation we could conceive of. Marco! Version 1.0 can be downloaded on [**RoutineHub**](https://routinehub.co/shortcut/8987/) (which I would highly recommend,) or directly via [**this iCloud share link**](https://www.icloud.com/shortcuts/cec781677c5648f2a8982213700938b4). I know it's a bit excessive, but I even created a [GitHub Repository](https://github.com/extratone/marco) just for this Shortcut, seeing as it is undoubtedly the most original I will ever contribute, and the singular one with potential for continued development. Download Marco! as is and (as long as you don't rename it) use "Hey Siri!... Marco!" This should immediately run the Shortcut, which includes my voice saying "Polo! Bitch!" followed by five repeats of the flashlight/noise cycle as described in detail below. ![Marco! JellyCuts Steps](https://i.snap.as/9Ow1cbmz.png) As documented by the [Jellycuts file](https://github.com/extratone/marco/blob/main/docs/Marco!.html) above, Version 1.0 of Marco!'s actions are as follows: 1. Turn Low Power Mode OFF 2. Turn Airplane Mode OFF 3. Turn Wi-Fi On 4. Turn Bluetooth On 5. Set brightness to 100% 6. Turn Do Not Disturb OFF 7. Turn appearance Light 8. Set playback destination to iPhone 9. Set volume to 89% 10. Vibrate device (Not currently working.) 11. Play **my voice** saying “Polo!” + a few other items 12. Toggle (flash) the flashlight 5 times (odd number leaving your flashlight on constantly unless it was on before the Shortcut was triggered) 13. Simultaneously (in the same repeat action) plays three separate classic Mac sounds 5 times. The most clever bit about this particular Shortcut is its use of Base64 text to include audio playback. I just fixed a bug on [my own Base64 audio encoder Shortcut](https://routinehub.co/shortcut/8914/) if you'd like to try it out. Since this version includes my own voice (subject to taste, I realize,) as well as some minor profanity, I do intend to publish a clean variation at some point in the future. If this is an obstacle for you, and/or if you'd like a custom version made with audio of your own choosing, please do [send me an email](mailto:davidblue@extratone.com)! I would be more than happy to make one for you. #software == # App Store Review Day (August 15th, 2021) ![Mastodon iOS Apps](https://i.snap.as/vAk0jm6X.png) ## A commitment to share my thoughts where developers actually want them, and an invitation for other reviewers/users to join me. I have written more than my fair share of words about software, as I have loved, despised, and been utterly perplexed by it. This year, my return to the iOS community has perhaps inevitably turned _apps_ into an addiction of sorts. This particular platform is so utterly chock full/stocked up of creativity at a scale immeasurably greater and more accessible than the whole of those throughout computing history, combined. For someone like myself, it is all too easy to allow oneself to wander down a virtually endless path of intriguing, very self-indulgent play, especially now that third-party sites like [Departures.to](https://departures.to) have managed to add discoverability to TestFlight beta distributions, allowing those non-millionaires among us opportunities to use test releases of applications we would’ve otherwise had to pay for. This has been exclusively to my benefit - I can only imagine what 15 year-old me would have done with such power. ![Your Ratings and Reviews - Apple App Store](https://i.snap.as/jIYBC6xU.png) In my recent endeavor to focus on making my work more useful to others, I've reflected on something I've heard from nigh every developer of the apps I've reviewed: *Ah yes, your blog looks really cool but FOR THE LOVE OF GOD, PLEASE REVIEW MY FUCKING APP on the FUCKING STORE.* Read: your commentary is appreciated, but your five stars would almost certainly more economically beneficial. As you can see from the image embedded above, I have personally fallen *very* behind in doing my part for those apps I've celebrated, here. A vague intention to *get around to it eventually* clearly is not working, so I've decided to give myself a deadline: **August 15th, 2021** - precisely one month from today. By this date, I will have sifted through my commentary on apps in this setting and adapted the most useful of it (per app, obviously) into a manner appropriate to appear on an App Store Page, and **I would like to formally-ish invite other tech writers/app reviewers to join me**. https://twitter.com/NeoYokel/status/1402057069927309318 I'm terrible at community organization, which certainly does not exclude events, so I very much welcome any feedback you might have, as well as any collaborative contributions you'd be interested in making. As I see it, I have a few essential considerations to offer. First, the page in the screen capture above - which can be found in the App Store App ⇨ Account (your profile picture in the top-right corner) ⇨ Account Settings (the tapable element at the very top with your profile picture and information) ⇨ Ratings and Reviews - is *broken as hell*, along with the rest of the Account Settings menu, notably. This is important because I insist we all complain about it on all available channels, considering it's been broken for several months, at least. Second, you should almost certainly use [**this "new" dev-facing tool**](https://tools.applemediaservices.com/app-store/) when searching the App Store, considering that it *actually works* in a trustable way, unlike the user-facing tool in the app. https://twitter.com/NeoYokel/status/1415732070626758663 Since the standard online palette of event organization software are all so easy to use, these days, I've established event pages for this event on multiple platforms, linked in the list below, which I will update as per any suggestions/requests for equivalent pages on other services. Of course, it's certainly not a requirement that you join/engage with any of them. One could could certainly just add the date to their own calendar (conveniently with [this .ics file](https://drive.google.com/file/d/1WM2esll-Yf5Fg4gO9ZYVAJ0pPrdexGqF/view?usp=sharing),) remain entirely silent about the thing on social, and still be participating. Those interested in further engagement, however, can Chat Me Up on [*Extratone*'s Discord](https://bit.ly/extratone), the [Teams event chat](https://teams.live.com/meet/93913819139325), [Telegram](https://t.me/extratoe), [etc](https://davidblue.wtf). I also plan to reshare most of this post as [a thread on Twitter](https://twitter.com/NeoYokel/status/1415732070626758663). - [GitHub Discussion](https://github.com/extratone/bilge/discussions/194) - [.ics File](https://drive.google.com/file/d/1WM2esll-Yf5Fg4gO9ZYVAJ0pPrdexGqF/view?usp=sharing) - [Microsoft Teams Event](https://teams.live.com/meet/93913819139325) - [Google Calendar Event](https://calendar.google.com/event?action=TEMPLATE&tmeid=N3BtdXBnajdzbGNyMmNqNjdrc3RydmQ2bXIgY2xhc3Nyb29tMTAzNDc2ODc1MDQ0OTI5MTA0NzA3QGc&tmsrc=classroom103476875044929104707%40group.calendar.google.com) - [Facebook Event](https://fb.me/e/2umaM71vI) - [Dev-facing App Store Search Tool](https://tools.applemediaservices.com/app-store/) As we face the horrendous, utterly inexcusable state of Discovery on the App Store/Apple's general fuckery regarding the independent developers mostly responsible for making its platforms a worthwhile space, I hope I've created something of value in whipping up this "event." If you have thoughts on how I might do so more effectively, once again, *please do* reach out. #software #meta == # The State of Mastodon iOS Apps ![Mastodon iOS Apps Surveyed](https://i.snap.as/3q29AwpI.png) ## A safari through the enchanting space of third-party Mastodon clients on iOS. Apple's second virtual World Wide Developer Conference came and went as I wrote this guide - you can metaphorically picture me looking up from my machine having overheard the news of the [2021 Apple Design Award Winners](https://developer.apple.com/design/awards/) announcement. Perusing through them, I saw two I would have voted for, myself: [CARROT Weather](https://apps.apple.com/us/app/carrot-weather/id961390574) - the [beautifully vulgar](https://twitter.com/NeoYokel/status/1368223231111557125), grumpy bitch frontend for your preferred weather information service, and [Craft](https://apps.apple.com/us/app/craft-docs-and-notes-editor/id1487937127) - perhaps the most innovative take on word processing of the past two or three years - listed under "Finalists." (Read: losers.) The most positive personal discovery of (all?) WWDCs: an app called [**Be My Eyes**](https://www.bemyeyes.com/), which "connects blind and low-vision people with sighted volunteers and company representatives for visual assistance through a live video call," along with an exceptionally crafted, cross-device accessible-as-fuck TTS solution called [Voice Dream Reader](https://apps.apple.com/us/app/voice-dream-reader/id496177674). *However*, a double take in games from *Genshin Impact* and [the fucking *League of Legends* game](https://apps.apple.com/ph/app/league-of-legends-wild-rift/id1480616990) certainly sours the mouth and suggests yet further just how much Apple, Inc. has *sold out*. The continued prioritization of Growth for Growth's sake over any and all other considerations (namely, users,) is not unexpected from even the most valuable company in the history of the world, I suppose, but there *is* an actor at this point in the story who is catastrophically and demonstrably failing to fulfill their role: all I really know is that technology media has fallen into a trough of total uselessness when it comes to qualitative, authoritative analysis of consumer-targeted software. The necessity of this guide - and the bizarrely silent ignorance of even the "fringes" on its subject - is unimaginably severe. Before me has been (for years, now,) the "answer" to a Jolly Big Load of what tech and marketing types lament in more and more existential language, yet *hardly any* of the humans with the most to lose from their negligence - regular, casual social media users - have been delivered to these experiences. The story is not being articulated. **The journalism is not being done.** I know you almost certainly did not arrive here to hear one motherfucker's complaints about WWDC, but - as with everything Apple, Inc. does - every morsel of curatorial expression/discrimination/favoritism from The Great Money God within this platform *must* be scrutinized and criticized. Quite frankly, I found myself completely at a loss as to how *not* to dwell on the Discovery Disparity, here. Despite how deeply I've gone into iOS this year, I do not believe myself to be a qualified judge of software design, but I no longer believe Apple to be, either. Regardless of the revenue-related controversies of late, Apple have simply become terrible stewards of the App Store in every imaginable sense. Scams and blatant intellectual property theft abound, while the majority of the most innovative entries I've ever seen remain entirely obfuscated and uncelebrated by all of Apple. Inc.'s mechanisms. If you required an explanation for the amount of time I've invested into App Guides - a space to which I never would have imagined intentionally bringing *The Psalms* - I hope you can understand. I must confess: I have been _meaning_ to write this app guide since even before I [interviewed Mastodon creator Eugen Rochko](https://bilge.world/eugen-rochko-interview) on the morning of his Big Press Day, just over 4 years ago. I’ve exhaustively explored different means of convincing my own longtime Twitter friends to move, over that time, with very little success. Eugen, himself, published an [official blog post](https://blog.joinmastodon.org/2021/02/developing-an-official-ios-app-for-mastodon/) at the beginning of February detailing his plans to open up onboarding by way of “an official Mastodon app that is free to download and that is specialized in helping new users get started on the platform.” As a Patreon supporter of [The Mastodon Project](https://www.patreon.com/mastodon) (full disclosure,) I've been testing this app (see preview shots at the very end,) and am quite smitten with it. That said, I thought it might be worth going over the third-party options iOS users currently have available to them, largely because the offerings are each innovative and mature applications in their own right. (Also, it’s become quite apparent that the normal tech media sources you’d go to for such a guide aren’t going to give Mastodon the attention it deserves.) ![Masto Mascot iOS Art](https://i.snap.as/Y624NGHM.jpg) ## Obligatory(?) Context I originally intended to be as clinical as possible in this Post, having realized its potential as the singular comparison of its kind to appear in search results for new and potential users of Mastodon. From my perspective, Mastodon has long since surpassed regard as a novel social media experiment who's function is to prompt academic conversations about decentralization, open source, ad tech, and federated social's solutions to all of the Big Web's Big Boy (proprietary) Problems (though I have been compelled to [invest significantly](https://github.com/extratone/bigblue) in that very conversation.) In the less intellectual hours of my day-to-day life (read: most of the time,) Mastodon is nothing more or less than my favorite place on the internet. It is a relentless delight which I only lament because I want to share so much of it with my friends, but have continued to fail in my efforts to articulate that **Mastodon is not a compromise; it is a better social space**. If you didn't know, this seems to have become *my general shit*, for lack of a better term: the ethical considerations of open source/"alternative" software are very important, yes! ... but they are *far* from the whole, and they are not a requisite for new users. The second of [this World Wide Web Blog's fundamental considerations](https://bilge.world/about), in fact: > The Open Source/Open Web community continues to struggle with their *brand image* (if you will) in both old and new ways that needlessly alienate (and sometimes obfuscate) some of their most important contributions from the average user. **Technology media has failed in their responsibility to address this issue.** The blog on which you're reading this, in fact, is federated on [ActivityPub](https://activitypub.rocks/). If you so chose, you could be reading it in any client capable of displaying large bodies of text. The crucial point, though, is that *you didn't need to know that* - you could very well go on reading it on the web in total ignorance/apathy regarding Federation. *Oh boy, here we go...* No. I did not want to say anything ideological - I wanted this Post to function as little more than a pretty screenshot showcase and simple associative list responding to all of the Reddit posts I've seen to the tune of "is there an iPhone app?" As I explored them, however, I was reminded of the sheer creativity the "alternative" software community is capable of. Even the roughest of these considered apps seem unable to be faceless - sorting through the obscene amount of (unlabeled) screenshots accumulated over the past weeks of testing in my Recents folder has been *so* much easier than I thought it would be because of their relentless originality. If you've actually used any iOS applications and/or browsed the singular App Store from which they can be acquired in the past 3-4 years, you're undoubtedly skeptical: what we might have called "feature overlap" at one time has become all but the platform's core ethos. If you're the sort who enjoys screwing around with apps, generally, as I have for the whole of iPhone history, you have grown accustomed to disappointment. https://twitter.com/NeoYokel/status/1402057069927309318 Regardless of who is to blame, we can all agree that the App Store is currently oversaturated nigh *beyond usability* with mediocre entries built from the beginning with zero apparent ambition toward original function. This, alone, wouldn't be so problematic if Discovery were not so [completely and totally Fucked](https://twitter.com/NeoYokel/status/1379068906917224448) (except when [dev-facing](https://tools.applemediaservices.com/app-store/),) but I needn't comment further on that subject at the moment - I'm just trying emphasize how absolutely unheard of it is for a single protocol/service's third-party client representation on iOS to be so thoroughly special. It was astonishing to find all but one or two of these apps *in a functional state*, actually. In all my equivalent experiences downloading the entirety of a given service's API-supported palette (e.g. IRC apps, [topically](https://www.vice.com/en/article/pkbgvg/major-internet-projects-are-leaving-freenode-after-korean-prince-takeover),) an all-too-significant purpose of whatever ends up getting published is simply documenting the ~20% of available titles that *actually work* at the given moment. (I'd have mentioned the "best [service/task] iPhone apps for [year]" listicles found in online publications like *Digital Trends* were it not for the percentage of them in which it's clear the author *did not actually download* some/most of the apps listed‽‽‽) Perhaps due to [iOS 14.5's implementation of ATT](https://www.wsj.com/video/series/joanna-stern-personal-technology/apple-software-chief-explains-ios-145-defends-companys-reach-exclusive/57D138E3-3677-4A78-9534-62DAD443FE97), all of the Mastodon apps I could find and test (not counting non-English language-supporting apps, in fairness' interest) are currently functioning. So, if there's virtually zero chance a new Mastodon user might download one of the apps we're about to consider and find it broken, what practical function remains for this guide? Hopefully, to establish a SEO catch-all for such users from a non-automated source less associated with the project than the official apps list. Those for whom Mastodon is still an unfamiliar subject should find the collected imagery intriguing, hopefully. https://www.youtube.com/watch?v=g2MSr_7J1GY ![Mastodon iOS Icon Strip](https://i.snap.as/H25gzEg2.jpeg) ## The Big 6 My first step in writing this guide was to post [a thread on r/Mastodon](https://www.reddit.com/r/Mastodon/comments/mxymr1/your_thoughts_on_thirdparty_mastodon_clients_for/) soliciting thoughts on third-party Mastodon apps from other users, who expressed a lot of love for Toot! and Metatext: > Toot is just a joy to use. It has a little too much sometimes (it actually contains little mini games...which really aren't needed), but the experience of using it has some really clever UI twists. -[u/mikepictor](https://www.reddit.com/user/mikepictor/) Pragmatic Code's [Linky](https://apps.apple.com/us/app/linky-for-twitter-and-mastodon/id438090426) was also mentioned by multiple respondents. It's not a client, but a bridging tool for smoother URL sharing that integrates with iOS' share sheet. I did not have time to try it, myself, but from all accounts, it is an obligatory mention. So too is the [**GitHub Repository/List**](https://github.com/extratone/FediiOS) I created in order to "formally" offer a list with much greater brevity and zero editorialization. First, let’s begin with The Big 6 - those apps The Mastodon Project, itself, has seen fit to [list on joinmastodon.org](https://joinmastodon.org/apps). https://youtube.com/watch?v=LdBFMibyh3Y ### [Toot!](https://apps.apple.com/app/toot/id1229021451) Dag Ågren‘s [Toot!](https://apps.apple.com/us/app/toot/id1229021451) is not only my personal app of choice - I would (and have) go so far as to say it’s the single most innovative mobile social app I’ve ever encountered, largely because of its jacknife-esque instance selection. It’s held a place in my phone’s dock since the day I first downloaded it, for this and many other reasons. While one might find bugs/loose ends (understandably) exploring the functions of other indie social clients, within Toot!, they will only find little delights, like [its wholly unique Share Sheet interface](https://imgur.com/gallery/xAXs95J). ![Toot! Themes](https://i.snap.as/bXG5SAUv.png) Toot! is extremely beautiful (despite its unfortunate name,) and I am quite superficial in my taste. It’s Obsidian theme (which may or may not be related to the topical notetaking system of the same name) is especially gorgeous. In my [cacophonous attempt](https://mastodon.social/@DavidBlue/106302686196643266) to compare the notifications of all available Mastodon apps simultaneously, it's worth noting that Toot!'s always came first. Its [charming custom audio alerts](https://whyp.it/t/toot-ios-app-custom-sounds-92997) also make them my favorite by far. They're not just cute: in reflection informed by a newly-considered function of these apps - serving as representing the network as a whole - it occurred to me that **Toot! audio alerts playing from my iPhone have prompted more first-time conversations about Mastodon in the wild than I can count**. (Seriously: they should be considered an onboarding mechanism.) ![Toot! Settings](https://i.snap.as/30YJR456.png) In my experience, it’s also the most robust of the lot - as in, it is very much the exception rather than the norm to encounter any sort of error or other obstruction in normal, day-to-day use. My own real reservation applies to the entire selection discussed today: I wish Toot! supported Bluetooth keyboard shortcuts. ![Mast for iOS](https://i.snap.as/KF4Slx39.png) ### [Mast](https://apps.apple.com/us/app/mast-for-mastodon/id1437429129) I originally had high hopes for Shihab Mehboob‘s [Mast](https://apps.apple.com/us/app/mast-for-mastodon/id1437429129) - which used to look very different from the way it does, today. That’s almost certainly to do with its ownership [changing hands](https://twitter.com/jpeguin/status/1354854403124178947) at some point (no, I do not have any further details on that story, unfortunately.) That’s not to say the current app isn’t a worthwhile offering, it’s just far less _visually ambitious_ than the original I remember. However, it’s also significantly more reliable. https://twitter.com/JPEGuin/status/1354854403124178947 ![Mast Details](https://i.snap.as/UsH95qJv.png) ![Amaroq for iOS](https://i.snap.as/JV5vzmky.png) ### [Amaroq](https://apps.apple.com/us/app/amarok-for-mastodon/id1214116200) The Original… Genesis… If Amaroq was not the first Mastodon app on the App Store, it’s certainly the oldest to survive. Its GitHub Repository’s [first commit](https://github.com/ReticentJohn/Amaroq/commit/9648ebdecf8ab20819ba10fe18b6317a8026fd86) dates back to April 17th, 2017. While you’re there, you might note that it’s the only one of these entries coded entirely in Objective-C - the near-40-year-old language originally underpinning iOS before Swift’s birth in 2014. Amaroq was the first Mastodon app I used and remains the strongest free option for iOS users. It’s been nearly a year since its last update, so its missing a few narrower functions like Bookmarking and Polls, but the core features it _does_ include are rock solid. The only wild card: what the fuck is Awoo Mode??? ![iMast for iOS](https://i.snap.as/7A9pJMzD.png) ### [iMast](https://apps.apple.com/us/app/imast/id1229461703) For better or worse, [@rinsuki](https://mstdn.rinsuki.net/@rinsuki)’s iMast will require either a basic grasp of the Japanese language, or the patience to translate its menus and work backwards. (OCR came to mind, but I’m not quite dedicated enough to try it for this guide.) Assuming [Google’s translation](https://documentcloud.adobe.com/link/review?uri=urn:aaid:scds:US:64ce057e-5adc-4578-a0ef-e9ddb6b5d545) of [its GitHub Pages site](https://cinderella-project.github.io/iMast/) is correct, iMast is also Open Source “under the Apache License 2.” Unlike Amaroq, it appears to have been built in Swift from the ground up. Unfortunately, that's about all I can comment on, though I would very much love to hear from any iMast users/Japanese speakers and will update this Post accordingly. A function I _can_ provide: documenting [iMast’s Bluetooth keyboard shortcuts](https://github.com/extratone/imastodon/blob/main/documentation/iMastKeyboardShortcuts.md). #### iMast’s Keyboard Shortcuts | Action | Key | |:-------------------:|:----------:| | Open Compose Window | ⌘ + N | | Send Toot | ⌘ + Return | | Home Timeline | ⌘ + 1 | | Notifications | ⌘ + 2 | | Local Timeline | ⌘ + 3 | | Others (Menu) | ⌘ + 9 | iMast is also the singular Mastodon app with a Siri Shortcuts action! ![Mercury for iOS - Scoops Theme](https://i.snap.as/ScJoTz8e.png) ### [Mercury](https://apps.apple.com/us/app/mercury-for-mastodon/id1486749200) Daniel Nitsikopoulos' [Mercury](https://onmercury.app) represents yet another entirely original direction in Social clients. It's fresh and "opinionated" in its explicit lack of support for instances that "[promote abuse and harassment](https://onmercury.app/help)." From all appearances, this appears to be the singular source of negative reviews on [its iOS App Store page](https://apps.apple.com/us/app/mercury-for-mastodon/id1486749200). It's also the other option to offer widgets integration (in a single form, currently,) and custom audio notifications, though I couldn't capture a sample. Its [Trello Roadmap](https://trello.com/b/6EseiLSQ/mercury-roadmap) and [Feedback Repo](https://github.com/dNitza/mercury-issues/issues) are public but mostly inactive. As you can see in the grid embedded above, I absolutely adore its Scoops theme and find my $0.99 Tip 100% worth its custom icons. Mercury for iOS - Negative App Store Reviews Unfortunately, the state of Mercury's App Store reviews prompt yet another essential economic/editorial consideration. The one in the very center of the image embedded, above - from "FeralDandelion" - is the singular one I will allow myself to address. It is true that Mercury straight up refuses to authenticate or federate with a substantial amount of specific Mastodon servers, but it is **exhaustively explicit about this from very get-go**. Its [single-page Help document](https://onmercury.app/help) includes a detailed, up-to-date table of every single blocked instance and *the specific justification* for each respective instance's presence on it: > Mercury takes a zero tolerance stance on abuse and harassment and as such does not support many instances that promote abuse and harassment. Let me be clear: the practical manifestation of this position is **exclusively positive**. The Mastodon project has long outgrown the sort of fixation on ideology for ideology's sake that even Lucky Linus himself has no patience for. Instead, *thank Gourd* Mercury's developers took the time to better your social experience! In response to statements like the pullquote above, I expect ***only* thumbs in the air** from this point, forward. ![Metatext for iOS](https://i.snap.as/w7PTFpTf.png) ### [Metatext](https://apps.apple.com/app/metatext/id1523996615) Metatext is perhaps the buzziest of all these apps - well-praised in every space I could find conversation on the subject. It's developed under [Justin Mazzocchi](https://mastodon.social/@jzzocc)'s software studio, [Metabolist](https://metabolist.org/) and is as [Open Source](https://github.com/metabolist/metatext) as it gets! (As per my hardware keyboard shortcuts crusade, I added [my own issue](https://github.com/metabolist/metatext/issues/40) requesting support.) [u/GummyKibble](https://www.reddit.com/user/GummyKibble/) noted that "it looks like a native app on both iOS and iPadOS." This term - *native* - seems inextricably linked with Metatext. I vaguely understand what it means, and I do agree, but it's worth noting that I speak with some privilege, having compared all of these apps on the top performing handset Apple currently has to offer. In many ways, it is the most frugal of the new offerings, especially, yet it strikes a keen balance between function and delight. I think "native" can be translated as *generally of a stout, sturdy disposition*, thanks to the care put into honing said balance. ## Less-Than-Sanctioned ![Tootle for iOS](https://i.snap.as/S6VkSlY0.png) ### [Tootle](https://apps.apple.com/us/app/tootle-for-mastodon/id1236013466) I'm not entirely positive which Mastodon app was *actually* the first on my iPhone, back in 2017, but I know for sure it was either Amaroq or the dearest, infinitely-colorful Tootle. Its [App Store Page](https://mastodon.cloud/@tootleapp) Version History suggests it has not been updated in 14 months, yet the app - which was apparently "Designed for iPad" - appears to be working just fine. There are some overlapping UI elements, but they're barely noticeable. Were it not for the new dev-facing store search tool mentioned above, I would have assumed this app long gone, to be honest, but using it again has somehow managed to genuinely twinge my nostalgia nerve. In my search for any extra-App Store representation other than [Tootle's Mastodon Account](https://mastodon.cloud/@tootleapp) (which last posted the day after my birthday, last year,) I discovered [Tootle... for Linux](https://ubuntuhandbook.org/index.php/2020/11/tootle-l-gtk3-mastodon-client-linux/). Since I am a dedicated and thorough person, these days, I spent several hours messing around with Linux Virtual Machining until Lubuntu finally functioned *just* so I could show you what it looks like. Below is a screen capture of Tootle bordered by the most Macish LXQ desktop bars included in Lubuntu and *even* wearing the new official Apple System Font, SF Pro. Still, I think you'll agree... Tootle for Linux is not related to Tootle. ![Tootle for Linux](https://i.snap.as/Rx3Eu9GA.png) Personally, I find this a profound shame - I think more apps should be as colorful - and as color *configurable* - as this little, mysterious Mastodon app. I created the theme you see represented in the frames embedded above using *The Psalms* colors, naturally, and the whole process took less than five minutes. Play around with it as I remember doing, all those years ago, and you'd be surprised how hard it is to create an unusable color theme. What I find *most* shame in, though, is that Tootle appears to be completely invisible in regular app store searches, now. (And by "*most* shame," you know I really mean *entirely fucking unacceptable*.) https://www.youtube.com/watch?v=WBZtmOqyk8c ![Tusker on iOS](https://i.snap.as/82RtZcyl.png) ### [Tusker](https://testflight.apple.com/join/wtB7HYvG) I found my way to the only *currently in-development* entry on this list thanks to my Mastodon friend [wakest](https://social.wake.st/@liaizon). iOS developer [Shadowfacts](https://social.shadowfacts.net/users/shadowfacts) (who also maintains [*shadowfacts.net*](https://shadowfacts.net/)) is working on their considerate, distinct app, Tusker in [this self-hosted Repository](https://git.shadowfacts.net/shadowfacts/Tusker). In [#tusker](https://mastodon.social/web/timelines/tag/tusker) on Mastodon, you'll find a few poignant praises from [Pixelfed](https://pixelfed.org/) founder and principal developer [Dan Sup](https://mastodon.social/@dansup), which - from my perspective - are especially high, indeed. ![Tusker Landscape Mode!](https://i.snap.as/jZudSEdQ.png) Tusker's color customization options are technically... well.. *not infinite*, like other apps here, but the end result of their (obviously, very considered) selection will be a net win for 100% of users over that alternative, I believe. It is definitely of a similar philosophy to Metatext, but unquestionably more ambitious. Out of the lot, testing Tusker was the singular instance in which I found myself considering a "replacement" for Toot! You, yourself can use Tusker *right this very minute* via Apple's beta distribution system, [Testflight](https://testflight.apple.com/), via [**this invite link**](https://testflight.apple.com/join/wtB7HYvG). ![Roma for iOS](https://i.snap.as/oBYO4T1e.png) ### [Roma](https://apps.apple.com/us/app/roma-for-pleroma-and-mastodon/id1445328699) Installing Roma for the first time led to a puzzling quest with a particularly pleasant end. I noticed fairly quickly that the iOS app was a re-branded release of what used to be Mast. My first instinct upon this discovery was to DM Mast's original developer, [Shihab Meboob](https://twitter.com/JPEGuin), on Twitter, but frankly, I've already bothered him enough there over the years, so it's understandable that I didn't hear back. When I downloaded the desktop app I found on [Roma's web page](https://www.roma.rocks/#desktop) and noticed its similarity to [Whalebird](https://whalebird.social/en/desktop/contents), I decided to use the site's contact form to [inquire](https://github.com/extratone/bilge/blob/main/correspondence/Roma%20Inquiry.md) about what exactly was going on as gingerly as I could. Happily, I received a reply just *minutes* later from Leo Radvinsky, head of [Leo.com](https://leo.com/), "a Florida-based boutique venture capital fund that invests in technology companies:" > Hi David, > > In both cases we funded the original developers of both Mast and Whalebird to create a branded whitelabel app specially made for Pleroma. The idea was to make Roma a cross platform brand/app. It didn't really work out so now we're working on a new app from scratch called Fedi for iOS and Android and releasing that as open source. > > https://play.google.com/store/apps/details?id=com.fediverse.app&hl=en_US&gl=US > > https://apps.apple.com/in/app/fedi-for-pleroma-and-mastodon/id1478806281 > > I think Roma has been removed from the app stores as it's no longer supported. > > Let me know if you have any other questions Though my hopes for the original Mast to live on in Roma form were more or less dashed by this message, the suggestion that someone is investing **actual capital** into federated social is certainly worth celebrating. If Roma is still available on the App Store as you're reading this, I insist you download it immediately. It represents an incredible and original attention to detail which should not simply be forgotten. ![Fedi for iOS](https://i.snap.as/4TO8CL5D.png) ### [Fedi](https://apps.apple.com/us/app/fedi-for-pleroma-and-mastodon/id1478806281) Naturally, the app inheriting the work/resources established by Mast and Roma - known by *Fedi* - should be next up for discussion. Hopefully, my relative lack of experience with [Pleroma](https://pleroma.social/) - another ActivityPub-based, federated social network - won't let you down, here. After a brief shock from the uniqueness of Fedi's UI passes, one immediately notices how beautifully it is animated, wholly disregarding my [recently-acquired](https://twitter.com/NeoYokel/status/1357394407201398791) preference for as little animation as possible. Perhaps more than any other app discussed here, Fedi feels uncannily bespoke in a way which iOS apps almost never do. It is undoubtedly the result of a very specific vision - to disregard the whole modern template for social apps and completely reimagine the archetype. Personally, I'm not sure if it would be easy to get used to, but my tastes/habits in this regard are very much the result of the past decade of proprietary social apps' blandness. Going forward with substantial financial backing and the talents of whoever it was that got it this far, no doubt we should all have very high hopes for Fedi. ![DUDU (嘟嘟) for iOS](https://i.snap.as/Kt8ZbQFk.png) ### [DUDU (嘟嘟)](https://bit.ly/duduios) DUDU (or "嘟嘟," which translates to "Toot," appropriately,) definitely wins for *Cutest Iconography*. It's a non-English-native application with exceptional English support, which I personally appreciate very much. Compared the entries immediately above, DUDU represents a much more modest interpretation of what a Mastodon client can offer. It’s robust, free of over-animation, and - most distinctly - very *wide*, which might have something to do with the "designed for iPad" subtitle on its App Store Page. ![Tootoise for iOS](https://i.snap.as/AZ7fRWc7.png) ### [Tootoise](https://apps.apple.com/us/app/tootoise/id1465090190) Yet another "Designed for iPad" entry, Naoki Kuwata's [Tootoise](https://apps.apple.com/us/app/tootoise/id1465090190) is defined by its custom incoming post rate accommodations and its gorgeous Solarized theme. Its "Max number of new arrival posts" setting ranges from 0-400, allowing one to freeze their timeline entirely from any accidental (or habitual) Pulls to Refresh (set at 0,) load 400 Toots from such a gesture, or anything in between (at 40-Toot increments, anyway.) The advantages of this specification become immediately apparent when one actually begins to explore it, especially for those who have come to Mastodon after feeling overwhelmed by Big Social. ![Stella for iOS](https://i.snap.as/LzzNxqj9.png) ### [Stella](https://apps.apple.com/us/app/stella/id921372048) Yet another entirely one-of-a-kind experience, the slightly-mysterious Stella is listed as a "Mastodon, Twitter & News Client," and is notably one of the two apps on this list which do indeed support Twitter! More than that, it is the first app I've seen in a very long time that allows one to *simultaneously* post to two separate social services (Twitter and Mastodon, in this case.) Without documentation, it's a bit clunky, but its customizable timelines feature also allows one to combine multiple "sources" (social accounts) into a single timeline. ![B4X for Pleroma & Mastodon for iOS](https://i.snap.as/aSYoZ8t2.png) ### [B4X](https://apps.apple.com/us/app/b4x-for-pleroma-mastodon/id1538396871) B4X is yet another quite perplexing entry. The "Developer Website" link on its App Store Page leads to [b4x.com](https://www.b4x.com/contact_us.html) - a web page entitled "Anywhere Software." The GitHub icon in its footer led me to discover [a repository](https://github.com/AnywhereSoftware/B4X-Pleroma) which is labeled as such to lead one to believe it is, indeed, the development space for the iOS app we're discussing, but does not contain a single .swift or .pbxproj file - universally essential for iOS apps, as I understand it. Regardless, B4X appears to be built atop Anywhere Software's "rapid application development tools." I like its elemental simplicity and nice 'n' wide post display. ![Oyakodon for iOS](https://i.snap.as/sFfxE4R7.png) ### [Oyakodon](https://apps.apple.com/us/app/oyakodon-for-mastodon/id1229174544) Isao Takeyasu's [Oyakodon](https://apps.apple.com/us/app/oyakodon-for-mastodon/id1229174544) feels a bit like it originally began as a school project, and I mean that in the best possible sense. While it’s probably the least polished of the lot - and therefore likely the least viable candidate for the role of your primary, daily-driven Mastodon client - is is far from a throwaway application. Some evil component of Takeyasu’s mind was clearly let loose if only for a moment, for Oyakodon’s Facebook-style theme is reminiscent enough of Big Blue to alarm. The volume of its design definitely peaks in its Cute theme, which is so violently loud I could not help but extract its color palette to illustrate just how furious its creator must have been. ![Oyakodon Cute Theme Palette](https://i.snap.as/AFbihGYF.jpeg) Truly diabolical design, there. For better or worse, Oyakodon doesn’t really work very well in its current state, but it _does_ work. ![StarPterano for iOS](https://i.snap.as/D34uONFT.png) ### [StarPterano](https://apps.apple.com/us/app/starpterano/id1436972796) I very vaguely remember happening upon StarPterano in my very first moments on Mastodon, so finding it still published on the App Store - buried as it was - brought me a particular sort of joy. If I’m not mistaken, it holds a special personal accolade as the only iOS app which has caused me to involuntarily shriek. This might sound like an insult, but it is actually the peak of my praise. I believe my knowledge of iOS development safely allows me to suppose that StarPterano was built with complete disregard for any established UI element libraries. That is, the familiar toggles and buttons developers rely on to standardize the iOS experience were cast aside entirely in favor of handbuilt, translucent buttons of a sort of neon quality which call menus and text entry fields no less alien to the platform. The most astonishing bit, though, is that it _works_. On my 12 Pro Max, it’s exceptionally smooth, in fact. I would imagine those _real_ iOS developers among you should find [StarPterano’s GitHub Repository](https://github.com/pgostation/StarPterano-iOS5) particularly interesting, considering. In the interest of preservation, I have [forked it](https://github.com/softwarehistorysociety/StarPterano) as well, and fully intend to dive in to its code, one of these days. The audio player embedded above cites a three-second .mp3 file in the repository which perhaps once accounted for the “Sounds” toggle still found in the Settings menu of StarPterano’s current build. I couldn’t get the app to reproduce it, which is actually what set me on the hunt that led to the repo. ![Ore2 for iOS](https://i.snap.as/Ln2L96Qa.png) ### [Ore2](https://apps.apple.com/us/app/ore2-for-twitter-mastodon/id1107176601) Ore2 is another (apparently) non-English-native Mastodon client focused on consolidating Mastodon and Twitter within a single space. Alongside Stella, it's the second of the first two apps I've come across in a very long time which allows one to post to both services simultaneously. Considerable work was obviously done on making its timeline-based tabs switchable with touch. Personally, I very much prefer my current crossposting configuration via [this (generously-public) web tool](https://crossposter.masto.donte.com.br), but I am all but certain those users exist who will find Ore2’s setup preferable. ![tooot for iOS](https://i.snap.as/b0GaeasV.png) ### [tooot](https://apps.apple.com/us/app/tooot/id1549772269) Inadvertently, I have saved the best story of the lot for last. Developer and researcher Zhiyuan Zheng documents both the narrative context leading up to the creation of his first app, [tooot](https://apps.apple.com/us/app/tooot/id1549772269), as well as the philosophy behind its design in “[Building my first app - toot](https://xmflsct.com/2021/tooot/).” His reference to the downfall of a prominent social app in mainland China called Douban - and the “Douban Refugees” which resulted - are alarmingly missing from all English news organizations save for [a single _Quartz_ article](https://qz.com/1726194/the-decline-of-douban-an-online-sanctuary-for-chinas-liberals/) from October 2019. He eludes to a “boom” of Mastodon adoption in the past few years and cites a lack of “user friendly mobile clients” which I can only assume to be a conundrum specific to China. “With the aim of contributing to the community and to this movement, I decided to take my quarantine time to build an enjoyable mobile client for Douban Refugees,” he explains. He notes that decentralized platforms have universally rejected algorithmic recommendation if for any other reason than “without centralized computing power, such [a] recommendation service is also not that feasible.” “Adapting” back to a linear timeline in a manner which still encourages exploration was clearly a major design consideration for tooot. > The core consists of 3 needs: 1) what I can read; 2) what I can write; 3) what I have done. Obviously, I very much appreciate Zhiyuan writing publicly about his thoughts on decentralized social and sharing specific considerations in his app’s design and look forward to continued updates. ## Get Bent, Big Social A few universal truths among these apps stand out as obligatory mentions. First - in comparison with their Proprietary, Big Social counterparts - they are all _ridiculously_ **frugal**. Not a one weighs over 40mb, while minor (unexplained) updates to the official Twitter app [often exceed 100mb](https://twitter.com/NeoYokel/status/1393294957352468494). They are all astonishingly **robust** - I did not experience a single crash in the course of normal testing these "alt" social apps- even from the beta builds - while I distinctly remember the official Twitter app crashing several times over this period, even after I deleted and reinstalled it (an accepted maintenance requirement for anyone using it heavily for its entire history.) Also, on the topic of the platform, itself, they are also made absurdly **interoperable** by the ActivityPub standard. My [PixelFed](https://pixelfed.social/DavidBlue) posts show up seamlessly on their timelines among content from [Diaspora](https://diasp.org/), [Pleroma](https://pleroma.social/), and Mastodon, itself. https://twitter.com/NeoYokel/status/1393294957352468494 The overwhelming impression I was left with after testing these apps was one of unwavering competence, cleverness, and true innovation. How many different ways can I possibly conjure forth in order to communicate this? I, David Blue - the vain fucker with a precollection for the most superficial variables of software design *so* healthy that I have on multiple occasions designed whole, years-long workflows around specific applications *entirely because of their available color palettes*... **It is I who requires you to take a good fucking look**, because this list of decentralized, largely open source, federated social software is a goddamned fashion show. ## Continuing to Explore Social Ownership ![Mastodon Account Wordcloud](https://user-images.githubusercontent.com/43663476/122717470-43f08a00-d231-11eb-890f-dfa3ff33b65d.png) This couldn't be "just" an app guide - I think I have thoroughly accepted this, by now, just in time for some conclusionary remarks. Somehow, the subject I originally tackled specifically because I thought it would be quick, rudimentary, and straightforward has become yet another personal journey. It'd feel a bit preposterous to declare any one of these apps to be *life-changing*, but - in every sense of the term, in contemporary, inevitably social media-informed life, they do indeed constitute a form of radical, ideological wellness. Each of them managed to remind me of a different minute delight found within a developer-user dynamic made up of thoughtful and effective minds working to contribute original and valuable experiences, first. Most noteworthy of these little freedoms: the realization that the upcoming "official" Mastodon app along with any future new options are exclusively a positive thing *for the user*... None of these apps were conceived to gobble up market share because the market is fundamentally, inevitably, uncompromisingly *infinitely shared*. I don't know anything about business, but I *do* know that relief from the burden of considering proprietary multivectored development intentions has been personally breathtaking. I can only hope the reciprocal compensation is happening at even a fraction of what it "should" be. From another essential direction, I hope I have communicated that they're far from curious, "niche" or vanity side projects, now. When I used the term "mature" in introducing this little arena, I very much meant it - these "alt" social clients developed almost exclusively within single-person-led projects now make the Twitter for iOS app look ugly *and* fucking broken. "Giving social networking back to you" has never been more resonant. Yes, it really is Toot!'s "take a break" blue screen, Amaroq's mysterious Awoo mode toggle, iMast's music app integration, Mercury's configurable timelines, Metatext's native solidity, Tootle's custom colors, Tusker's Digital Wellness controls, DUDU's elemental readability, Roma's quiet resurrection of Mast's UI bravado, Stella's utterly bizarre visual departures, Fedi's odd animated UI behaviors, Tootoise's consideration of *pace*, B4X's unfathomable elements, Ore2's parallel timelines, tooot's development story, and Oyakodon's adorable rough edges that have made my online life *measurably*... *immensely* better, these past weeks. At the forefront of this perception is undoubtedly the comparatively extensive *control* over my social experience as a user offered by the diversity of mobile experiences these applications offer. Those of you who haven't yet signed up for Mastodon: ==you are missing the fuck out==. I am being *actually* pampered, now, in World Wide Web terms. You are [*so* welcome](https://bit.ly/dbmastodon) whenever you're ready - the water is nice and warm, as they say. ## ...Party One ![Mastodon for iOS](https://i.snap.as/sHTDx8AV.png) Yes, you are looking at the currently in-development **"*Official*" Mastodon app on iOS**, coming very soon to the Awful App Store. You can join me in testing the app right this very moment by contributing to [the Mastodon Project's Patreon](https://www.patreon.com/mastodon). Though I do plan to publish [**a dedicated review**](https://bilge.world/mastodon-ios-app-review) on its release date, what I'll say for now is that it's very cute, includes *the* most gorgeous media player I've ever seen on an iOS app, and is as distinctly clever as any of the third-party family we've just visited, all whilst maintaining an expert's aim at its evangelist purpose. https://www.youtube.com/watch?v=bD8GQvNrE7E The surprise that threw me over the edge to a genuinely pitiful extent: the official Mastodon app already includes full **Bluetooth keyboard shortcuts integration on iPhone!** --- ## Those Links, One More Time + a Few More * [joinmastodon.org/apps](https://joinmastodon.org/apps) * The dedicated [GitHub List/Repository](https://github.com/extratone/FediiOS) * Direct link to [the Full List in the Repository](https://github.com/extratone/FediiOS/blob/main/README.md) * [All collected documentation](https://github.com/extratone/FediiOS/tree/main/documentation) * My [personal notes document for this guide](https://github.com/extratone/bilge/blob/main/notes/APP%20Notes%20-%20The%20State%20of%20Mastodon%20Clients%20on%20iOS.md), as is #### Video * My [one-take video demonstration of the upcoming Mastodon for iOS app’s adorable, perfectly intuitive onboarding process](https://youtu.be/bD8GQvNrE7E) * The [App Authentication Race](https://youtu.be/g2MSr_7J1GY) (clipped from a Twitch stream.) * My [YouTube demo of Toot! from 2019](https://youtu.be/LdBFMibyh3Y) * My [sub-60-second showcase/demo of Tootle](https://youtu.be/WBZtmOqyk8c) * "[The Official Mastodon App BETA Edition](https://youtu.be/MkaJI518uhw)" | Geotechland on YouTube #software == # Mastodon for iOS Review ![Mastodon for iOS](https://i.snap.as/sHTDx8AV.png) Indeed, **[it is here](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974)**. Essentially, Mastodon Commander-in-Chief Eugen Rochko and his team developed a whole, exceptional iOS app in the span of time it took me to write the [third-party Mastodon iOS app showcase](https://bilge.world/mastodon-ios-apps) just before this item in *The Psalms*’ feed. If you’re new to this conversation, perhaps it’d be best to start in February of this year, with [Eugen’s announcement of the “official” Mastodon app’s development](https://blog.joinmastodon.org/2021/02/developing-an-official-ios-app-for-mastodon/) on the official Mastodon blog. “We need an official Mastodon app that is free to download and that is specialized in helping new users get started on the platform,” argues Eugen, in response to feedback indicating “the lack of an app that carries \[Mastodon’s\] name in the app stores trips up newcomers.” My first thought regarding the idea of an app *Specialized* in onboarding cynically jumped to the assumption that such a design choice would result in a less-than-ideal experience for those of us who already call Mastodon our home. However, as a [Patreon](https://patreon.com/mastodon) supporter of the Mastodon Project, I’ve had the privilege of testing the final result for the past five weeks, and I can tell ya… It is so much more than that. https://youtube.com/watch?v=bD8GQvNrE7E ## Onboarding I’d like to offer the [demo video](https://youtu.be/bD8GQvNrE7E) embedded above as an unusually succinct (from me) demonstration of the delightfully well-considered onboarding process. I would go so far as to declare it **the best all-around social network onboarding process currently available**. Having very recently slugged through the official Twitter app’s equivalent, the frames greeting new Mastodon users within this app are unbelievably exceptional. ![Onboarding in Mastodon for iOS](https://i.snap.as/P5oxTAg9.png) First, we’re presented with a list of Mastodon instances (servers,) organized by category. Those friends of mine to whom I’ve failed to “sell” Mastodon have cited server selection as a major obstacle of confusion and I can’t imagine a better means of addressing it than the tool offered by this app. It’s beautiful and fast in a way previous utilities - like [instances.social](https://instances.social) - cannot be, especially for those most lacking in attention. Once we’ve chosen a server, we are immediately presented up front with a clearly readable document containing the “ground rules” set by its administrators. In my experience, these rules tend to be notably **easy-to-understand** and **not open to interpretation**, as if they were written primarily in the interest of community wellness rather than to construct a defense from legal action. After we’ve agreed to the relevant terms of the server we’ve chosen, it’s on to account creation, which offers the options to which citizens of the social web have become accustomed - profile picture, username, email address, and password - but notably without the [inexplicable errors](https://gimletmedia.com/shows/reply-all/n8hxzr7/176-twicarus) exhibited for years in Big Social’s equivalent functions. Immediately following this frame, we are prompted to check our inboxes for a confirmation link. The explanation for my dramatic exclamation in the demo video comes down to Mastodon for iOS’ implementation of the operating system's intra-app linking function (with the syntax `mastodon://`,) which (in my experience) is hardly ever utilized correctly. The result is that I was able to click the incoming confirmation link within Outlook for iOS and then proceed *within the Mastodon app* instead of being bounced off to a web browser. This integration should not be remarkable, but - in the context of iOS development as it stands in 2021 - it most certainly is. After confirmation, we are offered the option to explore the app’s “Find people to follow” function, which is informed by "a mix of most followed accounts and most-engaged-with accounts from recent times that post primarily in your language," as [Eugen explained](https://mastodon.social/@Gargron/106674282886448440) in response to an earlier draft of this post. Indeed, the remarkably relevant results offered to me in the demo were not actually remarkable at all: I just know a lot of folks on mastodon.online - especially those who post the most. That's the whole bit! If you need "proof," [here is the finished result](https://mastodon.online/@keys), but obviously, I would advise you download the app and try yourself. (It's a cliché, yes, but seriously... What do you have to lose?) ![Trending & Profile Editing in Mastodon for iOS](https://i.snap.as/F21Jm29Q.png) ## Advantages One of the distinctly missing functions among the breadth of third-party offerings has been the ability to edit one's profile information from within the app. Mastodon for iOS addresses this in a particularly visually impressive way (see image embedded above.) Some also have yet to be updated with support for Polls, which the new app encompasses in a manner that puts Big Social's equivalents to shame. The ability to vertically drag individual options in the compose interface, for instance, reflects insight only gained by *actually using these features*. The result is definitively the best means of crafting a Mastodon poll, for what that's worth. ![Polling in Mastodon for iOS](https://i.snap.as/NKHk8e1W.png) ### Shortcuts As of this writing, Mastodon for iOS also includes Siri Shortcut support by way of a single action, entitled "Post on Mastodon." Mostly in the interest of demonstration, I have created and published two Shortcuts around this action on RoutineHub: 1. "**[Mastodon Share](https://routinehub.co/shortcut/9776/)**" - a text-only Shortcut meant for the Share Sheet. 2. "**[Mastgur](https://routinehub.co/shortcut/9781/)**" - a more complicated Shortcut utilizing Imgur actions to get around the current Mastodon for iOS action's lack of multimedia support. ![Siri Shortcuts for Mastodon for iOS](https://i.snap.as/H212I22P.png) Mastodon friend Emma's [customization of the latter](https://mstdn.cloud.themaymeow.com/@emma/106656610574981709) is a great example of how quickly one can tailor these (and all other) Siri Shortcuts to their own particular use. ## Challenges As of this writing, coverage of the app’s release amounted only to [a single news item from ](https://www.theverge.com/2021/7/30/22602275/mastodon-decentralized-social-network-official-ios-app-launches)*[The Verge](https://www.theverge.com/2021/7/30/22602275/mastodon-decentralized-social-network-official-ios-app-launches)*[’s Adi Robinson](https://www.theverge.com/2021/7/30/22602275/mastodon-decentralized-social-network-official-ios-app-launches), which notes the omission of local/federated “firehose” timeline views out of a desire to “reduce the potential for conflict with Apple.” (see: the Inc.’s [blatantly inconsistent enforcement](https://litchie.com/2021/07/idos2-will-be-gone) of its store policies in the past few months.) As a Mastodon user who *does* occasionally engage with my local and federated timelines, I find this decision reasonable considering the wellspring of third-party apps on iOS which *do* support said views and the app’s explicit focus on brand new, fragile users. My personal experience disagrees with Eugen’s description of these timelines as a suboptimal means of capital-D Discovery, however, considering I’ve found \~70-80% of [the 600+ accounts I follow](https://github.com/extratone/bilge/blob/main/curation/mastodonfollowing.csv), there. (Though it should be noted that I *do not* represent any majority in my social media-specific preferences or behavior.) Though the onboarding process’ people to follow finder is pretty darn stellar, I worry that our hypothetical new user has a high chance of landing on a more-or-less empty timeline. (For many, I’m sure this would be a welcome relief, at least initially.) A well-limited Local timeline view, at least, might prove a valuable upcoming addition. Regardless, I am 100% positive these omissions from the *initial release* version of this iOS app do not constitute some new ideological opposition to the greater concept of Federation. ![Composition Details in Mastodon for iOS](https://i.snap.as/7UTf6Qyx.png) Naturally, a recurring complaint about the app is already surfacing in hashtag iOS on the Fediverse: [no multiple account support](https://mastodon.social/@wiredfire/106672087623244223)?! Perhaps you’ve already written me off as a mindless devotee, but - especially after exploring [the whole breadth of Mastodon apps available on iOS](https://github.com/extratone/FediiOS) (all of which support multiple accounts) - the significance of this omission as a target for gripes seems laughably minuscule. Considering I have yet to delete any of the 20 apps I tested, I personally feel *pretty well covered* when it comes to checking my (embarrassingly numerous) alt accounts. It’d be one thing if longtime users/powerusers were left wanting for available apps designed for us, but we have a more diverse, quality palette to choose from than any other social media protocol. To decry this app - which was explicitly designed from the very beginning for new users - for skipping a function offered by *more than a dozen alternatives* is patently absurd. If you’ve got multiple accounts you feel the need to check regularly, order them by frequency, authenticate all but number one in the free, dependable [Amaroq](https://apps.apple.com/us/app/amaroq-for-mastodon/id1214116200), and save Mastodon’s new app for your main. ## Delights The “relentless originality” I spoke of in my *third-party* showcase is no less exemplified in this first-party Mastodon app. Its color palette is a welcome departure from Tootsuite’s (the mother web application,) while still remaining definitively recognizable. The artwork dispersed throughout the app is adorable, as you’ve seen, and its bespoke audio player is without a doubt my favorite of such devices. ![Mastodon for iOS Audio Player](https://i.snap.as/IRzEOzXl.png) Custom audio notifications especially stood out among those third-party apps, so the project-sourced app’s inclusion of the iconic Mastodon “boop” is yet another small inclusion that adds a surprising amount of substance to the whole experience. Though quite specific to myself and the few other iPhone users who regularly command our handsets with physical keyboards, the Mastodon app’s inclusion of **Bluetooth keyboard shortcuts** provoked a moment of true euphoria when I first discovered them. As per my ‘*[iPhone and the Bluetooth Keyboard](https://github.com/extrakeys)* project, I have bestowed upon Mastodon for iPhone semi-officially “our” Universal Clacker Award for its consideration of us “full keyboard-strapped cellular phone users.” (As of this writing, the award is just a “trophy.”) ![Mastodon for iPhone - Universal Clacker Award](https://i.snap.as/H7NjCvd7.png) ### Mastodon for iOS Keyboard Shortcuts | Action | Key | |:------------------------------:|:----------:| | Open Compose Window | ⌘ + N | | Send Toot | ⌘ + Return | | Home Timeline/Refresh Timeline | ⌘ + 1 | | Explore Tab | ⌘ + 2 | | Notifications | ⌘ + 3 | | Favorites | ⌘ + F | | Settings | ⌘ + , | | Next Toot | j | | Previous Toot | k | | Toot Details | l | | Favorite | f | | Boost | r | An important consideration to inform the perspective through which we analyze such an app, I’d argue, is that **this app could have been very bad**. Those who bewilderingly measure the success of social networking services/protocols by their profit growth viability, alone, may well suggest it *should* have been bad. Had it been just mediocre, half-assed, and/or full of bugs, I’m sure I would still have paused everything to write and publish this review. The reality, though, is nothing less than exceptional. Unlike some of the third-party examples I discussed, I would argue Mastodon for iPhone to be an “objectively” excellent piece of software in that I cannot imagine any one sort of iPhone user *not* finding it refreshing in some way. I would sincerely worry for the person who feels nothing at all from the artwork, the bespoke UI, or the general care exhibited in its craftsmanship, *but* they wouldn’t have exhausted reasons to use it. From the very first beta release I installed to the first release version pushed to the App Store just yesterday, the app has *never* crashed, and the single bug I encountered was documented and fixed before I had time to begin a feedback report. While Twitter’s official iOS app does include a few Siri Shortcuts actions, they are all made immediately useless by a universal command to open the app, itself. Remove the obsessive insistence that any/all functions only be performed with your app in focus - even when it surely makes no difference to your ad tech mechanism - and you have Mastodon’s single action, “Show When Run” toggle included. I’m not sure what I expected from an “official” Mastodon app upon first reading that winter blog post, but what I’ve been delivered is quite a gem. Regardless of how its specific feature omissions may strike your ideological organ(s,) you cannot deny that great time and energy was invested in this app. ![Mastodon for iOS QR Code](https://i.snap.as/hqmcJQGx.jpg) ## Notable Hyperlinks * The newly-publicized [GitHub Repository](https://github.com/mastodon/mastodon-ios) * The app’s [Product Hunt Page](https://www.producthunt.com/posts/mastodon-for-ios) (Congratulations on “#1 Product of the Day!”… I think?) * [The Mastodon Project Patreon page](https://www.patreon.com/mastodon) #software == # Against All Strategic Social ![lol Artifact](https://i.snap.as/vopPn5mt.png) ## A rushed request for pause & reflection on *why* we use social media. I have not been able to follow any more accounts on Twitter - from [@NeoYokel](https://twitter.com/NeoYokel), my primary, eldest account - for several years because of a limit implemented at some point by Twitter and documented in [this help document](https://help.twitter.com/en/using-twitter/twitter-follow-limit). Considering the breadth of the mechanic's significance for other users, I have often been compelled to explain this to new followers. Recently, it occurred to me that a handy, brief explainer page might streamline this process, so I created "[Why I Didn't Follow You Back](https://gist.github.com/extratone/8b762de50de414f8a4be05f9b0407fd8)" - in both GitHub Gist and Medium post form. Other than a lack of reciprocity in engagement which I can only speculate to occur in the minds of the opposite parties involved in this dynamic, this limitation does not detract from my Twitter life, as I exclusively consume content in Twitter Lists (which I have spoken about extensively, elsewhere.) https://open.spotify.com/episode/4veXFMCFGgz0Fjnx7UBkpl A big theme in my 20s has been coming (slowly) to terms with the fact that I built my entire adult social life around a single, centralized social media Web Site. I mentioned this in [my Tweetbot 6 review](https://bilge.world/tweetbot-6-ios-review), recently, but - as I also strive to be a more sincere person and spend more time adding value to *others*’ lives - I’ve concluded that it is the time now to speak as openly and vulnerably as I can about my “Social Media Methodology.” Most of the resulting insights will not be new information, but I continue to encounter greater and greater confusion in the face of my well-meaning behavior online and I have decided to stop disregarding it. This is *not* an essay about how to “optimize” your social media use. It is - at least in part - a sort of manifesto against the very idea of designed online behavior beyond simply **being considerate** in a sense that predates even the spoken word. I, myself, have occupied a position well on the *chaotic* side of the spectrum. You could say I have been mostly *chaotic neutral* throughout my 12 years on Twitter thus far, and am actively working toward (and advocating for) *chaotic good*. Perhaps inevitably, I'm going to wade into some experiences with a few specific social media phenomena which I am particularly reacting to, here. https://twitter.com/NeoYokel/status/753114804617932801 ## Assumptions at bat 1. For the vast majority of mainstream social users, no amount of \[insert vague overused marketing jargon noun\] will *ever* result in a substantial accumulation of money/"influence" (which seems to be the diluted zag of "POWER" of the moment.) Those interested in learning about "marketing" should know that no authority on the subject would ever tell you to *start* with Twitter - this I can say with certainty. 2. Though Twitter was designed upon certain frameworks with certain rules which form quantifiable formulas where they are dependent upon a user's choices/methodology to produce results which we *have*, indeed, become more adept at predicting with study over time, it was *not* created as a *game to be won*. Perhaps more importantly, the "prize" of "winning" in the sense held by those who resist this assumption (notoriety, "influence," relevance) has continued to prove ultimately worthless (or worse) time and time again throughout the very short history of the cultural element as it exists today. 3. If both 1 and 2 pass scrutiny, the only remaining reasonable prerogatives in one’s social media use is to engage with *both* strangers and friends in a manner which generally **adds value to the lives of all involved**. 4. 3 is not only *possible* - it is easily *reproducible*. Most of my evidence is centered around my own experiences, but I believe - if I took the time - I would be able to find infinitely many publicly-facing examples. 5. Though I am going to use my own methods to demonstrate 4, **neither my ideas nor my behavior are the only means of interacting positively on social media**. https://www.youtube.com/watch?v=7A-Gzn0wu3Q I've come to the conclusion fairly recently that I need to become brutally frank about the discrepancies I've observed between others' accounts of their social media use and my own as soon as possible. The great, ambient grousing summoned throughout The Plague from even the first picogeneration to be born *directly* into The Social Web really challenged my assumptions about its *actual purpose* in the day-to-day lives of those in the center of the adoption curve. *You mean to tell me you've been spending all that societally-alarming time on your phone... On social media services... and you haven't made a single international friend? Or happened across a single niche community surrounding some bizarre practice or knowledge you'd long thought you were entirely alone in? What exactly have you being doing with all that tapping since your toddlerhood, then?* I had absolutely no clue how utterly *ineffective* the vast majority of n̳o̳r̳m̳i̳e̳s̳ still are at using social media for its general purpose in the most abstract sense: "*human connection.*" The essential realization toward which (I desperately hope) the largesse of America is being carried by conversations around *[An Ugly Truth](https://www.harpercollins.com/pages/anuglytruth)*, as well as countless lower-profile essays, features, academic papers, and general shit shooting is that the responsibility for this ignorance rests *solely* on the platforms who systematically reformed the controls originally handed over by default to early adopters like me. I would love (for both selfish and very humanitarian reasons) to be able to proclaim some precious, one-of-a-kind genius as the sole differentiator between my complete confidence in my ability to design and maintain social software configurations that have kept my online consumption *entirely* free of unwanted encounters and the amount of regular involuntary bullshit I hear described in the day-to-day online existence of everyone around me. The truth, I suspect, involves my being of the most privileged category of human in Western civilization combined with the group of high school friends who adopted and socialized me. (A story for another permalink, certainly, if not my equivalent of *Trick Mirror*.) \~\~More importantly, perhaps, I don't think I can recall a single instance of sincere malice from within myself toward anyone who'd actually converse with me. On the occasions I have been all huffy and confrontational, I do not remember a single example in which I was unwittingly ejected from a conversation left feeling *unsatisfied*.\~\~ Over the past few months, I've started a few Posts for this blog regarding Twitter, its properties, and its recent feature addition frenzy which I'll probably never finish. I finished the first and narrowest one - the aforelinked Tweetbot 6 review - but the (debatably) most important one - highlighting how irresponsibly and distastefully [Twitter butchered Periscope and built Spaces atop its technology](https://github.com/extratone/bilge/issues/79) - would make less and less sense as time goes on. I definitely got caught up in the "death" of the live video streaming service, fueled by my now quite old desire to celebrate it, which I will hopefully accomplish *eventually* in a very sentimental essay. If I can successfully link them editorially, the subject encompassing Spaces - social audio's "moment" - would also include mention of RSS, "Podcasting" (the term describing the medium,) Spotify, and Clubhouse, inevitably. Instead of counting on my future self entirely, however, I'm going to begin by discussing that last one. ![Clubhouse Blasted Logo](https://i.snap.as/hf2fIH9M.png) ## The (‽‽‽th) Social Audio Renaissance Exactly one month ago, I finally [broke into Clubhouse](https://www.joinclubhouse.com/@davidblue) thanks to a random kind stranger on Twitter who preferred not to be named. April 25th was the first time I set eyes on the app - though I could've (and usually would've) looked up screenshots and/or browsed the litter of how tos available, I did not. By this time, I'd accumulated quite a bit of experience with Twitter Spaces - derided universally by tech media as a "Clubhouse clone" - and therefore assumed the original would be "better," at least in pure feature terms. What I found, however, was even *less* evidence that anyone building Clubhouse has been/is/intends to be a regular Clubhouse user. Spaces, at least, included five emoji reacts for listeners from the beginning: 💯✊✌️👋😂. Clubhouse's exclusive means of Listener-Host interaction is Hand Raising, which is essentially requesting to speak, even though the hand waving emoji is *[literally featured in their logo](https://joinclubhouse.com/press)*. (The fact that neither have thought to add 🙌 is absolutely inexcusable/inexplicable.) https://twitter.com/NeoYokel/status/1344473573226762241 In case you weren't aware, I appear to enjoy trying out new social services. My password manager is full of literally thousands of credentials for social media apps/services/startups - most of which have undoubtedly collapsed or been absorbed by a larger entity. Since generating said credentials has become such an easy process, especially, I tend to immediately sign up for an account on just about every one I hear about. (I even have [a Parler profile](https://parler.com/#/user/Extratone) I cannot bear to actually look at.) Generally, I sign up, follow anyone I know from elsewhere if given an account-bridging option, poke around enough to figure out whether or not the service in question could add something to my online existence, and end up leaving for good. Most of these services are *not* unique in any way, to a perplexing degree. A few - like Pinterest - gain success separately as I give up on trying to integrate them into my life. The miniscule remaining percentage, though, end up becoming a part of my daily existence. The most *recent* of these dates back to April 2017, when I first discovered [Mastodon](https://bilge.world/eugen-rochko-interview). https://twitter.com/0kbps/status/1393792313936146433 ### The Feature Story "Social Audio" did not begin with Clubhouse. Anchor originally launched as a "[public radio](http://web.archive.org/web/20160209224846/https://anchor.fm/about)" app, believe it or not. *Extratone*'s channel was actually the [first to be featured](https://www.patreon.com/posts/archived-our-day-11592398) in their Music section, once upon a time. Frankly, that happening was the most positive outcome of my social media service accumulation habit. More recently, [Stereo](https://stereo.com/davidblue) launched, describing themselves as "[the premier LIVE broadcast social platform that enables people to have and discover real conversations in real time](https://stereo.com/about)." Bizarrely, the most legitimate media coverage I could find of Stereo was [from ](https://www.glamourmagazine.co.uk/article/stereo-app)*[Glamour UK](https://www.glamourmagazine.co.uk/article/stereo-app)*, and its author definitely spent less than a day actually using the service. Adam Corolla remains #1 on its earnings leaderboard and its [conversation export feature](https://youtu.be/0GfGLUbc6fw) is a personal favorite. The [Big ](https://www.wired.com/story/the-future-of-social-media-is-all-talk)*[WIRED](https://www.wired.com/story/the-future-of-social-media-is-all-talk)*[ feature on the subject](https://www.wired.com/story/the-future-of-social-media-is-all-talk) from December of last year does not mention Stereo but lists three other "alternatives:" [Wavve](https://wavve.co/), [Riffr](https://riffr.com/), and [Spoon](https://www.spooncast.net/). (None of which are actually competitors/alternatives. Sorry, Arielle.) https://twitter.com/NeoYokel/status/1388936080645312520 I probably shouldn't proclaim to be an authority on social audio, but I am definitely a veteran. From that context, I must say that Clubhouse is horribly unoriginal - not only in the sense that "successful" business implementations of others', previous ideas tend to be diluted versions of the original, but almost pitifully so. I will commend the app's developers on their somewhat-thorough release notes (even though they can be viewed only when first opening the app after an update instead of *in the designated space on the App Store*,) but the extent of *linkable* Clubhouse documentation amounts to [eight blog posts](https://joinclubhouse.com/blog) and a "[Community Guidelines](https://www.notion.so/Community-Guidelines-461a6860abda41649e17c34dc1dd4b5f)" Notion page. Though I've only been a user for one month, I wonder what the fuck they've been doing since launch, given how sparsely-featured the app is at this moment. There are Notifications, Profiles, and Clubs - the latter of which cannot be created until a user surpasses an unknown threshold of renown(?) on the app. Competent calendar integration may be the service's singular innovation, though support for Outlook has yet to be added. The Big Issue, though, is finding a "talk" to attend that will not drive you utterly insane... ![Clubhouse Bullshit](https://i.snap.as/RypjcP6M.png) ### The Grand Delusion I wrote the assumptions at the beginning of this Post in a single go after [a particularly icky Sunday Clubhouse experience](https://twitter.com/neoyokel/status/1388930367671910404) out of a deep concern that'd been growing since first exploring the app. The content I've found there is not at all what I expected, to be honest. I've found it almost entirely indecipherable, which makes critique beyond [just fucking screaming](https://twitter.com/NeoYokel/status/1388936080645312520) difficult. *The New Yorker*'s Anna Wiener did a much better job than I could realistically manage in "[Clubhouse Feels like a Party](https://www.newyorker.com/news/letter-from-silicon-valley/in-the-clubhouse):" > There was something pleasant about meandering from conversation to conversation, as if I had walked into my own home to find a conference in full swing. But I also wondered, Why did I let all of these people into my house? > > ... > > It is hard to shake the feeling that everyone on Clubhouse is selling something: a company, a workshop, a show, a book, a brand. More recently, her publication's nemesis declared "[The Clubhouse Party is Over](https://www.vanityfair.com/news/2021/04/the-clubhouse-party-is-over)," but I wouldn't know. None of my friends have ever Tweeted a Clubhouse link (determinable via [this Twitter search](https://twitter.com/search?q=%22joinclubhouse%22&src=typed_query&f=live&pf=on).) Very few of the tech industry celebrities I follow have, either - pretty much just [Chris Messina](https://twitter.com/chrismessina) and [Jason Calacanis](https://twitter.com/Jason). This is noteworthy because I believe [my list of followed accounts on Twitter](https://twitter.com/NeoYokel/following) to be particularly diverse. I actively followed accounts across my various interests from ages 15-25 (when I hit my [follow limit](https://bit.ly/dbfollow)) and basically *never unfollowed anyone*. I would imagine there are several accounts within that list which I would be ashamed to be associated with, now, and yet none have shared a Clubhouse link. Reading any further into this observation would require actual data journalism, which I'll leave to the pros. It does prompt the question, though: if nobody I've ever known or been interested in on Twitter is using Clubhouse, *who* in fuck *is*? Frankly, I do not understand the business incentive behind the massive duplication of other software/services defining featuresets of late. I see that Instagram stories have eclipsed Snapchat's in terms of [sheer user count](https://money.cnn.com/2018/06/28/technology/instagram-stories-users/index.html), but I do not understand why its leaders would choose to fuck their legacy by such blatant idea theft, much less why [Twitter](https://blog.twitter.com/en_us/topics/product/2020/introducing-fleets-new-way-to-join-the-conversation.html), [Facebook](https://techcrunch.com/2017/03/28/facebook-launches-stories-in-the-main-facebook-app), [Patreon](https://blog.patreon.com/lens/) and even fucking [LinkedIn](https://www.inputmag.com/culture/nobody-wants-stories-on-their-linkedin-feed) have implemented nearly-identical featuresets. Though I know Ben Thompson's word on these matters should be easily digestible, I haven't been able to actually take a bite. For the End User, especially, I cannot even begin to conceive of what the leaders behind these decisions imagine the day-to-day experience of the average social media user looks like in the near future. *How many apps* am I going to cycle through to get a single story-type piece of content satisfactorily shared? Personally, I currently use three, and sharing a single bit individually across all of them one-by-one (since the current state of APIs is not conducive to consumer-targeted mass-sharing tools) makes me feel utterly insane. https://youtube.com/watch?v=7uFR_bSxhTg My lack of understanding would be meaningless if it were not so widely shared among my peers - young, brilliant, multifaceted, and distinctly original creators who (in large part) make stuff on the internet full-time. *They* are who I'd actually plan ahead to hear from in a live broadcast setting like Clubhouse or Twitter Spaces, but Twitch seems to do just fine. For audio broadcasts, specifically, the *hip*, fresh sources which come to mind are all distinctly Open Web: [Datafruits.fm](https://datafruits.fm/), [Solarpunk.cool](https://solarpunk.cool/magic/computer/club/), [Poolside.fm](http://poolside.fm/), and my Mastodon friend [Vanta's stream](https://radio.schizoid.tech/). The potential of the term "social audio" is truly being explored by projects like [Rave.DJ](https://www.patreon.com/RaveDJ) - a homegrown, Patreon-funded service for sharing mixes/mashups. On a smaller scale, the sky is the limit for [Whyp.it](https://whyp.it/) as a pure audio playback/annotation tool for creators (as developed by Brad Varol, whom I [interviewed in March](https://lnns.co/ZSadwt3Hnfi).) Compared to these, most of Clubhouse's communities seem bleak at best. As I may or may not get around to arguing thoroughly about Twitter Spaces, these services' fundamental, near-complete disinterest in **Discovery** of new voices and their subsequent servitude to only their most popular users should be extremely worrying for us all - including those who benefit most. ![Tinder Obfuscation](https://i.snap.as/DhF352N3.png) ## The Consequences of Strategy I have more than my fair share of stories and peeves about dating apps. On several occasions, for instance, I have corrected those who cite Tinder as the origin of the directional swiping interface, explaining that it was actually the now-defunct service Hot or Not who did so some 15 years ago. (Why on Earth I am compelled to do so, nobody knows. Not even God.) Somehow, though, I think most of us can agree that Tinder is the *least shitty* of the explicitly hookup-ish spectrum of the genre. Or at least, I thought so, until I happened to spy the "Photo Tip" embedded above beneath a preview of my profile on the iOS app. The innocuousness of this advice, which surely would not be dispensed in *any* other context without immediately screaming malice, has been on my mind ever since. It is not the devil who tells you to make sure a passing potential match doesn't immediately learn you have children, but the Marketing Man. (Yes, they are distinct. I would explicitly discourage that particular sort of demonization, mostly because it has proven completely ineffective as cultural critique.) I am in no position to relevantly explore the topic of Society & Sex, generally, other than to insist that most people on Tinder *in my area*, at least, are not looking to *leverage* it *for the dick*. They are looking for dates, and a good many are working class single mothers. To be clear, I’m not trying to suggest anyone in this demographic would be “fooled” by such a suggestion. Offended, perhaps, and/or activated in such a way that would lead to them replacing all of their profile’s pictures with photos of *just* their children. Regardless, this social group defined by a distinct lack of free time, if nothing else, represents an antithesis to the practice of *optimizing* one’s *swipe ratio.* I think I’ll stop there with this *Chapter of David Blue’s Tech \~\~Gripes\~\~ Grapes* and pledge to arrive back again exclusively through haphazard/unintentional means, if I ever do. #media == # Siri Speech Synthesis in iOS 15 ![Siri Speech Synthesis Banner](https://i.snap.as/8ZsLlxLp.png) ## Bewilderingly, Siri is genuinely great at something they were never designed for. The new “Make Spoken Audio From Text” action has finally been fixed. When I first published my [iPhone & Music guide](https://bilge.world/iphone-ios-music-apps) this past April, I’d been pretty active in *[AppleScoop](https://discord.gg/DxQ9jry8J3)*[’s Discord Server](https://discord.gg/DxQ9jry8J3), so I decided to share it there. Editor-in-Chief Flynn - a ridiculously talented web developer *and* successful independent media entrepreneur - responded “I’m listening to it with the speak feature right now. Is it your voice or someone else? 😛,” Gourd bless his soul. Here’s the specific audio he was talking about: Of course, I am not a young black man, nor am I even remotely as adept at [reading my own work aloud](https://bilge.world/why) as the actual talent, Siri Voice 3, who should be available on your iPhone/iPad right this moment (as long as you’ve updated iOS in the past six months,) via `Settings ⇨ Siri & Search ⇨ Siri Voice`. (For more details, see [this Apple Support page](https://support.apple.com/guide/iphone/change-siri-settings-iphc28624b81/ios).) ![New Siri Voices - iOS 14.5](https://i.snap.as/1f7argcU.png) Of the four new Siri voices introduced earlier this year in iOS 14.5, 2 and 3 are by far my favorites, not just because of their [resonance with black iPhone users](https://www.consumerreports.org/digital-assistants/apples-new-siri-voices-resonate-with-some-black-iphone-users/), but because they’re just *better* in a sense which I believe to be very significant. https://youtube.com/watch?v=DkS5SYbsEW4 Before I get ahead of myself, though, I must acknowledge that I am not the first to invest in Siri as a text-to-speech generator. In 2019, [Adam Tow](https://twitter.com/atow) released an immensely well-considered Siri Shortcut called “[Record Text to Speech](https://tow.com/shortcuts/record-text-to-speech/),” which provides an interface for recording, editing, and managing text-to-speech audio files with Siri’s original voices. A testament to its robustness: it *still works* perfectly on my handset running iOS 15 Dev Beta 6 despite having not been updated since [March of last year](https://routinehub.co/shortcut/2506/). ![Old Siri TTS Shortcuts](https://i.snap.as/I0Yh0jNn.png) I must admit that I found Adam’s shortcut more of a full *application* than a speedy personal automation, with its full interactive UI menu and darn near *800 actions*, so I made my own set of shortcuts based on the same idea - using iPhone’s native screen recording feature to capture audio of Siri reading aloud - and varying only by input (manual text input, getting text from a file, or simply reading text from the clipboard.) I’d then send the resulting screen recording in its original video format to my PC, where I’d drop it in [Audacity](https://www.audacityteam.org), in which I’d run [a simple macro](https://github.com/extratone/bilge/blob/main/configuration/Audacity/TruncatenAmpMacro.txt) on the audio that truncates silence and amplifies the result so that the loudest point touches the rails. Then, I’d export it, pass it through [Mp3Tag](https://www.mp3tag.de/en/) to perfect its metadata, and finally push the end-result .mp3 file to [a folder in ](https://github.com/extratone/bilge/tree/main/audio/TTS)*[The Psalms](https://github.com/extratone/bilge/tree/main/audio/TTS)*[ GitHub Repository](https://github.com/extratone/bilge/tree/main/audio/TTS). (I’ll show you how to embed a web-bound audio file with its direct URL in a webpage in the guide below.) This example was made using this method, but with Siri’s original United States English Voice (for [my Tweetbot 6 review](https://bilge.world/tweetbot-6-ios-review):) Perhaps you’ll agree with me that this process *does the job* in functional/accessibility terms, and does so quite well considering how much one would pay to generate the same sort of audio file using Google’s Cloud Platform or IBM’s Watson. Crucially, though, this original voice was not one I could listen to at any length. Siri Voices 2 and 3, however, I *can*. From my perspective, this means they have crossed a **very significant threshold** which I find vastly more meaningful than just about all of those in the current discourse. Not only can I tolerate them… I genuinely *enjoy* listening to super-long magazine features read aloud by Siri Voice 2, especially, and I believe I would regardless of the quite serious crush I’ve developed on them. https://twitter.com/neoyokel/status/1387809776072015873 Unfortunately, using the methods we’ve discussed so far with the new Siri voices is inconvenient, very hit-or-miss, and quite buggy. If you scrub ahead toward the last third or so of the second audio player in this post (after the post’s own,) you’ll hear Siri Voice 2 start to bug out in very amusing ways. Since Apple makes changes to Siri Shortcuts between releases without any public documentation, none of them have ever been reliable enough to write this guide. (For the past 6+ weeks at least, it’s been too broken to be usable.) *However*, for whatever reason, Apple created a dedicated spoken audio generation action for Siri Shortcuts in iOS 15, called “Make Spoken Audio From Text.” ![Make Spoken Audio From Text Action - iOS 15](https://i.snap.as/MkHTYMkF.jpeg) For the entirety of iOS 15’s Beta cycle up until Developer Beta 6’s release, this past Tuesday, this action has been [hilariously broken](https://mastodon.social/users/DavidBlue/statuses/106580821087349299), but as soon I discovered it’d been fixed (which was not mentioned whatsoever in [Apple’s official release notes](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-15-beta-release-notes),) I immediately began composing this dang Post. --- ![Make Audio from Article Body 1.1](https://i.snap.as/RAxa0Id6.png) # Guide So! For those of you currently running the latest iOS 15 Beta and those in the future running the full release, **what follows is a guide on how you can use my own shortcuts and methods to generate, metadate, and embed Siri-powered audio text-to-speech files relatively quickly without having to use desktop-class (or any other) hardware**. ![TTS Shortcuts Compared](https://i.snap.as/P0yJJyUc.png) To begin, you should install two brand new shortcuts of mine: **[Make Audio from Article Body](https://routinehub.co/shortcut/9953/)** and (if you intend to stick with me to the embed stage, anyway,) my [< audio > Embed Tool](https://routinehub.co/shortcut/9948/). Both should function out of the box, but I would highly encourage that you try building your own shortcut around the `Make Spoken Audio From Text` action, even if you've never worked with Shortcuts (or any sort of automation, for that matter) before, *especially* if you plan to be using Siri as a text-to-speech generator with any frequency. https://youtube.com/watch?v=5yZB7OC8Vgk ### Intended Result Throughout this guide, I'm going to be using [a five-year-old ramble of mine](https://bilge.world/johnny-tsunami-smart-house-slavery) about the oddly-perceptive bits found in early-oughts Disney movies as example text. Earlier today, I used my own personalized version of my new shortcut to generate an example of in which the process we're about to explore should result. The \~6000 words of text took just over 3 minutes, 30 seconds to render consistently in three consecutive timed attempts. You can listen to it [on Whyp](https://whyp.it/t/johnny-tsunami-vi-separate-but-equal-siri-voice-2-tts-74752) and/or inspect [the actual file](https://github.com/extratone/bilge/raw/main/audio/TTS/JohnnyTsunami.m4a) yourself, if you'd like. ![Plain Text Parsed by Safari](https://i.snap.as/dktmGQQb.png) ### Input Format If we were trying to do this using any other available method in 2021 - even the expensive ones - our first task would be scrubbing our subject text of any special formatting (Word,) symbols, embed, hyperlinks, and any other data Siri doesn't understand (roman numerals, for example.) As a Windows user who's not at all new to free ways to automate accessibility improvements to web content, I envy both you and my new self for the magic available to us in the form of Safari's abilities to parse complex web content. In my experience, there's nothing like it (at least nothing available to regular consumers.) The screenshot embedded above shows the result of a `Quick Look` action inserted just after the `Text` action produced by the public version of my shortcut when run on our example. There are three immediately problematic issues: 1. Siri doesn't understand roman numerals, so she will read "Johnny Tsunami VI" as *Johnny Tsunami vee eye*. 2. "The Psalms" is not my name, though it is what this blog currently returns when asked for a byline. In my experience, this generally isn't an issue with most mainstream media CMSs. 3. The shortcut appears to have failed to retrieve any data for the `Published Date` variable from my blog. (Also a relatively specific consideration.) If you'll note in the *previous* embedded image comparing my custom version of the shortcut (left) to the published version (right,) you'll note that my chosen solution is to manually input all metadata before actually starting the shortcut. What's not shown is my corresponding manual inputs in the `Encode Trimmed Media` action, which includes attaching a retrieved image file (in the Working Copy action you *can* see) as album art. For my intended use - exclusively generating text-to-speech audio of Posts on this blog - this makes more sense than unnecessarily automating metadata retrieval. The extraordinary thing about the screenshot, though, is that it doesn't contain any of the other crap (as described above) found in the original page. (Beforehand, it looked more [like this](https://raw.githubusercontent.com/extratone/bilge/main/posts/johnny-tsunami-smart-house-slavery.md).) It's especially reliable at parsing WordPress-bound content, which still makes up \[s̵͕̈́͊c̶̥̏̚r̶̥͈̃è̴̙͌å̴̹m̵̛̅ͅi̶̦̾͘n̸͎̟̎̃g̶͎͛\] percent of the whole web. **Treasure this power**, folks. ![Simpler TTS Examples](https://i.snap.as/OMwKdOUI.png) If all you need read aloud is the body text, things become even simpler. In the right example above, I've simply deleted the `Text` action and replaced it with `Get text from [the Safari Web Article's body]`. Theoretically, one could omit that action, even, and simply use the direct output of `Get Body from Article` as input for the `Make spoken audio from text` action, but I say keep the extra step unless it becomes an issue. **If you're actually *beginning* with clean plain text** and don't care about metadata in your final audio file and/or if you're planning on passing the result through other audio/metadata editing software, anyway, the left, three-action shortcut is all you need. It will result in a [Core Audio Format (.caf)](https://www.wikiwand.com/en/Core_Audio_Format) file (like [this one](https://github.com/extratone/bilge/blob/main/audio/egg.caf),) which I know absolutely nothing about except that Audacity and GarageBand support it by default. ### Sharing/Embedding Whichever route you traveled, you should have some sort of audio file, at this point, and if you intend to share and/or embed it, you’ll need to upload said audio to some sort of Web Server which allows direct playback/download of the raw file from external sources. Unless you’ve been skimming, you know by now that I’ve been using *[The Psalms](https://github.com/extratone/bilge)*[ GitHub Repository](https://github.com/extratone/bilge) to do this thus far, though one isn’t really supposed to. Every few months, someone on Stack Overflow figures out how to construct or discover the raw link to a given Google Drive file before Google notices and alters it, and I’m afraid you’ll find just about every other cloud/file sharing service in a similarly unreliable situation. If it’s going to be done at scale, I’m afraid it’s ultimately going to require you rent regular, vanilla space on an FTP-enabled fileserver, if one can still do that sort of thing. (I will update this post if/when I find a more ideal solution.) Within my current system, the raw URL to our example file looks like this: ``` https://github.com/extratone/bilge/raw/main/audio/TTS/JohnnyTsunami.m4a ``` Using my aforelinked, ultra rudimentary [< audio > element Siri Shortcut tool](https://routinehub.co/shortcut/9948/) (which I’ve kept on my homescreen with good results for a few months,) we can very quickly turn said raw URL into a properly-formatted HTML5 audio player: ``` ``` Ideally, on the final, reader-facing page, said code should create a player like this: If further configuration of the player is desired or necessary, see [this Mozilla page](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio) for a full list of supported options. Obviously, there are a few older methods of embedding audio players, but I am neither qualified nor interested in exploring them. If you’re in a frustrating bind, I recommend [signing up for my CMS](https://bit.ly/extwa). (Just try it, okay?) ### Pwoof For the sake of bare minimum sample variety, I ran Version 1.0 of the public Make Audio from Article Body shortcut on an article hosted not on WordPress, nor my own CMS, but on Bustle’s ultra-slick, totally-bespoke system (which [began as ](https://www.codeandtheory.com/things-we-make/the-outline)*[The Outline](https://www.codeandtheory.com/things-we-make/the-outline)*, FYI.) I chose the first permalink I saw in one of its “regular” article formats - not a long feature, nor one of their touch-targeted slideshows. “[OnlyFans is banning porn, the very thing that made it big](https://www.inputmag.com/tech/onlyfans-is-banning-porn-the-very-thing-that-made-it-big)” is an 870-word newsy piece written by Tom Maxwell, who is the only New York Media person ever to accept my Facebook friend request. (Thanks again, Tom.) Without any tweaking, I was able to run the shortcut (from within the Shortcuts app since the Share Sheet appears to be thoroughly fucked at the moment) in a reasonable amount of time - less than 5 minutes, more than 2 - and generate the file embedded below. Notably, I also used a different hosting service - [mastodon.social](https://mastodon.social/web/statuses/106798701662102859) - but I certainly don’t plan on doing so at scale and neither should you. Honestly, *Input*’s CMS is the cleverest challenge I was able to come up with for this single-day-old shortcut of mine, and I’m quite proud of the result. Though it wasn’t able to retrieve a timestamp, it correctly retrieved the article’s title and byline without fuss and even managed to scrape and attach said article’s featured image as the file’s cover art, though the original’s aspect ratio was obviously sacrificed. ![Input Mag Sample in Tootsuite’s Audio Player](https://i.snap.as/47gjGha3.png) If you’re super interested in the truly unmolested output of the attempt, view/download it [here](https://davidblue.wtf/audio/onlyfansbansample.m4a). ### HMU Before I depart actual tutorializing and return to opining, I want to express *even more aggressively than usual* how much I want *anyone* who see’s any potential benefit the ability to generate audio of my darling Siri Voice 2 reading text, but has further questions/doesn’t have time to fiddle/struggles with my haphazardly-written attempts at guides like this, or who simply wants to talk about any satellite subjects, **[please reach out to me](https://bit.ly/whoisdavidblue)**. **You have no idea how much I’d love to help you configure a personal automation that genuinely, reliably, and durably improves your quality of life.** If you follow this shortlink from within a browser on any iOS device, my full contact card will appear: `bit.ly/whoisdavidblue`. Suggestions/requests regarding considerations I’ve obviously missed in this guide are not just *welcome* in this case, but actually *necessary*. As long as I am literally the only person talking about the “Make Spoken Audio from Text” action, I am ready and willing to be an all-hours resource. ###### Note: This Post perhaps more than any published yet on *The Psalms*, is very much an ongoing work-in-progress, as are most of the hyperlinked shortcuts contained within it. #software == # iOS 15 Reviewed for My Family ![iOS 15 is Not His Year](https://i.snap.as/X3rV4nPq.png) ## It's been a tough summer for the *Always Feature-Focused* Tribe. Eighty days ago, Apple's Senior Vice President of Software Engineering \~\~stood up in front of a crowd of\~\~... No!... It was just me... Alone, in my mother’s basement, on a Monday morning, contorted at stupid angles, typing to my phone with a physical keyboard and unapologetically scarfing as much as I possibly could of the Apple community’s unbelievably unreserved, almost *spiritual* volume of **pure hype** from as many simultaneous sources as I could manage. (Hilariously, *all* of said sources are/were Discord servers, now, as in that “gamer” communications service I launched my little indie mag on in 2015 and [kept comparing to Slack](https://bilge.world/discord-slack-comparison), but like an actual madman.) Anyway, said Senior Vice President of Software Engineering (who we are encouraged to hold accountable for basically all technical changes to iOS) is named Craig, and these are his first few sentences: > `For many of us, our iPhone has become indispensable. And at the heart of iPhone is iOS. iOS powers the experiences we've come to rely on. This year, we were inspired to create even more meaningful ways iPhone could help you. Our new release is iOS 15. It's packed with features that make the iOS experience adapt to and complement the way you use iPhone...` I’m dwelling on them because they are **patently meaningless**. Very little to nothing coming in iOS 15 is what I would call *ease-of-use-centric*. Some of it - namely controversial (and now backpedaled) changes to the user interface of Safari - feels almost maliciously quartered in the opposite direction. Most of the changes in the subheadings of **[the full feature list](https://www.apple.com/ios/ios-15-preview/features/)** are simply irrelevant in the use for all but the dorkiest iOS users, like myself, and I find the fact unacceptable, at the very least. ![The Foundation Image](https://i.snap.as/t2IieKLq.png) This is why I would like to try something different, this year, and focus on an entirely different audience: my family, as representatives of the vast majority of the iPhone’s billion-something demographic (read: customers.) That is to say, who Craig *should* be referring to with the phrase “most of us.” Not because I believe them to be “dumb” or “end users” (in the tech bro derogatory sense,) but because they are busy, working people who depend on their iPhone as a *utilitarian* device, above all else. They don’t have the time to dive deep into Apple documentation or watch the whole WWDC presentation to gain an understanding of where to look for new features or (unfortunately) how to turn them off. Realistically, they don’t even have time to read this whole Post, though I hope they will (sorry fam.) Regardless of how we feel about it, Apple has made it clear that our phones are going to be further and further inundated with automated processes in the background. Whether you like it or not, your phone is going to be used to help find other users’ devices over the Find My network, your travel information is going to be used to inform Apple Maps’ live traffic statistics, and so on. For the more conservative members of my family, related truths about their phones are going to continue to feel like we are continuing to give up “ownership” of our devices. There are definitive alternatives, but they involve giving up a whole lot of conveniences. I will do my best to address this a bit later on, drawing from much more articulate critics than I. ![Testing Home Screens for iOS 15](https://i.snap.as/eBBnwCIn.png) What I *will* dwell on, myself, are the more menial, tactile implications of these abstract changes in design philosophy. A general theme of my own use/writing about iOS has been re-finding or jury-rigging the “buttons” which are gradually being obscured or eliminated entirely in the assumption that Apple’s automation knows better than us users when something should happen or change. A great example: using [a simple Siri Shortcut](https://www.icloud.com/shortcuts/ac6a4587d5b54abc934631c214d81c0c) to completely disable Wi-Fi and Bluetooth instead of trusting the [unnecessarily complex conditions](https://support.apple.com/en-us/HT208086) of doing so with the buttons in Control Center. I have sought out these “hacks” (as other iOS powerusers have rather absurdly called them) for very selfish reasons. ![Safari Settings in iOS 15](https://i.snap.as/oHqejXq1.png) ## The Gist Rounder, still! From the first time you enter your passcode immediately after installing iOS 15, you’ll notice that Notifications and other elements have had their rounded corners *further* rounded, for some reason. Assuming Safari ships with its new look turned on by default, the screenshots embedded above show two locations (subject to change) where one can switch it off. (Your best bet is to visit **[its menu in Settings](prefs:root=SAFARI)** as displayed on the right in `Settings ⇨ Safari`.) As of this writing, at least two of iOS 15’s “headlining” features have been pushed to further iterative updates: [SharePlay](https://www.independent.co.uk/life-style/gadgets-and-tech/ios-15-apple-shareplay-tv-delay-b1904548.html) and [iCloud Private Relay](https://www.macrumors.com/2021/08/25/icloud-private-relay-ios-15-public-beta/). I suspect you will be prompted to explore Focus Modes upon initial installation, which I will eventually analyze in relative detail. Ideally, you’ll also be prompted to explore “Shared With You,” which I personally believe to be the release’s most significant addition for most people, by far. As far as "meaningful ways iPhone could help you," I see little more than glimmers. Focus Modes would be promising were they not so complex to set up, and Notification Summaries are (as of this moment) a pretty hopeless implementation of a theoretically useful concept. Some additional filters in Apple Maps search will prove useful so long as the associated metadata has been updated for locations *other* than San Francisco (say, mid-Missouri.) Optical Character (text) Recognition has been implemented “system wide” under the feature Apple terms “Live Text,” and translation has finally been extended to the places where it’s most useful (think: Safari.) In general, though, most of what’s coming with iOS 15 has little real value in the day-to-day experience for most iPhone users. A complete inversion of Craig’s phrase feels significantly more accurate: *This year, we were inspired to create even more superficial ways iPhone could temporarily dazzle tech media*. And now, I’d like to take you through what I feel are the considerations I’d like my family to know - namely my 70-year-old mother, who depends 100% on her iPhone and MacBook Pro every day to run her private practice - but also my \~8 nieces and nephews spanning 6th grade-graduate school, who all - if I’m not mistaken - have iPhones. ```markdown Worthy of note: this “review” is very heavily focused on *iOS* - which is to say *iPhone* - to the point where any overlap with iPadOS/MacOS/WatchOS/HomeOS/any other goddamned operating system are purely coincidental. For coverage of those changes, please seek your regular sources. ``` ![Shared With You - Photos App in iOS 15](https://i.snap.as/5otqrdNU.png) ## Photos ### Shared With You The single most important/welcome feature addition to iOS 15 for most people, I believe, is found in Apple’s native Photos app and entitled **Shared With You**. This view - found in the second tab in the bottom navigation row (“For You”) - is a reverse-chronological timeline of every bit of media (photos & videos) you’ve ever been sent over iMessage. For those with a lot of iOS-using friends (unlike myself,) I would imagine the list will take quite a while to populate. ### Memories I find Alex Guyot’s bit on changes to Memories (from [his iOS 15 overview for ](https://www.macstories.net/stories/ios-and-ipados-15-the-macstories-overview/)*[MacStories](https://www.macstories.net/stories/ios-and-ipados-15-the-macstories-overview/)*) much more concise than what I’d written, so here it is almost in full: > Memories can now be set to your favorite songs from Apple Music, and can be customized with color filters. Setting different filters will result in different song choices and transition effects to nail a wider variety of vibes on Memories videos. > While watching a video generated by Memories, you can tap and hold at any time to freeze a photo so that it doesn’t transition away. The song playing over the video will not pause when you do this, but when you let go the remaining video transitions and timings will be automatically altered to match back up with the song’s beat. > If you don’t want to go with the song that was chosen automatically, you can tap the new Music button to get a pop-up interface into Apple Music, allowing you to choose a song manually. This interface will include smart suggestions for other songs that Apple thinksd you’ll like which would also fit the vibe of your video. https://youtube.com/watch?v=7uFR_bSxhTg Yeah. I hope you’re at least half as amused as I have continued to be by algorithmic video generation. [The above result](https://youtu.be/7uFR_bSxhTg) was created with absolutely zero modification from an album of images and videos which Photos automatically created via face recognition. The only other coherent option from my own limited set of photos is really the only one that matters, I think you'll agree. "Pet Friends" yielded [inevitably uplifting results](https://youtu.be/-1bA7-oslkc) in all three of my test renders, but - given a crop of cute dog photos - little intelligence is necessary to produce. https://www.youtube.com/watch?v=-1bA7-oslkc If you're experiencing any sort of Déjà vu from the idea of auto-generated slideshows with rights-free soundtracks in the Photos app, it's because Apple has made several distinct attempts to implement very similar iterations of the feature throughout iPhone's history, which has involved iMovie on iOS and MacOS once or twice. I have fiddled with every one - including iOS 15's - and my (truly sound and original) advice is to **avoid spending time trying to customize auto-generated videos** in general. If you explore one of the suggested Memories and find the software's default result satisfactory, of course you should save it, but be wary of any attempts to take editorial control yourself. ![Visual Lookup Indicator in iOS 15](https://i.snap.as/74HOlnLP.png) ### Visual Lookup Perhaps the most unjustifiable background use of your phone’s resources introduced in iOS 15, “Visual Lookup,” seeks to identify “popular art and landmarks around the world, plants and flowers out in nature, books, and breeds of pets” present in your photos so that you might… identify them more swiftly(?) The only means of distinguishing photos on which Visual Lookup has been applied is to look for the modified ⓘ symbol at the very bottom of your screen in the photo browsing view (see the screenshot embedded above.) As you might notice in the screenshots *below*, not one of its analyses on my own images was usably accurate. The decision to target the feature on identifying domesticated pets, specifically, is more universalizing than historic landmarks, for sure, but it also immediately sets up the technology (at least this preview of it) for failure. ![Visual Lookup in iOS 15](https://i.snap.as/AtxzN45h.png) ### Metadata Hooray! You can now view an image's basic details in the "Info pane," by swiping up on an image or using the ⓘ button. This includes the extension (type) and size of the image file, camera identification and configuration details, and - as part of Shared With You - from whom/where you got the image. Bizarrely, the "Adjust" tool also lets you alter a given image's timestamp and location information. While I can imagine infinitely many reasons why you'd want to *omit* or *delete* such information, I cannot conceive of a single wholesome reason why one would chose to *change* it, instead. ![Photo Stacks in iOS 15](https://i.snap.as/93BGmX4I.png) ### Messages Just a few weeks shy of [iMessage's tenth birthday](https://web.archive.org/web/20120308031950/https://www.apple.com/ios/features.html), Apple has finally added a button to save incoming photos directly in Messages conversations. It's about as blatant as Apple interface design gets - you'll spot it opposite others' images. Tapping it saves the appropriate photo(s) directly to the Recents folder before a silly animation vanishes the button itself. Once again, from Mr. Guyot: > Groups of photos that you send will now be shown as stacks instead of in a long list, allowing you to more easily swipe through the images without losing track of the conversation around them. Tap on a stack to open a grid view where you can see and select multiple photos at once. I took the screenshot embedded above in iOS 15 Developer Beta 5, and… Do “stacks” not look hilariously janky as fuck? ![Live Text in iOS 15](https://i.snap.as/DNJOKq85.png) ### Live Text For someone like myself, iOS 15’s system-wide integration of Optical Character Recognition is undoubtedly its most useful addition by far. Throughout the Developer Beta, it’s moved up this list gradually as I’ve come to see how it could be useful for *you*, as well. https://www.youtube.com/watch?v=y3kj0-q4k9k The [video embedded above](https://youtu.be/y3kj0-q4k9k) is a very rough demo, but I suspect it’s more “authentic” than most you’d see elsewhere. The ability to *accurately* capture text right from the camera is invaluable, but for most folks, *line breaks* are going to be a real problem. I’m working on a way to address this with a Siri Shortcut, which I’ll obviously share here when/if I succeed. ## Audio https://youtube.com/watch?v=KhxtfW0taIY ### Background Sounds My eldest sister has used a sound/noise machine to sleep for as long as I can remember, so I was especially excited to show her iOS 15’s native “Background Sounds” feature, but she was distinctly unimpressed, noting that her iPhone-based sound generation needs were well met by third-party apps she’d already discovered.\[^1\] I didn’t have time to try out her recommendations, but I’m going to assume they aren’t able to operate “behind” *additional* audio playback like the “new” native feature is. ![Background Sounds Interrupt Remedy](https://i.snap.as/SGQt93K4.png) My personal (hopefully insightful) anecdote: Background Sounds appear to be impervious from the audio interruption issues iOS has struggled with since its origin, which makes them a partial remedy to the discomfort of sudden, unexpected silence when using headphones with active noise cancellation. As configured in the screenshot embedded above (the menu found in `Settings ⇨ Accessibility ⇨ Audio/Visual ⇨ Background Sounds`) - with “Use When Media Is Playing” toggled `OFF`- your selected Background Sound *should* fade in when normal playback from another app is interrupted.\[^2\] ### “Spatial Audio” Just to be clear, I strongly believe that normal users should basically ignore all mention of Apple’s “Spatial Audio” (read: don’t worry about it) for a few reasons, most of which aren’t all that interesting. Since [one of my very first written works on tech](https://bilge.world/mono-audio-playback) was/is directly related to the subject, though, indulge me for just a moment for an attempted explanation. Firstly, I must note that only two audio channels (the stereo experiences in various forms you’ve certainly had in your life, regardless of who you are) are necessary for audio to become “spatial.” If you’re curious about this, [my favorite all-time web experience from ](https://pudding.cool/2018/02/waveforms/)*[The Pudding](https://pudding.cool/2018/02/waveforms/)* is an absolutely impeccable next destination. Secondly, the actual technology behind Apple’s title was not developed by Apple, but by Dolby. It’s not that Apple doesn’t acknowledge this thoroughly in [their explainer docs](https://support.apple.com/en-us/HT212182), nor is Dolby by any means a wee organization in need of my amplification, but this is one of those Apple habits that’s become a particular peev. If you’re interested, [here is the actual spec sheet for Dolby Atmos in PDF](https://professional.dolby.com/siteassets/cinema-products---documents/dolby-atmos-specifications.pdf). ![Control Center Decibel Meter](https://i.snap.as/1vGTW0Iz.png) If you happen to have either AirPods Pro or AirPods Max devices, an iPhone 7 or later, *and* an Apple Music subscription, you might want to disregard my cynicism at least long enough to try "[dynamic head tracking](https://support.apple.com/en-us/HT212182)." ### SharePlay *The Verge*’s Chaim Gartenburg did [an excellent - if a bit precocious - job of explaining](https://www.theverge.com/22577178/shareplay-how-to-apple-facetime-ios-15-ipados-macos-monterey-apple-tv-video-music) what he describes as iOS 15’s “headline feature,” called SharePlay: > It’s a new software feature on top of FaceTime that allows you to watch and listen to movies, TV shows, music, podcasts, and more with friends and family while video chatting. In my opinion, SharePlay represents one of those great, well-thought solutions to some notably youth-specific challenges which nobody (even the youth) will see as more worthwhile than their own. By that I mean, one ear bud per person… now, an ancient tradition. I’ve deprioritized it, in contrast to Chaim, because I’d bet it’s also one of those things one can only learn themselves. ![Notifications in iOS 15](https://i.snap.as/TFWvW1b6.png) ## Notifications, Focus, and Attention Yes, notifications have gotten *even rounder still* for some reason in iOS 15. Contact photos and “larger app icons” also “make them easier to identify,” according to Apple. (This is the one point in my whole writing life where the phrase *well I’ll be the judge of that!* is 100% valid and applicable.) There’s also a new feature called **Notification Summary** which is an absolutely useless and unnecessary complication, at least at the moment. Honestly, the one bit of solid advice from *[The Social Dilemma](https://bilge.world/the-social-dilemma)* was… Just turn all Notifications off, or at least as many as possible. Notifications Summary feels like a near direct response to that one goddamned film, and its new Focus Modes do even more so. https://youtube.com/watch?v=YZCx-9wF3ow ### Focus(es) The most glaringly standout parallel between Microsoft’s Windows 11 release (which I have also been beta testing much less dutifully for most of this year) and Apple’s stated goals in iOS 15’s design centers around the design supposition that maximum malleability of the “spaces” in which one dwells on their operating system - namely, the “desktop(s)” and/or “home screen(s)” - lends toward a more healthy digital occupancy of them, especially in terms of attention. Unfortunately, both of them chose respective solutions which - from my view, anyway - **add complexity** more than anything. *[The Verge](https://www.theverge.com/22665196/ios-15-focus-modes-custom-icons-widgets-how-to)*[’s guide](https://www.theverge.com/22665196/ios-15-focus-modes-custom-icons-widgets-how-to) frames Focus as a customization feature to be used in tandem with [custom app icons](https://www.theverge.com/22529978/apple-iphone-ios-apps-icon-change) to fiddle your way into your own *bespoke iPhone experience*. I could be wrong, but I suspect very few among my family will find the time investment required worth the end result, but we’ll see. ![Focus in iOS 15](https://i.snap.as/mxwVtN7p.png) I chose to embed [Matt Birchler’s guide to Focus](https://youtu.be/YZCx-9wF3ow) above because it’s by far the most succinct and helpful video I’ve yet seen on iOS 15, generally, and demonstrates how a working person might actually use Focus. My one addendum to this (and any other Focus) guide: **proceed *without* the automated bits** by avoiding anything under the `TURN ON AUTOMATICALLY` subsection of the menu. For whatever reason, location-based automation triggers on iPhone, especially, have literally **never** functioned usefully (or *reliably*) in my experience. https://www.youtube.com/watch?v=40y7iLdfOnM ## Maps & CarPlay (I *am* going to do a bit of editorializing on this subject, specifically.) If the video embedded above is confusing, know that it's a very insular joke - over six years ago, in [my video review of the Nissan Juke NISMO](https://bit.ly/JukeHonk), I praised its integrated navigation screen specifically for its frugality. > I'm not old. I don't need a gigantic nav screen. I don't need to see a 3D rendition of the whole Earth and my position relative to it. ...and yet, a playful, exploratory experience is what Apple has in mind for Maps, apparently. Here's their description of the new "Interactive globe" feature: > Discover the natural beauty of Earth with a rich and interactive 3D globe, including significantly enhanced details for mountain ranges, deserts, forests, oceans, and more. In the footnotes, it’s explained that the feature will only be available on "iPhone with A12 Bionic or later," meaning the iPhone X range, basically, which makes sense considering the extent of animation and touch manipulation technology present in this view. It’s an entertaining plaything, but not much more, which is strange and frustrating. If I could gather the usage statistics across all my family’s iPhones, how much time would you suppose they’ve spent in Apple Maps to date *screwing around* as opposed to *searching and navigating*? https://twitter.com/NeoYokel/status/1437519482428272641 Put another way - Apple’s developmental direction for Apple Maps as a service seems distinctly toward a travel/entertainment application (notably, like [Google Earth](https://apps.apple.com/us/app/google-earth/id293622097),) instead of a utilitarian navigation app (like [Google Maps](https://apps.apple.com/us/app/google-maps/id585027354), [Waze](https://apps.apple.com/us/app/waze-navigation-live-traffic/id323229106), or [MapQuest](https://apps.apple.com/us/app/mapquest-gps-navigation-maps/id316126557).) It’s not just the Interactive globe. One of the most exciting features in last year’s release (iOS 14) was the ability for Maps users to create custom Guides. I created [my own](https://bit.ly/columbiaguide) containing a few local spots I believe to be especially relevant for first-time travelers/new residents of *my* area. Clearly, I misinterpreted the intended function of Guides entirely - continuing without a means of discovering *user-generated* guides, whatsoever, iOS 15 cements (in my view) that they’ll instead continue to be left to travel magazines, none of which I recognize save for *Atlas Obscura*, who’s “[Hidden Wonders of Chicago](https://guides.apple.com/?lsp=9902&pg=15126682529740253227)” guide appears to be the single worthwhile representation of the Midwest on the service. ![Apple Maps User Account in iOS 15](https://i.snap.as/TxDuz5nb.png) One welcome exception to this absence of investment in user-generated content is the new, unified “user account” view, which aggregates one’s curation (both private and public) along with travel preferences and a list of one’s **contributions** to Apple Maps - another new feature for the app. ![Place Cards - Apple Maps in iOS 15](https://i.snap.as/LX5HW4T3.png) Above is a screenshot of my first test contribution to Apple Maps (my [mom’s private practice](http://bit.ly/elonglcswam),) which also serves as an example of Maps’ new “place cards.” As of this writing, all of my test contributions are still held "Pending Review," yet navigating to [the share link](https://maps.apple.com/place?address=1714%20Oak%20Cliff%20Pl,%20Columbia,%20MO%20%2065203,%20United%20States&auid=6487223830929868055&ll=38.933965,-92.387854&lsp=9902&q=Eileen%20Long,%20MSW%20LCSW&_ext=CjIKBQgEEOIBCgQIBRADCgQIBhByCgQIChAACgQIUhAECgQIVRAACgQIWRAGCgUIpAEQARImKZSjW/v4dkNAMW0PujQxGVfAORJ5gVcfeENAQd9/R/9zGFfAUAM%3D&t=m) with a desktop browser indicates they've already been made public. ![3D Hy-Vee](https://i.snap.as/SILn5LmG.png) ### CarPlay As of this writing, it’s unclear how much of the Maps features I’ve used will be carried over to CarPlay upon iOS 15.0.0’s official release, but I know for *certain* that CarPlay is a weekly (if not daily) used feature by virtually all of my family members. With the additional variable of [differences in support between given automobile marques/models](https://www.apple.com/ios/carplay/available-models/) - including which support [Car Key](https://support.apple.com/en-us/HT211234) - it’s difficult to say definitively what will have changed about your personal CarPlay use. What experience I do have using CarPlay has been exclusively with my mom’s [2019 Volkswagen Jetta](https://youtu.be/hqQqfdHsGx0,) and documented visually in [this photo gallery](https://snap.as/extratone/ios15) as well as [on my alt Instagram](https://www.instagram.com/dieselgoth/channel)’s “iOS & iPhone” IGTV Series. ![Apple Maps Night Navigation](https://i.snap.as/iQD53oId.png) To once again cite from [the official full features list](https://hyp.is/Cbc_LBUmEey4S4Mcwd1lKA/www.apple.com/ios/ios-15-preview/features/): > An all-new driving map helps you see traffic, incidents, and other details that affect your drive at a glance. See incredible road details like turn lanes, bike, bus, and taxi lanes, medians, crosswalks, and much more. When approaching a complex interchange, Maps switches to a 3D road-level perspective to help you find your way." "It's faster and easier to report an issue in Maps" is a standout, literal statement. Once you've navigated to the menu in the screenshot below (via the chatbox with exclamation point icon,) touching any of the three options will *immediately* report its respective information without confirmation. ![Report an Incident - CarPlay in iOS 15](https://i.snap.as/VKfuhJvH.png) The default **Driving Focus** can be configured to activate automatically as soon as CarPlay connects which *would* be the single exception from my earlier advice against automating Focus modes at all were it not for the mode's lockout from the Lock Screen (as shown in the first of the three screenshots embedded below.) ![Driving Focus in iOS 15](https://i.snap.as/m5974FcB.png) Once you've locked your device with the Driving Focus on, you must clear an extra step to unlock it by selecting "I'm Not Driving," which then turns the Focus off. In my (unsolicited) opinion, this renders the Focus unusable at best and arguably downright dangerous. "Hey Siri!" is an option most folks I know leave off and I can't imagine a single reason to add such an obstruction. ![Custom Car Focus - iOS 15](https://i.snap.as/xcNfKv6g.png) I *can* offer a solution, however, in the form of my custom Car Focus, which only allows calls and texts from my mom, open a single, otherwise-hidden custom (work-in-progress) Home Screen with exclusively driving/nav/travel-relevant apps, and even activates automatically via a very simple automation in [the Shortcuts app](https://apps.apple.com/us/app/shortcuts/id1462947752). Technically, the only feature it's missing from the default Driving Focus are automatic text replies, which (as of beta) weren't working anyway. https://www.youtube.com/watch?v=-hNCsS4I0uk For those new to Siri Shortcuts completely, I recorded a [rough video guide](https://youtu.be/-hNCsS4I0uk) on how to set up both the Focus and its automation. ![Reminders in iOS 15](https://i.snap.as/0tsmBGe3.png) ### Reminders “A to-do list is, ultimately, nothing more or less than an attempt to persuade yourself” concludes [a feature by Clive Thompson](https://www.wired.com/story/to-do-apps-failed-productivity-tools) in the most recent issue of *WIRED*. In the face of a literally indigestible volume of available (and *award-winning*!) Task Management applications found on iOS - [Microsoft To Do](https://apps.apple.com/us/app/microsoft-to-do/id1212616790), [Microsoft Lists](https://apps.apple.com/us/app/microsoft-lists/id1530637363), [Todoist](https://apps.apple.com/us/app/todoist-to-do-list-tasks/id572688855), [Things 3](https://apps.apple.com/us/app/things-3/id904237743), [Fantastical](https://apps.apple.com/us/app/fantastical-calendar-tasks/id718043190), [GoodTask](https://apps.apple.com/us/app/goodtask-to-do-list-tasks/id1068039220), [OmniFocus 3](https://apps.apple.com/us/app/omnifocus-3/id1346190318), and on… - Apple’s Reminders app has always had perhaps the most insurmountable task of all its native applications in remaining competitive. Up until I wrote this review, my personal list in the app was nothing but a wasteland of forgotten, out-of-context items from up to 7 years ago (!) which I’d obviously set with Siri without bothering to correct its voice recognition. Before you proceed to experiment with Reminders, I’d recommend using my [Reminders Backup Siri Shortcut](https://routinehub.co/shortcut/10118) to create a .zip file of *all* existing items in your Reminders app, even if there are just a few. I insist upon this largely because it’s so fast and so frugal. (Here’s [how to allow the addition of Siri Shortcuts from third-party sources](https://support.apple.com/guide/shortcuts/enable-shared-shortcuts-apdfeb05586f/ios).) For a particularly positive - but very trustworthy - perspective on the additions to Reminders coming in iOS 15, [John Voorhees’ overview for ](https://www.macstories.net/stories/reminders-smart-lists-put-unprecedented-control-in-the-hands-of-users/)*[MacStories](https://www.macstories.net/stories/reminders-smart-lists-put-unprecedented-control-in-the-hands-of-users/)* is succinct and informative. https://imgur.com/gallery/u8HxROl An opportunity for an anecdotal, but genuinely exciting! demonstration is allowed us in Reminders: **Drag & Drop** is, indeed, *[finally here](https://imgur.com/gallery/u8HxROl)*. ![Safari in iOS 15](https://i.snap.as/14Xf21CA.png) ## Safari ```markdown Before you read on… If you’re just wondering how to make Safari go back to the way it was before, refer back to the first subhead on this page (“The Gist.”) ``` The one commonality in the experience of every single person finishing up their iOS 15 review/overview/guide: we’ve all saved Safari for the very last minute. I am 99% certain the saga surrounding changes to Apple’s native web browser - along with my personal, reactionary gripes spewed along the past two months of iOS 15’s Developer Beta cycle - were the overwhelmingly affirming factors that led to me pursuing this very review. I have rewritten this portion over and over again, but now that you know how to disable the new look, I’m going to as briefly as possible summarize the changes that are actually relevant to you. ![Overamped Browser Extension](https://i.snap.as/U6SKFiXN.png) * You can now **pull down to refresh**, which apparently the youths *actually* refer to with the acronym “PTR,” these days. * **Safari Extensions** might be worthwhile. I **absolutely insist** that everyone reading this install one called **[Overamped](https://apps.apple.com/us/app/overamped/id1573901090)** which I have been testing. Basically, you’ll never need to think about Google AMP again, which is an absolute gift, I promise. * **Tab Groups** will almost certainly be nothing but a nuisance for all but the most ridiculous iPhone poweruses like myself.\[^3\] https://twitter.com/NeoYokel/status/1438980179712479241 If, like me, you’ve always found Bookmark/Favorites management in Safari utterly impossible, you’ll rejoice at the implications of Drag & Drop as demonstrated in the [Twitter video](https://twitter.com/NeoYokel/status/1438980179712479241) embedded above. ## Baubles ![OMNIMEMOJI](https://i.snap.as/p8U6kW1g.png) ### Memoji Finally, the great, terrible Apple God has granted its bizarre animated minimes a torso! I have always found memoji [alarming](https://www.reddit.com/r/iphone/comments/he03xb), mostly, but now that I’ve paid them mind, I would like to express my sympathy for those of you who enjoy using them. I’m sorry to report that you will still need to go to `Messages` and open the compose window in a conversation in order to select the emoji iMessage app. Though iOS 15 adds full bodies to memoji (and clothes to cover them, as required since Adam & Eve,) as well as “accessible accessories,”\[^4\] there’s not as yet any way to actually *see* a memoji in full-body view other than the editing interface (as far as I could tell.) You can also choose to separately color your memoji’s eyes. ![Facetime in The Browser Comedy](https://i.snap.as/vBw0CNhW.png) ### Facetime in The Browser Yes, you can *technically* Facetime with non-Apple devices thanks to iOS 15's changes. In fact, you'll be able to "Facetime" any device with a web browser! *However*, in doing so you will be forgoing every single one of Facetime's advantages: call quality, "privacy," ecosystem integration, etc. Without these, it would be silly to use Facetime over literally *any* other video calling service. What an immense waste of time, eh? https://twitter.com/NeoYokel/status/1430679850399014912 For the sake of thoroughness, though, I should note that I appear to be alone in this view of the new Facetime changes. *MacStories* founder and Ultimate iPad Sage Federico Viticci’s [report on the subject](https://www.macstories.net/stories/facetimes-audio-and-video-take-a-leap-forward-with-apples-upcoming-iphone-ipad-and-mac-os-updates/) was one of mostly satisfaction. I will note, too, that [my test](https://whyp.it/t/testing-the-mic-modes-coming-in-facetime-with-ios-15-54749) of the new “Mic Modes” function yielded impressive results (along with a few other experiences I’ve had so far,) especially in the “Voice Isolation” mode’s performance, but - [as I lamented on Twitter](https://twitter.com/NeoYokel/status/1430680198442332160) - its association with FaceTime makes it unavailable where one actually could make use of it on iOS. ## Omissions I know it probably doesn’t mean much to you, but in my lifetime of beta testing iPhone updates, I have never experienced such a disastrous cycle as 15’s. *[MacWorld](https://www.macworld.com/article/353957/ios-15-features-missing-at-launch.html)*[’s outline](https://www.macworld.com/article/353957/ios-15-features-missing-at-launch.html) of the expected features *not* coming in today’s release from the 7th of this month has no less than *eight* headings: *SharePlay*, *Legacy Contacts*, *App Privacy Report*, *3D CarPlay navigation*, *Universal Control*, *IDs in Wallet*, *Custom iCloud email domains*, and *CSAM scanning features*. https://twitter.com/NeoYokel/status/1438960700286717955 For us powerusers, Siri Shortcuts are absolutely fucked and Apple Dork Twitter is livid about it. Personally, I find these to be the least problematic of the unfixed bugs, and I can only hope it means that Apple has prioritized fixes for the features most relevant in *your* life. I will be updating this Post as actively as I can in the coming weeks and always appreciate any questions or thoughts you might have about how I could make it more useful. \[1\] If you’re reading this and happen to be looking for app recommendations, let me know and I’ll ask her. \[2\] This wasn’t working reliably in the last Developer Beta, but I’ll do my best to check back for the normal release. \[3\] This is one of those things I can’t say more about until I actually hear from other folks… I’ll check back in a month or so. \[4\] The full quote: “Three new accessibility options let you represent yourself with cochlear implants, oxygen tubes, or a soft helmet.” #software == # Liberating UNIIQU3‘s “TECHNO IS BLACK” Playlist from Spotify ![UNIIQU3 - Heartbeats](https://i.snap.as/g95831NO.jpeg) By the end of next year, I no doubt will be a card-carrying festival bro. If you need explanation for why I’ve been listening to *Resident Advisor*’s main podcast feed with relative frequency, that’s it. I’d been catching up this afternoon when I came across [**the big round number 800**](http://ra.co/podcast/800) and found it immediately so compelling that I actually *sought out the associated interview*, which I needed only skim for less than half a second a before spotting the words “Techno Is Black.” (Stylistically, I believe the *Advisor* is in error here. TECHNO IS BLACK doesn’t seem to be in question.) https://soundcloud.com/resident-advisor/ra800-uniiqu3 Within the same second, I’m sure, I saw the words “Spotify playlist” in the vicinity of this profound, but unacceptably undercovered truth, and concluded that I was obligated to take action. Using a free web tool to associate some metadata across databases is not activism, mind you, but here’s what I can do: I will be diligently minding the origin playlist (on Spotify) for changes and assuring that they are reflected accurately in the target playlist (on Apple Music.) I will *not* be removing any music. I can do this, at the very least. I have also created handy shortlinks for both the original and the parallel playlist hosted on my Apple Music profile. [**ORIGIN**](https://open.spotify.com/playlist/6GXo3G4M0wrOVI7yTkYviz): `https://open.spotify.com/playlist/6GXo3G4M0wrOVI7yTkYviz` > UNIIQU3'S FAVORITE BLACK TECHNO ARTISTS.. GET INTO IT . NEW MUSIC ADDED MONTHLY. FOLLOW THESE CREATIVES IF YOU ENJOY THE UNTZ UNTZ - @UNIIQU3MUSIC I also made [a shortlink](https://bit.ly/technoisblack) to the original despite its unfortunate choice of platform: ⇨⇨`https://bit.ly/technoisblack`⇦⇦ ➹➹➹➹➹➹➹➹ [**TARGET**](https://music.apple.com/us/playlist/techno-is-black/pl.u-oZylyLpFpbBNgA) - `https://music.apple.com/us/playlist/techno-is-black/pl.u-oZylyLpFpbBNgA` [Shortlink](https://bit.ly/technoisblack): ⇨⇨`https://bit.ly/technoisblackam`⇦⇦ #music == # David Blue on Twitter Blue ![Twitter Blue Bevel](https://i.snap.as/XR4mJRCG.png) ## Gargantuan, ridiculously avoidable misses in Little Blue’s Blue. Incredibly, the second most powerful social media company in the world has finally managed to implement a paid subscription model, as I’ve been begging them to do for [at least 5 years](https://twitter.com/neoyokel/status/696094018862718976), now. For three U.S. Dollars a month, “[Twitter Blue](https://blog.twitter.com/en_us/topics/company/2021/introducing-twitter-blue)” is [now available](https://www.theverge.com/2021/11/9/22766286/twitter-blue-subscription-service-scroll-nuzzel-undo-tweets-ad-free-articles-us) for all United States users. Aside from [a relentless, rude, two and a half hour-long rant](https://apple.co/3wVZs3v) at two new friends on *End User*, I should confess that I haven’t spoken adequately to peers at length about their Twitter use - understandably, busy independent artists don’t seem to find themsevles with the spare time to hypothesize methodically about what they might want from the service, going forward. From the mass of commentary on Twitter Blue I *was* able to gather, a resounding sentiment refrains: *these features should be available to everyone*. https://open.spotify.com/episode/3VSCTrzf9QN2MjyFMQ930d Frankly, after all these years, there’s not all that much to actually say about the product, itself. Thanks to Spaces, I happened to catch a chance to ask my favorite sage of late - Jason Scott, original creator of textfiles.com - for his thoughts. “Well, I bought it.” “Yeah, same.” ![Twitter in Jorts Dock, 2021](https://i.snap.as/zp5uCNwa.png) Then, we talked for 45 minutes about self-actualization. As I’ve recently honed my understanding of the significance behind my own personal extraordinary dependence/investment in this one service, I have also - in parallel, ya might say - refined wholly a set of expectations which I do not ever again expect to be usurped in any way by Twitter, Incorporated’s decisions. Believe it not, these thoughts of mine really *do* have real potential to add value to your life, especially if you’re still reading. The next time you find yourself wondering what Twitter might do next, try to internalize the utter inanity of that whole pursuit. Not one second can be concretely spent in that endeavor because the organization is defined singularly by its outrageous negligence. They are not villains or demons like [Big Blue](https://github.com/extratone/bigblue) - they are through and through a village of idiots, and no manner of user action can possibly budge them. Of course, this new development of mine hasn’t actually managed to delivery any peace upon my person. In fact, because it is impossible to be *constructively* critical in such a situation, I am one of few I know who must continue to be critical, anyway, because my livelihood does not depend on the newsworthiness of my subject matter. I guess I should just be thankful my “must” represents so little time-sensitive consequence, if any, given how long it takes me to finish anything, these days. On that note, please [look elsewhere](https://www.theverge.com/2021/11/14/22778827/twitter-blue-undo-button-paywall-features-paid-free) for the bulletpoints… Come back for at least a second, though, because this Post *does* eventually circle around to a handful of poignant, original comments on the ~~Whats~~. The peeves aren’t new, but I’ve found my own redundancy within *The Psalms* to be less and less… redundant, if that makes sense. This company’s software is bad and its continued prioritization of the two native mobile applications (neither of which it actually built) over any other clients for *all* user considerations is a spectacular tedium to follow. Its world record breaking inability to understand anything about how its *whole shit* fits into the lives of *any* of its users continues to astound. My peak irritation about the whole situation, lately, is that *you fuckers* continue to discuss alterations to social software, generally, as if they are *inevitable* with a sense of complicity I will *not* allow. I’m not going to argue that you’re *obligated* to speak up and out in a labor sense, but beseeching that you **expect more** from these organizations as a customer, a citizen, and a human being. For your sake, I've spent the time to break Twitter Blue's offering down specifically, feature by feature, only because I have yet to see it done methodically in detail from the tech media sources you'd normally depend on. ![Thread Reader - Twitter Blue for iOS](https://i.snap.as/SAYPlThr.png) ## Thread Reader If I’m honest, the majority of the discourse I’ve picked up surrounding Twitter threads in the past few years has been negative. Vaguely, “getting lost” is something I recall being expressed. Twitter Blue’s Thread Reader offers a “reader view”-like experience in three different font sizes - none of which looked particularly optimal, to my eye. If there’s anything to say about it, really, it’s suggest this adjustment be made more variable, natively, though further adjustment is allowed at the moment by using `⌘ + =, -, and 0` for those iPhone keyboarders among you. ![Voice Tweets in Thread Reader - Twitter for iOS](https://i.snap.as/1ia6xNyv.png) Also, the appearance of non text-only posts (especially Voice Tweets, which I, alone, continue to use) in this view feels like a bit of an afterthought. ![Custom Navigation - Twitter Blue on iOS](https://i.snap.as/hu2p7mN2.png) ## Custom Navigation Intentionally or not, the configuration of Twitter for iOS’ navigation tabs enabled by Twitter Blue membership is a revelation - or it would be, were it the only viable Twitter client on the platform. It’s perhaps the most celebratable feature included in Twitter Blue, if only because it suggests the Twitter team is finally paying attention to Tweetbot. (In case you weren’t aware, I spent a significant amount of time and words writing about just how valuable Tweetbot is, [earlier this year](https://bilge.world/tweetbot-6-ios-review).) Unfortunately for Twitter, [Tweetbot’s had an incredible year](https://www.macstories.net/ios/tweetbot-6-6-gets-support-for-creating-polls-limiting-who-can-reply-to-tweets/). The biggest possible miss, here, was adamantly missed: one *cannot* customize away the “Home” timeline from the first nav bar position, which brings up another huge issue with expecting a monthly fee for an experience within Twitter’s iOS app: *persistence*. https://twitter.com/neoyokel/status/1467393675579871234 In the clip of the Twitter feedback Space embedded above, my second point of note was that the app had not “randomly logged me out” in the seven days I’d then been subscribed to Twitter Blue. To be clear, this was referring to the experience of opening the Twitter for iOS app to the welcome screen instead of where one left off, which has indeed happened in the interim. The worst bit: after logging back in again, all one’s app preferences are reset to their respective defaults. Without a means of exporting or “backing up” one’s settings - like say, [Better Tweetdeck](https://better.tw) has - this means that one has to methodically explore every single Settings menu and re-select core essentials like posting the highest quality possible images, for instance, all with the knowledge that such a reset could happen again at any time. Suffice it to say, this is not the sort of quality one expects from a premium iOS app in 2021. https://twitter.com/neoyokel/status/1463658007791812608 As you’ll see in the screenshot embedded above, Custom Navigation offers one a choice of up to 6 tabs from a total of 10, which include [some Bluetooth keyboard shortcut considerations](https://github.com/ExtraKeys/keys/issues/31#issuecomment-986184090) I suspect you’ll not find detailed from any other source. ### Bluetooth Keyboard Shortcuts Support To start, `⌘ + F` will now reliably open the Explore tab and (most of the time) deliver one’s cursor directly to its search field. However, **this only functions when Explore has been selected as one of the bottom nav tabs**, which really misses out on an opportunity for the shortcut to be uniquely useful, in my view. Otherwise, `⌘ + 1-6` will open the bottom tabs you’ve chosen in order, which means - brace yourselves - that Twitter Blue’s Custom Navigation technically includes *configurable keyboard shortcuts*. https://twitter.com/neoyokel/status/1467681892468154370 Also notable: when viewing the obligatory Home tab, one can navigate between their Lists with just the (unmodified) left and right arrow keys! `⌘ + ,` is now a dependable way of opening the app’s Settings menu, `⌘ + \` pulls up the account switcher, `⌘ + =,-,0` manipulates text size, app-wide. `⌘ + V` will open Tweets from links in one’s clipboard from anywhere in the app - not a new trick, I don’t think, but a clever one. As of this writing, [the public-facing document of Twitter for iOS’ Bluetooth keyboard shortcuts](https://help.twitter.com/en/using-twitter/twitter-ios-app) is quite inaccurate. For example, it lists `⌘ + M` as the command to switch between light and dark mode in the app, which is actually accomplished with `⌘ + ⇧ + D`. ![Undo Tweet - Twitter Blue](https://i.snap.as/Qfb0rFvf.png) ## Undo Tweet Perhaps unlike you, *I* have never had a problem understanding why “editable” Tweets will never exist, largely thanks to [my conversation with Eugen Rochko](https://hyp.is/znp7tEQJEeySOXvhkqI2DQ/bilge.world/eugen-rochko-interview) about implementing editable posts on Mastodon: > That won't happen. There's actually a good reason why they don't do that. It's simply because you could make a toot about one thing, have people favorite it and share it, link it from other places, and then suddenly, it says 'Heil Hitler,' or something. This, actually, is *not* the reason I found it easy to understand, though I hope it makes a bit of a sense. It was when Eugen mentioned (unquoted) Twitter's original design around SMS[^1] that I first vaguely understood the depth of this limitation in the core architecture of the service. As far as I understand it, **the method in which a Tweet’s basic data is stored does not allow for revision**. It can be deleted or obfuscated, but never substituted for or replaced. As I noted all those years ago. **Delete & Re-Draft** - the answer Mastodon integrated natively and third-party social clients have featured for years - makes *a lot* more sense than straight up "editable Tweets" *or* the chosen answer at the top of Twitter Blue's feature list, "[Undo Tweet](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet)." Here's the full text from [**its subpage**](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet) in Twitter's documentation: > **Undo Tweet** gives you the option to retract a Tweet after you send it, but before it’s visible to others on Twitter. It’s not an edit button, but a chance to preview and revise your Tweet before it’s posted for the world to see. Once the Undo period is over, the Tweet is viewable to your followers and you can either leave it or delete it, like you normally would on Twitter. > > - Tapping Undo sends you back to the Tweet composer where you can make changes before posting the Tweet, or deciding not to post at all. You can also select Send now to skip the Undo Tweet option and post your tweet immediately. > - You can turn Undo Tweet settings on for all or some of the [different types of Tweets](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undodifftweets) including Original Tweets, Quote Tweets, threads, and replies. > - When active, Undo Tweet displays a countdown of the time left until your default 30-second Tweet Undo period expires, and your Tweet appears on Twitter. Shorten or lengthen the expiration window to 5, 10, 20 or 60 seconds under the [Twitter Blue feature settings menu](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweetperiod). > - If you turn off Undo Tweet, you won’t see the Undo Tweet prompt. > - Read more about [how to adjust the settings of your Undo Tweet feature](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweet). By default, Undo Tweet is turned on for every single post of any kind at 20 seconds' notice. This was my very first change to the default settings ([other than the highlight color and app icon](https://twitter.com/NeoYokel/status/1459235983174639626)): I turned it off for Original Tweets, Replies, and Threads. This makes it tolerable, but still useless, and honestly, I can think of only one instance in which I used it for its intended purpose. ![Pinned DMs - Twitter Blue on iOS](https://i.snap.as/8aFbZdVQ.png) ## Longer Videos & Pinned Conversations The only straight up “we’ll let you take up a bit more bandwidth since you’re paying us” feature addition included with Twitter Blue is its elongation of the time limit for posted videos from two to ten minutes. One of very few observations about Twitter Blue I could find from “regular” Twitter Users comes from [r/Twitter](https://reddit.com/r/Twitter) (which is uh…. a mess:) > the only reason i got it is because it allows 10 minutes of videos you can post and since I make content I no longer have to be restrained to the 2:20 video time on the "regular" Twitter. -[u/jdb825](https://reddit.com/r/Twitter/comments/qxygfb/_/hmddlli/?context=1) I personally feel this post wholeheartedly - especially since I’ve basically committed to single-take video content, personally, yet have been regularly sharing screencaps on my account. An anecdote I have not seen mentioned: for videos uploaded directly to Twitter’s “Media Studio” (a feature to which I have access because of my peak Periscope fame, years ago,) the two-minute limit still applies. Yet another beautifully absurd product oversight. From the screenshot embedded above, it’s quite obvious that I no longer use Twitter’s Direct Messages, but there was a time, many years ago, when I would have personally appreciated “**Pinned Conversations**” very much. ![Ad-Free Articles in Safari - Twitter Blue](https://i.snap.as/7RBw18tJ.png) ## Ad-Free Articles As much as I want to unabashedly celebrate the investment Twitter, Inc. is inexplicably now demonstrating in Lists - a feature I’ve [tirelessly advocated for](https://bilge.world/twitter-lists) out of perceived obscurity - with Twitter Blue, there’s at least one example which they’ve managed to fuck up such investment. The official list of publishers participating in Twitter Blue’s “Ad-Free Articles” rehash of Scroll is exclusively documented in the from of [@TwitterBlue’s singular Twitter List](https://twitter.com/i/lists/1448014243245150209), which makes it conveniently quite difficult to share. Aside from that anecdote, I have another which is both mostly personal and yet inexcludable. The day [Twitter acquired Scroll](https://www.theverge.com/2021/10/5/22711233/scroll-shutting-down-twitter-blue-standalone-subscription-ad-free-article-service), I had the bizarre, completely unexpected opportunity to ask Tony Haile - Scroll’s founder, who also played a substantial role in creating the Ad-Tech Hell it was founded to counter in creating Chartbeat, some years ago - *a question*. I’d been listening to a Twitter Space hosted by [Chris Messina](https://twitter.com/chrismessina) and [Brian McCullough](https://twitter.com/brianmcc) for *TechMeme* featuring Haile while I’d been showering. Somehow, the two ran out of questions to ask Tony, so they turned to the audience. I requested to speak and Chris - who’d done so a few times before - let me in almost immediately. Nude and still very wet, standing in my bathroom, I suddenly found myself on a call, essentially, with certainly the most interesting media industry figure of the moment. Chris, who knew me well enough already as a regular in his Spaces to know my speech often includes long pauses, said something like “quickly.” I began by bringing back a topic from an hour before, at least, and noted that Twitter’s “Tips” feature was no more than a list of hyperlinks as it stood (it basically still is,) before (more or less verbatim:) “I just got out of the shower but uh… I forgot about Tony Haile. (yes, he was listening directly to the Space and I did say that) …but I would ask him to narrate how exactly he got from Chartbeat to Scroll to Twitter.” Yes, I spoke of him in the third person even though I could all but hear him breathing. I then retired from my speaking role, but - from what I could tell, passively listening as I finished getting ready for some time-sensitive engagement - my question basically sustained the rest of the interview. This experience, alone, wouldn’t necessarily be worth mentioning, but after discovering *The Kansas City Star* - one of the oldest, most established local mastheads to my home state (Missouri,) to which I maintain a subscription - among the aforelinked List list of participating publishers in Twitter Blue’s Ad-Free Articles program, I reached out to the one *Star* reporter I know, asking simply if she’d heard anything whatsoever about the program from editors or just ambiently in the newsroom. She had not. For an explanation, I dug just a bit further and found out the *Stars*’ corporate owner, McClatchy, had in fact [“tested” a “partnership” with Scroll before](https://www.niemanlab.org/2020/12/scroll-the-ad-free-news-startup-will-experiment-with-bundled-subscriptions-at-eight-mcclatchy-sites/), and appeared to have opted its whole handful of local American news institutions - including the *Star* - in again, en masse, to its new, Twitter-owned form. Before I go on, I should note that one can indeed utilize Ad-Free articles’ benefit within your preferred web browser, but the process is very specific. On iOS, you’ll need to open an Ad-Free Article in the Twitter app first (marked with blue text) and then tap the Safari icon in the bottom right to open your default browser. You’ll know you’ve authenticated correctly when you see one of these two motherfuckers[^3] (depending on your system’s current light/dark theme setting) in the bottom right of your browser window: ![Twitter Blue Tabs](https://i.snap.as/Qs5cIakt.png) For thoroughness’ sake, here’s what [the official help document](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles) has to say: > As long as you stay logged in to Twitter, and use the same browser each time, you should get ad-free reading when you subsequently visit that same Twitter Blue site. Have a peak at [*The Kansas City Star*’s Wikipedia page](https://en.wikipedia.org/wiki/The_Kansas_City_Star) and you’ll note that it’s over 150 years old, once claimed Ernest Hemingway on its masthead, has been awarded eight Pulitzer Prizes, and that it depends on a combination of advertising dollars and [possibly in duress](https://jimmycsays.com/2018/02/13/more-worrisome-circulation-figures-for-the-kansas-city-star/) subscription revenue to stay afloat. This in mind, note the screenshot I’ve embedded below, comparing how a Twitter Blue-participating *Star* article appears within a desktop browser - without Twitter Blue vs Twitter Blue. ![Kansas City Star Twitter Blue Comparison](https://i.snap.as/ATS5Q3ok.png) Captures of each respective webpage demonstrate that Twitter Blue exempts a reader from about half of the content weight of the non-Blue-authenticated render[^4]. Old school banner ads account for a portion of the missing content, but at least three elements for converting visiting readers to paying subscribers make up for most of it, I’d wager. None of what’s gone is content anyone on Earth *wants* to see, mind you, but frankly, it’s disrespectful of the paper’s classically villainous, [recently bankrupt](https://www.nytimes.com/2020/07/16/business/media/hedge-fund-chatham-mcclatchy-postmedia-newspapers.html) corporate overloard to opt it in with a program fundamentally designed to *intentionally forgo advertising engagement*. ![See Your Impact - Twitter Blue](https://user-images.githubusercontent.com/43663476/144753270-c9687e0d-1307-41ba-b403-990923d70acf.png) Tony Haile, if you’re reading this, you can exhale now. Yes, [the *theory* behind Scroll, and now “Ad-Free Articles” in Twitter Blue](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles), suggests that the fifteen cents I’ve earned the *Star* so far (the graphic above can be found in the “See Your Impact” selection within one’s Twitter Settings) will be paid directly *to*… Whom, exactly? The answer offered by Twitter, Inc. to the question of “How does my ad-free reading support journalism?” (asked of themselves:) > Each month, we pay publishers within the Twitter Blue Publishers Network based on the content you and other Twitter Blue subscribers read ad-free through Twitter Blue. Our model is designed to help publishers continue to fund the journalism you love to read. *Publishers*. I suspect that means cash-desperate McClatchy and *not* *The Kansas City Star*. All to be done at the moment, at least, is to ask ourselves how much of that cash will ever be seen by the paper. ![Bookmark Folders - Twitter Blue](https://i.snap.as/VyMNqr7V.png) ## Bookmark Folders Bookmarks and **Bookmark Folders** represent yet further evidence that someone at Twitter, Inc. *actually uses Twitter* (or perhaps has a friend or family member.) Technically, they also represent one of few core functions exclusive to Twitter’s own clients. (Consider: Tweetbot even supports polls, now.) However, like the Thread Reader and “Custom Themes,” Bookmark Folders, too, feel like an afterthought shoved in the bundle an hour before a deadline. Specifically, their color-coded icons look like placeholders for custom images… which aren’t supported, and they represent 0 additional function as curatorial/archival tools (no exporting/aggregating/or sorting, even) beyond simply nesting bookmarks into… folders. ![Themes & Icons - Twitter Blue for iOS](https://i.snap.as/935pp2QS.png) ## Icons & “Themes” Even greater heights of half-assery have been achieved by what Twitter describes as “[exclusive app icons and colorful themes](https://blog.twitter.com/en_us/topics/product/2021/twitter-smarter--twitter-harder-with-twitter-blue).” Here, I must finally give in and compare Twitter Blue with Tweetbot directly. https://twitter.com/neoyokel/status/1467422017527951366 Absolutely zero effort has been expended thus far in recharacterizing what Web Twitter still calls “Colors” as “Themes,” and the only *exclusivity* in the icon options is that some are seasonal, or otherwise time-limited, for what possible purpose I cannot conceive. This from a company of more than 5000 full-time employees. In contrast, from a full-time team of two - both of whom suffered through bad COVID infections, this year - Tweetbot now includes an even further broadened spectrum of app-wide themes and 19 app icons in total, including, yes, at least two very cute, limited-time seasonal options. https://open.spotify.com/episode/0ImyC2Twm5qyx9lxmcKmkP ## All Users ~~are~~ Should Be Powerusers The episode of *End User* embedded above is one of the only podcast episodes I’ve ever made which I actually find *too painful* to listen back to[^2], but I still think it’s valuable. There’s a specific bit of the conversation between [@alisonbuki](https://twitter.com/alisonbuki) and I in which the term “Poweruser” is actually thrown around regarding my own use of Twitter Lists, Tweetbot, and a few other *Hax* to consume content *deliberately*. I think I failed somewhere in my portrayal of this curation and miscommunicated the nature of what I was trying to get at by “making use of the tools available to you.” Regarding the actual manhours involved in the configuration I was trying to evangelize, I think I’ve spent more time trying to describe the effort than I have actually configuring my own content intake. Long before I was [follow-limited](https://bit.ly/dbfollow) in 2017, I lived entirely in my [Twitter Lists]()https://twitter.com/NeoYokel/lists), the largest of which I built up “organically” over time, by adding appropriate accounts one by one as I came across them. Thanks to Tweetbot, my equivalent of the native apps’s Home timeline is a private List of ~200 accounts whose users represent the actual entirety of my adult social life, past to present. Then, there’s [The New](https://twitter.com/NeoYokel/lists/the-new), which - I must admit - has grown beyond its original scope and sortof become my follow list, with enough exceptions that I consider it worthwhile to keep public. Then, there’s the newest - [my Meta-Media List](https://twitter.com/i/lists/768458273141907456) - and the very oldest: my dear, weathered [Rolodex of Automotive Twitter](https://twitter.com/i/lists/43457439). I keep Tweetbot in my dock and the native app on my device just for notifications, Spaces, and now Communities. That’s it! Yet, using this configuration, I *never* see content that seriously disturbs, shames, triggers, or otherwise upsets me beyond reason or expectation[^5], but am regularly exposed to a relatively diverse palette of perspectives, and just generally find my consumption/engagement time on the service meaningfully spent. The particular amalgamation of truly half-assed user experience features offered in Twitter Blue lend toward a narrative about this company which we collectively have continued to fall for literally *dozens* of times - often in immediate succession - throughout the fewer years of its history: that it *finally* has a morsel of what *might just become* a cohesive vision. Clearly, I am as susceptible to this as anyone considering how quickly I jumped to celebrating the fact that *finally*, Twitter had seen the humongous value to be imparted to its userbase by simply adding basic configurables like custom navigation and especially refining the essential curatorial tool that is Lists. Were I still a person who wastes my energy speculating on the real happenings within Twitter, Inc, though, an entirely different, much more realistic sounding theory arises after the analysis we’ve trudged through together in this post: every single item on Twitter Blue’s feature list represents the absolute bare minimum resource investment possible. If I had any money, I’d go on to bet that [Shihab Mehboob](https://twitter.com/jpeguin) could have built from scratch every single developmental “addition” to the iOS app Twitter Blue includes in a matter of hours, though from experience, I seriously doubt he’d ever allow such lackluster work to reach even beta tester’s fingers. As far as Ad-Free Articles go, Twitter hasn’t even bothered to swap out all the Scroll branding. The fact that *I* had to surface the concept of Delete and Re-Draft to Twitter Employee brains for what all appearances indicate was the first time in that “FeedbackFriday” Twitter Space represents a truly sickening lack of effort. No, the story that aligns much more succinctly in the grander context is that Twitter Blue just happened to be the first disjointed, scatterbrained subscription service pitch to finally fall out the rectum of this miraculously bunk organization, but all you motherfuckers can talk about is Japple Notes Dorsey walking out, and *what it could mean*. Since I have now actually been personally and explicitly invited to share feedback regarding Twitter Blue, I suppose I’ll make some effort to send them this hyperlink. In that vein, I think I’ll end with some advice addressed directly to Twitter, Incorporated: Hey Twitter! If you ever find yourself genuinely interested in selling a subscription product long term, as a mutual value exchange with your users, make all of Twitter Blue’s features available to all users, and ditch Scroll entirely. Instead of placing the bet on local newspapers like *The Kansas City Star*, it should be on *you* to **take the financial risk yourself, and offer, simply, a completely ad-free Twitter experience**. That might just be worth $2.99 a month. [1] Despite the fact that Tweeting via SMS has [since been disabled](https://www.theverge.com/2019/9/4/20849865/twitter-disables-sms-text-message-tweeting-jack-dorsey-ceo-hack). [2] I was just… rude. Very rude. “Necessary” is not a term I’d apply to this rudeness, but… Just give me this once, please. [3] In the process of trying to capture a good image of this thing, I noticed that all the assets are still being loaded from static.scroll.com. Nice. [4] See for yourself via [this thread](https://t.me/extratone/8767) on my Telegram channel. [5] An obligatory note that I am of the most privileged sort of human there ever has been, or that one can be. #software #media #psalms # David Blue on Twitter Blue ![Twitter Blue Bevel](https://i.snap.as/XR4mJRCG.png) ## Gargantuan, ridiculously avoidable misses in Little Blue’s Blue. Incredibly, the second most powerful social media company in the world has finally managed to implement a paid subscription model, as I’ve been begging them to do for [at least 5 years](https://twitter.com/neoyokel/status/696094018862718976), now. For three U.S. Dollars a month, “[Twitter Blue](https://blog.twitter.com/en_us/topics/company/2021/introducing-twitter-blue)” is [now available](https://www.theverge.com/2021/11/9/22766286/twitter-blue-subscription-service-scroll-nuzzel-undo-tweets-ad-free-articles-us) for all United States users. Aside from [a relentless, rude, two and a half hour-long rant](https://apple.co/3wVZs3v) at two new friends on *End User*, I should confess that I haven’t spoken adequately to peers at length about their Twitter use - understandably, busy independent artists don’t seem to find themsevles with the spare time to hypothesize methodically about what they might want from the service, going forward. From the mass of commentary on Twitter Blue I *was* able to gather, a resounding sentiment refrains: *these features should be available to everyone*. https://open.spotify.com/episode/3VSCTrzf9QN2MjyFMQ930d Frankly, after all these years, there’s not all that much to actually say about the product, itself. Thanks to Spaces, I happened to catch a chance to ask my favorite sage of late - Jason Scott, original creator of textfiles.com - for his thoughts. “Well, I bought it.” “Yeah, same.” ![Twitter in Jorts Dock, 2021](https://i.snap.as/zp5uCNwa.png) Then, we talked for 45 minutes about self-actualization. As I’ve recently honed my understanding of the significance behind my own personal extraordinary dependence/investment in this one service, I have also - in parallel, ya might say - refined wholly a set of expectations which I do not ever again expect to be usurped in any way by Twitter, Incorporated’s decisions. Believe it not, these thoughts of mine really *do* have real potential to add value to your life, especially if you’re still reading. The next time you find yourself wondering what Twitter might do next, try to internalize the utter inanity of that whole pursuit. Not one second can be concretely spent in that endeavor because the organization is defined singularly by its outrageous negligence. They are not villains or demons like [Big Blue](https://github.com/extratone/bigblue) - they are through and through a village of idiots, and no manner of user action can possibly budge them. Of course, this new development of mine hasn’t actually managed to delivery any peace upon my person. In fact, because it is impossible to be *constructively* critical in such a situation, I am one of few I know who must continue to be critical, anyway, because my livelihood does not depend on the newsworthiness of my subject matter. I guess I should just be thankful my “must” represents so little time-sensitive consequence, if any, given how long it takes me to finish anything, these days. On that note, please [look elsewhere](https://www.theverge.com/2021/11/14/22778827/twitter-blue-undo-button-paywall-features-paid-free) for the bulletpoints… Come back for at least a second, though, because this Post *does* eventually circle around to a handful of poignant, original comments on the ~~Whats~~. The peeves aren’t new, but I’ve found my own redundancy within *The Psalms* to be less and less… redundant, if that makes sense. This company’s software is bad and its continued prioritization of the two native mobile applications (neither of which it actually built) over any other clients for *all* user considerations is a spectacular tedium to follow. Its world record breaking inability to understand anything about how its *whole shit* fits into the lives of *any* of its users continues to astound. My peak irritation about the whole situation, lately, is that *you fuckers* continue to discuss alterations to social software, generally, as if they are *inevitable* with a sense of complicity I will *not* allow. I’m not going to argue that you’re *obligated* to speak up and out in a labor sense, but beseeching that you **expect more** from these organizations as a customer, a citizen, and a human being. For your sake, I've spent the time to break Twitter Blue's offering down specifically, feature by feature, only because I have yet to see it done methodically in detail from the tech media sources you'd normally depend on. ![Thread Reader - Twitter Blue for iOS](https://i.snap.as/SAYPlThr.png) ## Thread Reader If I’m honest, the majority of the discourse I’ve picked up surrounding Twitter threads in the past few years has been negative. Vaguely, “getting lost” is something I recall being expressed. Twitter Blue’s Thread Reader offers a “reader view”-like experience in three different font sizes - none of which looked particularly optimal, to my eye. If there’s anything to say about it, really, it’s suggest this adjustment be made more variable, natively, though further adjustment is allowed at the moment by using `⌘ + =, -, and 0` for those iPhone keyboarders among you. ![Voice Tweets in Thread Reader - Twitter for iOS](https://i.snap.as/1ia6xNyv.png) Also, the appearance of non text-only posts (especially Voice Tweets, which I, alone, continue to use) in this view feels like a bit of an afterthought. ![Custom Navigation - Twitter Blue on iOS](https://i.snap.as/hu2p7mN2.png) ## Custom Navigation Intentionally or not, the configuration of Twitter for iOS’ navigation tabs enabled by Twitter Blue membership is a revelation - or it would be, were it the only viable Twitter client on the platform. It’s perhaps the most celebratable feature included in Twitter Blue, if only because it suggests the Twitter team is finally paying attention to Tweetbot. (In case you weren’t aware, I spent a significant amount of time and words writing about just how valuable Tweetbot is, [earlier this year](https://bilge.world/tweetbot-6-ios-review).) Unfortunately for Twitter, [Tweetbot’s had an incredible year](https://www.macstories.net/ios/tweetbot-6-6-gets-support-for-creating-polls-limiting-who-can-reply-to-tweets/). The biggest possible miss, here, was adamantly missed: one *cannot* customize away the “Home” timeline from the first nav bar position, which brings up another huge issue with expecting a monthly fee for an experience within Twitter’s iOS app: *persistence*. https://twitter.com/neoyokel/status/1467393675579871234 In the clip of the Twitter feedback Space embedded above, my second point of note was that the app had not “randomly logged me out” in the seven days I’d then been subscribed to Twitter Blue. To be clear, this was referring to the experience of opening the Twitter for iOS app to the welcome screen instead of where one left off, which has indeed happened in the interim. The worst bit: after logging back in again, all one’s app preferences are reset to their respective defaults. Without a means of exporting or “backing up” one’s settings - like say, [Better Tweetdeck](https://better.tw) has - this means that one has to methodically explore every single Settings menu and re-select core essentials like posting the highest quality possible images, for instance, all with the knowledge that such a reset could happen again at any time. Suffice it to say, this is not the sort of quality one expects from a premium iOS app in 2021. https://twitter.com/neoyokel/status/1463658007791812608 As you’ll see in the screenshot embedded above, Custom Navigation offers one a choice of up to 6 tabs from a total of 10, which include [some Bluetooth keyboard shortcut considerations](https://github.com/ExtraKeys/keys/issues/31#issuecomment-986184090) I suspect you’ll not find detailed from any other source. ### Bluetooth Keyboard Shortcuts Support To start, `⌘ + F` will now reliably open the Explore tab and (most of the time) deliver one’s cursor directly to its search field. However, **this only functions when Explore has been selected as one of the bottom nav tabs**, which really misses out on an opportunity for the shortcut to be uniquely useful, in my view. Otherwise, `⌘ + 1-6` will open the bottom tabs you’ve chosen in order, which means - brace yourselves - that Twitter Blue’s Custom Navigation technically includes *configurable keyboard shortcuts*. https://twitter.com/neoyokel/status/1467681892468154370 Also notable: when viewing the obligatory Home tab, one can navigate between their Lists with just the (unmodified) left and right arrow keys! `⌘ + ,` is now a dependable way of opening the app’s Settings menu, `⌘ + \` pulls up the account switcher, `⌘ + =,-,0` manipulates text size, app-wide. `⌘ + V` will open Tweets from links in one’s clipboard from anywhere in the app - not a new trick, I don’t think, but a clever one. As of this writing, [the public-facing document of Twitter for iOS’ Bluetooth keyboard shortcuts](https://help.twitter.com/en/using-twitter/twitter-ios-app) is quite inaccurate. For example, it lists `⌘ + M` as the command to switch between light and dark mode in the app, which is actually accomplished with `⌘ + ⇧ + D`. ![Undo Tweet - Twitter Blue](https://i.snap.as/Qfb0rFvf.png) ## Undo Tweet Perhaps unlike you, *I* have never had a problem understanding why “editable” Tweets will never exist, largely thanks to [my conversation with Eugen Rochko](https://hyp.is/znp7tEQJEeySOXvhkqI2DQ/bilge.world/eugen-rochko-interview) about implementing editable posts on Mastodon: > That won't happen. There's actually a good reason why they don't do that. It's simply because you could make a toot about one thing, have people favorite it and share it, link it from other places, and then suddenly, it says 'Heil Hitler,' or something. This, actually, is *not* the reason I found it easy to understand, though I hope it makes a bit of a sense. It was when Eugen mentioned (unquoted) Twitter's original design around SMS[^1] that I first vaguely understood the depth of this limitation in the core architecture of the service. As far as I understand it, **the method in which a Tweet’s basic data is stored does not allow for revision**. It can be deleted or obfuscated, but never substituted for or replaced. As I noted all those years ago. **Delete & Re-Draft** - the answer Mastodon integrated natively and third-party social clients have featured for years - makes *a lot* more sense than straight up "editable Tweets" *or* the chosen answer at the top of Twitter Blue's feature list, "[Undo Tweet](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet)." Here's the full text from [**its subpage**](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet) in Twitter's documentation: > **Undo Tweet** gives you the option to retract a Tweet after you send it, but before it’s visible to others on Twitter. It’s not an edit button, but a chance to preview and revise your Tweet before it’s posted for the world to see. Once the Undo period is over, the Tweet is viewable to your followers and you can either leave it or delete it, like you normally would on Twitter. > > - Tapping Undo sends you back to the Tweet composer where you can make changes before posting the Tweet, or deciding not to post at all. You can also select Send now to skip the Undo Tweet option and post your tweet immediately. > - You can turn Undo Tweet settings on for all or some of the [different types of Tweets](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undodifftweets) including Original Tweets, Quote Tweets, threads, and replies. > - When active, Undo Tweet displays a countdown of the time left until your default 30-second Tweet Undo period expires, and your Tweet appears on Twitter. Shorten or lengthen the expiration window to 5, 10, 20 or 60 seconds under the [Twitter Blue feature settings menu](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweetperiod). > - If you turn off Undo Tweet, you won’t see the Undo Tweet prompt. > - Read more about [how to adjust the settings of your Undo Tweet feature](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweet). By default, Undo Tweet is turned on for every single post of any kind at 20 seconds' notice. This was my very first change to the default settings ([other than the highlight color and app icon](https://twitter.com/NeoYokel/status/1459235983174639626)): I turned it off for Original Tweets, Replies, and Threads. This makes it tolerable, but still useless, and honestly, I can think of only one instance in which I used it for its intended purpose. ![Pinned DMs - Twitter Blue on iOS](https://i.snap.as/8aFbZdVQ.png) ## Longer Videos & Pinned Conversations The only straight up “we’ll let you take up a bit more bandwidth since you’re paying us” feature addition included with Twitter Blue is its elongation of the time limit for posted videos from two to ten minutes. One of very few observations about Twitter Blue I could find from “regular” Twitter Users comes from [r/Twitter](https://reddit.com/r/Twitter) (which is uh…. a mess:) > the only reason i got it is because it allows 10 minutes of videos you can post and since I make content I no longer have to be restrained to the 2:20 video time on the "regular" Twitter. -[u/jdb825](https://reddit.com/r/Twitter/comments/qxygfb/_/hmddlli/?context=1) I personally feel this post wholeheartedly - especially since I’ve basically committed to single-take video content, personally, yet have been regularly sharing screencaps on my account. An anecdote I have not seen mentioned: for videos uploaded directly to Twitter’s “Media Studio” (a feature to which I have access because of my peak Periscope fame, years ago,) the two-minute limit still applies. Yet another beautifully absurd product oversight. From the screenshot embedded above, it’s quite obvious that I no longer use Twitter’s Direct Messages, but there was a time, many years ago, when I would have personally appreciated “**Pinned Conversations**” very much. ![Ad-Free Articles in Safari - Twitter Blue](https://i.snap.as/7RBw18tJ.png) ## Ad-Free Articles As much as I want to unabashedly celebrate the investment Twitter, Inc. is inexplicably now demonstrating in Lists - a feature I’ve [tirelessly advocated for](https://bilge.world/twitter-lists) out of perceived obscurity - with Twitter Blue, there’s at least one example which they’ve managed to fuck up such investment. The official list of publishers participating in Twitter Blue’s “Ad-Free Articles” rehash of Scroll is exclusively documented in the from of [@TwitterBlue’s singular Twitter List](https://twitter.com/i/lists/1448014243245150209), which makes it conveniently quite difficult to share. Aside from that anecdote, I have another which is both mostly personal and yet inexcludable. The day [Twitter acquired Scroll](https://www.theverge.com/2021/10/5/22711233/scroll-shutting-down-twitter-blue-standalone-subscription-ad-free-article-service), I had the bizarre, completely unexpected opportunity to ask Tony Haile - Scroll’s founder, who also played a substantial role in creating the Ad-Tech Hell it was founded to counter in creating Chartbeat, some years ago - *a question*. I’d been listening to a Twitter Space hosted by [Chris Messina](https://twitter.com/chrismessina) and [Brian McCullough](https://twitter.com/brianmcc) for *TechMeme* featuring Haile while I’d been showering. Somehow, the two ran out of questions to ask Tony, so they turned to the audience. I requested to speak and Chris - who’d done so a few times before - let me in almost immediately. Nude and still very wet, standing in my bathroom, I suddenly found myself on a call, essentially, with certainly the most interesting media industry figure of the moment. Chris, who knew me well enough already as a regular in his Spaces to know my speech often includes long pauses, said something like “quickly.” I began by bringing back a topic from an hour before, at least, and noted that Twitter’s “Tips” feature was no more than a list of hyperlinks as it stood (it basically still is,) before (more or less verbatim:) “I just got out of the shower but uh… I forgot about Tony Haile. (yes, he was listening directly to the Space and I did say that) …but I would ask him to narrate how exactly he got from Chartbeat to Scroll to Twitter.” Yes, I spoke of him in the third person even though I could all but hear him breathing. I then retired from my speaking role, but - from what I could tell, passively listening as I finished getting ready for some time-sensitive engagement - my question basically sustained the rest of the interview. This experience, alone, wouldn’t necessarily be worth mentioning, but after discovering *The Kansas City Star* - one of the oldest, most established local mastheads to my home state (Missouri,) to which I maintain a subscription - among the aforelinked List list of participating publishers in Twitter Blue’s Ad-Free Articles program, I reached out to the one *Star* reporter I know, asking simply if she’d heard anything whatsoever about the program from editors or just ambiently in the newsroom. She had not. For an explanation, I dug just a bit further and found out the *Stars*’ corporate owner, McClatchy, had in fact [“tested” a “partnership” with Scroll before](https://www.niemanlab.org/2020/12/scroll-the-ad-free-news-startup-will-experiment-with-bundled-subscriptions-at-eight-mcclatchy-sites/), and appeared to have opted its whole handful of local American news institutions - including the *Star* - in again, en masse, to its new, Twitter-owned form. Before I go on, I should note that one can indeed utilize Ad-Free articles’ benefit within your preferred web browser, but the process is very specific. On iOS, you’ll need to open an Ad-Free Article in the Twitter app first (marked with blue text) and then tap the Safari icon in the bottom right to open your default browser. You’ll know you’ve authenticated correctly when you see one of these two motherfuckers[^3] (depending on your system’s current light/dark theme setting) in the bottom right of your browser window: ![Twitter Blue Tabs](https://i.snap.as/Qs5cIakt.png) For thoroughness’ sake, here’s what [the official help document](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles) has to say: > As long as you stay logged in to Twitter, and use the same browser each time, you should get ad-free reading when you subsequently visit that same Twitter Blue site. Have a peak at [*The Kansas City Star*’s Wikipedia page](https://en.wikipedia.org/wiki/The_Kansas_City_Star) and you’ll note that it’s over 150 years old, once claimed Ernest Hemingway on its masthead, has been awarded eight Pulitzer Prizes, and that it depends on a combination of advertising dollars and [possibly in duress](https://jimmycsays.com/2018/02/13/more-worrisome-circulation-figures-for-the-kansas-city-star/) subscription revenue to stay afloat. This in mind, note the screenshot I’ve embedded below, comparing how a Twitter Blue-participating *Star* article appears within a desktop browser - without Twitter Blue vs Twitter Blue. ![Kansas City Star Twitter Blue Comparison](https://i.snap.as/ATS5Q3ok.png) Captures of each respective webpage demonstrate that Twitter Blue exempts a reader from about half of the content weight of the non-Blue-authenticated render[^4]. Old school banner ads account for a portion of the missing content, but at least three elements for converting visiting readers to paying subscribers make up for most of it, I’d wager. None of what’s gone is content anyone on Earth *wants* to see, mind you, but frankly, it’s disrespectful of the paper’s classically villainous, [recently bankrupt](https://www.nytimes.com/2020/07/16/business/media/hedge-fund-chatham-mcclatchy-postmedia-newspapers.html) corporate overloard to opt it in with a program fundamentally designed to *intentionally forgo advertising engagement*. ![See Your Impact - Twitter Blue](https://user-images.githubusercontent.com/43663476/144753270-c9687e0d-1307-41ba-b403-990923d70acf.png) Tony Haile, if you’re reading this, you can exhale now. Yes, [the *theory* behind Scroll, and now “Ad-Free Articles” in Twitter Blue](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles), suggests that the fifteen cents I’ve earned the *Star* so far (the graphic above can be found in the “See Your Impact” selection within one’s Twitter Settings) will be paid directly *to*… Whom, exactly? The answer offered by Twitter, Inc. to the question of “How does my ad-free reading support journalism?” (asked of themselves:) > Each month, we pay publishers within the Twitter Blue Publishers Network based on the content you and other Twitter Blue subscribers read ad-free through Twitter Blue. Our model is designed to help publishers continue to fund the journalism you love to read. *Publishers*. I suspect that means cash-desperate McClatchy and *not* *The Kansas City Star*. All to be done at the moment, at least, is to ask ourselves how much of that cash will ever be seen by the paper. ![Bookmark Folders - Twitter Blue](https://i.snap.as/VyMNqr7V.png) ## Bookmark Folders Bookmarks and **Bookmark Folders** represent yet further evidence that someone at Twitter, Inc. *actually uses Twitter* (or perhaps has a friend or family member.) Technically, they also represent one of few core functions exclusive to Twitter’s own clients. (Consider: Tweetbot even supports polls, now.) However, like the Thread Reader and “Custom Themes,” Bookmark Folders, too, feel like an afterthought shoved in the bundle an hour before a deadline. Specifically, their color-coded icons look like placeholders for custom images… which aren’t supported, and they represent 0 additional function as curatorial/archival tools (no exporting/aggregating/or sorting, even) beyond simply nesting bookmarks into… folders. ![Themes & Icons - Twitter Blue for iOS](https://i.snap.as/935pp2QS.png) ## Icons & “Themes” Even greater heights of half-assery have been achieved by what Twitter describes as “[exclusive app icons and colorful themes](https://blog.twitter.com/en_us/topics/product/2021/twitter-smarter--twitter-harder-with-twitter-blue).” Here, I must finally give in and compare Twitter Blue with Tweetbot directly. https://twitter.com/neoyokel/status/1467422017527951366 Absolutely zero effort has been expended thus far in recharacterizing what Web Twitter still calls “Colors” as “Themes,” and the only *exclusivity* in the icon options is that some are seasonal, or otherwise time-limited, for what possible purpose I cannot conceive. This from a company of more than 5000 full-time employees. In contrast, from a full-time team of two - both of whom suffered through bad COVID infections, this year - Tweetbot now includes an even further broadened spectrum of app-wide themes and 19 app icons in total, including, yes, at least two very cute, limited-time seasonal options. https://open.spotify.com/episode/0ImyC2Twm5qyx9lxmcKmkP ## All Users ~~are~~ Should Be Powerusers The episode of *End User* embedded above is one of the only podcast episodes I’ve ever made which I actually find *too painful* to listen back to[^2], but I still think it’s valuable. There’s a specific bit of the conversation between [@alisonbuki](https://twitter.com/alisonbuki) and I in which the term “Poweruser” is actually thrown around regarding my own use of Twitter Lists, Tweetbot, and a few other *Hax* to consume content *deliberately*. I think I failed somewhere in my portrayal of this curation and miscommunicated the nature of what I was trying to get at by “making use of the tools available to you.” Regarding the actual manhours involved in the configuration I was trying to evangelize, I think I’ve spent more time trying to describe the effort than I have actually configuring my own content intake. Long before I was [follow-limited](https://bit.ly/dbfollow) in 2017, I lived entirely in my [Twitter Lists]()https://twitter.com/NeoYokel/lists), the largest of which I built up “organically” over time, by adding appropriate accounts one by one as I came across them. Thanks to Tweetbot, my equivalent of the native apps’s Home timeline is a private List of ~200 accounts whose users represent the actual entirety of my adult social life, past to present. Then, there’s [The New](https://twitter.com/NeoYokel/lists/the-new), which - I must admit - has grown beyond its original scope and sortof become my follow list, with enough exceptions that I consider it worthwhile to keep public. Then, there’s the newest - [my Meta-Media List](https://twitter.com/i/lists/768458273141907456) - and the very oldest: my dear, weathered [Rolodex of Automotive Twitter](https://twitter.com/i/lists/43457439). I keep Tweetbot in my dock and the native app on my device just for notifications, Spaces, and now Communities. That’s it! Yet, using this configuration, I *never* see content that seriously disturbs, shames, triggers, or otherwise upsets me beyond reason or expectation[^5], but am regularly exposed to a relatively diverse palette of perspectives, and just generally find my consumption/engagement time on the service meaningfully spent. The particular amalgamation of truly half-assed user experience features offered in Twitter Blue lend toward a narrative about this company which we collectively have continued to fall for literally *dozens* of times - often in immediate succession - throughout the fewer years of its history: that it *finally* has a morsel of what *might just become* a cohesive vision. Clearly, I am as susceptible to this as anyone considering how quickly I jumped to celebrating the fact that *finally*, Twitter had seen the humongous value to be imparted to its userbase by simply adding basic configurables like custom navigation and especially refining the essential curatorial tool that is Lists. Were I still a person who wastes my energy speculating on the real happenings within Twitter, Inc, though, an entirely different, much more realistic sounding theory arises after the analysis we’ve trudged through together in this post: every single item on Twitter Blue’s feature list represents the absolute bare minimum resource investment possible. If I had any money, I’d go on to bet that [Shihab Mehboob](https://twitter.com/jpeguin) could have built from scratch every single developmental “addition” to the iOS app Twitter Blue includes in a matter of hours, though from experience, I seriously doubt he’d ever allow such lackluster work to reach even beta tester’s fingers. As far as Ad-Free Articles go, Twitter hasn’t even bothered to swap out all the Scroll branding. The fact that *I* had to surface the concept of Delete and Re-Draft to Twitter Employee brains for what all appearances indicate was the first time in that “FeedbackFriday” Twitter Space represents a truly sickening lack of effort. No, the story that aligns much more succinctly in the grander context is that Twitter Blue just happened to be the first disjointed, scatterbrained subscription service pitch to finally fall out the rectum of this miraculously bunk organization, but all you motherfuckers can talk about is Japple Notes Dorsey walking out, and *what it could mean*. Since I have now actually been personally and explicitly invited to share feedback regarding Twitter Blue, I suppose I’ll make some effort to send them this hyperlink. In that vein, I think I’ll end with some advice addressed directly to Twitter, Incorporated: Hey Twitter! If you ever find yourself genuinely interested in selling a subscription product long term, as a mutual value exchange with your users, make all of Twitter Blue’s features available to all users, and ditch Scroll entirely. Instead of placing the bet on local newspapers like *The Kansas City Star*, it should be on *you* to **take the financial risk yourself, and offer, simply, a completely ad-free Twitter experience**. That might just be worth $2.99 a month. [1] Despite the fact that Tweeting via SMS has [since been disabled](https://www.theverge.com/2019/9/4/20849865/twitter-disables-sms-text-message-tweeting-jack-dorsey-ceo-hack). [2] I was just… rude. Very rude. “Necessary” is not a term I’d apply to this rudeness, but… Just give me this once, please. [3] In the process of trying to capture a good image of this thing, I noticed that all the assets are still being loaded from static.scroll.com. Nice. [4] See for yourself via [this thread](https://t.me/extratone/8767) on my Telegram channel. [5] An obligatory note that I am of the most privileged sort of human there ever has been, or that one can be. #software #media #psalms # How Snap is sidestepping the metaverse From: Casey Newton To: davidblue@extratone.com Date: Dec 7, 2021 Subject: How Snap is sidestepping the metaverse Forget your interoperable, NFT-based future — Snap is betting directly on hardware and developers ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Here’s your free weekly edition of Platformer. It’s a conversation with Snap co-founder Bobby Murphy on the company’s hardware efforts, and how the company might bring the metaverse into being without ever calling it that. It’s the holiday season, and if you or someone you know has been reading Platformer for free, it’s the perfect time to give it as a gift. Subscribing gives you access to all of the journalism and analysis I do here every week, plus commenting privileges and access to our chatty Discord server. And I’m happy to report that this present is totally unaffected by supply chain issues. Subscribe now, or give a subscription as a gift! Subscribe now How Snap is sidestepping the metaverse Forget your interoperable, NFT-based future — Snap is betting directly on hardware and developers Casey Newton Dec 8 AR creator Andre Elijah in Spectacles. (Snap) More than other recent years, in 2021 the tech industry focused a great deal of its energy on a single question: who will build and own the next generation of the internet? In one corner you have the scrappy upstarts eager to topple the existing world order and rebuild it from scratch on the blockchain. These companies give their effort the aspirational name “Web3.” In the other corner you have the existing tech platforms, who envision the next generation of the internet as a slightly more interoperable version of the existing web. What will set it apart is new hardware: augmented reality glasses and virtual reality helmets that will bring us together in a series of linked experiences that occupy an ever-increasing share of our waking hours. Platforms have taken to calling this “the metaverse.” Web3 and the metaverse will surely intersect along the way — Meta CEO Mark Zuckerberg has said he imagines people bringing non-fungible tokens along with them as they traverse the company’s virtual worlds. But while crypto-based platforms are still mostly in their earliest stages, the battle for the metaverse already has at least a half-dozen established companies investing billions of dollars in realizing it. Today, let’s talk about one that strangely flies a little under the radar — and is taking a more straightforward path. While other companies are painting grand visions of the metaverse via press interviews and op-eds, Snap has been quietly focused on two of the ideas that can actually bring it into existence: steadily improving its hardware every year or so, and attracting developers by giving away that hardware and offering them ways to profit from it. I. The core function of AR glasses is to project images in front of your face, turning your field of vision into a virtual computer screen on which you can receive messages, play games, and interact with digital or real-world objects for educational or commercial purposes. Most platform executives agree that this would be a good and useful thing, and that lots of people would buy the hardware that makes it possible. The problem is that the tech isn’t ready: creating high-resolution projections using a device that fits on your face, has good battery life, and costs a reasonable price, is far beyond the ability of today’s platforms. Surveying the AR landscape this week, the Wall Street Journal predicted that someday high-tech glasses will become Apple’s successor to the iPhone. It looked at similar efforts from Facebook, Microsoft, and the lesser-known Vuzix, among others. And to Snap, which made the first major set of high-tech glasses when it released Spectacles in 2016, the Journal devoted just a single sentence: “Snapchat parent Snap earlier this year added AR functions to the latest version of its Spectacles smart-glasses, which are so far available only for developers.” Indeed, when they were announced in May, Spectacles became the first pair of the company’s glasses I didn’t get to try myself. Instead, the company seeded them with a handful of developers who create AR effects, games, and utilities and gave them a few months to build. And then, one day last week, the company invited me to a rented backyard in San Francisco’s Castro district to see the results. Within a few minutes of wearing the glasses, two things became clear to me. One is that these are very much a product for developers rather than consumers. The chonky frames, 30-minute battery, and presumably high price would limit their appeal to all but the most hardcore futurists. At the same time, my morning with Spectacles was enough to convince me that AR glasses have a promising future, and are likely to print money for the companies that manage to perfect them. It started with a donut. Sitting around a table with some Snap executives, I was introduced to Brielle Garcia, a full-time AR creator who is part of the company’s Ghost program for up-and-coming developers. Garcia has made dozens of AR effects for Snapchat — the company calls them “lenses” — and one such idea came to her while eating at a restaurant during COVID. Like many eateries, this one had begun telling customers to scan AR codes with their phones to access the menu. Garcia thought it would look better in AR. Using Snap’s Lens Studio software, she mocked up a menu that displays items in three dimensions sitting virtually on your table. When I opened it up using Spectacles, I waved my hands to advance through the virtual goods: a burger, a sushi roll, a piece of pie. The donut looked realistic enough that I developed slight hunger pangs looking at it. Compared to a QR code menu on my phone, Garcia’s AR project was meaningfully better. And I felt that way despite the relatively low resolution of the text, at least compared to what you might see on a current-generation smartphone. The Snap team had other tricks to show off. In one game, a zombie chased me around the yard. (Alex Heath, who got a similar demo at The Verge, posted a video of his zombie chase that gives you the idea.) In another, I hung virtual Christmas lights on the trees. The flaws are all readily apparent. The biggest among them is the relatively small field of view that Spectacles can produce using its current technology. When you don the glasses, you might assume that you’ll be able to see a digital overlay that covers everything you see. Instead, it’s a relatively small box at the center of your vision. As a result, I was constantly moving my ahead to attempt to “place” the digital effect back in the box where I could see it. In some cases, as with Garcia’s menu, objects were relatively small and slow-moving, and this was fine. In others, particularly the zombie chase, the field of view was so small that I found the game all but unplayable. That said, the state of the art is still further along than I expected when I first sat down with the glasses. For my final demo of the day, I used Spectacles to project a toy dinosaur on the table we were all sitting at. It appeared as a perfect hologram, contained neatly within the glasses’ field of view — the sort of thing that would delight any child to whom you showed it. A small thing today, but one that points to a big future. III. Snap faces a lot of competition as it works to turn today’s Spectacles into the iPhone of the future. Apple is at work on its own headset, which will combine AR and VR, and will reportedly debut it next year. Meta is working to launch AR glasses next year as well. And Microsoft just signed a deal with Samsung to collaborate on a future generation of its HoloLens headset that will presumably be aimed at consumers. (It’s not expected until 2024.) Meanwhile, more software-oriented efforts from Roblox, Epic Games, and Niantic are all afoot — and will likely lead to hardware projects of their own down the road. (Niantic has already commissioned a reference design.) But one thing forget about Snap, as co-founder Bobby Murphy told me this week, is that the company has been working on this initiative for many years — predating much of its current competitive set. “We've been incredibly invested and interested in an AR future for for many, many years now,” Murphy told me ahead of its LensFest developer event, which runs through Thursday. “The ability to perceive and render digital experiences directly into the world really aligns to how we as humans naturally operate.” To date, Snap has signed up 250,000 people to create more than 2.5 million AR effects. More than 300 of those people have gotten 1 billion or more views on their lenses, the company says. Snapchat lenses are viewed 6 billion times per day. Of course, the majority of those are purely for entertainment: making your face look younger, or prettier, or otherwise distorted to send snaps to your friends, or to place a digital dancing hot dog in the environment around you. But Snap has started to layer in other sorts of experiences, like a “scan” feature that lets you use the Snapchat camera to identify trees — or, more importantly, from a revenue perspective — shopping opportunities. It turns out that all those funny-face lenses trained a generation of users that a screen can itself be a window into real-world experiences, whether on a smartphone or a pair of glasses. “That's actually been a very helpful starting point for us to start to push into kind of a much wider variety of use cases,” Murphy told me. One thing you won’t catch Murphy doing much is talking about the metaverse. While Snap’s ambitions arguably fit under that umbrella, the company seems confident enough in its existing vision not to adopt the buzzwords of the moment. At the same time, Murphy says the recent acceleration in development around AR is real. “It's not that there's been a leap in technology, but I think we are starting to see a broader emergence of use cases for which AR is maybe escaping the novelty sphere, and actually driving real value for for companies and for creators,” he said. There’s no reliable timeline for when that next leap will occur — and when hundreds of millions of people will begin wearing their AR glasses in the way many assume they someday will. But using the latest version of Spectacles, I find myself having trouble believing that someone won’t get there eventually — and maybe sooner than a lot of people think. “The way that we're looking at our opportunity in the future, it's really around developing this kind of singular, holistic platform,” Murphy said. “In which you as an AR creator can make something really compelling, and get that in front of people — through Snapchat, through CameraKit, through Spectacles — and then build a career or build a business through that kind of path.” Winning over developers doesn’t guarantee that any particular company will win the our mixed-reality future. But no one can win without them, either. For the moment, Snap has more than it share of enthusiastic creators. And together, they just might make the metaverse an actual reality — even if the company never calls it that. More Snap: All of today’s LensFest announcements, including multiplayer Spectacles games, real-world physics for AR effects, and tipping for AR creators. And you can catch the keynote here. Platformer Jobs Today’s featured jobs on the Platformer Jobs board include: • Trust and Safety Content Policy Manager, Niantic. • Congressional Innovation Fellowship, TechCongress. • Project Area Research Coordinator, Hacks/Hackers. Some posts here are paid. For more great jobs in tech policy and trust and safety, or to create a listing, visit here. Nonprofits and academic institutions can post for free using the code NONPROFIT. Governing ⭐ A look at the many compromises, both moral and product-related, that Apple has made to continue doing business in China. The effort has been led by CEO Tim Cook. An important investigation from Wayne Ma at The Information: > Cook forged the five-year agreement, which hasn’t been previously reported, during the first of a series of in-person visits he made to the country in 2016 to quash a sudden burst of regulatory actions against Apple’s business, according to internal Apple documents viewed by The Information. Before the meetings, Apple executives were scrambling to salvage the company’s relationship with Chinese officials, who believed the company wasn’t contributing enough to the local economy, the documents show. Amid the government crackdown and the bad publicity that accompanied it, iPhone sales plummeted. > Throughout that pivotal year, Cook, who was the architect of Apple’s supply chain in China, personally lobbied officials over threats that would have hobbled the company’s devices and services, including Apple Pay, iCloud and the App Store, the documents show. He often succeeded, and his previously unreported interventions, along with the multibillion-dollar agreement he signed with a powerful Chinese government agency, paved the way for Apple’s unparalleled success in the country. The revelations also suggest Apple’s dependence on Cook for government affairs could present risks down the road if he were to step down as CEO. The Department of Justice wants to know why Roblox suddenly started calling its games “experiences,” presumably to comply with Apple’s rules against putting an app store inside the App Store. Hey, me too! (Juli Clover / MacRumors) The Senate confirmed Jessica Rosenworcel, acting chair of the Federal Communications Commission, for another term. But the FCC remains deadlocked with two Democrats and two Republicans. (Ben Brody / Protocol) The Biden administration met with 13 companies, including Google, to ask for more help in protecting the nation’s infrastructure from cyber-attacks. The hope is to attract new allies in the fight against ransomware. (Eric Geller / Politico) Google sued two Russians, alleging that they’re behind a massive botnet that steals people’s information and mines cryptocurrency. “The company also worked with Internet infrastructure companies to take down servers used by hackers to control the network, effectively rendering the ‘botnet’ of infected devices unable to receive new commands from their controllers, at least temporarily.” (Gerrit De Vynck / Washington Post) More than 200 newspapers have joined lawsuits alleging that Google and Facebook have illegally monopolized the digital ad market. “The lawsuits were filed after the House Judiciary Committee published its major digital competition report last October, which included a section on newspapers.” (Sara Fischer / Axios) Rep. Devin Nunes, who sued Twitter because someone pretending to be his cow made fun of him there, resigned from Congress to lead Donald Trump’s possibly forthcoming social network. Can’t wait to read the community guidelines. (Amy B Wang and David Weigel / Washington Post) Microsoft seized 42 domains used by a Chinese cyber-espionage group in operations targeting organizations in the United States and 28 other countries. The group, known most recently as Nickel, has been operating since 2012. (Catalin Cimpanu / The Record) Industry ⭐ Ubisoft became the first major gaming company to offer in-game NFTs. Lots of caveats and questions here, starting with “why does this have to be on the blockchain?” But it feels like a rubicon has been crossed. Here’s Andrew Hayward at Decrypt: > Today, the publisher behind Assassin’s Creed and Just Dance revealed Ubisoft Quartz, a platform that lets players earn and purchase in-game items that are tokenized as NFTs on the Tezos blockchain. Quartz will launch first in the PC version of Tom Clancy’s Ghost Recon Breakpoint, the latest online game in the long-running tactical shooter series. > Quartz will launch in beta on December 9 in the United States, Canada, France, Germany, Spain, Italy, Belgium, Brazil, and Australia. Ghost Recon Breakpoint players who have reached XP level 5 in the game can access the NFT drops. Ubisoft’s release says that players must be at least 18 years old to create a Tezos wallet for use with the game. ⭐ Honeywell said it had generated the first-ever quantum-computer-generated encryption key, which may be impossible to crack. If true, a significant development in future encryption efforts, and a huge business opportunity. (Thomas Black / Bloomberg) Discord is testing paid server memberships, with 90 percent of revenue going to the server. Love it, ship it. (Tom Warren / The Verge) Twitter acquired the team messaging app Quill. Quill was beautifully designed; the acquisition bodes well for Twitter DMs. (Quill) Amazon Web Services had another big outage. Among today’s victims were Disney+, the news outlet Protocol, and Amazon. (Richard Lawler / The Verge) Messenger chief Stan Chudnovsky will leave Meta next year after more than six years at the company. Chudnovsky was a legendary growth hacker and deputy to David Marcus at PayPal before coming to Messenger; notably, he announced his departure just days after Marcus said he is leaving Meta for other things. (Kurt Wagner / Bloomberg) Facebook is planning a major expansion of in-app commerce in 2022. A leaked document calls commerce “our highest priority and largest investment area,” following Apple’s rollout of App Tracking Transparency. (Ashley Stewart / Insider) Facebook video game streamers will be able to invite audience members to play with them. A fun idea; it will start with the launch of Pac-Man on the service. (Dean Takahashi / VentureBeat) A look at the role of YouTube creators in pumping up Shiba Inu and other meme coins. “It’s often impossible to tell when a YouTuber is providing savvy analysis, or just cashing in. Scribner gets daily requests from altcoins and exchanges offering $25,000 for a single mention, usually paid out in Ethereum.” (Mark Bergen / Bloomberg) An interview with Jonah Ehrlich, a core member of ConstitutionDAO. “The most fun description I’ve heard is that a DAO is a group chat with a bank account. Essentially, what a DAO lets you do is have this very lightweight organizational structure to be able to move around assets and interact with the world.” (Nilay Patel / The Verge) CryptoPunks with lighter skin tones are selling for higher prices. Investors say “the people currently willing and able to pay top dollar for digital goods aren’t bidding on avatars that don’t look like them.” (Misyrlena Egkolfpoulou and Akayla Gardner / Bloomberg) Those good tweets juju 💰 @ihyjuju you checkin spotify wrapped when it was you who got played the most this year December 1st 2021 22,733 Retweets105,361 Likes the hype @TheHyyyype you want me to drink water. the thing that killed jack in titanic December 7th 2021 16,220 Retweets119,249 Likes Sabina Meschke @sabinameschke when certain foods on a menu have (gf) next to them, I know those are girlfriend foods. I cannot order them until I am a girlfriend. I must be patient November 30th 2021 10,691 Retweets178,614 Likes public class tryst extends cat { @tryst_me In the UK, these are called "crisps" December 4th 2021 1,511 Retweets9,610 Likes Talk to me Send me tips, comments, questions, and AR effects: casey@platformer.news. By design, the vast majority of Platformer readers never pay anything for the journalism it provides. But you made it all to the end of this week’s edition — maybe not for the first time. Want to support more journalism like what you read today? If so, click here: Subscribe now © 2021 Unsubscribe 548 Market Street PMB 72296, San Francisco, CA 94104 [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjIwMjExMjA4MDEwMDQ0LjIu%0D%0AY2VhNmZlYWZjYTA2NTM3ZC4zbGs2bGFlcUBtZzIuc3Vic3RhY2suY29tOzI3NDQ4%0D%0ANDg0MTk%3D) #archive # Blue on Twitter Blue [image:342DD542-9350-43EE-9714-05C3DA45E649-2586-0000009A4D77F234/IMG_2314.png] ## Gargantuan, ridiculously avoidable misses in Little Blue’s Blue. Incredibly, the second most powerful social media company in the world has finally managed to implement a paid subscription model, as I’ve been begging them to do for [at least 5 years](https://twitter.com/neoyokel/status/696094018862718976), now. For three U.S. Dollars a month, “[Twitter Blue](https://blog.twitter.com/en_us/topics/company/2021/introducing-twitter-blue)” is [now available](https://www.theverge.com/2021/11/9/22766286/twitter-blue-subscription-service-scroll-nuzzel-undo-tweets-ad-free-articles-us) for all United States users. Aside from [a relentless, rude, two and a half hour-long rant](https://apple.co/3wVZs3v) at two new friends on *End User*, I should confess that I haven’t spoken adequately to peers at length about their Twitter use - understandably, busy independent artists don’t seem to find themsevles with the spare time to hypothesize methodically about what they might want from the service, going forward. From the mass of commentary on Twitter Blue I *was* able to gather, a resounding sentiment refrains: *these features should be available to everyone*. https://open.spotify.com/episode/3VSCTrzf9QN2MjyFMQ930d Frankly, after all these years, there’s not all that much to actually say about the product, itself. Thanks to Spaces, I happened to catch a chance to ask my favorite sage of late - Jason Scott, original creator of textfiles.com - for his thoughts. “Well, I bought it.” “Yeah, same.” [image:CDFBA3B7-DDED-430F-9FB3-8528D85467AE-2586-0000009A4E615FD1/zp5uCNwa.png]Twitter in Jorts Dock, 2021 Then, we talked for 45 minutes about self-actualization. As I’ve recently honed my understanding of the significance behind my own personal extraordinary dependence/investment in this one service, I have also - in parallel, ya might say - refined wholly a set of expectations which I do not ever again expect to be usurped in any way by Twitter, Incorporated’s decisions. Believe it not, these thoughts of mine really *do* have real potential to add value to your life, especially if you’re still reading. The next time you find yourself wondering what Twitter might do next, try to internalize the utter inanity of that whole pursuit. Not one second can be concretely spent in that endeavor because the organization is defined singularly by its outrageous negligence. They are not villains or demons like [Big Blue](https://github.com/extratone/bigblue) - they are through and through a village of idiots, and no manner of user action can possibly budge them. [file:DC1DBB38-1452-484F-B906-A19BC2363007-2586-0000009A4D58A8D9/TwitterBlue 1458110302793338892.mp4] Of course, this new development of mine hasn’t actually managed to delivery any peace upon my person. In fact, because it is impossible to be *constructively* critical in such a situation, I am one of few I know who must continue to be critical, anyway, because my livelihood does not depend on the newsworthiness of my subject matter. I guess I should just be thankful my “must” represents so little time-sensitive consequence, if any, given how long it takes me to finish anything, these days. On that note, please [look elsewhere](https://www.theverge.com/2021/11/14/22778827/twitter-blue-undo-button-paywall-features-paid-free) for the bulletpoints… Come back for at least a second, though, because this Post *does* eventually circle around to a handful of poignant, original comments on the ~~Whats~~. The peeves aren’t new, but I’ve found my own redundancy within *The Psalms* to be less and less… redundant, if that makes sense. This company’s software is bad and its continued prioritization of the two native mobile applications (neither of which it actually built) over any other clients for *all* user considerations is a spectacular tedium to follow. Its world record breaking inability to understand anything about how its *whole shit* fits into the lives of *any* of its users continues to astound. My peak irritation about the whole situation, lately, is that *you fuckers* continue to discuss alterations to social software, generally, as if they are *inevitable* with a sense of complicity I will *not* allow. I’m not going to argue that you’re *obligated* to speak up and out in a labor sense, but beseeching that you **expect more** from these organizations as a customer, a citizen, and a human being. For your sake, I've spent the time to break Twitter Blue's offering down specifically, feature by feature, only because I have yet to see it done methododically in detail from the tech media sources you'd normally depend on. [image:00F3BCBA-30A7-4211-AFAF-54EECCC03B7B-2586-0000009A4E9AF90A/SAYPlThr.png]Thread Reader - Twitter Blue for iOS ## Thread Reader If I’m honest, the majority of the discourse I’ve picked up surrounding Twitter threads in the past few years has been negative. Vaguely, “getting lost” is something I recall being expressed. Twitter Blue’s Thread Reader offers a “reader view”-like experience in three different font sizes - none of which looked particularly optimal, to my eye. If there’s anything to say about it, really, it’s suggest this adjustment be made more variable, natively, though further adjustment is allowed at the moment by using `⌘ + =, -, and 0` for those iPhone keyboarders among you. [image:4947F181-5168-4008-86AA-D3601F336A53-2586-0000009A4EE6113B/1ia6xNyv.png]Voice Tweets in Thread Reader - Twitter for iOS Also, the appearance of non text-only posts (especially Voice Tweets, which I, alone, continue to use) in this view feels like a bit of an afterthought. [image:3F75A1EE-FC1C-4EBF-96B9-74A590AC6CBA-2586-0000009A4F070CB6/hu2p7mN2.png]Custom Navigation - Twitter Blue on iOS ## Custom Navigation Intentionally or not, the configuration of Twitter for iOS’ navigation tabs enabled by Twitter Blue membership is a revelation - or it would be, were it the only viable Twitter client on the platform. It’s perhaps the most celebratable feature included in Twitter Blue, if only because it suggests the Twitter team is finally paying attention to Tweetbot. (In case you weren’t aware, I spent a significant amount of time and words writing about just how valuable Tweetbot is, [earlier this year](https://bilge.world/tweetbot-6-ios-review).) Unfortunately for Twitter, [Tweetbot’s had an incredible year](https://www.macstories.net/ios/tweetbot-6-6-gets-support-for-creating-polls-limiting-who-can-reply-to-tweets/). The biggest possible miss, here, was adamantly missed: one *cannot* customize away the “Home” timeline from the first nav bar position, which brings up another huge issue with expecting a monthly fee for an experience within Twitter’s iOS app: *persistence*. https://twitter.com/neoyokel/status/1467393675579871234 In the clip of the Twitter feedback Space embedded above, my second point of note was that the app had not “randomly logged me out” in the seven days I’d then been subscribed to Twitter Blue. To be clear, this was referring to the experience of opening the Twitter for iOS app to the welcome screen instead of where one left off, which has indeed happened in the interim. The worst bit: after logging back in again, all one’s app preferences are reset to their respective defaults. Without a means of exporting or “backing up” one’s settings - like say, [Better Tweetdeck](https://better.tw) has - this means that one has to methodically explore every single Settings menu and re-select core essentials like posting the highest quality possible images, for instance, all with the knowledge that such a reset could happen again at any time. Suffice it to say, this is not the sort of quality one expects from a premium iOS app in 2021. https://twitter.com/neoyokel/status/1463658007791812608 As you’ll see in the screenshot embedded above, Custom Navigation offers one a choice of up to 6 tabs from a total of 10, which include [some Bluetooth keyboard shortcut considerations](https://github.com/ExtraKeys/keys/issues/31#issuecomment-986184090) I suspect you’ll not find detailed from any other source. To start, `⌘ + F` will now reliably open the Explore tab and (most of the time) deliver one’s cursor directly to its search field. However, **this only functions when Explore has been selected as one of the bottom nav tabs**, which really misses out on an opportunity for the shortcut to be uniquely useful, in my view. Otherwise, `⌘ + 1-6` will open the bottom tabs you’ve chosen in order, which means - brace yourselves - that Twitter Blue’s Custom Navigation technically includes *configurable keyboard shortcuts*. https://twitter.com/neoyokel/status/1467681892468154370 Also notable: when viewing the obligatory Home tab, one can navigate between their Lists with just the (unmodified) left and right arrow keys! `⌘ + ,` is now a dependable way of opening the app’s Settings menu, `⌘ + \` pulls up the account switcher, `⌘ + =,-,0` manipulates text size, app-wide. `⌘ + V` will open Tweets from links in one’s clipboard from anywhere in the app - not a new trick, I don’t think, but a clever one. Several other commands in [the public-facing keyboard shortcuts documentation](https://help.twitter.com/en/using-twitter/twitter-ios-app) - like `⌘ + M` to switch between light and dark modes, for instance - are *not* currently functioning. Either they’ve yet to be stricken from the document, or they’re iPadOS-exclusive. [image:DA05BAD4-6A2B-4219-84B1-D7A4F3AC6325-2586-0000009A4F52C268/Qfb0rFvf.png]Undo Tweet - Twitter Blue ## Undo Tweet Perhaps unlike you, *I* have never had a problem understanding why “editable” Tweets will never exist, largely thanks to [my conversation with Eugen Rochko](https://hyp.is/znp7tEQJEeySOXvhkqI2DQ/bilge.world/eugen-rochko-interview) about implementing editable posts on Mastodon: > That won't happen. There's actually a good reason why they don't do that. It's simply because you could make a toot about one thing, have people favorite it and share it, link it from other places, and then suddenly, it says 'Heil Hitler,' or something. This, actually, is *not* the reason I found it easy to understand, though I hope it makes a bit of a sense. It was when Eugen mentioned (unquoted) Twitter's original design around SMS[^1] that I first vaguely understood the depth of this limitation in the core architecture of the service. As far as I understand it, **the method in which a Tweet’s basic data is stored does not allow for revision**. It can be deleted or obfuscated, but never substituted for or replaced. As I noted all those years ago. **Delete & Re-Draft** - the answer Mastodon integrated natively and third-party social clients have featured for years - makes *a lot* more sense than straight up "editable Tweets" *or* the chosen answer at the top of Twitter Blue's feature list, "[Undo Tweet](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet)." Here's the full text from [**its subpage**](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet) in Twitter's documentation: > **Undo Tweet** gives you the option to retract a Tweet after you send it, but before it’s visible to others on Twitter. It’s not an edit button, but a chance to preview and revise your Tweet before it’s posted for the world to see. Once the Undo period is over, the Tweet is viewable to your followers and you can either leave it or delete it, like you normally would on Twitter.* Tapping Undo sends you back to the Tweet composer where you can make changes before posting the Tweet, or deciding not to post at all. You can also select Send now to skip the Undo Tweet option and post your tweet immediately. > * You can turn Undo Tweet settings on for all or some of the [different types of Tweets](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undodifftweets) including Original Tweets, Quote Tweets, threads, and replies. > * When active, Undo Tweet displays a countdown of the time left until your default 30-second Tweet Undo period expires, and your Tweet appears on Twitter. Shorten or lengthen the expiration window to 5, 10, 20 or 60 seconds under the [Twitter Blue feature settings menu](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweetperiod). > * If you turn off Undo Tweet, you won’t see the Undo Tweet prompt. > * Read more about [how to adjust the settings of your Undo Tweet feature](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweet). By default, Undo Tweet is turned on for every single post of any kind at 20 seconds' notice. This was my very first change to the default settings ([other than the highlight color and app icon](https://twitter.com/NeoYokel/status/1459235983174639626)): I turned it off for Original Tweets, Replies, and Threads. This makes it tolerable, but still useless, and honestly, I can think of only one instance in which I used it for its intended purpose. [image:733F8C99-2760-4617-AC9B-0026D7CAEFD5-2586-0000009A4F7FA377/8aFbZdVQ.png]Pinned DMs - Twitter Blue on iOS ## Longer Videos & Pinned Conversations The only straight up “we’ll let you take up a bit more bandwidth since you’re paying us” feature addition included with Twitter Blue is its elongation of the time limit for posted videos from two to ten minutes. One of very few observations about Twitter Blue I could find from “regular” Twitter Users comes from [r/Twitter](https://reddit.com/r/Twitter) (which is uh…. a mess:) > the only reason i got it is because it allows 10 minutes of videos you can post and since I make content I no longer have to be restrained to the 2:20 video time on the "regular" Twitter. > -[u/jdb825](https://reddit.com/r/Twitter/comments/qxygfb/_/hmddlli/?context=1) I personally feel this post wholeheartedly - especially since I’ve basically committed to single-take video content, personally, yet have been regularly sharing screencaps on my account. An anecdote I have not seen mentioned: for videos uploaded directly to Twitter’s “Media Studio” (a feature to which I have access because of my peak Periscope fame, years ago,) the two-minute limit still applies. Yet another beautifully absurd product oversight. From the screenshot embedded above, it’s quite obvious that I no longer use Twitter’s Direct Messages, but there was a time, many years ago, when I would have personally appreciated “**Pinned Conversations**” very much. [image:F68ECE8A-A6D7-49BE-AEDF-2F152AB7F09A-2586-0000009A4FC81250/7RBw18tJ.png]Ad-Free Articles in Safari - Twitter Blue ## Ad-Free Articles As much as I want to unabashedly celebrate the investment Twitter, Inc. is inexplicably now demonstrating in Lists - a feature I’ve [tirelessly advocated for](https://bilge.world/twitter-lists) out of perceived obscurity - with Twitter Blue, there’s at least one example which they’ve managed to fuck up such investment. The official list of publishers participating in Twitter Blue’s “Ad-Free Articles” rehash of Scroll is exclusively documented in the from of [@TwitterBlue’s singular Twitter List](https://twitter.com/i/lists/1448014243245150209), which makes it conveniently quite difficult to share. Aside from that anecdote, I have another which is both mostly personal and yet inexcludable. The day [Twitter acquired Scroll](https://www.theverge.com/2021/10/5/22711233/scroll-shutting-down-twitter-blue-standalone-subscription-ad-free-article-service), I had the bizarre, completely unexpected opportunity to ask Tony Haile - Scroll’s founder, who also played a substantial role in creating the Ad-Tech Hell it was founded to counter in creating Chartbeat, some years ago - *a question*. I’d been listening to a Twitter Space hosted by [Chris Messina](https://twitter.com/chrismessina) and [Brian McCullough](https://twitter.com/brianmcc) for *TechMeme* featuring Haile while I’d been showering. Somehow, the two ran out of questions to ask Tony, so they turned to the audience. I requested to speak and Chris - who’d done so a few times before - let me in almost immediately. Nude and still very wet, standing in my bathroom, I suddenly found myself on a call, essentially, with certainly the most interesting media industry figure of the moment. Chris, who knew me well enough already as a regular in his Spaces to know my speech often includes long pauses, said something like “quickly.” I began by bringing back a topic from an hour before, at least, and noted that Twitter’s “Tips” feature was no more than a list of hyperlinks as it stood (it basically still is,) before (more or less verbatim:) “I just got out of the shower but uh… I forgot about Tony Haile. (yes, he was listening directly to the Space and I did say that) …but I would ask him to narrate how exactly he got from Chartbeat to Scroll to Twitter.” Yes, I spoke of him in the third person even though I could all but hear him breathing. I then retired from my speaking role, but - from what I could tell, passively listening as I finished getting ready for some time-sensitive engagement - my question basically sustained the rest of the interview. This experience, alone, wouldn’t necessarily be worth mentioning, but after discovering *The Kansas City Star* - one of the oldest, most established local mastheads to my home state (Missouri,) to which I maintain a subscription - among the aforelinked List list of participating publishers in Twitter Blue’s Ad-Free Articles program, I reached out to the one *Star* reporter I know, asking simply if she’d heard anything whatsoever about the program from editors or just ambiently in the newsroom. She had not. For an explanation, I dug just a bit further and found out the *Stars*’ corporate owner, McClatchy, had in fact [“tested” a “partnership” with Scroll before](https://www.niemanlab.org/2020/12/scroll-the-ad-free-news-startup-will-experiment-with-bundled-subscriptions-at-eight-mcclatchy-sites/), and appeared to have opted its whole handful of local American news institutions - including the *Star* - in again, en masse, to its new, Twitter-owned form. Before I go on, I should note that one can indeed utilize Ad-Free articles’ benefit within your preferred web browser, but the process is very specific. On iOS, you’ll need to open an Ad-Free Article in the Twitter app first (marked with blue text) and then tap the Safari icon in the bottom right to open your default browser. You’ll know you’ve authenticated correctly when you see one of these two motherfuckers[^3] (depending on your system’s current light/dark theme setting) in the bottom right of your browser window: [image:36259CCF-3002-4B67-A408-DDCD89C6ED8E-2586-0000009A5006FF98/Qs5cIakt.png]Twitter Blue Tabs For thoroughness’ sake, here’s what [the official help document](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles) has to say: > As long as you stay logged in to Twitter, and use the same browser each time, you should get ad-free reading when you subsequently visit that same Twitter Blue site. Have a peak at [*The Kansas City Star*’s Wikipedia page](https://en.wikipedia.org/wiki/The_Kansas_City_Star) and you’ll note that it’s over 150 years old, once claimed Ernest Hemingway on its masthead, has been awarded eight Pulitzer Prizes, and that it depends on a combination of advertising dollars and [possibly in duress](https://jimmycsays.com/2018/02/13/more-worrisome-circulation-figures-for-the-kansas-city-star/) subscription revenue to stay afloat. This in mind, note the screenshot I’ve embedded below, comparing how a Twitter Blue-participating *Star* article appears within a desktop browser - without Twitter Blue vs Twitter Blue. [image:76B0AA53-8731-47B0-94D0-E67163AA7E6E-2586-0000009A5048F69B/ATS5Q3ok.png]Kansas City Star Twitter Blue Comparison Captures of each respective webpage demonstrate that Twitter Blue exempts a reader from about half of the content weight of the non-Blue-authenticated render[^4]. Old school banner ads account for a portion of the missing content, but at least three elements for converting visiting readers to paying subscribers make up for most of it, I’d wager. None of what’s gone is content anyone on Earth *wants* to see, mind you, but frankly, it’s disrespectful of the paper’s classically villainous, [recently bankrupt](https://www.nytimes.com/2020/07/16/business/media/hedge-fund-chatham-mcclatchy-postmedia-newspapers.html) corporate overloard to opt it in with a program fundamentally designed to *intentionally forgo advertising engagement*. [image:A92D6BCD-7FC0-42C7-BD0E-2D269A927EE3-2586-0000009A50AECB54/144753270-c9687e0d-1307-41ba-b403-990923d70acf.png]See Your Impact - Twitter Blue Tony Haile, if you’re reading this, you can exhale now. Yes, [the *theory* behind Scroll, and now “Ad-Free Articles” in Twitter Blue](https://help.twitter.com/en/using-twitter/twitter-blue-ad-free-articles), suggests that the fifteen cents I’ve earned the *Star* so far (the graphic above can be found in the “See Your Impact” selection within one’s Twitter Settings) will be paid directly *to*… Whom, exactly? The answer offered by Twitter, Inc. to the question of “How does my ad-free reading support journalism?” (asked of themselves:) > Each month, we pay publishers within the Twitter Blue Publishers Network based on the content you and other Twitter Blue subscribers read ad-free through Twitter Blue. Our model is designed to help publishers continue to fund the journalism you love to read. *Publishers*. I suspect that means cash-desperate McClatchy and *not* *The Kansas City Star*. All to be done at the moment, at least, is to ask ourselves how much of that cash will ever be seen by the paper. [image:37B91810-647F-4DA0-8B65-42FDCD2EE02A-2586-0000009A5114DDEB/VyMNqr7V.png]Bookmark Folders - Twitter Blue ## Bookmark Folders Bookmarks and **Bookmark Folders** represent yet further evidence that someone at Twitter, Inc. *actually uses Twitter* (or perhaps has a friend or family member.) Technically, they also represent one of few core functions exclusive to Twitter’s own clients. (Consider: Tweetbot even supports polls, now.) However, like the Thread Reader and “Custom Themes,” Bookmark Folders, too, feel like an afterthought shoved in the bundle an hour before a deadline. Specifically, their color-coded icons look like placeholders for custom images… which aren’t supported, and they represent 0 additional function as curatorial/archival tools (no exporting/aggregating/or sorting, even) beyond simply nesting bookmarks into… folders. [image:3CCE2072-C5A2-4D0F-ABF1-93DA946026D3-2586-0000009A5131B0FA/935pp2QS.png]Themes & Icons - Twitter Blue for iOS ## Icons & “Themes” Even greater heights of half-assery have been achieved by what Twitter describes as “[exclusive app icons and colorful themes](https://blog.twitter.com/en_us/topics/product/2021/twitter-smarter--twitter-harder-with-twitter-blue).” Here, I must finally give in and compare Twitter Blue with Tweetbot directly. https://twitter.com/neoyokel/status/1467422017527951366 Absolutely zero effort has been expended thus far in recharacterizing what Web Twitter still calls “Colors” as “Themes,” and the only *exclusivity* in the icon options is that some are seasonal, or otherwise time-limited, for what possible purpose I cannot conceive. This from a company of more than 5000 full-time employees. In contrast, from a full-time team of two - both of whom suffered through bad COVID infections, this year - Tweetbot now includes an even further broadened spectrum of app-wide themes and 19 app icons in total, including, yes, at least two very cute, limited-time seasonal options. https://open.spotify.com/episode/0ImyC2Twm5qyx9lxmcKmkP ## All Users ~~are~~ Should Be Powerusers The episode of *End User* embedded above is one of the only podcast episodes I’ve ever made which I actually find *too painful* to listen back to[^2], but I still think it’s valuable. There’s a specific bit of the conversation between [@alisonbuki](https://twitter.com/alisonbuki) and I in which the term “Poweruser” is actually thrown around regarding my own use of Twitter Lists, Tweetbot, and a few other *Hax* to consume content *deliberately*. I think I failed somewhere in my portrayal of this curation and miscommunicated the nature of what I was trying to get at by “making use of the tools available to you.” Regarding the actual manhours involved in the configuration I was trying to evangelize, I think I’ve spent more time trying to describe the effort than I have actually configuring my own content intake. Long before I was [follow-limited](https://bit.ly/dbfollow) in 2017, I lived entirely in my [Twitter Lists]()https://twitter.com/NeoYokel/lists), the largest of which I built up “organically” over time, by adding appropriate accounts one by one as I came across them. Thanks to Tweetbot, my equivalent of the native apps’s Home timeline is a private List of ~200 accounts whose users represent the actual entirety of my adult social life, past to present. Then, there’s [The New](https://twitter.com/NeoYokel/lists/the-new), which - I must admit - has grown beyond its original scope and sortof become my follow list, with enough exceptions that I consider it worthwhile to keep public. Then, there’s the newest - [my Meta-Media List](https://twitter.com/i/lists/768458273141907456) - and the very oldest: my dear, weathered [Rolodex of Automotive Twitter](https://twitter.com/i/lists/43457439). I keep Tweetbot in my dock and the native app on my device just for notifications, Spaces, and now Communities. That’s it! Yet, using this configuration, I *never* see content that seriously disturbs, shames, triggers, or otherwise upsets me beyond reason or expectation[^5], but am regularly exposed to a relatively diverse palette of perspectives, and just generally find my consumption/engagement time on the service meaningfully spent. The amalgamation of truly half-assed user experience features offered in Twitter Blue [1] Despite the fact that Tweeting via SMS has [since been disabled](https://www.theverge.com/2019/9/4/20849865/twitter-disables-sms-text-message-tweeting-jack-dorsey-ceo-hack). [2] I was just… rude. Very rude. “Necessary” is not a term I’d apply to this rudeness, but… Just give me this once, is all I’d ask. [3] In the process of trying to capture a good image of this thing, I noticed that all the assets are still being loaded from static.scroll.com. Nice. [4] See for yourself via [this thread](https://t.me/extratone/8767) on my Telegram channel. [5] An obligatory note that I am of the most privileged sort of human there ever has been, or that one can be. # Snowsgiving 2021 is LIVE! (Official Discord Server) From: Discord To: ihadtopee@gmail.com Date: Dec 6, 2021 Subject: Snowsgiving 2021 is LIVE! It’s time to celebrate community in style with a gift, charity, and community abound. A Wintry Welcome To You, HypeSquad, Cozy up in a blanket, grab your hot cocoa and embrace the season of giving as Snowsgiving 2021 is finally upon us! If you haven’t heard of Snowsgiving before, it’s the time of year where the entire Discord community is brought together through the power of the holidays. It’s pretty darn magical. Let’s see what Snowsgiving has in store for us all this year, shall we? 2021 has been a difficult year full of change and challenges, with things starting to turn back to a new normal in some areas… but it’s still not quite the same. Throughout it all, it’s important to remember: you’re never alone. This year, in celebration of connecting with yourself and others, Discord is proud to partner with To Write Love on Her Arms for a week full of holiday hangouts in the Discord Townhall server, which is getting a Snowsgiving-themed overhaul in celebration! Donate today to help support TWLOHA and get some exclusive Discord swag, including a limited edition custom Discord keyboard. But wait there's more! Below are just a few of the ways you can celebrate with us on the Snowsgiving server: • Collab and create original videos, holiday music arrangements, or artwork for a chance to win fantastic prizes, including Discord Nitro and possibly a trophy. • Test out brand new features exclusive for Snowsgiving participants. • Attend panels involving both Discord Staff and special guests alike. We can’t wait for you to join our little digital winter wonderland—all in the name of a good cause. Whether you’re playing games, keeping in touch over the holiday break, or exploring a new hobby—Discord is here for you all winter long. To celebrate, we'll be revealing snowy surprises each day of Snowsgiving. We don't want to leak all the fun, but expect: • Wintery emojis commissioned by members of the Discord community • The chance to pelt your friends with snowballs • Delightful festive changes to the Discord desktop app We’re so excited to reveal new surprises starting today! Happy Snowsgiving folks. This is just the beginning, HypeSquadders. We can't wait to chat, create, and spend time with you in the Snowsgiving server—all in the name of charity. All Our Love, Discord Community Team Discord 444 De Haro Street, Suite 200, San Francisco, CA 94107 Unsubscribe [OPEN IN SPARK](readdle-spark://bl=QTppaGFkdG9wZWVAZ21haWwuY29tO0lEOjNLbUtROEdmU1ZlQ2ZZcTZablZRZGdA%0D%0AZ2VvcG9kLWlzbXRwZC01LTA7Z0lEOjE3MTg0MjI3MzgzMTUxNjE2Njk7MTcyMTIy%0D%0AODQ1OQ%3D%3D) #EMAIL # Preface [image:99C46E63-D0C7-40A1-A932-880B499B5C52-849-0000003C144B538A/image.png] The overwhelming odds are that you’re reading this in digital form, right now, specifically on a non-“desktop class” web browser, running on a system which does not “conform” to the “Personal Computer paradigm” clearly established, (yet far from **loathed** or anything,) before that ever-more-irrritatingly-relevant event in January 2007, when Steve Jobs unveiled the first-generation iPhone. I believe it was within that very same sun cycle, in fact, that then-Microsoft CEO Bitch Balmer was [captured in almost certainly his most famous monologue](https://youtu.be/eywi0h_Y5_U) predicting very directly that business customers would not any fundamental interest in the iPhone specifically because of its lack of a physical keyboard. > $500, fully-subsidized, with a plan! … That is the most expensive phone in the world, and it doesn’t appeal to business customers because it doesn’t have a keyboard, which makes it not a very good email machine. Balmer appears in the 240p YouTube video as the classic, bald, unquestionably villainous-looking executive with a truly icky smile that has no trouble traversing the extreme compression from the past. Read into the comments, and you’ll find nothing but amused condescension, but even the most enthusiastic first reviewers of the iPhone couldn’t help but acknowledge its omission of a hardware keyboard as “controversial.” Note this excerpt from [perhaps the most infamous of those original reviews](https://allthingsd.com/20070626/the-iphone-is-breakthrough-handheld-computer/), cowritten by then-**AllThingsD**’s Walt Mossberg and Katherine Boehret: > The iPhone’s most controversial feature, the omission of a physical keyboard in favor of a virtual keyboard on the screen, turned out in our tests to be a nonissue, despite our deep initial skepticism. After five days of use, Walt — who did most of the testing for this review — was able to type on it as quickly and accurately as he could on the Palm Treo he has used for years. This was partly because of smart software that corrects typing errors on the fly. I don’t think it would be unreasonable to describe the first-generation iPhone’s 2007 introduction as the beginning of The Touch Era in personal computing, yet I doubt any technologist’s vision of the present would have included such continued user investment in physical keyboarding. In 2021, entire online communities dedicated solely to “mechanical” keyboards thrive, while Apple, Inc., itself, is still accountable [to the point of legal action](https://arstechnica.com/information-technology/2021/03/judge-grants-class-action-status-to-macbook-butterfly-keyboard-suit/) for missteps in the design of hardware keyboards in its best-selling Mac lineup, which are still sold notably absent touch-capable displays. When the word “Pro” was first attached to an iOS device with the November 2015 reveal of the iPad Pro, it was accompanied by the parallel introduction of a new hardware keyboard attachment - the “Smart Keyboard for iPad” - as if even Apple felt the “Professional” label necessitated the option, at least, of interfacing with a physical keyboard. (**Balmer, is that you?**) > Where are you sitting with a keyboard that you don’t have access to a computer or iPad? -[@joethephish](https://twitter.com/joethephish/status/1418668594041339909) From a certain perspective - namely, the one from which I wrote this volume - the idea of the smartphone in its most abstract form is inextricably linked with the equally abstract idea of a physical keyboard. While Apple hardly acknowledges the iPhone’s support for Bluetooth keyboard inputs in any public or developer-facing documents, it is also **actively developing** within said support as I write this. I can declare with all but 100% certainty that we’ll never see any promotional media from Apple depicting a human typing to an iPhone on a physical keyboard or even a spy shot of an Apple executive doing so in the wild. I thought it might be helpfully explanatory to include the full text of a thread I started on the Apple Developer Forums around mid-July 2021 (I would cite the specific date, but Apple’s forum software uses relative timestamps) entitled “[Complete documentation for native Bluetooth Keyboard support/shortcuts on **iPhone**?](https://developer.apple.com/forums/thread/685201):” [[Complete documentation for native Bluetooth Keyboard shortcuts support on iPhone?]] I know it’s a lot, but I find it very telling, as have a few other, breathing, non-illusory human beings. #keys # Complete documentation for native Bluetooth Keyboard shortcuts support on iPhone? (Before I begin, it might explain quite a bit if I note that the only reason I had not yet posted this question here is that I was not aware I could do so. Otherwise, I would have, years ago.) **Some important acknowledgments:** * *iPhone* (iOS) currently supports Bluetooth Keyboards. In fact, it is being *actively developed on* at this very moment. I know this because I have been documenting (via blind test) Bluetooth Keyboard shortcut alterations in Safari between iOS 15 dev betas. * When iPad OS was split, so too were both the user-facing and dev-facing official documentation of the operating system’s native support (shortcuts, really,) from Apple. When this happened, the docs all but stopped acknowledging iPhone’s continued support because the goto iPad doc - “ [Learn iPad keyboard shortcuts](https://support.apple.com/en-us/HT211096) ” - does not have an iPhone equivalent. Pretty much all the iPhone User Guide has to offer is [a howto on pairing](https://support.apple.com/guide/iphone/magic-keyboard-iph2ced3177/14.0/ios/14.0). * This split - combined with the explicit product introduction of a magic keyboard dedicated to iPad - has resulted in (as far as I can tell, as a non-developer) an overwhelming state of confusion regarding the whole idea of using a Bluetooth Keyboard with iPhone. I have spent the past few years talking to developers who somehow *did not know their iPhone apps had working Bluetooth Keyboard shortcuts*. I have made it a habit to just write the shortcuts tables myself by way of blind testing off the handy iPad guide which appears when ⌘ is held (not on iPhone!) * There really are those of us who regularly use Bluetooth Keyboards with our iPhones. Most I have met do so for what I would definitively classify as Accessibility concerns. (My personal use is not quite definitively so.) **My question, really, is:** **Where can I find complete documentation of both keyboard shortcuts support in native apps/the OS and `UIKeyCommand` ’s uniquely-iPhone considerations?** (Please assume I have seen any related docs on developer.apple.com and support.apple.com.) I’d like to leave it there at the risk of being uselessly verbose. Thank you for your time. I look forward to hearing back. ## Answers Hardware keyboards are generally an iPad feature—hence many hardware keyboard features, such as the keyboard shortcut menu and the shortcut bar (both introduced in iOS 9) are unavailable on iPhone. However, hardware keyboards are still supported for text editing on iPhone, and since iOS and iPadOS both share many of the same underlying technologies, then key commands are also supported ( especially to support common text editing commands, such as ⌘B to toggle bold text, and ⌘⌫ to delete a line). As you mentioned, hardware keyboards are useful on iPhone for numerous Accessibility features, especially for those who find it difficult to use the touchscreen. Full Keyboard Access, for example, can be enabled both on iOS and iPadOS 13.4 or later, and is supported using many of the same APIs as focus keyboard navigation (which is otherwise an iPad feature). We have a great WWDC session this year which covers many of these accessibility topics: [https://developer.apple.com/videos/play/wwdc2021/10120/](https://developer.apple.com/videos/play/wwdc2021/10120/) Here's a support document where some of the hardware keyboard accessibility features are discussed: [https://support.apple.com/guide/iphone/keyboards-ipha7c3927eb/ios](https://support.apple.com/guide/iphone/keyboards-ipha7c3927eb/ios) In general, you shouldn't need to make iPhone-specific accommodations when adopting UIKeyCommand. Your iPhone app shares the same interface as your iPad app in a horizontally compact layout, such as in Split View or Slide Over mode. Posted by Frameworks Engineer  ## Comments Thanks so much for your prompt answer! Apologies… I’ve waited to resolve or comment further so as not to waste your time. I hope it’s not too off topic for this forum, but I do have one more request. Since iPhone is without an equivalent to iPadOS’ handy per-app Keyboard Shortcuts Guide (the frame which appears from holding ⌘,) I was wondering if a list of the still-supported Bluetooth Keyboard Shortcuts still supported on iPhone per *native* app might be included in a future edition of Apple’s *iPhone User Guide* in the Apple Books Store, or perhaps in other user-facing documentation. This is somewhat topical in that it appears Safari for iOS’ Bluetooth Keyboard Shortcuts map is currently changing over the course of this Beta cycle. (If I’m being too obtuse here I would be glad to cite specific examples if they are wanted.) Otherwise, I have already begun a project to do so and would be glad to share the end product with Apple if that would be welcome. Again, I suspect I am now quite off-topic for this forum, but I would be extremely grateful - if so - if you could direct me to a more appropriate place where I might continue this discussion about user-facing documentation, specifically. Once again, I very much appreciate your time and your patience. This will be my last post on this thread in consideration of its potential to be off-topic/disruptive in what I’m sure is a very busy time for you guys. (Unless I hear back otherwise.) #documentation #keys # Shortcuts for Scrubs ## David Blue’s WORLD FAMOUS Fast n’ Loose™ Siri Shortcuts for 𝚂𝙲𝚁𝚄𝙱𝚂 **All** of the Siri Shortcuts I’ve created or modified over the years and and thought worthy of sharing, prioritizing those which I have not shared on either my [RoutineHub](https://routinehub.co/user/blue) or [ShareShortcuts](https://shareshortcuts.com/u/blue/) profiles. You shouldn’t encounter share URLS from *any* Shortcuts or File Shariing services, here - I thought a commitment to generating fresh `icloud.com/shortcuts` URLs exclusively for this project would be in its best interest - I haven’t exactly been dilligently keeping track of them throughout the history of Siri Shortcuts as they’ve been exclusively shared this way… ## Most Utilitarian (In Theory…) * [**screen**](https://www.icloud.com/shortcuts/6fa16145d1a649ceb878f141b8e595b7) ## Music/Audio Delights * [**Fondren & Main**](https://www.icloud.com/shortcuts/fc846ff0e9094e088a7af4c5c11c3a23) * [**SHOW ME**](https://www.icloud.com/shortcuts/029dea6d90f84223ac65be98fc803e7a) * [Frank Ocean - Street Fighter](https://www.icloud.com/shortcuts/ce89a2fe4f444e9c973436922640a33a) * [HER](https://www.icloud.com/shortcuts/c6ab99cbc3d9430d87d4abbdf7714d16) * [GOGO](https://www.icloud.com/shortcuts/80fa232621df4112bd1a92a5ace8e088) * [FALTER](https://www.icloud.com/shortcuts/3f4efb0207ab4b0ca91606f160612273) ## Personal/Brand * [The Psalms Ebook](https://www.icloud.com/shortcuts/eff33d5e122449deb190c70992022c97) # The Political Economy of Reaction - John Ganz ``` From: John Ganz from Unpopular Front To: davidblue@extratone.com Date: Dec 6, 2021 Subject: The Political Economy of Reaction ``` > “Theories and schools, like microbes and globules, devour each other and by their struggle ensure the continuity of life.”—Marcel Proust, Sodom and Gomorrah > “Literary men exist not by the preservation, but by the destruction of their own species.”—William Hazlitt This post is going to be a rather long and meandering attempt to gather my thoughts, so may not be entirely a coherent essay.— Recently, I fell for a provocation online. The hosts of the Red Scare podcast posted a picture of themselves with Alex Jones, the infamous conspiracy theorist and far-right radio host. (Red Scare, for those of you who don’t know, started out as an ostensibly left-wing podcast with bohemian airs, it has a a conservative slant on cultural issues, and has grown steadily more reactionary.) This made me very angry at first, because I felt it was obscene: Jones has recently been found guilty of defaming the parents of the murdered Sandy Hook children and his entire public performance is a kind of pornographic display of paranoia and hatred. But I realized quickly that my reaction itself was taken account for in advance‚—it was designed to upset the fuddy-duddies like me, and I fell for it. It was one some level a very clever piece of negative public relations. It drew up battle lines in the culture wars and created the field on which to take positions. And it attracted attention and audiences, which is what everyone in the situation was really after. A now-familiar list of names rallied to the photo, putting themselves—if not quite on the side of the provocation—at least against the people who were upset by it: The blogger Frederick de Boer, wrote a rather excited celebration of the event, Glenn Greenwald, perennial media bete noire, made sure to get in on the action, Bari Weiss, one-time New York Times editor and now a self-styled salonniére and dissident intellectual, retweeted de Boer’s article, etc. (Some of these people are roughly associated with what I tried in an earlier attempt to call the Sorelian Left, or anti-dreyfusard left, and at another times called Bohemian criticism.) All present themselves in opposition to mainstream liberalism, “wokeness,” “political correctness,” “cancel culture.” (I am sorry if this is all very boring, inside-baseball media stuff, but hopefully it will go somewhere interesting.) I think de Boer actually hits the nail on the head when he points out how lucrative involvement in these sorts of provocations is for him: he describes getting many more subscribers when he inserts himself into some media fracas. I’ve noticed the same thing a while ago on a much more limited scale, where when I was being attacked and abused on Twitter, my paid subscribers on this platform went sharply up. Let’s think for a a moment about the dynamics of production here. I am roughly in the same social class as these people: I am a writer, a journalist, who is not permanently associated with a major institution like a newspaper or magazine, which anyway are perhaps less relevant these days. In order to survive or grow, we all rely on subscriptions and often have to directly publicize ourselves. It is possible to make a living, even to be quite successful and gain a degree of fame or intellectual legitimacy and recognition in mediums like podcasts and newsletters, but the threat of irrelevance and obscurity hangs over the cultural producer and the need to publicize, to reach new publics and markets is ever-present. We are sort of cultural small-owners or shopkeepers, and a kind of proletarianization can be the result of a failure to distinguish ourselves: either in the form of real destitution or, just as likely, being swallowed up in the indifferent Grub Street crowd of scribblers, bloggers, podcasters, the relative losers in the struggle for recognition. So it’s imperative to constantly beat home the point that “we” are the really interesting, radical dissenting voices, and “they” are the conformists and cowards. Or that “we” are among the wits and “they” among the pedants, etc. Needless to say, being involved in some public outrage is a very quick and effective form of publicity. So, we this need for new publics creates an incentive for histrionics. I mean this in the old sense of the term, as a reference to the theater: there is a theater of public position-taking. These poses—in this case literally posing for a photograph—then create opportunities to strike other poses, and to get the acclamation of the crowd. The Red Scare photograph quickly attracted a bunch of cultural producers who knew that they could benefit from taking a a stance on it. De Boer, to his credit, pretty much states this openly. Often these stances involve a sort of cant or “whiny heroism” to borrow a wonderful phrase from Fritz Stern’s The Politics of Cultural Despair. This is how the crowd knows who to applaud and shower money on. This connection between journalism, theatricality, and cultural politics feels very familiar to me from reading about the 19th and 20th century. (It’s interesting to note here in the context of theatricality that both lawyers for both Tucker Carlson and Alex Jones have tried to make the case that what they are doing is more akin to a performance than actual news.) I recently recommended Philip Nord’s The Politics of Resentment: Shopkeeper Protest in Nineteenth-Century Paris and his description of the dynamics of the literary culture of the Third Republic feels apposite: Many of the cultural figures Nord describes tried at careers in the theater, took up political writing and activism, many of them began on the radical or socialist left, and then became right-populists of some sort another, Nationalists, and anti-Dreyfusards. Part of the reason was just the declining prospects on the cultural scene: the boulevard life of writing, cafes, and theaters that once offered career opportunities and the chance for recognition was fading. This gave them an intrinsic cultural conservatism and nostalgia for better days. And there was what Nord describes as a “crisis of overproduction” in literature, making the game of public distinction all the more crucial. Nord writes: > One line of argument views the Nationalist man of letters as a frustrated failure, another as a besieged establishmentarian. The two interpretations, however, can be reconciled. The green-clad Academic and the demimondain journalist represented the twin poles of boulevard life…The eclipse of the boulevard culture brought disappointment to journalists and littérateurs whatever their position in the old hierarchy of success. The marginals could never hope to rise in a world of shrinking opportunities. As for the successful, the emergence of new cultural hierarchies devalued their achievement. They were equally victims of a profound cultural change. The old world, of course, did not vanish noiselessly but made a supreme effort in anti-Dreyfusard Nationalism to postpone defeat. Something like this can help us to understand the superficially odd alliances of convenience that dot the media universe: the former hero of the radical left Glenn Greenwald finds himself allied with Tucker Carlson, the once-bow-tied insider-GOP product of high preppie-dom, now a self-styled populist making a play for Alex Jones’s audience; or, Bari Weiss, once groomed to be part of the elite neoconservative opinion apparatus finds herself exiled, and must recreate herself, with inflated rhetoric to make up for her rather limited talents as a journalist, as tribune of the cancelled. She’s now involved with an attempt to create a kind of avant-garde academia, a contradiction in terms that reveals the paradoxical type of recognition a lot of these figures seek: at once old-school, establishmentarian, hide-bound, and respectable and radical, outré, and daring. Red Scare is the product of a fading downtown scene that no longer provides either a sense of exciting place and zeitgeist, viable artistic careers, or much cultural relevance, despite desperate attempts to keep it going. (Funnily enough, one person who I know who loved their provocation is an aging habitué of this downtown bohemia.) Their idol is Camille Paglia and their highest aspiration seems to be to be guests on Bill Maher, figures that belong to the 1990s cultural pantheon. All of these people sort of imagined themselves places in the old bourgeois cultural cursus honorum. This is where I part company with De Boer’s characterization of this recent effrontery as cool or avant-garde in some way. Really, I think the moment has passed and it is really an attempt, like much of what we’re discussing, to arrest a process that the sociologist Pierre Bourdieu called “social aging:” a bid for relevance and attempt at shock to buoy one’s fortunes. It may well have worked—for the time being. But each of these examples shows a cultural producer who was forced to sort of recreate themselves according to the force of circumstances. Jones is probably in some financial difficulty now with the lawsuits. Greenwald’s old brand of left-liberalism, which included stentorian assaults on the GOP and defenses of Hillary Clinton (!), would be pretty unremarkable in the present media environment. This is what I think explains the need to alter his public image here and the stark difference between his journalistic work in Brazil and the United States: as an artisanal, single-owner concern Greenwald & Co. has to make sure it has very special goods for its different markets. But what of the audiences, the publics, the crowds? Well, here is where the presence of Jones is notable. Jones is undoubtedly figure of the mob and they’ve apparently all sort of realized that they are more and more attracting the mob and rely upon it for their livelihood. But what is the mob exactly? It’s the part of society that has a similar structural relationship to the “mainstream” as these types of cultural producers—the inside-outsiders who do not feel they are getting their allotted share of the spoils. Marx in the Eighteenth Brumaire called this group, in his inimitable style, “the scum, offal, refuse of all classes.” Arendt writes they are the “déclassés of all classes”: > The mob is primarily a group in which the residue of all classes are represented. This makes it so easy to mistake the mob for the people, which also comprises all strata of society. While the people in all great revolutions fight for true representation, the mob always will shout for the “strong man,” the “great leader.” For the mob hates society from which it is excluded, as well as Parliament where it is not represented… It is given to conspiracy-thinking and attacks on representative institutions: > Excluded as it is from society and political representation, the mob turns of necessity to extraparliamentary action. Moreover, it is inclined to seek the real forces of political life in those movements and influences which are hidden from view and work behind the scenes. She writes that the mob is not just the “refuse” but the “by-product” of bourgeois society and “never quite separable from it.” She notes, “high society’s constantly growing admiration for the underworld, which runs like a red thread through the nineteenth century, its continuous step-by-step retreat on all questions of morality, and its growing taste for the anarchical cynicism of its offspring. At the turn of the century, the Dreyfus Affair showed that underworld and high society in France were so closely bound together that it was difficult definitely to place any of the “heroes” among the Anti-Dreyfusards in either category.” It is this same same “anarchical cynicism” of the mob that’s being celebrated today with the Jones stunt and by Freddie de Boer’s purple prose, which clearly sees in the mob “in the mob a living expression of virile and primitive strength.”: > There is a second front, in this war, a hidden battlefield on which the social justice movement is slowly losing to the forces of… not liberalism, not reaction, not conservatism, not civil liberties, not plain ol’ common sense, but anarchy, resistance, revulsion towards piety, the desire for revenge, the death drive, animal spirits, the id, the unheimlich, Jungian impulse, and most of all utter and total moral exhaustion. These are chip chip chipping away at the arrogant command of our moral betters…I am not saying the forces of opposition are good; they are, indeed, bad by their elementary nature. But still, in the conflict ahead I have my money on chaos, the ever-turning gyre, and the will to disobey. Tomorrow will not be like today, and the ones who now indict the unclean and issue verdicts and dole out punishments and deny every application for parole will wake up one day and wonder where it all went wrong. The witching hours approaches, the rabbis will be chased from the temple, and no one can say how the wheel will spin. Take shelter and tremble, or better yet, enjoy. This is surely nothing but a bohemian cultural elite’s “temptation to flaunt extreme attitudes in the hypocritical twilight of double moral standards, to wear publicly the mask of cruelty if everybody was patently inconsiderate and pretended to be gentle, to parade wickedness in a world, not of wickedness, but of meanness” that Arendt writes of. The resentments, failures, and disappointments of the mob, its hatred of the society it feels bitterly excluded from but it also relishes outraging and shocking, are all reflected in these popular tribunes’ battles with society. They grow to reflect and admire one another’s cruelty and cleverness, and to become one entity. It is surely possible for someone to find something louche and romantic in all this, or to find in this some kind of revolt or radicalism, but to any clearsighted observer, it’s all pretty dingy if you take a closer look: it’s just in the service of petty grubbing for money, status, power, and recognition. All it promises is destruction and humiliation of one’s enemies. A perpetual churn of spurned egos, anger, disappointment, and resentment. In brief, it’s a shadow-play of the operations of capitalist society in general. Or, even better, a kind of petri dish where we can observe all its metabolic processes at work. And interesting as it may be to contemplate for a time, it’s all sort of gross. © 2021 John Ganz Unsubscribe 548 Market Street PMB 72296, San Francisco, CA 94104 [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjIwMjExMjA2MTU1MDAyLjIu%0D%0ANmVjZGE3MTY1NDA3NDEyOC5qM3RzNmE5cEBtZzIuc3Vic3RhY2suY29tOzE3MzEw%0D%0AMjg3NzQ%3D) #archive # Mobile Dot Twitter Dot Com ## An alternative for those who refuse to pay for premium experiences but can no longer use ~~Tweetie~~ Twitter’s native option. A few minutes ago, Twitter’s native iOS client inexplicably logged me out of the three accounts I’d signed in for the *second time today*, which for the first time prompted not anger, nor even frustration, truly, but a whole-body, calming, peaceful acceptance: **for me and my house, the time really has come to let com.atebits.Tweetie2 finally rest **. #### Its last functions on my device 1. Sharing the highest-quality image files possible. 2. Interacting with my account settings (checking up, exploring new beta features, etc.) 3. Hosting, popping-in, and testing Twitter Spaces. 4. Notifications. For just these, the app occupied a woeful amount of file space compared to… just about anything else (we’re talking [*by a factor of ten*](https://twitter.com/NeoYokel/status/1432312460095148034)) and at this point, literally too much of *my life* and emotional energy with its unendingly stupefying level of neglect. It hasn’t made sense for a long time. # Notes-Telegram ## General * [x] **Telegram and Discord are the same age** * [ ] [**Isiah’s random encounter**](https://twitter.com/ammnontet/status/1449594872139186181) * [ ] Telegram’s cross-platform, resource-frugal clients and phone number-based accounts/auth literally make it more **class mobile** than Discord. * [ ] What in fuck is this website… “[Telegram for iOS - NONE](http://tsfkb.wikidot.com/apps:ios)” * [ ] My [personal Telegram satellite GitHub Repository](https://github.com/extratone/t) * [x] [Send to Telegram Drafts Action](https://actions.getdrafts.com/a/18E) * [x] [r/columbiamo - Local Telegram Group Chat for Columbia](https://reddit.com/r/columbiamo/comments/c4na0v/local_telegram_group_chat_for_columbia/) * [x] Relative link to messages that don't involve complex scripting. * [x] Unlimited file upload limit - **2GB PER FILE LIMIT**. * [x] Cross-platform as all fuck. * [ ] Every programming/scripting language ever has at least a few (probably unfinished and abandoned) projects in the wild building support for Telegram APIs. * [x] Drafts as a safe dependable space to compose text does not have a windows equivalent, but Telegram can sort of function in that regard, largely because it continuously saves what one types in the text field. * [ ] Element … or Matrix… or whatever the actual protocol is called… is nothing but a great way to waste your time and the planet’s energy in obfuscating willy nilly. * [ ] Perhaps I should have accepted long ago that my particular priorities are *not* as resonant with other users as I would like to believe. * [ ] Notification management in Telegram as well considered as I’ve ever experienced, which makes a lot of sense now that I am a long time user. * [x] When I lost all my shit in Portland, much of what was saved was thanks to Telegram. * [ ] The particular features that define Telegram’s competence are not immediately obvious, for the most part. Being able to quickly change the recipient of a forwarded message, for instance, * [ ] Telegram is notably lacking in translation support considering it's such an international space. * [ ] Microsoft Teams needs to be considered as an alternative since it's being so heavily emphasized for *personal use* in Windows 11. * [x] The **cost** of Telegram vs. Discord Nitro, now. * [ ] [[SI on Discord Regarding Objective-C and Swift]] * [ ] "Last seen within a week will be kicked." * [ ] As far as I’m concerned/as far as I live, now, Telegram is a required utility for using iOS. * [ ] The ever-greater value of the ability to [**send silent messages**](https://telegram.org/blog/channels-2-0#silent-messages). * [ ] YouTube's pre-sharesheet sharesheet pushes to Telegram even faster than Telegram's. * [ ] [Anon ✪ in Telegram Desktop Talk](https://t.me/TelegramDesktopTalk/66912) * [ ] `t.me/s` * [ ] **Rich Text** is the fucking key when it comes to posting!!! [See:](https://t.me/extratone/7935) * [ ] Telegram’s audio file sharing (like my bot!) could actually be *more* frugal than collective Discord listening in voice channels, especially considering how they’re treated as a playlist (with a customizable and recently-redesigned audio player) within *channels*, at least. [[Telegram-References]] ## Themes - [Tweetbot 6 Pro](https://t.me/addtheme/Tweetbot6Pro) - [SYSTEM COLORS Themes for iOS-Bound Telegram – Telegraph](https://telegra.ph/SYSTEM-COLORS-Themes-for-iOS-Bound-Telegram-09-27) - [SYSTEM BLUE](https://t.me/addtheme/systemblue) - [SYSTEM PINK](https://t.me/addtheme/systempink) - [SYSTEM PURPLE](https://t.me/addtheme/systempurple) - [SYSTEM RED](https://t.me/addtheme/systemred) - [SYSTEM GREEN](https://t.me/addtheme/systemgreen) - [SYSTEM ORANGE](https://t.me/addtheme/systemorange) - [Google Allo](https://t.me/addtheme/AlloChat) - [Minimalist M Pro](https://t.me/addtheme/cbommvtsGSw7A0aE) ## Channels * [Telegram iOS Talk](https://t.me/TelegramiOStalk) * [It's FOSS](https://t.me/itsfoss_official) * [Mastodon Club](https://t.me/mastodonclub) * [PINE64 General Chat](https://t.me/mtrx_pine64) * [LibreTaxi all orders](https://t.me/libretaxi_all) * [iOS Themes Group](https://t.me/ThemeCreators) ## Images - [ ] `![Hungo](https://i.snap.as/35ChT1z2.jpeg)` - [ ] `![SYSTEM COLORS](https://i.snap.as/W0JHUEKM.png)` - [ ] `![SYSTEM COLORS Horizontal](https://i.snap.as/Y3fNeQP6.png)` - [x] `![White Sapphire](https://i.snap.as/aNADRjvK.png)` - [x] `![Telegram Green](https://i.snap.as/e2g09wl3.png)` - [x] `![Drake Telegram Joke](https://i.snap.as/2YhRCO0I.jpeg)` - [ ] `![Quartered Telegram](https://i.snap.as/387ADVNS.png)` - [ ] `![Quarter Telegram](https://i.snap.as/wYNY5aVO.png)` - [x] `![Patel Clouds Theme in the Chat Background Tool](https://i.snap.as/9Bxz27ZX.png)` - [x] `![Local Visibility and Voice Notes Publishing in Telegram for iOS](https://i.snap.as/jfBVJqyw.png)` - [x] `![Chat Export in Telegram Desktop](https://i.snap.as/TbPFRPnG.png)` - [ ] `![iOS Old Red Theme](https://i.snap.as/cfzQk533.png)` - [ ] `![Telegram for iOS Sharing and Notifications](https://i.snap.as/FltrCV6Z.png)` - [x] `![Send to Telegram Drafts Action](https://i.snap.as/p3K96LiX.png)` - [ ] `![Telegram in CarPlay](https://i.snap.as/0jm5rxyy.png)` - [x] `![Security Considerations in Telegram for iOS](https://i.snap.as/Qim9gsZZ.png)` - [x] `![Telegram Privacy - InputZero](https://i.snap.as/a0xgY5cJ.png)` - [x] `![Telegram Desktop in Windows 11](https://i.snap.as/DFQzGGeZ.png)` - [x] `![TG Colors](https://i.snap.as/r0WpvFQr.png)` - [ ] `![Telegram Tile](https://i.snap.as/WQJGiVhY.png)` - [ ] `![Commments Dot App Embed](https://i.snap.as/ur3rE2pw.png)` - [x] `![Location Sharing in Telegram for iOS](https://i.snap.as/FRj5GGPN.png)` - [x] `![Live Streams and Video Chats](https://i.snap.as/v1zhWmwN.png)` - [x] `![Storage Management - Telegram for iOS](https://i.snap.as/BecGI6kg.png)` - [x] `![Telegram Live Stream Meta](https://i.snap.as/oDQqSYHF.png)` ## Anecdotes * [ ] Static location sharing just sends a Lat-Long Google Maps URL: `https://maps.google.com/maps?q=38.934018,-92.388035&ll=38.934018,-92.388035&z=16` * [ ] "[I don't really have anything to say about Telegram one way or the other. We ran it for a short time 5 years ago as an experiment and it didn't stick](https://discord.com/channels/836622115435184162/836622115880828961/898380609993449502)." - John Voorhees, *MacStories* * [x] [New Telegram Group Chat thread in r/columbiamo](https://reddit.com/r/columbiamo/comments/q0843f/local_telegram_group_chat/) `[[Telegram-References]]` [**Telegram-References**](bear://x-callback-url/open-note?id=70E5B41B-319F-45E3-B6A4-B9D826066578-5516-0000011225545D46) ## Dev - [ ] [rahiel/telegram-send: Send messages and files over Telegram from the command-line.](https://github.com/rahiel/telegram-send#installation) - [ ] ## Media * [Share Sheet animation](https://imgur.com/gallery/4laWgXj) - `https://imgur.com/gallery/4laWgXj` * [Windows 11 Release Wake (Stream)](https://t.me/extratone/7054) - `https://t.me/extratone/7054` * Apparently screen sharing to live video on iOS [is experiencing frame rate issues](https://t.me/TelegramiOStalk/104997). ## Gripes - [ ] Telegram’s lack of keyboard support on iOS… - [ ] (Most of my complaints are adjacent to that.) Automatically placing the cursor in the text field (at least when I’ve got a keyboard connected) would certainly help out *my* use tremendously. *** # I Trust Telegram ![Patel Clouds Theme in the Chat Background Tool](https://i.snap.as/9Bxz27ZX.png) ## How I’ve used Telegram as the ultimate cross-platform Universal Clipboard, file sharing service, and more. Believe it or not, I, too originally sought the Russian-owned, cross-platform-as-hell messaging service for “privacy” - or perhaps *solitude* would be more apt. It was in 2017, amidst the shock that the Tump Presidency was *actually going to happen* [^1], that I happened to hear about his pick for Secretary of Education, Betsy DeVos, whom had just 18 months prior led myself and some twenty thousand other poor souls in a most capitalist prayer to the Christian God for prosperity at her pyramid scheme’s ultimate “superbowl” gathering in Cincinatti. I had decided to “infiltrate” AMWAY under the ridiculous assumption that I might be able to contribute some new insight in writing critically about what I might witness. (In truth, I found my experiences that summer so utterly traumatic, existentially, that I never was able to do so.) I don’t know what consequences of her ascension to the Lord of American Schooling I expected to happen, but I was pretty hysterical about it - that is, more unhumorously alarmed about some grander world happening as I’d ever been by a long shot. For the first and only time in memory, I felt compelled to take some sort of malicious, obscured action - to organize somehow for a purpose other than to be publicly critical of this person, and to use my knowledge about digital media to the fullest possible extent to scrutinize her administration’s every movement and to be prepared, even, to take some sort of real action if she… well, I don’t know. I *didn’t* know anything, really, about anti-government organization, generally, but I was not acting rationally in the slightest.[^2] ![White Sapphire](https://i.snap.as/aNADRjvK.png) I’m bringing this up for a few reasons, and the fact that the very first digital decision of my personal hysteria was to set up a private Telegram channel is telling, though I can’t recall just how much or how little I actually knew about it at the time. I launched myself back to the channel’s very beginning (easier to do with regular URLs than in any other service I’ve ever encountered,) but was only able to bring myself to dig just long enough to grab the utterly absurd photograph above… Though I certainly did not consider myself actively *interested in automation* at the time,[^3] Telegram’s infamous bot ecosystem proved so prevalent (and accessible,) that I was able to configure at least three bots on that channel within days of first establishing it: a repeater hooked to DeVos’ Twitter account, an RSS-powered bot watching the main feed of a website set up by Senator Elizabeth Warren called [*DeVos Watch*](https://www.warren.senate.gov/oversight/devos-watch), and another republishing everything from [the Department of Education’s press releases feed](https://www.ed.gov/news/press-releases). https://twitter.com/ammnontet/status/1449594872139186181 Was any of it genuinely useful in helping me maintain *Action Readiness* in hypothetical defense of American education? Most certainly not. It was, however, genuinely *comforting* to have such diligent, automated minions keeping watch - to have a centralized, private, reliable, and purely-chronological feed of information in a super-handy location, regardless of whether or not it was usable. As I began to unconsciously integrate Telegram into my day-to-day online life on both of my PCs and my iPhone, the usefulness of my private channel for *other* applications became rapidly apparent. On iOS, not even dedicated file managers like DEVONthink are capable (or *willing* might be a more accurate term) of handling the diversity of data Telegram will happily pass on for you, *especially* through the Share Sheet. https://twitter.com/NeoYokel/status/1442554265956986882 ## Drafting I have used this “flow” so extensively for so long that it has come to define the whole of the abstract method in my muscle memory. Observe me browsing the web on my phone in an exhausted or particularly distractible state and you’d probably catch at least one or two completely irrational, inexplicable instances of sharing to my “[Saved Messages](https://telegram.org/blog/albums-saved-messages)” Telegram channel, which would be problematic for just about any other link-saving service. Add too many links to Safari’s Read Later list and you’ll end up crashing the browser on your Mac. I don’t even feel comfortable sending links willy nilly to the brilliant bookmark managing/curatorial service Raindrop, these days, after finding out that my [Reading List feed](https://raindrop.io/davidblue/reading-list-13380406) has *actual daily followers*, but there are zero consequences to sending ultimately-worthless or duplicate links to my personal Telegram channel, which has no content limit and is instantly and competently searchable. ![Send to Telegram Drafts Action](https://i.snap.as/p3K96LiX.png) Over the years, I’ve discovered a bunch of other uses for the Saved Messages channel. As demonstrated in the screenshots embedded above, the [Send to Telegram Action](https://actions.getdrafts.com/a/18E) for my writing app, Drafts, utilizes Telegram for iOS’ Universal Links support (in the format `tg://…`) to instantly send the whole text of the current document in Drafts to a Telegram channel of one’s choice. I suspect this was intended to streamline posting for admins of public channels, but I’ve used it to quickly “back up” work as well as to transfer edits directly to my (Windows-running) PC. By adding `&to=+[my phone number]` to the end of the action’s URL, I was able to remove the single, unnecessary step of choosing the destination chat. Because text messages are automatically split at 5000 characters, though, I usually depend on the [Share as Markdown File Action](https://actions.getdrafts.com/a/1V4) (the output of which I also send to Saved Messages through the Share Sheet) for the latter function. Anecdotally I’ve also used this method literally just to inspect unknown content passed to the Share Sheet because it’s often **faster than Quick Look** to share to my Saved Messages channel and then immediately open it in the app. (Hilarious, I suppose. Mostly sad, these days.) I found my inspiration for this Post in replying to a [thread on the Automators.fm Discourse forum](https://talk.automators.fm/t/equivalent-to-drafts-but-for-windows/6159) regarding a Windows equivlalent to the same Mac/iOS/iPadOS app Drafts mentioned above. I suppose my reply was a bit off-topic, in retrospect, but still worth including: > I have been using [**Telegram**](https://desktop.telegram.org/), of all things for years. Notably, if you hit Ctrl + 0 from *anywhere* in the Windows client, you and your cursor are taken to the compose field beneath your personal "Saved Messages" channel, which is searchable, has an extremely high per-message character limit (after which it just automatically splits,) and is ridiculously reliable in saving "drafts" live as you're typing. As in... I have actively tried to lose characters by killing the application and then logging in on my phone and have yet to accomplish losing a single one (among other advantages: zero formatting added to plain text by default - not even line breaks - no total file limit and *2GB* per file limit uploads, absurdly cross-platform, literally more reliable than SMS in poor network conditions.) You can immediately reenter a sent message with `↑` to edit, copy it, escape with just `Esc` and then paste to start a new revision. The feature within Telegram that makes this whole usecase worthwhile was introduced in [June, 2016](https://telegram.org/blog/drafts), and is entitled - appropriately - “Drafts.” Unlike the Drafts function in Twitter’s various native clients, for instance, Telegram’s really is impossible to fool, though it’s not perfect. [Markdown formatting support](https://telegra.ph/markdown-07-07) is inconsistent across Telegram clients - the iOS app being the most woeful - and the few keyboard shortcuts the app supports on iPad are not supported whatsoever on iPhone. ## Universal Clipboard Users familiar with the MacOS + iOS + iPadOS ecosystem should be well-acquainted with “[Universal Clipboard](https://support.apple.com/en-us/HT209460),” which instantly synchronizes clipboard content across Apple devices. More recently, Android + Windows users have supposedly had access to an [equivalent functionality](https://support.microsoft.com/en-us/topic/seamlessly-transfer-content-between-your-devices-8a0ead3c-2f15-1338-66ca-70cf4ae81fcb#WindowsVersion=Windows_10). To my knowledge, though, truly cross-platform clipboard sync has yet to be realized.[^4] As someone who’s used iOS and Windows regularly - along with Linux, occasionally - for more than a decade, now, I’d put my full weight behind Telegram as the best available solution from (far too much) personal experience. ![Security Considerations in Telegram for iOS](https://i.snap.as/Qim9gsZZ.png) When first entering a new system, real or virtual, regardless of OS, my very first step upon completion of its setup process has for years been to install Telegram, largely because all of my passwords for any/all given services are huge - 30+ characters, at least - and complex enough that typing them out is both tricky and absurdly time-consuming. Authorizing a new Telegram client, however, is as simple as entering a one-time numeric passcode or scanning a QR code. Managing logged-in sessions (see: the far right screenshot embedded above) is quick, reliable, and includes a handy button to kill all but the current session. Thanks to these considerations, I feel quite comfortable sending myself passwords in Telegram, including .csv exports of whole password vaults, when it’s appropriate, even when working on systems I do not own. For this function, I can’t think of any other service/software capable of replacing Telegram. For day-to-day hyperlink sharing across my platforms, a variety of alternatives continue to come and go. The “Send to [device]” features represented throughout the palette of available web browsers - Firefox, Opera, Edge Chromium, Chrome, etc. - aren’t exactly reliable, in my experience. Most recently, I discovered a service specific to Hewlett Packard machines called “[QuickDrop](https://www.hp.com/us-en/solutions/quickdrop-photo-sharing-app.html),” which - along with [its accompanying iOS app](https://apps.apple.com/us/app/hp-quickdrop/id1495071972) - does indeed allow me to send files, links, and text between my iPhone and Big Boy HP tower, though even my brief testing was filled with inexplicable prompts to reauthenticate and intermittent hangups, neither of which lend easily to regular use. I still maintain high hopes for [Snapdrop](https://snapdrop.net/), which allows devices to share files and text over a *local* network from within any web browser, but it, too, is prone to frustrating hangups. ![Drake Telegram Joke](https://i.snap.as/2YhRCO0I.jpeg) ## File Transfer & Cloud Backup Amidst the saga of my failed move to Portland spanning 2017-2019, I ended up losing *all* of my physical file storage - my old desktop and its hard drive, as well as 3 external drives containing a bunch of raw video I probably wouldn’t have gotten around to using, anyway, site backups for *Extratone*, and who knows what else. This loss taught me many grand, metaphysical life lessons (I hope,) but more practically, it affirmed a (admittedly gluttonous) truth about digital assets: if one truly wishes to make a file permanent, they must back it up in as many different places as possible.[^5] Perhaps the single most durable of these in my own computing life to date has been Telegram, which still has no per-account file upload limit and a per-file size limit of *two gigabytes*. The amount of pre-2019 work I’ve recovered solely thanks to Telegram is too great to enumerate here, but a rough draft of my [2018 Thankful for Bandcamp Mix](https://pod.link/1437549809/episode/626a66d3f37807b69c59f56faa4d3b94) comes immediately to mind. How exactly the service is able to maintain this virtually unrestricted storage, infrastructurally, borders on *don’t want to know* status. My own net server impact as a user is fairly difficult to estimate, but I’d bet real paper currency it’s between 50 and 100 GB, the vast majority of which I uploaded several years ago. Within any mainstream cloud file storage service - Dropbox, Google Drive, Box, iCloud, etc. - the cost of storing that amount *over time* would have added up to a not-insignificant chunk of change. I don’t want to advocate for Telegram as a cloud storage replacement for loaded cheapskates, but for working-class users on a $0 budget, it can be counted upon to keep large files in a relatively shareable, ultra cross-platform, and super-accessible manner. Students, especially, should take note. ![Local Visibility and Voice Notes Publishing in Telegram for iOS](https://i.snap.as/jfBVJqyw.png) ## Community At this point in my life, I must acknowledge to both readers and myself that **I am completely inept at community organization**. Especially when it comes to grand suggestions about how I suppose online communities might be ideally-run or just better served by particular software environments and configurations, I have literally received *zero* positive feedback, and not because I haven’t spent significant time positing publicly within the space. I spent the first half of my twenties trying to Peter Pan an independent online music magazine into existence, written by fresh-minded youths on the fringe at 140% throttle and managed to accomplish startlingly little for my all my invested time and gumption. The relevant component of that tale was a significant and all-out commitment from the beginning to run the whole project entirely within Discord. The one absent activity throughout my years of Telegram use - save for intermittent correspondence during one relationship - has been *messaging other users*. I managed to find and participate in a few group chats - “[Telegram iOS Talk](https://t.me/TelegramiOStalk)” and [*It's FOSS*' official channel](https://t.me/itsfoss_official), notably - in my preparation/research for this post. I’ve discovered plenty of new clever bits, like the button to jump to one’s nearest mention in a chat. I’ve also done my best to actually apply some [much-needed administrative attention](https://t.me/columbiamo/7774) to [my years-old attempt](https://reddit.com/r/columbiamo/comments/c4na0v/local_telegram_group_chat_for_columbia) at creating the [definitive location-based local group chat](https://telegram.org/blog/contacts-local-groups) for the Mid-Missouri area where I live. Truthfully… It [hasn’t exactly gone as I’d hoped](https://reddit.com/r/columbiamo/comments/q0843f/local_telegram_group_chat), but the failures have been all my own. I have yet to find a satisfactory balance in terms of moderation bots, so I’ve (as of this writing) resorted to manually removing the (significant) spam bot traffic by hand. Also, I must admit that I’ve never had to do so more than once or twice on *Extratone*’s public Discord, despite how much more circulation its public, open invite links have received. In the past few weeks, I’ve had the privilege of watching *MacStories* relaunch their premium membership program, *Club MacStories*, on their incredible bespoke CMS. Part of this launch included their first exclusive community space, on Discord, which has been deeply rewarding for me, personally, but has also highlighted some serious limitations of that service which I not-so-long-ago [advocated so heavily for](https://bilge.world/discord-slack-comparison). Namely, **hyperlinks to specific messages** within Discord are a hopelessly problematic endeavor. Even for a public server like *Extratone*’s, navigating to a message link [like this example](https://discord.com/channels/107272441889341440/107272441889341440/893958033401593898) will require any and all users to log in to Discord on the web, which - on mobile devices, especially - seems to struggle to navigate to the precise position of the subject message after you’ve successfully done so. Slack’s public message links are smart enough at least to prompt users to open them Slack for iOS, but Telegram’s system for message links in public channels and groups makes both services look daft. Telegram message IDs are purely chronological from their channel/group chat’s creation - the first message in a channel or group chat is `1` and the 15th is `15`. Together with the simplicity of channel/group chat IDs, which are just their alphanumeric @ names, this format makes URL schemes for Telegram message links super malleable and easy to understand. The sixth message posted in the [@extratone channel](https://t.me/extratone), for instance, can be found at [https://t.me/extratone/6](https://t.me/extratone/6), which even those without Telegram installed can view natively within their web browser. Within Telegram clients, said links are ultra-responsive, regardless of whether or not one had previously “joined” the channel or group containing the message. ![Orange Noir Telegram Theme by Valespace](https://i.snap.as/moymK7EY.png) In *MacStories*’ case, there’s another essential point of reference. When I pinged the staff in their Discord regarding their experiences running [their now-abandoned Telegram channel](https://t.me/MacStories), John Voorhees replied: > I don't really have anything to say about Telegram one way or the other. We ran it for a short time 5 years ago as an experiment and it didn't stick. I wasn’t yet a subscriber in those days, but little details like [behind-the-scenes voice messages](https://t.me/MacStories/281) are definitely missed. [Federico’s initial audio introduction](https://t.me/MacStories/39) describes a potential for the channel I wish more readers had enjoyed. They’re much more intimate, even, than the publication’s new exluclusive Town Hall events on Discord, which doesn’t make much sense, I know. ![Live Streams and Video Chats](https://i.snap.as/v1zhWmwN.png) ### Streaming Admittedly, another attention-grabbing feature that contributed to my finally getting around to this Post was [the introduction of "Live Streams" for channels and groups](https://telegram.org/blog/live-streams-forwarding-next-channel) (really just a slight augmentation of their ["Voice Chats 2.0" features](https://telegram.org/blog/voice-chats-on-steroids)) at the very end of this past August. Discord, of course, was way ahead of Telegram in implementing Voice Chats and Screen Sharing [back in October of 2017](https://youtu.be/mMloc55o1jc), and it's long since become one of the services' core features. However, *recording* live content of any kind is not natively supported, though there is a [handy utility bot named Craig](https://craig.chat) who can accomplish this for you. For the sake of transparency, I should admit that not a single one of my live streams on Discord has actually included any viewership, but I have participated in a handful of others’ and viewed a couple dozen. https://twitter.com/NeoYokel/status/1448837428534521858 For the past few months or so, participating in any sort of voice or video chat in Discord desktop has led to [a spectacular relaunch loop](https://twitter.com/NeoYokel/status/1448837428534521858) that can only be solved by reinstalling the application, entirely.[^7] It’s not that Discord for iOS’ now full support for such streaming - both in terms of participation and simple viewership - isn’t impressive, but honestly, *Telegram* for iOS’ superiority should be immediately obvious to anyone who’s tried them both, recently. Not just in pure capacity’s sense, but in moderation tools, shared link customization, and, obviously, native recording support. I’ve embedded two recordings of different test streams of mine, below. [The first](https://t.me/extratone/7054) (embedded in [YouTube form](https://youtu.be/uhXZZBl0fn8),) was streamed from both my Surface Laptop 2 and iPhone 12 Pro Max. https://www.youtube.com/watch?v=uhXZZBl0fn8 [The second](https://t.me/extratone/7196) is a very brief recording (in native form [directly from *The Psalms*’ GitHub Repo](https://github.com/extratone/bilge/raw/main/video/TelegramiOSLiveStreamTest.mp4)) of a stream I did *just* from the share screen function of my phone, in the wrong orientation.[^8] Below is a screenshot of the recorded file’s metadata (as provided by Telegram for Windows.) ![Telegram Live Stream Meta](https://i.snap.as/oDQqSYHF.png) As you might note, there’s definitely something to be desired from the quality of Telegram’s stream recordings, especially in its included audio. I find it a bit strange that it’s recorded in 48 kHz just to be compressed down to *46kbps*. When you’ve stopped a recording, you’ll receive both the video file and just the extracted audio in an .ogg file. Unfortunately, the latter is no less compressed than it is combined in the video file. (Both are sent to one's Saved Messages channel immediately upon stopping a recording, from where they can be forwarded virtually anywhere.) Aside from a boost in audio quality, though, Discord’s default 720p base resolution is matched by Telegram. Via server boosts, this figure can be upgraded significantly, though the end result is quite costly. According to [a not necessarily trustworthy site](https://clutchpoints.com/discord-server-boost-cost/), accounting for Discord’s [recent reduction in boost requirements](https://www.facebook.com/discord/posts/4524749577592737), here’s the pricing laydown to boost a server (per month:) > …a total of $34.93 for Level 2 and $69.86 for Level 3. That’s $24.45 for Level 2 and $48.90 for Level 3 for Nitro subscribers. Among quite a few other abilities, here are the extracted audio/video requirements per server level **only**: 1. 128kbps audio/720p video upped to 60fps 2. 256kbps audio/1080p 60fps video 3. 384kpbs audio/no video boost So, if I had the spare change to maintain a level 2 boost for *Extratone*’s Discord server, myself, I could do so for $34.93 per month, which would allow me to *stream* (not necessarily *record*) in 1080p/60fps video and 256kbps audio to up to [50 viewers](https://support.discord.com/hc/en-us/articles/360040816151-Go-Live-and-Screen-Share) (as of this writing.) Theoretically, at no cost, I can stream with virtually identical features (though I prefer Telgram's) to my Telegram channel to [infinitely many users](https://telegram.org/blog/live-streams-forwarding-next-channel#unlimited-live-streams) in 1280p/30fps with absurdly low-quality audio and share/manipulate recordings natively/instantly from within any Telegram client. If I were All Powerful, I would make all the members of my "[Family Tech Support](https://bilge.world/ios-15-family-review)" iMessage group install Telegram on their devices so we could use it, instead. I would also make them collectively attend occasional live streams, where they could ask questions verbally of my demonstrations sharing my own screen, or even share their own screens to demonstrate an issue or provide context for a question. The reality, though, is that I do not expect any sort of anticipation for my personal live help events on any platform, which innately suggests Telegram over Discord, I'd argue, for when I *do* stream such content, given its total lack of investment.[^9] ![Location Sharing in Telegram for iOS](https://i.snap.as/FRj5GGPN.png) ### Location Sharing One of Telegram's most unique (and potentially powerful, I believe) community features is [Live Location Sharing](https://telegram.org/blog/live-locations) on its mobile apps. Borned by Siberian native developer [Roman Pushkin](https://twitter.com/romanpushkin), LibreTaxi is the single truly exciting open ridesharing alternative I've ever encountered.[^10] As [an item for *CBC radio* from 2015](https://www.cbc.ca/radio/spark/346-biometrics-audio-intelligence-and-more-1.3987746/the-man-who-wants-to-out-uber-uber-1.3987987) (among other assorted coverage compiled [here](https://telegra.ph/LibreTaxi-press-coverage-07-14) as of July, 2017) explains, it utilizes Telegram's live location sharing functions to act as a decentralized Uber/Lyft alternative in the form of [a bot](https://telegram.me/libretaxi_bot), which connects users needing a ride with users providing them, free of any fees or service charges. Discourse surrounding LibreTaxi has been silent for years, but [this channel](https://t.me/s/libretaxi_all) tracking all LibreTaxi orders in realtime is proof that it *really is* helping folks get around. * As for the persistence of *Live* location-sharing, I can vouch for its reliability on the Android side, at least, as per my aforementioned experience with a partner who used Telegram and shared their location with me for both safety and convenience. As someone with the most immense possible privilege regarding safety and dating, I would also like to suggest sharing one's live location with a private Telegram group chat with friends as an alternative to service's like [Tinder's Noonlight](https://www.help.tinder.com/hc/en-us/articles/360039260031-What-is-Noonlight-). ![Chat Export in Telegram Desktop](https://i.snap.as/TbPFRPnG.png) ### Permanence I've long evangelized (and extensively used) Alexey Golub's [Discord Chat Exporter](https://github.com/Tyrrrz/DiscordChatExporter) to make beautiful, stylized archives of Discord channels and/or entire servers for safekeeping. Telegram's native [Chat Export Tool](https://telegram.org/blog/export-and-more) came just a year after Alexey pushed [version 1.0 of the tool to GitHub](https://github.com/Tyrrrz/DiscordChatExporter/releases/tag/1.0.0), in August of 2018. In features, they're very similar utilities: both can export in either stylized HTML or data-only JSON formats between infinitely-configurable time/date constraints. Again, I wouldn’t know how much external backup of community activity actually weighs in the day-to-day operations of large online communities. I know I personally find it comforting to have a swift, polished method of exporting *text*, especially, living in this era of [blatant disregard for users of suddenly-abandoned online services](https://github.com/extratone/bilge/issues/79). ![TG Colors](https://i.snap.as/r0WpvFQr.png) ## ~~Transparency~~ Opacity One of my primary justifications for the time spent in composing this Post has to do with the immediately-available discourse surrounding Telegram on the web, which is wholly incomplete, at best. The main obstruction, from my perspective, is the subject of **encryption**. Even within publications as legitimate and frankly out-of-scope as *Forbes*, one can find an article like my chosen example, from February of this year, entitled "[No, Don’t Quit WhatsApp To Use Telegram Instead—Here’s Why](https://www.forbes.com/sites/zakdoffman/2021/02/13/why-you-should-stop-using-telegram-instead-of-whatsapp-use-signal-or-apple-imessage)." It was written to address a mass "[exodus](https://www.theguardian.com/technology/2021/jan/24/whatsapp-loses-millions-of-users-after-terms-update)" of users from WhatsApp after [a grandiose misunderstanding](https://www.theverge.com/2021/1/12/22226792/whatsapp-privacy-policy-response-signal-telegram-controversy-clarification)(?) of its Privacy Policy caused a noisy controversy ([catalyzed by Idiot Melon, himself](https://twitter.com/elonmusk/status/1347165127036977153).) I've been unable to find the added/altered text, itself, in my brief reading, but it's not as if the happening wasn't thoroughly covered elsewhere. It's not that I doubt the expertise of "Cybersecurity Expert Zak Doffman" when he notes "Telegram’s cloud-based architecture is a serious risk when compared to the end-to-end default encryption deployed by Signal and WhatsApp, which also uses Signal’s protocol," nor that I do not believe the following details are as true as truth gets: > All group messages on Telegram are only encrypted between your device and Telegram’s cloud, your message history is stored on Telegram’s cloud, and if you ([unwisely](https://www.forbes.com/sites/zakdoffman/2021/01/30/stop-using-this-dangerous-whatsapp-setting-on-your-apple-iphone-or-google-android-phone/)) transfer your WhatsApp chat history to Telegram, then this is also stored on its cloud. Make you sure understand that Telegram has the decryption keys to any of your data that you store on its cloud... To this argument and the many variations of it present in Telegram for iOS' [App Store reviews](https://apps.apple.com/us/app/telegram-messenger/id686449807), [obscure German PeerTube servers](https://tube.tchncs.de/w/2d958ef9-1be4-477c-bc13-852ec6391487), and even within [public chats on Telegram, itself](https://t.me/crackheadlegit/409), my formal response for the record is: *Okay! Affirmative! Received and understood!* I must acknowledge - given my own introduction to the service, narrated above - that Telegram's brand is vaguely associated with privacy and security. I can see that the second of nine duckies in the Ducky Grid on the root of telegram.org sits above the subhead "**Private**" and a caption with the following claim: "Telegram messages are heavily encrypted and can self-destruct." (The seventh ducky's subhead is "**Secure**.") Continuing on in Doffman's *Forbes* article, we find an overview of several vulnerabilities found throughout Telegram's native clients by Dhiraj Mishra - surely they with the most ghastly typographical preferences in all of cybersecurity - on their blog, *Input Zero*.[^6] The [specific example hyperlinked](https://www.inputzero.io/2020/12/telegram-privacy-fails-again.html) concerns a bug in the MacOS client that resulted in "the application leak[ing] the sandbox path where [a sent audio or video message] is stored in '.mp4' file." (The whole of the ghastly-typewritten summary is embedded below in screenshot form.) ![Telegram Privacy - InputZero](https://i.snap.as/a0xgY5cJ.png) Just to be clear, I am being sincere when I acknowledge that these are genuinely problematic issues that no doubt affected real Telegram users who depend upon its Secret Chat function. Even something so benign as the file path to local media storage on my device is not something I'd want piggybacking my otherwise-anonymous, NDA- and/or law-breaking messages to a journalist, for instance, but frankly, I don't know of any journalists who maintain public Telegram contacts, anyway. Come to think of it, I don't think I've *ever* seen a Telegram username publicly associated with a journalist. Indeed, the overwhelming majority of anonymous modern messenger service tip lines advertised by news organizations and news people which I've come across have all linked to Signal. In this particular case, then, Mr. Elon’s advice is sound. The question I would like to surface: **what if I have no use for encryption or privacy across my purposes for Telegram**? *All* the channels I have ever engaged with have been public, and those private ones I’ve come across have either been shady crypto spam channels or shady porn channels. I realize this doesn’t exactly reflect positively on Telegram’s community, but - as I argued regarding Discord, long ago - why let the community or even the app’s branding, itself, confine how you use it as a utility? ## A Hearty Foundation My thinking while drafting this argument kept returning to a single, simple realization: **in age, Telegram is just two years ahead of Discord**, yet the various software distributed by the two organizations for their respective services represent quite disparate opinions in design terms. [Discord's desktop "application"](https://discord.com/download) is an Electron app - [Telegram's](https://github.com/telegramdesktop/tdesktop) is virtually pure C++. [Telegram's iOS app](https://github.com/TelegramMessenger/Telegram-iOS) is mostly written in Objective-C (I'm to assume the 30.8% Swift code number on the repo as of this writing is mostly comprised of its widgets/other recent iOS-specific integrations,) while Discord's is mostly ???. That is, because Discord's software is proprietary and the source is closed, all I can tell you is that it was written in React Native [as of December, 2018](https://blog.discord.com/why-discord-is-sticking-with-react-native-ccc34be0d427). What I *can* tell you is that the current build of [Discord for iOS on the App Store](https://apps.apple.com/us/app/discord-talk-chat-hangout/id985746746) weighs in at 153.2 MB - significantly less than [Telegram's](https://apps.apple.com/us/app/telegram-messenger/id686449807) 185.1 MB. As I've noted plenty of times this year, **I am not a software developer** and therefore I can't promise you an app's initial payload size is actually all that relevant, but I was surprised to see Telegram wasn't slimmer than Discord, given how the two apps behave and my previous experiences with the platform, this year. ![Storage Management - Telegram for iOS](https://i.snap.as/BecGI6kg.png) Returning to the topic of their age… In its eight operating years, Telegram has embarked upon - and *actually completed*! - a gargantuan amount of projects. [Telegraph](https://telegra.ph/), the CMS, its [Web](http://web.telegram.org/), [Android](https://telegram.org/android), and [Linux](https://itsfoss.com/install-telegram-desktop-linux/) clients, [embeddedable comments widgets](https://comments.app), its [online theme creation tool](https://themes.telegram.org/), and on and on. Across their various types, Telegram’s software is universally simple, frugal, robust, and easy-to-use. Frankly, by contrast, Discord has done *nothing*? Though you’ll find openly-available solutions to accomplish much of what you can on Telegram in terms of moderation and other utilitarian concerns, like the aforementioned Craig bot, they are *all* the work of third-parties. While Discord the *company* is much more [transparently profiled](https://discord.com/company) on the web than “Telegram FZ LLC,” the latter’s actual work is very well documented [across GitHub](https://github.com/TelegramMessenger). ![Telegram Desktop in Windows 11](https://i.snap.as/DFQzGGeZ.png) If you’ve stuck with me this far, perhaps it’s not too much to ask that we retreat a bit and ask ourselves **what we’d truly like prioritized in community chat software for 2021**. I really do show my age in my bias, here, as someone just old enough to have had extensive experience using IRC,[^11] I think there’s a less-than-adequately discussed division happening which its successors might benefit dwelling on. IRC was extremely frugal and it was easy to find a freeware or FOSS IRC client for one’s given platform which was well-optimized to sit in the background of their desktop operating system, completely untouched and barely acknowledged visually for days… weeks… months at a time. It was easy to find oneself a member of a dozen or so IRC channels for specific interests, projects, or organizations averaging a dozen or so actual updates/pots per day, each. It was distinctly low pressure - many of my channel memberships functioned more like a wire service or, much more contemporarily, like an RSS aggregator, than a local party line. ![Telegram for iOS Sharing and Notifications](https://i.snap.as/FltrCV6Z.png) As I see it, the ultimate shift dividing those solutions from these is the big fucking obvious one: IRC was conceived in a world where computers were mostly static objects associated by their intended use and physical dimensions with the referential, unmoving waypoints around which *we* orbited (the kitchen counter, the desk in your study at home, parallel series of workstations within the public library, etc.) The *entirely* contrasted needs of community engagement on a *handset* should have - in my opinion - done much more to break apart these communal contexts than they have. As prolifically and extensively as I have used Discord for iOS since before its official release, even, it is hopelessly compromised by its loyalty to the PC gamer’s paradigm. My 12 Pro Max is not just *capable* of keeping 100 Discord channels up-to-date in the background as I move about the world - it is all too fucking *eager*, and for not a one rational explanation. Going on down this vector eventually leads to an adjacent argument I’ll name but otherwise save for later: it is literally **over a decade** past the time when we should have ceased celebrating the fact that mobile computers had matched and outdone desktop computers! We have to snap the fuck out of our obsession with lugging desktop computing alongside our persons and refocus entirely (once again) on exploring what “mobile computing” can/should mean, going forward. Please Gourd, help us do so ASAP. Unlike my heroes in most (if not all) of these tedious comparisons, I would *not* say Telegram is *the single software manifestation of total clarity in direction* within the subject, or anything, but in the area where it fails along with the rest of them, it has comprehensively iterated, invested in trial and error, and eventually produced tools that remedy the disparate gluttony. How swiftly and easily one can find one's installation full of media files, for instance, after *any* time spent exploring within its mobile apps. It very well could have been mostly chance that contributed to Telegram's current lead in terms of thoughtful design decisions and development investment toward **mobile-first optimization**. Perhaps it was their comparative longstanding Hype Famine, especially in the United States, these past few years. Maybe Discord hasn't built anything because they simply can't hear each other over the buzzwords overflowing their name in mainstream Discourse so abruptly thanks to The Big Virus. Telegram's story certainly *stands out*, though the voice of its creator, Pavel Durov, actually *telling* this story at length can now only be found [on *WIRED UK*'s MixCloud account](https://www.mixcloud.com/wiredUK/telegrams-pavel-durov-podcast-256), in [episode 256 of their *WIRED Podcast*](https://www.wired.co.uk/article/episode-256). Telegram was experiencing the peak of its presence in mainstream Western news media, who just *would not* let go of the fact that some leader of some terrorist organization recommended Telegram to someone for something at some point in time.[^12] Listening back, it's the nomadic "decentralized" beginnings of the organization - which I had forgotten entirely - which sounded a big, resonant Parallel Alarm in my brain: for very different reasons, [Bandcamp also operating without an office](https://bilge.world/bandcamp-streaming-music) (from a public library, charmingly,) at that time. "Can there only be one winner in the messaging wars?" David Rowan, to which Pavel - in the deliberate, uncomfortable-sounding tone he uses throughout the interview - responds by first noting a *real truth* for actual users: we tend to end up with a billion, each grouped generally by types of relationships. ------ [1] I still have not accepted this, by the way. I’m still back there. [2] If I were to be 100% sincere, I might ask you to consider that this (hilariously brief) intent was a method of coping with the great existential truths I was facing for the first time. [3] I *definitey* was, though. For whatever reason, I do not remember associating the term “automation” with such activities, but I just found the “receipt” for my “purchase” of [IFTTT for iOS](https://apps.apple.com/us/app/ifttt/id660944635)… From July, 2013. [4] I am currently working on a less-than-instant solution using iCloud and CopyQ’s clipboard sync function. [5] I would’ve said “one can never have too many backups,” but the result of such thinking is ridiculously wasteful and not something I actually want to encourage. [6] I'm almost positive I've heard of/been linked to this blog before, which is perhaps only notable in that I managed to keep my typographic opinions to myself. [7] Not that the process of doing so could be any easier on Windows. [8] It’s also worth nothing that [word of screen sharing framerate issues](https://t.me/TelegramiOStalk/104997) was circulating at the time of this recording. [9] Simulcast services like [Happs](https://happs.tv/@DavidBlue) - which still exists, astonishingly - offer an intriguing utility for those intending to stream regularly and wishing to do so across multiple platforms. It does not, at the moment, support either Telegram or Discord. [10] Speaking as someone with [actual extensive ridesharing experience](https://dieselgoth.com/volkswagen-jetta-sportwagen-tdi-review.html), notably. [11] Yes, there are some fellow Open Source Folks who’ve frankly struggled to let IRC go. It was an amazing protocol and will always be intertwined with the very first layed bricks of what we’d call the Social Web, but my friends… I sincerely think we should all try our hands at ham radio, instead. I think that would legitimately be a better use of our time than trying to implement two-factor authentication for IRC in this year of our spiteful Lourde 2021. [12] Disparaging Telegram for this is akin to shitting on Google because it is or was almost certainly the Taliban's favorite search engine, no? # Micro Matt: Trying a new morning routine lately. From: Micro Matt To: davidblue@extratone.com Date: Nov 23, 2021 Subject: Micro Matt: Trying a new morning routine lately. From micro.baer.works/trying-a-new-morning-routine-lately Trying a new morning routine lately. Instead of immediately checking email, and social media, and then sitting down to work, I’m doing anything but those things — and then sitting down only when I’m ready. This started two weeks ago, when I was camping in the North Carolina mountains. I would get up, take my dog Holden out, feel how the weather was, and then make a pot of coffee. I’d sit for a while outside in the quiet and breeze, and see if any thoughts came. Eventually, when I felt a natural lull, I’d head to a coffee shop to start working. I’m generally trying to find my “center” again — something I feel I’ve lost not just through recent life changes, but over the last decade, if I think about it. (That’s a digression for another time.) But I know I’ve always found my center outside, or by creating things: words, music, drawings, paintings. So without very much nature around me now, I’m doing something pointlessly creative every morning, with no real purpose or goal, before I even think of work. The results have been very good so far. New ideas — useful or not — are bubbling up that I don’t think would exist without this kind of mental space. I’m slowly feeling more like a whole person again. And when I do sit down to work, I’m feeling a little more focused on what needs to be done — honestly, because I’d love to have more open-ended creative time. [OPEN IN SPARK](readdle-spark://bl=QTphc3BoYWx0YXBvc3RsZUBpY2xvdWQuY29tO0lEOjIwMjExMTIzMTYwMzE3LmZk%0D%0AN2EwNDU4ZWZjOTA1NjdAd3JpdGVhc2xldHRlcnMuY29tOzEwMzQxODg0MzQ%3D) #correspondence # YouTube Terms of Service Dated: January 5, 2022 ## *TERMS OF SERVICE* *Introduction* Thank you for using the YouTube platform and the products, services and features we make available to you as part of the platform (collectively, the “Service”). *Our Service* The Service allows you to discover, watch and share videos and other content, provides a forum for people to connect, inform, and inspire others across the globe, and acts as a distribution platform for original content creators and advertisers large and small. We provide lots of information about our products and how to use them in our [Help Center](https://support.google.com/youtube/). Among other things, you can find out about [YouTube Kids](https://support.google.com/youtubekids/), the [YouTube Partner Program](https://support.google.com/youtube/topic/9223152) and [YouTube Paid Memberships and Purchases](https://support.google.com/youtube/topic/9223117) (where available).You can also read all about enjoying content on [other devices](https://support.google.com/youtube/topic/9257096?ref_topic=9257500) [like your television, your games console, or](https://support.google.com/youtube/topic/9257096?ref_topic=9257500) [Google Home](https://support.google.com/googlehome/answer/7029380). *Your Service Provider* The entity providing the Service is Google LLC, a company operating under the laws of Delaware, located at 1600 Amphitheatre Parkway, Mountain View, CA 94043 (referred to as “ *YouTube* ”, “ *we* ”, “ *us* ”, or “ *our* ”). References to YouTube’s “Affiliates” in these terms means the other companies within the Alphabet Inc. corporate group (now or in the future). *Applicable Terms* Your use of the Service is subject to these terms, the [YouTube Community Guidelines](https://www.youtube.com/t/community_guidelines) and the [Policy, Safety and Copyright Policies](https://www.youtube.com/t/policies) which may be updated from time to time (together, this *"Agreement"* ). Your Agreement with us will also include the [Advertising on YouTube Policies](https://support.google.com/youtube/topic/30084?ref_topic=2972865) if you provide advertising or sponsorships to the Service or incorporate paid promotions in your content. Any other links or references provided in these terms are for informational use only and are not part of the Agreement. Please read this Agreement carefully and make sure you understand it. If you do not understand the Agreement, or do not accept any part of it, then you may not use the Service. ## *Who may use the Service?* *Age Requirements* You must be at least 13 years old to use the Service; however, children of all ages may use the Service and YouTube Kids (where available) if enabled by a parent or legal guardian. *Permission by Parent or Guardian* If you are under 18, you represent that you have your parent or guardian’s permission to use the Service. Please have them read this Agreement with you. If you are a parent or legal guardian of a user under the age of 18, by allowing your child to use the Service, you are subject to the terms of this Agreement and responsible for your child’s activity on the Service. You can find tools and resources to help you manage your family’s experience on YouTube (including how to enable a child under the age of 13 to use the Service and YouTube Kids) in our [Help Center](https://support.google.com/youtube/answer/2802272) [and through](https://support.google.com/youtube/answer/2802272) Google’s [Family Link](https://families.google.com/familylink/). *Businesses* If you are using the Service on behalf of a company or organisation, you represent that you have authority to act on behalf of that entity, and that such entity accepts this Agreement. ## *Your Use of the Service* *Content on the Service* The content on the Service includes videos, audio (for example music and other sounds), graphics, photos, text (such as comments and scripts), branding (including trade names, trademarks, service marks, or logos), interactive features, software, metrics, and other materials whether provided by you, YouTube or a third-party (collectively, "Content”). Content is the responsibility of the person or entity that provides it to the Service. YouTube is under no obligation to host or serve Content. If you see any Content you believe does not comply with this Agreement, including by violating the [Community Guidelines](https://www.youtube.com/t/community_guidelines) or the law, you can [report it to us](https://support.google.com/youtube/answer/2802027). *Google Accounts and YouTube Channels* You can use parts of the Service, such as browsing and searching for Content, without having a [Google account](https://support.google.com/youtube/answer/69961). However, you do need a Google account to use some features. With a Google account, you may be able to like videos, subscribe to channels, create your own YouTube channel, and more. You can follow these instructions to [create a Google account](https://accounts.google.com/signup/v2/webcreateaccount?flowName=GlifWebSignIn&flowEntry=SignUp). Creating a YouTube channel will give you access to additional features and functions, such as uploading videos, making comments or creating playlists (where available). Here are some details about how to [create your own YouTube channel](https://support.google.com/youtube/answer/1646861). To protect your Google account, keep your password confidential. You should not reuse your Google account password on third-party applications. Learn more about [keeping your Google account secure](https://support.google.com/accounts/answer/46526), including what to do if you learn of any unauthorized use of your password or Google account. *Your Information* Our [Privacy Policy](https://www.youtube.com/t/privacy) explains how we treat your personal data and protect your privacy when you use the Service. The [YouTube Kids Privacy Notice](https://kids.youtube.com/t/privacynotice) provides additional information about our privacy practices that are specific to YouTube Kids. We will process any audio or audiovisual content uploaded by you to the Service in accordance with the [YouTube Data Processing Terms](https://www.youtube.com/t/terms_dataprocessing), except in cases where you uploaded such content for personal purposes or household activities. [Learn More](https://support.google.com/youtube/?p=data_applicability). *Permissions and Restrictions* You may access and use the Service as made available to you, as long as you comply with this Agreement and applicable law. You may view or listen to Content for your personal, non-commercial use. You may also show YouTube videos through the embeddable YouTube player. The following restrictions apply to your use of the Service. You are not allowed to: 1. access, reproduce, download, distribute, transmit, broadcast, display, sell, license, alter, modify or otherwise use any part of the Service or any Content except: (a) as expressly authorized by the Service; or (b) with prior written permission from YouTube and, if applicable, the respective rights holders; 2. circumvent, disable, fraudulently engage with, or otherwise interfere with any part of the Service (or attempt to do any of these things), including security-related features or features that (a) prevent or restrict the copying or other use of Content or (b) limit the use of the Service or Content; 3. access the Service using any automated means (such as robots, botnets or scrapers) except (a) in the case of public search engines, in accordance with YouTube’s robots.txt file; or (b) with YouTube’s prior written permission; 4. collect or harvest any information that might identify a person (for example, usernames or faces), unless permitted by that person or allowed under section (3) above; 5. use the Service to distribute unsolicited promotional or commercial content or other unwanted or mass solicitations; 6. cause or encourage any inaccurate measurements of genuine user engagement with the Service, including by paying people or providing them with incentives to increase a video’s views, likes, or dislikes, or to increase a channel’s subscribers, or otherwise manipulate metrics in any manner; 7. misuse any reporting, flagging, complaint, dispute, or appeals process, including by making groundless, vexatious, or frivolous submissions; 8. run contests on or through the Service that do not comply with [YouTube’s contest policies and guidelines](https://support.google.com/youtube/answer/1620498); 9. use the Service to view or listen to Content other than for personal, non-commercial use (for example, you may not publicly screen videos or stream music from the Service); or 10. use the Service to (a) sell any advertising, sponsorships, or promotions placed on, around, or within the Service or Content, other than those allowed in the [Advertising on YouTube](https://support.google.com/youtube/topic/9257894?ref_topic=2972865) policies (such as compliant product placements); or (b) sell advertising, sponsorships, or promotions on any page of any website or application that only contains Content from the Service or where Content from the Service is the primary basis for such sales (for example, selling ads on a webpage where YouTube videos are the main draw for users visiting the webpage). *Reservation* Using the Service does not give you ownership of or rights to any aspect of the Service, including user names or any other Content posted by others or YouTube. *Develop, Improve and Update the Service* YouTube is constantly changing and improving the Service. As part of this continual evolution, we may make modifications or changes (to all or part of the Service) such as adding or removing features and functionalities, offering new digital content or services or discontinuing old ones. We may also need to alter or discontinue the Service, or any part of it, in order to make performance or security improvements, make changes to comply with law, or prevent illegal activities on or abuse of our systems. These changes may affect all users, some users or even an individual user. When the Service requires or includes downloadable software (such as the YouTube Studio application), that software may update automatically on your device once a new version or feature is available, subject to your device settings. If we make material changes that negatively impact your use of the Service, we’ll provide you with reasonable advance notice, except in urgent situations such as preventing abuse, responding to legal requirements, or addressing security and operability issues. We’ll also provide you with an opportunity to export your content from your Google Account using [Google Takeout](https://takeout.google.com/settings/takeout?pli=1), subject to applicable law and policies. ## *Your Content and Conduct* *Uploading Content* If you have a YouTube channel, you may be able to upload Content to the Service. You may use your Content to promote your business or artistic enterprise. If you choose to upload Content, you must not submit to the Service any Content that does not comply with this Agreement (including the [YouTube Community Guidelines](https://www.youtube.com/t/community_guidelines) ) or the law. For example, the Content you submit must not include third-party intellectual property (such as copyrighted material) unless you have permission from that party or are otherwise legally entitled to do so. You are legally responsible for the Content you submit to the Service. We may use automated systems that analyze your Content to help detect infringement and abuse, such as spam, malware, and illegal content. *Rights you Grant* You retain ownership rights in your Content. However, we do require you to grant certain rights to YouTube and other users of the Service, as described below. *License to YouTube* By providing Content to the Service, you grant to YouTube a worldwide, non-exclusive, royalty-free, sublicensable and transferable license to use that Content (including to reproduce, distribute, prepare derivative works, display and perform it) in connection with the Service and YouTube’s (and its successors' and Affiliates') business, including for the purpose of promoting and redistributing part or all of the Service. *License to Other Users* You also grant each other user of the Service a worldwide, non-exclusive, royalty-free license to access your Content through the Service, and to use that Content, including to reproduce, distribute, prepare derivative works, display, and perform it, only as enabled by a feature of the Service (such as video playback or embeds). For clarity, this license does not grant any rights or permissions for a user to make use of your Content independent of the Service. *Duration of License* The licenses granted by you continue for a commercially reasonable period of time after you remove or delete your Content from the Service. You understand and agree, however, that YouTube may retain, but not display, distribute, or perform, server copies of your videos that have been removed or deleted. *Right to Monetize* You grant to YouTube the right to monetize your Content on the Service (and such monetization may include displaying ads on or within Content or charging users a fee for access). This Agreement does not entitle you to any payments. Starting November 18, 2020, any payments you may be entitled to receive from YouTube under any other agreement between you and YouTube (including for example payments under the YouTube Partner Program, Channel memberships or Super Chat) will be treated as royalties. If required by law, Google will withhold taxes from such payments. *Remov* *ing Your Content* You may [remove your Content](https://support.google.com/youtube/answer/55770) from the Service at any time. You also have the option to [make a copy of your Content](https://support.google.com/youtube/answer/56100) before removing it. You must remove your Content if you no longer have the rights required by these terms. *Removal of Content By YouTube* If any of your Content (1) is in breach of this Agreement or (2) may cause harm to YouTube, our users, or third parties, we reserve the right to remove or take down some or all of such Content in our discretion. We will notify you with the reason for our action unless we reasonably believe that to do so: (a) would breach the law or the direction of a legal enforcement authority or would otherwise risk legal liability for YouTube or our Affiliates; (b) would compromise an investigation or the integrity or operation of the Service; or (c) would cause harm to any user, other third party, YouTube or our Affiliates. You can learn more about reporting and enforcement, including how to appeal on the [Troubleshooting](https://support.google.com/youtube/answer/6395024) page of our Help Center. ## *Community Guidelines Strikes* YouTube operates a system of “strikes” in respect of Content that violates the [YouTube Community Guidelines](https://www.youtube.com/t/community_guidelines). Each strike comes with varying restrictions and may result in the permanent removal of your channel from YouTube. A full description of how a strike affects your channel is available on the [Community Guidelines Strikes Basics](https://support.google.com/youtube/answer/2802032) page. If you believe that a strike has been issued in error, you may appeal [here](https://studio.youtube.com/). If your channel has been restricted due to a strike, you must not use another channel to circumvent these restrictions. Violation of this prohibition is a material breach of this Agreement and Google reserves the right to terminate your Google account or your access to all or part of the Service. *Copyright Protection* We provide information to help copyright holders manage their intellectual property online in our [YouTube Copyright Center](https://www.youtube.com/t/copyright_center). If you believe your copyright has been infringed on the Service, please [send us a notice](https://support.google.com/youtube/answer/2807622). We respond to notices of alleged copyright infringement according to the process in our [YouTube Copyright Center](https://www.youtube.com/t/copyright_center), where you can also find information about how to resolve a copyright strike. YouTube's policies provide for the termination, in appropriate circumstances, of repeat infringers’ access to the Service. ## *Account Suspension & Termination* *Terminations by You* You may stop using the Service at any time. Follow these [instructions](https://myaccount.google.com/delete-services-or-account) to delete the Service from your Google Account, which involves closing your YouTube channel and removing your data. You also have the option to download a copy of your data first. *Terminations and Suspensions by YouTube* YouTube reserves the right to suspend or terminate your Google account or your access to all or part of the Service if (a) you materially or repeatedly breach this Agreement; (b) we are required to do so to comply with a legal requirement or a court order; or (c) we reasonably believe that there has been conduct that creates (or could create) liability or harm to any user, other third party, YouTube or our Affiliates. *Notice for Termination or Suspension* We will notify you with the reason for termination or suspension by YouTube unless we reasonably believe that to do so: (a) would violate the law or the direction of a legal enforcement authority; (b) would compromise an investigation; (c) would compromise the integrity, operation or security of the Service; or (d) would cause harm to any user, other third party, YouTube or our Affiliates. *Effect of Account Suspension or Termination* If your Google account is terminated or your access to the Service is restricted, you may continue using certain aspects of the Service (such as viewing only) without an account, and this Agreement will continue to apply to such use. If you believe that the termination or suspension has been made in error, you can [appeal using this form](https://support.google.com/accounts/contact/suspended?p=youtube). ## *About Software in the Service* *Downloadable Software* When the Service requires or includes downloadable software (such as the YouTube Studio application), unless that software is governed by additional terms which provide a license, YouTube gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the software provided to you by YouTube as part of the Service. This license is for the sole purpose of enabling you to use and enjoy the benefit of the Service as provided by YouTube, in the manner permitted by this Agreement. You are not allowed to copy, modify, distribute, sell, or lease any part of the software, or to reverse-engineer or attempt to extract the source code of that software, unless laws prohibit these restrictions or you have YouTube’s written permission. *Open Source* Some software used in our Service may be offered under an open source license that we make available to you. There may be provisions in an open source license that expressly override some of these terms, so please be sure to read those licenses. ## *Other Legal Terms* *Warranty Disclaimer* OTHER THAN AS EXPRESSLY STATED IN THIS AGREEMENT OR AS REQUIRED BY LAW, THE SERVICE IS PROVIDED “AS IS” AND YOUTUBE DOES NOT MAKE ANY SPECIFIC COMMITMENTS OR WARRANTIES ABOUT THE SERVICE. FOR EXAMPLE, WE DON’T MAKE ANY WARRANTIES ABOUT: (A) THE CONTENT PROVIDED THROUGH THE SERVICE; (B) THE SPECIFIC FEATURES OF THE SERVICE, OR ITS ACCURACY, RELIABILITY, AVAILABILITY, OR ABILITY TO MEET YOUR NEEDS; OR (C) THAT ANY CONTENT YOU SUBMIT WILL BE ACCESSIBLE ON THE SERVICE. *Limitation of Liability* EXCEPT AS REQUIRED BY APPLICABLE LAW, YOUTUBE, ITS AFFILIATES, OFFICERS, DIRECTORS, EMPLOYEES AND AGENTS WILL NOT BE RESPONSIBLE FOR ANY LOSS OF PROFITS, REVENUES, BUSINESS OPPORTUNITIES, GOODWILL, OR ANTICIPATED SAVINGS; LOSS OR CORRUPTION OF DATA; INDIRECT OR CONSEQUENTIAL LOSS; PUNITIVE DAMAGES CAUSED BY: 1. ERRORS, MISTAKES, OR INACCURACIES ON THE SERVICE; 2. PERSONAL INJURY OR PROPERTY DAMAGE RESULTING FROM YOUR USE OF THE SERVICE; 3. ANY UNAUTHORIZED ACCESS TO OR USE OF THE SERVICE; 4. ANY INTERRUPTION OR CESSATION OF THE SERVICE; 5. ANY VIRUSES OR MALICIOUS CODE TRANSMITTED TO OR THROUGH THE SERVICE BY ANY THIRD PARTY; 6. ANY CONTENT WHETHER SUBMITTED BY A USER OR YOUTUBE, INCLUDING YOUR USE OF CONTENT; AND/OR 7. THE REMOVAL OR UNAVAILABILITY OF ANY CONTENT. THIS PROVISION APPLIES TO ANY CLAIM, REGARDLESS OF WHETHER THE CLAIM ASSERTED IS BASED ON WARRANTY, CONTRACT, TORT, OR ANY OTHER LEGAL THEORY. YOUTUBE AND ITS AFFILIATES’ TOTAL LIABILITY FOR ANY CLAIMS ARISING FROM OR RELATING TO THE SERVICE IS LIMITED TO THE GREATER OF: (A) THE AMOUNT OF REVENUE THAT YOUTUBE HAS PAID TO YOU FROM YOUR USE OF THE SERVICE IN THE 12 MONTHS BEFORE THE DATE OF YOUR NOTICE, IN WRITING TO YOUTUBE, OF THE CLAIM; AND (B) USD $500. *Indemnity* To the extent permitted by applicable law, you agree to defend, indemnify and hold harmless YouTube, its Affiliates, officers, directors, employees and agents, from and against any and all claims, damages, obligations, losses, liabilities, costs or debt, and expenses (including but not limited to attorney's fees) arising from: (i) your use of and access to the Service; (ii) your violation of any term of this Agreement; (iii) your violation of any third party right, including without limitation any copyright, property, or privacy right; or (iv) any claim that your Content caused damage to a third party. This defense and indemnification obligation will survive this Agreement and your use of the Service. *Third-Party Links* The Service may contain links to third-party websites and online services that are not owned or controlled by YouTube. YouTube has no control over, and assumes no responsibility for, such websites and online services. Be aware when you leave the Service; we suggest you read the terms and privacy policy of each third-party website and online service that you visit. ## *About this Agreement* *Changing* *this Agreement* We may change this Agreement, for example, (1) to reflect changes to our Service or how we do business - for example, when we add new products or features or remove old ones, (2) for legal, regulatory, or security reasons, or (3) to prevent abuse or harm. If we materially change this Agreement, we’ll provide you with reasonable advance notice and the opportunity to review the changes, except (1) when we launch a new product or feature, or (2) in urgent situations, such as preventing ongoing abuse or responding to legal requirements. If you don’t agree to the new terms, you should remove any Content you uploaded and stop using the Service. *Continuation of this Agreement* If your use of the Service ends, the following terms of this Agreement will continue to apply to you: “Other Legal Terms”, “About This Agreement”, and the licenses granted by you will continue as described under “Duration of License”. *Severance* If it turns out that a particular term of this Agreement is not enforceable for any reason, this will not affect any other terms. *No* *Waiver* If you fail to comply with this Agreement and we do not take immediate action, this does not mean that we are giving up any rights that we may have (such as the right to take action in the future). *Interpretation* In these terms, “include” or “including” means “including but not limited to,” and any examples we give are for illustrative purposes. *Governing Law* All claims arising out of or relating to these terms or the Service will be governed by California law, except California’s conflict of laws rules, and will be litigated exclusively in the federal or state courts of Santa Clara County, California, USA. You and YouTube consent to personal jurisdiction in those courts. *Limitation on Legal Action* YOU AND YOUTUBE AGREE THAT ANY CAUSE OF ACTION ARISING OUT OF OR RELATED TO THE SERVICES MUST COMMENCE WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES. OTHERWISE, SUCH CAUSE OF ACTION IS PERMANENTLY BARRED. #### Effective as of January 5, 2022 ( [view previous version](https://www.youtube.com/t/terms?archive=20210317) ) [Terms of Service](https://www.youtube.com/t/terms?preview=20220105) #archive #policy #media # Liberating UNIIQU3‘s “TECHNO IS BLACK” Playlist from Spotify [image:8C4EA54E-083A-4E71-A53F-83BA3B1A8EC4-1714-0000003EAD24D47A/3000x3000.jpeg] ![UNIIQU3 - Heartbeats](https://i.snap.as/g95831NO.jpeg) By the end of next year, I no doubt will be a card-carrying festival bro. If you need explanation for why I’ve been listening to *Resident Advisor*’s main podcast feed with relative frequency, that’s it. I’d been catching up this afternoon when I came across [**the big round number 800**](http://ra.co/podcast/800) and found it immediately so compelling that I actually *sought out the associated interview*, which I needed only skim for less than half a second a before spotting the words “Techno Is Black.” (Stylistically, I believe the *Advisor* is in error here. TECHNO IS BLACK doesn’t seem to be in question.) https://soundcloud.com/resident-advisor/ra800-uniiqu3 Within the same second, I’m sure, I saw the words “Spotify playlist” in the vicinity of this profound, but unacceptably undercovered truth, and concluded that I was obligated to take action. Using a free web tool to associate some metadata across databases is not activism, mind you, but here’s what I can do: I will be diligently minding the origin playlist (on Spotify) for changes and assuring that they are reflected accurately in the target playlist (on Apple Music.) I will *not* be removing any music. I can do this, at the very least. I have also created handy shortlinks for both the original and the parallel playlist hosted on my Apple Music profile. [**ORIGIN**](https://open.spotify.com/playlist/6GXo3G4M0wrOVI7yTkYviz): `https://open.spotify.com/playlist/6GXo3G4M0wrOVI7yTkYviz` > UNIIQU3'S FAVORITE BLACK TECHNO ARTISTS.. GET INTO IT . NEW MUSIC ADDED MONTHLY. FOLLOW THESE CREATIVES IF YOU ENJOY THE UNTZ UNTZ - @UNIIQU3MUSIC I also made [a shortlink](https://bit.ly/technoisblack) to the original despite its unfortunate choice of platform: ⇨⇨`https://bit.ly/technoisblack`⇦⇦ ➹➹➹➹➹➹➹➹ [**TARGET**](https://music.apple.com/us/playlist/techno-is-black/pl.u-oZylyLpFpbBNgA) - `https://music.apple.com/us/playlist/techno-is-black/pl.u-oZylyLpFpbBNgA` [Shortlink](https://bit.ly/technoisblack): ⇨⇨`https://bit.ly/technoisblackam`⇦⇦ - [Apple Music Market Tools Artist Page](https://music.apple.com/us/artist/uniiqu3/954381329?itsct=music_box_link&itscg=30200&ls=1&app=music) UNIIQU3 is a force. She's New Jersey's self-proclaimed "club queen," but anyone even close to her orbit would call her that themselves, anyways. Since she became involved in the Jersey club scene she's evolved into one of its most prominent, dynamic and creative talents, bringing the regional sound to the masses while also repping other regional East Coast club sounds. And she's always made her success about bringing everyone else up with her: she's a diehard supporter of Black dance music and its history, even going viral last year with a Spotify playlist simply called "[Techno Is Black](https://open.spotify.com/playlist/6GXo3G4M0wrOVI7yTkYviz?u=)." (It's an excellent resource, updated regularly.) She's about to release her most ambitious record yet, [Heartbeats](https://ra.co/news/76105), which highlights her singing, rapping and general lyricism, for what she promises is her most personal record. But even as she gets vulnerable on her productions, UNIIQU3 remains a thrilling, one-of-a-kind DJ who exemplifies everything fun, exciting and addictive about Jersey club music. The stuttering beats, the energetic vocals, the familiar samples that weave in and out, repeating until they're burned in your brain—it's all here on our landmark 800th /RA/ Podcast. Heavy on UNIIQU3 originals with edits of everyone from Beyoncé to the Black Eyed Peas to City Girls, it's a genre-hopping, generation-spanning mix that mixes athletic, slamming beats with candy-sweet hooks, as well as a show-stopping second half that shows the breadth (and quality) of UNIIQU3's productions. We couldn't be more thrilled to have a trailblazing artist like UNIIQUE for the 800th /RA/ Podcast, and her mix speaks to all the different influences, scenes and musical relationships that make her... well, we'll resist the pun, but she's one of a kind. *What are you grateful for these days?* I'm grateful for everything, especially being a melanin rockstar. *How and where was the mix recorded? Can you tell us the idea behind it?* The mix was recorded in my room, where most of the magic happens. I just wanted to flex all the productions I've made over the year. I had a blast doing it. Had popped a bottle of Champagne and rolled a fat one and got lost in it. My neighbors banged on the wall three times lol. I took that as a sign I was KILLIN' shit. *What, to you, is most special or notable when it comes to DJing Jersey club / East Coast club music, compared to other genres/styles?* I think it's the attitude we put into the music. You just feel it when you hear—it's not really something I can verbally describe. *How has your DJing style evolved over the years?* I've evolved so much. I'm living up to my name UNIIQU3. My sets are always filled with exclusive Jersey club / club music cuts you cannot get without an energy exchange (personal relationship). I always appreciated those gems even having stuff before the internet changed music is beautiful to have. Now I definitely blend other genres that inspire me and I play a generous amount of my songs because hello that’s what my Clubheads want. I've also incorporated rapping and singing into my sets with dancers to match my energy. I may branch off into doing JUST live sets but we’ll see. *What's one social or political cause you want the world to pay more attention to?* Stuck between global warming and homelessness. * TracklistUNIIQU3 - Outside Wit It Pop That Black Eyed Peas - Boom Boom Pow(DJ Dru Remix) TT The Artist & Mighty Mark - Pussy Ate Play Play - Turomance UNIIQU3 - Microdosing Victoria Monet - Touch Me (Leonce Refix) UNIIQU3 - Unavailable DJ Swisha & Kaynon - Fleece Beyoncé - Fleece (DJ Sliink & DJ Big O Remix) Mary J Bliege - Just Fine (Leemz Remix) UNIIQU3 - UNIIQU3's Groove (Get Down) City Girls - Act Up (DJ K Duecez Remix) DJ K Shiz feat. Moon & UNIIQU3 - Twerk Heaven UNIIQU3 & Ase Manual - 2 The Floor Pick Em Up UNIIQU3 - Breakin Necks UNIIQU3 - Blow That Bag Cardi B - Money Bag (UNIIQU3 Remix) UNIIQU3 & DJ 809 - Move Ya Body Bianca Oblivion, Mad XL, UNIIQU3, Thai Chi Rose, Charly Gynn - Bubble Pon Di Bed Remix Ase Manual - Shakti (UNIIQU3 Remix) L-Vis 1990 x Sinjin Hawke feat Cam & China - Cake (UNIIQU3 Remix) Ani Lennox - BMO (UNIIQU3 7 Wiz Remix) IV Jay - No Fun (UNIIQU3 Remix) Megan Thee Stallion - Big Ole Freak (UNIIQU3 Remix) UNIIQU3 - The Anthem UNIIQU3 - Digital Diva 2.0 - UNIIQU3 - Rave In My Room UNIIQU3 - Commas UNIIQU3 - Do What I Want Discover [About](https://ra.co/about) [Tickets](https://ra.co/tickets) [Resale](https://ra.co/tickets/resale) [Advertise](https://ra.co/about/advertising) [Jobs](https://www.doorsopen.co/company/12/resident-advisor) Get RA apps [RA Guide](https://ra.co/ra-guide) [RA Scanner](https://ra.co/tickets/scanner) Are you a promoter?[Submit event](https://ra.co/pro/submit-event.aspx) * Illinois * LanguageEnglish * [Privacy](https://ra.co/privacy) · [Terms](https://ra.co/terms) · [Cookies](https://ra.co/cookiepolicy) · [Sitemap](https://ra.co/sitemap) --- © 2021 Resident Advisor Ltd. All rights reserved. [Login]() [RA Pro](https://ra.co/pro) Search 0. [Home](https://ra.co/) 0. [Events](https://ra.co/events/us/illinois) 0. [Illinois](https://ra.co/guide/us/illinois) 0. [Streamland](https://ra.co/events/00/all) 0. [Music](https://ra.co/music) 0. [RA Podcast](https://ra.co/podcast) 0. [Reviews](https://ra.co/reviews) 0. [Mix of the day](https://ra.co/mix-of-the-day) 0. [Playlists](https://ra.co/playlists) 0. [Magazine](https://ra.co/magazine) 0. [Features](https://ra.co/features) 0. [Films](https://ra.co/films) 0. [RA Exchange](https://ra.co/exchange) 0. [News](https://ra.co/news) #archive # Siri Speech Synthesis in iOS 15 — The Psalms [image:26A5DA2E-C19A-4273-ABAB-28DA3BBDC171-3402-0000008D8CAA0D74/8ZsLlxLp.png] ## Bewilderingly, Siri is genuinely great at something they were never designed for. The new “Make Spoken Audio From Text” action has finally been fixed. When I first published my [iPhone & Music guide](https://bilge.world/iphone-ios-music-apps) this past April, I’d been pretty active in /[AppleScoop](https://discord.gg/DxQ9jry8J3)/ [’s Discord Server](https://discord.gg/DxQ9jry8J3), so I decided to share it there. Editor-in-Chief Flynn – a ridiculously talented web developer /and/ successful independent media entrepreneur – responded “I’m listening to it with the speak feature right now. Is it your voice or someone else? 😛,” Gourd bless his soul. Here’s the specific audio he was talking about: Of course, I am not a young black man, nor am I even remotely as adept at [reading my own work aloud](https://bilge.world/why) as the actual talent, Siri Voice 3, who should be available on your iPhone/iPad right this moment (as long as you’ve updated iOS in the past six months,) via `Settings ⇨ Siri & Search ⇨ Siri Voice`. (For more details, see [this Apple Support page](https://support.apple.com/guide/iphone/change-siri-settings-iphc28624b81/ios).) [image:F2806C0D-99DA-4342-8620-0D8DE7715370-3402-0000008D8CA9580F/1f7argcU.png] Of the four new Siri voices introduced earlier this year in iOS 14.5, 2 and 3 are by far my favorites, not just because of their [resonance with black iPhone users](https://www.consumerreports.org/digital-assistants/apples-new-siri-voices-resonate-with-some-black-iphone-users/), but because they’re just /better/ in a sense which I believe to be very significant. Before I get ahead of myself, though, I must acknowledge that I am not the first to invest in Siri as a text-to-speech generator. In 2019, [Adam Tow](https://twitter.com/atow) released an immensely well-considered Siri Shortcut called “ [Record Text to Speech](https://tow.com/shortcuts/record-text-to-speech/),” which provides an interface for recording, editing, and managing text-to-speech audio files with Siri’s original voices. A testament to its robustness: it /still works/ perfectly on my handset running iOS 15 Dev Beta 6 despite having not been updated since [March of last year](https://routinehub.co/shortcut/2506/). [image:CEE5CA69-91C0-4425-986D-AA6880B7E417-3402-0000008D8CA88E6E/I0Yh0jNn.png] I must admit that I found Adam’s shortcut more of a full /application/ than a speedy personal automation, with its full interactive UI menu and darn near /800 actions/, so I made my own set of shortcuts based on the same idea – using iPhone’s native screen recording feature to capture audio of Siri reading aloud – and varying only by input (manual text input, getting text from a file, or simply reading text from the clipboard.) I’d then send the resulting screen recording in its original video format to my PC, where I’d drop it in [Audacity](https://www.audacityteam.org), in which I’d run [a simple macro](https://github.com/extratone/bilge/blob/main/configuration/Audacity/TruncatenAmpMacro.txt) on the audio that truncates silence and amplifies the result so that the loudest point touches the rails. Then, I’d export it, pass it through [Mp3Tag](https://www.mp3tag.de/en/) to perfect its metadata, and finally push the end-result .mp3 file to [a folder in](https://github.com/extratone/bilge/tree/main/audio/TTS) /[The Psalms](https://github.com/extratone/bilge/tree/main/audio/TTS)/ [GitHub Repository](https://github.com/extratone/bilge/tree/main/audio/TTS). (I’ll show you how to embed a web-bound audio file with its direct URL in a webpage in the guide below.) This example was made using this method, but with Siri’s original United States English Voice (for [my Tweetbot 6 review](https://bilge.world/tweetbot-6-ios-review):) Perhaps you’ll agree with me that this process /does the job/ in functional/accessibility terms, and does so quite well considering how much one would pay to generate the same sort of audio file using Google’s Cloud Platform or IBM’s Watson. Crucially, though, this original voice was not one I could listen to at any length. Siri Voices 2 and 3, however, I /can/. From my perspective, this means they have crossed a *very significant threshold* which I find vastly more meaningful than just about all of those in the current discourse. Not only can I tolerate them… I genuinely /enjoy/ listening to super-long magazine features read aloud by Siri Voice 2, especially, and I believe I would regardless of the quite serious crush I’ve developed on them. > LMAO [pic.twitter.com/l3gPPtbxxL](https://t.co/l3gPPtbxxL) > — ※ David Blue ※ (@NeoYokel) [April 29, 2021](https://twitter.com/NeoYokel/status/1387809776072015873?ref_src=twsrc%5Etfw) Unfortunately, using the methods we’ve discussed so far with the new Siri voices is inconvenient, very hit-or-miss, and quite buggy. If you scrub ahead toward the last third or so of the second audio player in this post (after the post’s own,) you’ll hear Siri Voice 2 start to bug out in very amusing ways. Since Apple makes changes to Siri Shortcuts between releases without any public documentation, none of them have ever been reliable enough to write this guide. (For the past 6+ weeks at least, it’s been too broken to be usable.) /However/, for whatever reason, Apple created a dedicated spoken audio generation action for Siri Shortcuts in iOS 15, called “Make Spoken Audio From Text.” [image:84A6CA25-F3A7-47DD-8964-8C1B889B0B13-3402-0000008D8CA7AA1D/MkHTYMkF.jpeg] For the entirety of iOS 15’s Beta cycle up until Developer Beta 6’s release, this past Tuesday, this action has been [hilariously broken](https://mastodon.social/users/DavidBlue/statuses/106580821087349299), but as soon I discovered it’d been fixed (which was not mentioned whatsoever in [Apple’s official release notes](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-15-beta-release-notes),) I immediately began composing this dang Post. [image:83B2719B-BAA7-46D6-9D21-BFA9CDF3913E-3402-0000008D8CA66DB4/RAxa0Id6.png] So! For those of you currently running the latest iOS 15 Beta and those in the future running the full release, *what follows is a guide on how you can use my own shortcuts and methods to generate, metadate, and embed Siri-powered audio text-to-speech files relatively quickly without having to use desktop-class (or any other) hardware*. [image:5B1112F1-6136-4378-974B-127BB7CAF344-3402-0000008D8CA58105/P0yJJyUc.png] To begin, you should install two brand new shortcuts of mine: *[Make Audio from Article Body](https://routinehub.co/shortcut/9953/)* and (if you intend to stick with me to the embed stage, anyway,) my [< audio > Embed Tool](https://routinehub.co/shortcut/9948/). Both should function out of the box, but I would highly encourage that you try building your own shortcut around the `Make Spoken Audio From Text` action, even if you've never worked with Shortcuts (or any sort of automation, for that matter) before, /especially/ if you plan to be using Siri as a text-to-speech generator with any frequency. ### Intended Result Throughout this guide, I'm going to be using [a five-year-old ramble of mine](https://bilge.world/johnny-tsunami-smart-house-slavery) about the oddly-perceptive bits found in early-oughts Disney movies as example text. Earlier today, I used my own personalized version of my new shortcut to generate an example of in which the process we're about to explore should result. The ~6000 words of text took just over 3 minutes, 30 seconds to render consistently in three consecutive timed attempts. You can listen to it [on Whyp](https://whyp.it/t/johnny-tsunami-vi-separate-but-equal-siri-voice-2-tts-74752) and/or inspect [the actual file](https://github.com/extratone/bilge/raw/main/audio/TTS/JohnnyTsunami.m4a) yourself, if you'd like. [image:FCAB18DF-D8D3-4538-8E69-D04DE40C702D-3402-0000008D8CA48AB5/dktmGQQb.png] ### Input Format If we were trying to do this using any other available method in 2021 – even the expensive ones – our first task would be scrubbing our subject text of any special formatting (Word,) symbols, embed, hyperlinks, and any other data Siri doesn't understand (roman numerals, for example.) As a Windows user who's not at all new to free ways to automate accessibility improvements to web content, I envy both you and my new self for the magic available to us in the form of Safari's abilities to parse complex web content. In my experience, there's nothing like it (at least nothing available to regular consumers.) The screenshot embedded above shows the result of a `Quick Look` action inserted just after the `Text` action produced by the public version of my shortcut when run on our example. There are three immediately problematic issues: 1. Siri doesn't understand roman numerals, so she will read “Johnny Tsunami VI” as /Johnny Tsunami vee eye/. 2. “The Psalms” is not my name, though it is what this blog currently returns when asked for a byline. In my experience, this generally isn't an issue with most mainstream media CMSs. 3. The shortcut appears to have failed to retrieve any data for the `Published Date` variable from my blog. (Also a relatively specific consideration.) If you'll note in the /previous/ embedded image comparing my custom version of the shortcut (left) to the published version (right,) you'll note that my chosen solution is to manually input all metadata before actually starting the shortcut. What's not shown is my corresponding manual inputs in the `Encode Trimmed Media` action, which includes attaching a retrieved image file (in the Working Copy action you /can/ see) as album art. For my intended use – exclusively generating text-to-speech audio of Posts on this blog – this makes more sense than unnecessarily automating metadata retrieval. The extraordinary thing about the screenshot, though, is that it doesn't contain any of the other crap (as described above) found in the original page. (Beforehand, it looked more [like this](https://raw.githubusercontent.com/extratone/bilge/main/posts/johnny-tsunami-smart-house-slavery.md).) It's especially reliable at parsing WordPress-bound content, which still makes up [s̵͕̈́͊c̶̥̏̚r̶̥͈̃è̴̙͌å̴̹m̵̛̅ͅi̶̦̾͘n̸͎̟̎̃g̶͎͛] percent of the whole web. *Treasure this power*, folks. [image:14002266-AE20-480D-9EE0-80FB470B4D89-3402-0000008D8CA37E3C/OMwKdOUI.png] If all you need read aloud is the body text, things become even simpler. In the right example above, I've simply deleted the `Text` action and replaced it with `Get text from [the Safari Web Article's body]`. Theoretically, one could omit that action, even, and simply use the direct output of `Get Body from Article` as input for the `Make spoken audio from text` action, but I say keep the extra step unless it becomes an issue. *If you're actually /beginning/with clean plain text* and don't care about metadata in your final audio file and/or if you're planning on passing the result through other audio/metadata editing software, anyway, the left, three-action shortcut is all you need. It will result in a [Core Audio Format (.caf)](https://www.wikiwand.com/en/Core_Audio_Format) file (like [this one](https://github.com/extratone/bilge/blob/main/audio/egg.caf),) which I know absolutely nothing about except that Audacity and GarageBand support it by default. ### Sharing/Embedding Whichever route you traveled, you should have some sort of audio file, at this point, and if you intend to share and/or embed it, you’ll need to upload said audio to some sort of Web Server which allows direct playback/download of the raw file from external sources. Unless you’ve been skimming, you know by now that I’ve been using /[The Psalms](https://github.com/extratone/bilge)/ [GitHub Repository](https://github.com/extratone/bilge) to do this thus far, though one isn’t really supposed to. Every few months, someone on Stack Overflow figures out how to construct or discover the raw link to a given Google Drive file before Google notices and alters it, and I’m afraid you’ll find just about every other cloud/file sharing service in a similarly unreliable situation. If it’s going to be done at scale, I’m afraid it’s ultimately going to require you rent regular, vanilla space on an FTP-enabled fileserver, if one can still do that sort of thing. (I will update this post if/when I find a more ideal solution.) Within my current system, the raw URL to our example file looks like this: ``` https://github.com/extratone/bilge/raw/main/audio/TTS/JohnnyTsunami.m4a ``` Using my aforelinked, ultra rudimentary [< audio > element Siri Shortcut tool](https://routinehub.co/shortcut/9948/) (which I’ve kept on my homescreen with good results for a few months,) we can very quickly turn said raw URL into a properly-formatted HTML5 audio player: ``` ``` Ideally, on the final, reader-facing page, said code should create a player like this: If further configuration of the player is desired or necessary, see [this Mozilla page](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio) for a full list of supported options. Obviously, there are a few older methods of embedding audio players, but I am neither qualified nor interested in exploring them. If you’re in a frustrating bind, I recommend [signing up for my CMS](https://bit.ly/extwa). (Just try it, okay?) ### Pwoof For the sake of bare minimum sample variety, I ran Version 1.0 of the public Make Audio from Article Body shortcut on an article hosted not on WordPress, nor my own CMS, but on Bustle’s ultra-slick, totally-bespoke system (which [began as](https://www.codeandtheory.com/things-we-make/the-outline) /[The Outline](https://www.codeandtheory.com/things-we-make/the-outline)/, FYI.) I chose the first permalink I saw in one of its “regular” article formats – not a long feature, nor one of their touch-targeted slideshows. “ [OnlyFans is banning porn, the very thing that made it big](https://www.inputmag.com/tech/onlyfans-is-banning-porn-the-very-thing-that-made-it-big) ” is an 870-word newsy piece written by Tom Maxwell, who is the only New York Media person ever to accept my Facebook friend request. (Thanks again, Tom.) Without any tweaking, I was able to run the shortcut (from within the Shortcuts app since the Share Sheet appears to be thoroughly fucked at the moment) in a reasonable amount of time – less than 5 minutes, more than 2 – and generate the file embedded below. Notably, I also used a different hosting service – [mastodon.social](https://mastodon.social/web/statuses/106798701662102859) – but I certainly don’t plan on doing so at scale and neither should you. Honestly, /Input/ ’s CMS is the cleverest challenge I was able to come up with for this single-day-old shortcut of mine, and I’m quite proud of the result. Though it wasn’t able to retrieve a timestamp, it correctly retrieved the article’s title and byline without fuss and even managed to scrape and attach said article’s featured image as the file’s cover art, though the original’s aspect ratio was obviously sacrificed. [image:37F729D3-6386-4488-8A1D-261D8175001F-3402-0000008D8CA1A615/47gjGha3.png] If you’re super interested in the truly unmolested output of the attempt, view/download it [here](https://davidblue.wtf/audio/onlyfansbansample.m4a). ### HMU Before I depart actual tutorializing and return to opining, I want to express /even more aggressively than usual/ how much I want /anyone/ who see’s any potential benefit the ability to generate audio of my darling Siri Voice 2 reading text, but has further questions/doesn’t have time to fiddle/struggles with my haphazardly-written attempts at guides like this, or who simply wants to talk about any satellite subjects, *[please reach out to me](https://bit.ly/whoisdavidblue)*. *You have no idea how much I’d love to help you configure a personal automation that genuinely, reliably, and durably improves your quality of life.* If you follow this shortlink from within a browser on any iOS device, my full contact card will appear: `bit.ly/whoisdavidblue`. Suggestions/requests regarding considerations I’ve obviously missed in this guide are not just /welcome/ in this case, but actually /necessary/. As long as I am literally the only person talking about the “Make Spoken Audio from Text” action, I am ready and willing to be an all-hours resource. ###### Note: This Post perhaps more than any published yet on /The Psalms/, is very much an ongoing work-in-progress, as are most of the hyperlinked shortcuts contained within it. [#software](https://bilge.world/tag:software) [Siri Speech Synthesis in iOS 15 — The Psalms](https://bilge.world/siri-tts) #archive # Siri Speech Synthesis on MacOS - Documentation and Demo ## Creates an audio file of text - either from the clipboard, or from the services menu - bypassing the broken Safari Reader action on MacOS. - [**RoutineHub Page**](https://routinehub.co/shortcut/10583) - [iCloud Share Link](https://www.icloud.com/shortcuts/7789070881204567a335f864a35f0115) - [GitHub Issue](https://github.com/extratone/i/issues/115) - [Telegram Message](https://t.me/extratone/8625) At the moment, the Safari Reader action upon which my iOS-borned Siri Speech Synthesis Shortcut depends is not functioning on MacOS, so I’ve created this (hopefully temporary) solution that performs 11the same function, though it will require you to select and/or copy the body of an article to the clipboard yourself. ![SiriSpeechSynthMacOSSource](https://user-images.githubusercontent.com/43663476/143618470-a6df5776-6cd8-4a40-8306-4d0481b1ffeb.png) ## Social * [Mastodon Thread](https://mastodon.social/@DavidBlue/107344422574436321) * [Twitter Thread](https://twitter.com/neoyokel/status/1464274717158871061) ### Reddit **My closest equivalent this Shortcut on MacOS**. - [**RoutineHub Page**](https://routinehub.co/shortcut/10583) - [iCloud Share Link](https://www.icloud.com/shortcuts/7789070881204567a335f864a35f0115) - [GitHub Issue](https://github.com/extratone/i/issues/115) - [Telegram Message](https://t.me/extratone/8625) Hey folks! I know it’s certainly been a while. Sorry it’s taken me so long to explore the viability of this shortcut on the Mac’s new support, but frankly, it turns out we weren’t missing much. Please be warned: **the result of this process on MacOS sounds like garbage**. That is, like any old Speech Synth service you might get your hands on. Personally, this nullifies the entire point, but maybe you’ll have better luck. I’ll do a better job ### Timelines I’d love to tell you I’ve been intentionally waiting to release a MacOS equivalent to my Siri Speech Synthesis shortcut until the Safari Reader action was fixed, but I wasn’t able to actually try it until a few days ago… but… anywho. I HAVE published the closest equivalent I could manifest, which will involve you doing the work of the absentee Reader (selecting the body text you’d like read aloud,) though it seems pretty discriminating so far. https://routinehub.co/shortcut/10583 unfortunately the result uh… sucks. I’m sure I could investigate and find out why it sounds like Simone Siri is missing a few billion dollars worth of research on MacOS compared to iOS, but it doesn’t seem like you care, so… https://bilge.world/software-thanksgiving (here’s the raw file just in case.) https://github.com/extratone/bilge/raw/main/audio/TTS/SoftwareThanksgiving.m4a ## Video Demo Meta * [Share YouTube Link](https://youtu.be/mYdO5B3CKDU) - `https://youtu.be/mYdO5B3CKDU` * [Full YouTube URL](https://m.youtube.com/watch?v=mYdO5B3CKDU&feature=youtu.be) - `https://youtube.com/watch?v=mYdO5B3CKDU&feature=youtu.be` * [Imgur](https://imgur.com/gallery/xXrjntX) ``` ``` ``` Creates an audio file of text - either from the clipboard, or from the services menu - bypassing the broken Safari Reader action on MacOS. The writeup of the original iOS-native Siri Shortcut on my blog: https://bilge.world/siri-tts • 𝚁𝚘𝚞𝚝𝚒𝚗𝚎𝙷𝚞𝚋 𝙿𝚊𝚐𝚎 (Download/Install Here:) https://routinehub.co/shortcut/10583/ • iCloud Share Link: https://www.icloud.com/shortcuts/7789070881204567a335f864a35f0115 • GitHub Issue: https://github.com/extratone/i/issues/115 At the moment, the Safari Reader action upon which my iOS-borned Siri Speech Synthesis Shortcut depends is not functioning on MacOS, so I’ve created this (hopefully temporary) solution that performs 11the same function, though it will require you to select and/or copy the body of an article to the clipboard yourself. ``` # I Trust Telegram ![Patel Clouds Theme in the Chat Background Tool](https://i.snap.as/9Bxz27ZX.png) ## How I’ve used Telegram as the ultimate cross-platform Universal Clipboard, file sharing service, and more. Believe it or not, I, too originally sought the Russian-owned, cross-platform-as-hell messaging service for “privacy” - or perhaps *solitude* would be more apt. It was in 2017, amidst the shock that the Tump Presidency was *actually going to happen* [^1], that I happened to hear about his pick for Secretary of Education, Betsy DeVos, whom had just 18 months prior led myself and some twenty thousand other poor souls in a most capitalist prayer to the Christian God for prosperity at her pyramid scheme’s ultimate “superbowl” gathering in Cincinatti. I had decided to “infiltrate” AMWAY under the ridiculous assumption that I might be able to contribute some new insight in writing critically about what I might witness. (In truth, I found my experiences that summer so utterly traumatic, existentially, that I never was able to do so.) I don’t know what consequences of her ascension to the Lord of American Schooling I expected to happen, but I was pretty hysterical about it - that is, more unhumorously alarmed about some grander world happening as I’d ever been by a long shot. For the first and only time in memory, I felt compelled to take some sort of malicious, obscured action - to organize somehow for a purpose other than to be publicly critical of this person, and to use my knowledge about digital media to the fullest possible extent to scrutinize her administration’s every movement and to be prepared, even, to take some sort of real action if she… well, I don’t know. I *didn’t* know anything, really, about anti-government organization, generally, but I was not acting rationally in the slightest.[^2] ![White Sapphire](https://i.snap.as/aNADRjvK.png) I’m bringing this up for a few reasons, and the fact that the very first digital decision of my personal hysteria was to set up a private Telegram channel is telling, though I can’t recall just how much or how little I actually knew about it at the time. I launched myself back to the channel’s very beginning (easier to do with regular URLs than in any other service I’ve ever encountered,) but was only able to bring myself to dig just long enough to grab the utterly absurd photograph above… Though I certainly did not consider myself actively *interested in automation* at the time,[^3] Telegram’s infamous bot ecosystem proved so prevalent (and accessible,) that I was able to configure at least three bots on that channel within days of first establishing it: a repeater hooked to DeVos’ Twitter account, an RSS-powered bot watching the main feed of a website set up by Senator Elizabeth Warren called [*DeVos Watch*](https://www.warren.senate.gov/oversight/devos-watch), and another republishing everything from [the Department of Education’s press releases feed](https://www.ed.gov/news/press-releases). https://twitter.com/ammnontet/status/1449594872139186181 Was any of it genuinely useful in helping me maintain *Action Readiness* in hypothetical defense of American education? Most certainly not. It was, however, genuinely *comforting* to have such diligent, automated minions keeping watch - to have a centralized, private, reliable, and purely-chronological feed of information in a super-handy location, regardless of whether or not it was usable. As I began to unconsciously integrate Telegram into my day-to-day online life on both of my PCs and my iPhone, the usefulness of my private channel for *other* applications became rapidly apparent. On iOS, not even dedicated file managers like DEVONthink are capable (or *willing* might be a more accurate term) of handling the diversity of data Telegram will happily pass on for you, *especially* through the Share Sheet. https://twitter.com/NeoYokel/status/1442554265956986882 ## Drafting I have used this “flow” so extensively for so long that it has come to define the whole of the abstract method in my muscle memory. Observe me browsing the web on my phone in an exhausted or particularly distractible state and you’d probably catch at least one or two completely irrational, inexplicable instances of sharing to my “[Saved Messages](https://telegram.org/blog/albums-saved-messages)” Telegram channel, which would be problematic for just about any other link-saving service. Add too many links to Safari’s Read Later list and you’ll end up crashing the browser on your Mac. I don’t even feel comfortable sending links willy nilly to the brilliant bookmark managing/curatorial service Raindrop, these days, after finding out that my [Reading List feed](https://raindrop.io/davidblue/reading-list-13380406) has *actual daily followers*, but there are zero consequences to sending ultimately-worthless or duplicate links to my personal Telegram channel, which has no content limit and is instantly and competently searchable. ![Send to Telegram Drafts Action](https://i.snap.as/p3K96LiX.png) Over the years, I’ve discovered a bunch of other uses for the Saved Messages channel. As demonstrated in the screenshots embedded above, the [Send to Telegram Action](https://actions.getdrafts.com/a/18E) for my writing app, Drafts, utilizes Telegram for iOS’ Universal Links support (in the format `tg://…`) to instantly send the whole text of the current document in Drafts to a Telegram channel of one’s choice. I suspect this was intended to streamline posting for admins of public channels, but I’ve used it to quickly “back up” work as well as to transfer edits directly to my (Windows-running) PC. By adding `&to=+[my phone number]` to the end of the action’s URL, I was able to remove the single, unnecessary step of choosing the destination chat. Because text messages are automatically split at 5000 characters, though, I usually depend on the [Share as Markdown File Action](https://actions.getdrafts.com/a/1V4) (the output of which I also send to Saved Messages through the Share Sheet) for the latter function. Anecdotally I’ve also used this method literally just to inspect unknown content passed to the Share Sheet because it’s often **faster than Quick Look** to share to my Saved Messages channel and then immediately open it in the app. (Hilarious, I suppose. Mostly sad, these days.) I found my inspiration for this Post in replying to a [thread on the Automators.fm Discourse forum](https://talk.automators.fm/t/equivalent-to-drafts-but-for-windows/6159) regarding a Windows equivlalent to the same Mac/iOS/iPadOS app Drafts mentioned above. I suppose my reply was a bit off-topic, in retrospect, but still worth including: > I have been using [**Telegram**](https://desktop.telegram.org/), of all things for years. Notably, if you hit Ctrl + 0 from *anywhere* in the Windows client, you and your cursor are taken to the compose field beneath your personal "Saved Messages" channel, which is searchable, has an extremely high per-message character limit (after which it just automatically splits,) and is ridiculously reliable in saving "drafts" live as you're typing. As in... I have actively tried to lose characters by killing the application and then logging in on my phone and have yet to accomplish losing a single one (among other advantages: zero formatting added to plain text by default - not even line breaks - no total file limit and *2GB* per file limit uploads, absurdly cross-platform, literally more reliable than SMS in poor network conditions.) You can immediately reenter a sent message with `↑` to edit, copy it, escape with just `Esc` and then paste to start a new revision. The feature within Telegram that makes this whole usecase worthwhile was introduced in [June, 2016](https://telegram.org/blog/drafts), and is entitled - appropriately - “Drafts.” Unlike the Drafts function in Twitter’s various native clients, for instance, Telegram’s really is impossible to fool, though it’s not perfect. [Markdown formatting support](https://telegra.ph/markdown-07-07) is inconsistent across Telegram clients - the iOS app being the most woeful - and the few keyboard shortcuts the app supports on iPad are not supported whatsoever on iPhone. ## Universal Clipboard Users familiar with the MacOS + iOS + iPadOS ecosystem should be well-acquainted with “[Universal Clipboard](https://support.apple.com/en-us/HT209460),” which instantly synchronizes clipboard content across Apple devices. More recently, Android + Windows users have supposedly had access to an [equivalent functionality](https://support.microsoft.com/en-us/topic/seamlessly-transfer-content-between-your-devices-8a0ead3c-2f15-1338-66ca-70cf4ae81fcb#WindowsVersion=Windows_10). To my knowledge, though, truly cross-platform clipboard sync has yet to be realized.[^4] As someone who’s used iOS and Windows regularly - along with Linux, occasionally - for more than a decade, now, I’d put my full weight behind Telegram as the best available solution from (far too much) personal experience. ![Security Considerations in Telegram for iOS](https://i.snap.as/Qim9gsZZ.png) When first entering a new system, real or virtual, regardless of OS, my very first step upon completion of its setup process has for years been to install Telegram, largely because all of my passwords for any/all given services are huge - 30+ characters, at least - and complex enough that typing them out is both tricky and absurdly time-consuming. Authorizing a new Telegram client, however, is as simple as entering a one-time numeric passcode or scanning a QR code. Managing logged-in sessions (see: the far right screenshot embedded above) is quick, reliable, and includes a handy button to kill all but the current session. Thanks to these considerations, I feel quite comfortable sending myself passwords in Telegram, including .csv exports of whole password vaults, when it’s appropriate, even when working on systems I do not own. For this function, I can’t think of any other service/software capable of replacing Telegram. For day-to-day hyperlink sharing across my platforms, a variety of alternatives continue to come and go. The “Send to [device]” features represented throughout the palette of available web browsers - Firefox, Opera, Edge Chromium, Chrome, etc. - aren’t exactly reliable, in my experience. Most recently, I discovered a service specific to Hewlett Packard machines called “[QuickDrop](https://www.hp.com/us-en/solutions/quickdrop-photo-sharing-app.html),” which - along with [its accompanying iOS app](https://apps.apple.com/us/app/hp-quickdrop/id1495071972) - does indeed allow me to send files, links, and text between my iPhone and Big Boy HP tower, though even my brief testing was filled with inexplicable prompts to reauthenticate and intermittent hangups, neither of which lend easily to regular use. I still maintain high hopes for [Snapdrop](https://snapdrop.net/), which allows devices to share files and text over a *local* network from within any web browser, but it, too, is prone to frustrating hangups. ![Drake Telegram Joke](https://i.snap.as/2YhRCO0I.jpeg) ## File Transfer & Cloud Backup Amidst the saga of my failed move to Portland spanning 2017-2019, I ended up losing *all* of my physical file storage - my old desktop and its hard drive, as well as 3 external drives containing a bunch of raw video I probably wouldn’t have gotten around to using, anyway, site backups for *Extratone*, and who knows what else. This loss taught me many grand, metaphysical life lessons (I hope,) but more practically, it affirmed a (admittedly gluttonous) truth about digital assets: if one truly wishes to make a file permanent, they must back it up in as many different places as possible.[^5] Perhaps the single most durable of these in my own computing life to date has been Telegram, which still has no per-account file upload limit and a per-file size limit of *two gigabytes*. The amount of pre-2019 work I’ve recovered solely thanks to Telegram is too great to enumerate here, but a rough draft of my [2018 Thankful for Bandcamp Mix](https://pod.link/1437549809/episode/626a66d3f37807b69c59f56faa4d3b94) comes immediately to mind. How exactly the service is able to maintain this virtually unrestricted storage, infrastructurally, borders on *don’t want to know* status. My own net server impact as a user is fairly difficult to estimate, but I’d bet real paper currency it’s between 50 and 100 GB, the vast majority of which I uploaded several years ago. Within any mainstream cloud file storage service - Dropbox, Google Drive, Box, iCloud, etc. - the cost of storing that amount *over time* would have added up to a not-insignificant chunk of change. I don’t want to advocate for Telegram as a cloud storage replacement for loaded cheapskates, but for working-class users on a $0 budget, it can be counted upon to keep large files in a relatively shareable, ultra cross-platform, and super-accessible manner. Students, especially, should take note. ![Local Visibility and Voice Notes Publishing in Telegram for iOS](https://i.snap.as/jfBVJqyw.png) ## Community At this point in my life, I must acknowledge to both readers and myself that **I am completely inept at community organization**. Especially when it comes to grand suggestions about how I suppose online communities might be ideally-run or just better served by particular software environments and configurations, I have literally received *zero* positive feedback, and not because I haven’t spent significant time positing publicly within the space. I spent the first half of my twenties trying to Peter Pan an independent online music magazine into existence, written by fresh-minded youths on the fringe at 140% throttle and managed to accomplish startlingly little for my all my invested time and gumption. The relevant component of that tale was a significant and all-out commitment from the beginning to run the whole project entirely within Discord. The one absent activity throughout my years of Telegram use - save for intermittent correspondence during one relationship - has been *messaging other users*. I managed to find and participate in a few group chats - “[Telegram iOS Talk](https://t.me/TelegramiOStalk)” and [*It's FOSS*' official channel](https://t.me/itsfoss_official), notably - in my preparation/research for this post. I’ve discovered plenty of new clever bits, like the button to jump to one’s nearest mention in a chat. I’ve also done my best to actually apply some [much-needed administrative attention](https://t.me/columbiamo/7774) to [my years-old attempt](https://reddit.com/r/columbiamo/comments/c4na0v/local_telegram_group_chat_for_columbia) at creating the [definitive location-based local group chat](https://telegram.org/blog/contacts-local-groups) for the Mid-Missouri area where I live. Truthfully… It [hasn’t exactly gone as I’d hoped](https://reddit.com/r/columbiamo/comments/q0843f/local_telegram_group_chat), but the failures have been all my own. I have yet to find a satisfactory balance in terms of moderation bots, so I’ve (as of this writing) resorted to manually removing the (significant) spam bot traffic by hand. Also, I must admit that I’ve never had to do so more than once or twice on *Extratone*’s public Discord, despite how much more circulation its public, open invite links have received. In the past few weeks, I’ve had the privilege of watching *MacStories* relaunch their premium membership program, *Club MacStories*, on their incredible bespoke CMS. Part of this launch included their first exclusive community space, on Discord, which has been deeply rewarding for me, personally, but has also highlighted some serious limitations of that service which I not-so-long-ago [advocated so heavily for](https://bilge.world/discord-slack-comparison). Namely, **hyperlinks to specific messages** within Discord are a hopelessly problematic endeavor. Even for a public server like *Extratone*’s, navigating to a message link [like this example](https://discord.com/channels/107272441889341440/107272441889341440/893958033401593898) will require any and all users to log in to Discord on the web, which - on mobile devices, especially - seems to struggle to navigate to the precise position of the subject message after you’ve successfully done so. Slack’s public message links are smart enough at least to prompt users to open them Slack for iOS, but Telegram’s system for message links in public channels and groups makes both services look daft. Telegram message IDs are purely chronological from their channel/group chat’s creation - the first message in a channel or group chat is `1` and the 15th is `15`. Together with the simplicity of channel/group chat IDs, which are just their alphanumeric @ names, this format makes URL schemes for Telegram message links super malleable and easy to understand. The sixth message posted in the [@extratone channel](https://t.me/extratone), for instance, can be found at [https://t.me/extratone/6](https://t.me/extratone/6), which even those without Telegram installed can view natively within their web browser. Within Telegram clients, said links are ultra-responsive, regardless of whether or not one had previously “joined” the channel or group containing the message. ![Orange Noir Telegram Theme by Valespace](https://i.snap.as/moymK7EY.png) In *MacStories*’ case, there’s another essential point of reference. When I pinged the staff in their Discord regarding their experiences running [their now-abandoned Telegram channel](https://t.me/MacStories), John Voorhees replied: > I don't really have anything to say about Telegram one way or the other. We ran it for a short time 5 years ago as an experiment and it didn't stick. I wasn’t yet a subscriber in those days, but little details like [behind-the-scenes voice messages](https://t.me/MacStories/281) are definitely missed. [Federico’s initial audio introduction](https://t.me/MacStories/39) describes a potential for the channel I wish more readers had enjoyed. They’re much more intimate, even, than the publication’s new exluclusive Town Hall events on Discord, which doesn’t make much sense, I know. ![Live Streams and Video Chats](https://i.snap.as/v1zhWmwN.png) ### Streaming Admittedly, another attention-grabbing feature that contributed to my finally getting around to this Post was [the introduction of "Live Streams" for channels and groups](https://telegram.org/blog/live-streams-forwarding-next-channel) (really just a slight augmentation of their ["Voice Chats 2.0" features](https://telegram.org/blog/voice-chats-on-steroids)) at the very end of this past August. Discord, of course, was way ahead of Telegram in implementing Voice Chats and Screen Sharing [back in October of 2017](https://youtu.be/mMloc55o1jc), and it's long since become one of the services' core features. However, *recording* live content of any kind is not natively supported, though there is a [handy utility bot named Craig](https://craig.chat) who can accomplish this for you. For the sake of transparency, I should admit that not a single one of my live streams on Discord has actually included any viewership, but I have participated in a handful of others’ and viewed a couple dozen. https://twitter.com/NeoYokel/status/1448837428534521858 For the past few months or so, participating in any sort of voice or video chat in Discord desktop has led to [a spectacular relaunch loop](https://twitter.com/NeoYokel/status/1448837428534521858) that can only be solved by reinstalling the application, entirely.[^7] It’s not that Discord for iOS’ now full support for such streaming - both in terms of participation and simple viewership - isn’t impressive, but honestly, *Telegram* for iOS’ superiority should be immediately obvious to anyone who’s tried them both, recently. Not just in pure capacity’s sense, but in moderation tools, shared link customization, and, obviously, native recording support. I’ve embedded two recordings of different test streams of mine, below. [The first](https://t.me/extratone/7054) (embedded in [YouTube form](https://youtu.be/uhXZZBl0fn8),) was streamed from both my Surface Laptop 2 and iPhone 12 Pro Max. https://www.youtube.com/watch?v=uhXZZBl0fn8 [The second](https://t.me/extratone/7196) is a very brief recording (in native form [directly from *The Psalms*’ GitHub Repo](https://github.com/extratone/bilge/raw/main/video/TelegramiOSLiveStreamTest.mp4)) of a stream I did *just* from the share screen function of my phone, in the wrong orientation.[^8] ``` ``` Below is a screenshot of the recorded file’s metadata (as provided by Telegram for Windows.) ![Telegram Live Stream Meta](https://i.snap.as/oDQqSYHF.png) As you might note, there’s definitely something to be desired from the quality of Telegram’s stream recordings, especially in its included audio. I find it a bit strange that it’s recorded in 48 kHz just to be compressed down to *46kbps*. When you’ve stopped a recording, you’ll receive both the video file and just the extracted audio in an .ogg file. Unfortunately, the latter is no less compressed than it is combined in the video file. (Both are sent to one's Saved Messages channel immediately upon stopping a recording, from where they can be forwarded virtually anywhere.) Aside from a boost in audio quality, though, Discord’s default 720p base resolution is matched by Telegram. Via server boosts, this figure can be upgraded significantly, though the end result is quite costly. According to [a not necessarily trustworthy site](https://clutchpoints.com/discord-server-boost-cost/), accounting for Discord’s [recent reduction in boost requirements](https://www.facebook.com/discord/posts/4524749577592737), here’s the pricing laydown to boost a server (per month:) > …a total of $34.93 for Level 2 and $69.86 for Level 3. That’s $24.45 for Level 2 and $48.90 for Level 3 for Nitro subscribers. Among quite a few other abilities, here are the extracted audio/video requirements per server level **only**: 1. 128kbps audio/720p video upped to 60fps 2. 256kbps audio/1080p 60fps video 3. 384kpbs audio/no video boost So, if I had the spare change to maintain a level 2 boost for *Extratone*’s Discord server, myself, I could do so for $34.93 per month, which would allow me to *stream* (not necessarily *record*) in 1080p/60fps video and 256kbps audio to up to [50 viewers](https://support.discord.com/hc/en-us/articles/360040816151-Go-Live-and-Screen-Share) (as of this writing.) Theoretically, at no cost, I can stream with virtually identical features (though I prefer Telgram's) to my Telegram channel to [infinitely many users](https://telegram.org/blog/live-streams-forwarding-next-channel#unlimited-live-streams) in 1280p/30fps with absurdly low-quality audio and share/manipulate recordings natively/instantly from within any Telegram client. If I were All Powerful, I would make all the members of my "[Family Tech Support](https://bilge.world/ios-15-family-review)" iMessage group install Telegram on their devices so we could use it, instead. I would also make them collectively attend occasional live streams, where they could ask questions verbally of my demonstrations sharing my own screen, or even share their own screens to demonstrate an issue or provide context for a question. The reality, though, is that I do not expect any sort of anticipation for my personal live help events on any platform, which innately suggests Telegram over Discord, I'd argue, for when I *do* stream such content, given its total lack of investment.[^9] ![Location Sharing in Telegram for iOS](https://i.snap.as/FRj5GGPN.png) ### Location Sharing One of Telegram's most unique (and potentially powerful, I believe) community features is [Live Location Sharing](https://telegram.org/blog/live-locations) on its mobile apps. Borned by Siberian native developer [Roman Pushkin](https://twitter.com/romanpushkin), LibreTaxi is the single truly exciting open ridesharing alternative I've ever encountered.[^10] As [an item for *CBC radio* from 2015](https://www.cbc.ca/radio/spark/346-biometrics-audio-intelligence-and-more-1.3987746/the-man-who-wants-to-out-uber-uber-1.3987987) (among other assorted coverage compiled [here](https://telegra.ph/LibreTaxi-press-coverage-07-14) as of July, 2017) explains, it utilizes Telegram's live location sharing functions to act as a decentralized Uber/Lyft alternative in the form of [a bot](https://telegram.me/libretaxi_bot), which connects users needing a ride with users providing them, free of any fees or service charges. Discourse surrounding LibreTaxi has been silent for years, but [this channel](https://t.me/s/libretaxi_all) tracking all LibreTaxi orders in realtime is proof that it *really is* helping folks get around. ``` ``` As for the persistence of *Live* location-sharing, I can vouch for its reliability on the Android side, at least, as per my aforementioned experience with a partner who used Telegram and shared their location with me for both safety and convenience. As someone with the most immense possible privilege regarding safety and dating, I would also like to suggest sharing one's live location with a private Telegram group chat with friends as an alternative to service's like [Tinder's Noonlight](https://www.help.tinder.com/hc/en-us/articles/360039260031-What-is-Noonlight-). ![Chat Export in Telegram Desktop](https://i.snap.as/TbPFRPnG.png) ### Permanence I've long evangelized (and extensively used) Alexey Golub's [Discord Chat Exporter](https://github.com/Tyrrrz/DiscordChatExporter) to make beautiful, stylized archives of Discord channels and/or entire servers for safekeeping. Telegram's native [Chat Export Tool](https://telegram.org/blog/export-and-more) came just a year after Alexey pushed [version 1.0 of the tool to GitHub](https://github.com/Tyrrrz/DiscordChatExporter/releases/tag/1.0.0), in August of 2018. In features, they're very similar utilities: both can export in either stylized HTML or data-only JSON formats between infinitely-configurable time/date constraints. Again, I wouldn’t know how much external backup of community activity actually weighs in the day-to-day operations of large online communities. I know I personally find it comforting to have a swift, polished method of exporting *text*, especially, living in this era of [blatant disregard for users of suddenly-abandoned online services](https://github.com/extratone/bilge/issues/79). ![TG Colors](https://i.snap.as/r0WpvFQr.png) ## ~~Transparency~~ Opacity One of my primary justifications for the time spent in composing this Post has to do with the immediately-available discourse surrounding Telegram on the web, which is wholly incomplete, at best. The main obstruction, from my perspective, is the subject of **encryption**. Even within publications as legitimate and frankly out-of-scope as *Forbes*, one can find an article like my chosen example, from February of this year, entitled "[No, Don’t Quit WhatsApp To Use Telegram Instead—Here’s Why](https://www.forbes.com/sites/zakdoffman/2021/02/13/why-you-should-stop-using-telegram-instead-of-whatsapp-use-signal-or-apple-imessage)." It was written to address a mass "[exodus](https://www.theguardian.com/technology/2021/jan/24/whatsapp-loses-millions-of-users-after-terms-update)" of users from WhatsApp after [a grandiose misunderstanding](https://www.theverge.com/2021/1/12/22226792/whatsapp-privacy-policy-response-signal-telegram-controversy-clarification)(?) of its Privacy Policy caused a noisy controversy ([catalyzed by Idiot Melon, himself](https://twitter.com/elonmusk/status/1347165127036977153).) I've been unable to find the added/altered text, itself, in my brief reading, but it's not as if the happening wasn't thoroughly covered elsewhere. It's not that I doubt the expertise of "Cybersecurity Expert Zak Doffman" when he notes "Telegram’s cloud-based architecture is a serious risk when compared to the end-to-end default encryption deployed by Signal and WhatsApp, which also uses Signal’s protocol," nor that I do not believe the following details are as true as truth gets: > All group messages on Telegram are only encrypted between your device and Telegram’s cloud, your message history is stored on Telegram’s cloud, and if you ([unwisely](https://www.forbes.com/sites/zakdoffman/2021/01/30/stop-using-this-dangerous-whatsapp-setting-on-your-apple-iphone-or-google-android-phone/)) transfer your WhatsApp chat history to Telegram, then this is also stored on its cloud. Make you sure understand that Telegram has the decryption keys to any of your data that you store on its cloud... To this argument and the many variations of it present in Telegram for iOS' [App Store reviews](https://apps.apple.com/us/app/telegram-messenger/id686449807), [obscure German PeerTube servers](https://tube.tchncs.de/w/2d958ef9-1be4-477c-bc13-852ec6391487), and even within [public chats on Telegram, itself](https://t.me/crackheadlegit/409), my formal response for the record is: *Okay! Affirmative! Received and understood!* I must acknowledge - given my own introduction to the service, narrated above - that Telegram's brand is vaguely associated with privacy and security. I can see that the second of nine duckies in the Ducky Grid on the root of telegram.org sits above the subhead "**Private**" and a caption with the following claim: "Telegram messages are heavily encrypted and can self-destruct." (The seventh ducky's subhead is "**Secure**.") Continuing on in Doffman's *Forbes* article, we find an overview of several vulnerabilities found throughout Telegram's native clients by Dhiraj Mishra - surely they with the most ghastly typographical preferences in all of cybersecurity - on their blog, *Input Zero*.[^6] The [specific example hyperlinked](https://www.inputzero.io/2020/12/telegram-privacy-fails-again.html) concerns a bug in the MacOS client that resulted in "the application leak[ing] the sandbox path where [a sent audio or video message] is stored in '.mp4' file." (The whole of the ghastly-typewritten summary is embedded below in screenshot form.) ![Telegram Privacy - InputZero](https://i.snap.as/a0xgY5cJ.png) Just to be clear, I am being sincere when I acknowledge that these are genuinely problematic issues that no doubt affected real Telegram users who depend upon its Secret Chat function. Even something so benign as the file path to local media storage on my device is not something I'd want piggybacking my otherwise-anonymous, NDA- and/or law-breaking messages to a journalist, for instance, but frankly, I don't know of any journalists who maintain public Telegram contacts, anyway. Come to think of it, I don't think I've *ever* seen a Telegram username publicly associated with a journalist. Indeed, the overwhelming majority of anonymous modern messenger service tip lines advertised by news organizations and news people which I've come across have all linked to Signal. In this particular case, then, Mr. Elon’s advice is sound. The question I would like to surface: **what if I have no use for encryption or privacy across my purposes for Telegram**? *All* the channels I have ever engaged with have been public, and those private ones I’ve come across have either been shady crypto spam channels or shady porn channels. I realize this doesn’t exactly reflect positively on Telegram’s community, but - as I argued regarding Discord, long ago - why let the community or even the app’s branding, itself, confine how you use it as a utility? ## A Hearty Foundation My thinking while drafting this argument kept returning to a single, simple realization: **in age, Telegram is just two years ahead of Discord**, yet the various software distributed by the two organizations for their respective services represent quite disparate opinions in design terms. [Discord's desktop "application"](https://discord.com/download) is an Electron app - [Telegram's](https://github.com/telegramdesktop/tdesktop) is virtually pure C++. [Telegram's iOS app](https://github.com/TelegramMessenger/Telegram-iOS) is mostly written in Objective-C (I'm to assume the 30.8% Swift code number on the repo as of this writing is mostly comprised of its widgets/other recent iOS-specific integrations,) while Discord's is mostly ???. That is, because Discord's software is proprietary and the source is closed, all I can tell you is that it was written in React Native [as of December, 2018](https://blog.discord.com/why-discord-is-sticking-with-react-native-ccc34be0d427). What I *can* tell you is that the current build of [Discord for iOS on the App Store](https://apps.apple.com/us/app/discord-talk-chat-hangout/id985746746) weighs in at 153.2 MB - significantly less than [Telegram's](https://apps.apple.com/us/app/telegram-messenger/id686449807) 185.1 MB. As I've noted plenty of times this year, **I am not a software developer** and therefore I can't promise you an app's initial payload size is actually all that relevant, but I was surprised to see Telegram wasn't slimmer than Discord, given how the two apps behave and my previous experiences with the platform, this year. ![Storage Management - Telegram for iOS](https://i.snap.as/BecGI6kg.png) Returning to the topic of their age… In its eight operating years, Telegram has embarked upon - and *actually completed*! - a gargantuan amount of projects. [Telegraph](https://telegra.ph/), the CMS, its [Web](http://web.telegram.org/), [Android](https://telegram.org/android), and [Linux](https://itsfoss.com/install-telegram-desktop-linux/) clients, [embeddedable comments widgets](https://comments.app), its [online theme creation tool](https://themes.telegram.org/), and on and on. Across their various types, Telegram’s software is universally simple, frugal, robust, and easy-to-use. Frankly, by contrast, Discord has done *nothing*? Though you’ll find openly-available solutions to accomplish much of what you can on Telegram in terms of moderation and other utilitarian concerns, like the aforementioned Craig bot, they are *all* the work of third-parties. While Discord the *company* is much more [transparently profiled](https://discord.com/company) on the web than “Telegram FZ LLC,” the latter’s actual work is very well documented [across GitHub](https://github.com/TelegramMessenger). ![Telegram Desktop in Windows 11](https://i.snap.as/DFQzGGeZ.png) If you’ve stuck with me this far, perhaps it’s not too much to ask that we retreat a bit and ask ourselves **what we’d truly like prioritized in community chat software for 2021**. I really do show my age in my bias, here, as someone just old enough to have had extensive experience using IRC,[^11] I think there’s a less-than-adequately discussed division happening which its successors might benefit dwelling on. IRC was extremely frugal and it was easy to find a freeware or FOSS IRC client for one’s given platform which was well-optimized to sit in the background of their desktop operating system, completely untouched and barely acknowledged visually for days… weeks… months at a time. It was easy to find oneself a member of a dozen or so IRC channels for specific interests, projects, or organizations averaging a dozen or so actual updates/pots per day, each. It was distinctly low pressure - many of my channel memberships functioned more like a wire service or, much more contemporarily, like an RSS aggregator, than a local party line. ![Telegram for iOS Sharing and Notifications](https://i.snap.as/FltrCV6Z.png) As I see it, the ultimate shift dividing those solutions from these is the big fucking obvious one: IRC was conceived in a world where computers were mostly static objects associated by their intended use and physical dimensions with the referential, unmoving waypoints around which *we* orbited (the kitchen counter, the desk in your study at home, parallel series of workstations within the public library, etc.) The *entirely* contrasted needs of community engagement on a *handset* should have - in my opinion - done much more to break apart these communal contexts than they have. As prolifically and extensively as I have used Discord for iOS since before its official release, even, it is hopelessly compromised by its loyalty to the PC gamer’s paradigm. My 12 Pro Max is not just *capable* of keeping 100 Discord channels up-to-date in the background as I move about the world - it is all too fucking *eager*, and for not a one rational explanation. Going on down this vector eventually leads to an adjacent argument I’ll name but otherwise save for later: it is literally **over a decade** past the time when we should have ceased celebrating the fact that mobile computers had matched and outdone desktop computers! We have to snap the fuck out of our obsession with lugging desktop computing alongside our persons and refocus entirely (once again) on exploring what “mobile computing” can/should mean, going forward. Please Gourd, help us do so ASAP. Unlike my heroes in most (if not all) of these tedious comparisons, I would *not* say Telegram is *the single software manifestation of total clarity in direction* within the subject, or anything, but in the area where it fails along with the rest of them, it has comprehensively iterated, invested in trial and error, and eventually produced tools that remedy the disparate gluttony. How swiftly and easily one can find one's installation full of media files, for instance, after *any* time spent exploring within its mobile apps. It very well could have been mostly chance that contributed to Telegram's current lead in terms of thoughtful design decisions and development investment toward **mobile-first optimization**. Perhaps it was their comparative longstanding Hype Famine, especially in the United States, these past few years. Maybe Discord hasn't built anything because they simply can't hear each other over the buzzwords overflowing their name in mainstream Discourse so abruptly thanks to The Big Virus. Telegram's story certainly *stands out*, though the voice of its creator, Pavel Durov, actually *telling* this story at length can now only be found [on *WIRED UK*'s MixCloud account](https://www.mixcloud.com/wiredUK/telegrams-pavel-durov-podcast-256), in [episode 256 of their *WIRED Podcast*](https://www.wired.co.uk/article/episode-256). Telegram was experiencing the peak of its presence in mainstream Western news media, who just *would not* let go of the fact that some leader of some terrorist organization recommended Telegram to someone for something at some point in time.[^12] Listening back, it's the nomadic "decentralized" beginnings of the organization - which I had forgotten entirely - which sounded a big, resonant Parallel Alarm in my brain: for very different reasons, [Bandcamp also operating without an office](https://bilge.world/bandcamp-streaming-music) (from a public library, charmingly,) at that time. "Can there only be one winner in the messaging wars?" David Rowan, to which Pavel - in the deliberate, uncomfortable-sounding tone he uses throughout the interview - responds by first noting a *real truth* for actual users: we tend to end up with a billion, each grouped generally by types of relationships. ------ [1] I still have not accepted this, by the way. I’m still back there. [2] If I were to be 100% sincere, I might ask you to consider that this (hilariously brief) intent was a method of coping with the great existential truths I was facing for the first time. [3] I *definitey* was, though. For whatever reason, I do not remember associating the term “automation” with such activities, but I just found the “receipt” for my “purchase” of [IFTTT for iOS](https://apps.apple.com/us/app/ifttt/id660944635)… From July, 2013. [4] I am currently working on a less-than-instant solution using iCloud and CopyQ’s clipboard sync function. [5] I would’ve said “one can never have too many backups,” but the result of such thinking is ridiculously wasteful and not something I actually want to encourage. [6] I'm almost positive I've heard of/been linked to this blog before, which is perhaps only notable in that I managed to keep my typographic opinions to myself. [7] Not that the process of doing so could be any easier on Windows. [8] It’s also worth nothing that [word of screen sharing framerate issues](https://t.me/TelegramiOStalk/104997) was circulating at the time of this recording. [9] Simulcast services like [Happs](https://happs.tv/@DavidBlue) - which still exists, astonishingly - offer an intriguing utility for those intending to stream regularly and wishing to do so across multiple platforms. It does not, at the moment, support either Telegram or Discord. [10] Speaking as someone with [actual extensive ridesharing experience](https://dieselgoth.com/volkswagen-jetta-sportwagen-tdi-review.html), notably. [11] Yes, there are some fellow Open Source Folks who’ve frankly struggled to let IRC go. It was an amazing protocol and will always be intertwined with the very first layed bricks of what we’d call the Social Web, but my friends… I sincerely think we should all try our hands at ham radio, instead. I think that would legitimately be a better use of our time than trying to implement two-factor authentication for IRC in this year of our spiteful Lourde 2021. [12] Disparaging Telegram for this is akin to shitting on Google because it is or was almost certainly the Taliban's favorite search engine, no? #social #software # A complete guide to Shortcuts on macOS [image:B0440E9C-1894-4F64-8AB2-2D4C51191785-10073-00001B439D11F2BB/6DC907D6-E9B5-4F89-932E-3481335E5922.jpeg] We rely on technology to make our lives easier, to take shortcuts and avoid longer routes. But even through the use of tech, there are ways to simplify our workflows even further, whether we’re [students](https://www.xda-developers.com/best-apple-products-for-students/) or employees. Shortcuts is a first-party Apple app that was first introduced in iOS 12. This extraordinarily capable app has finally made it to the [Mac](https://www.xda-developers.com/best-macs/), through the [macOS 12 Monterey](http://xda-developers.com/macos-monterey) update. Originally, Shortcuts was a third-party app called Workflow. As both previous and current names suggest, it’s an app designed to compile a series of bundled actions into a single button. Apple eventually acquired this app and rebranded it as Shortcuts, adding system-level privileges and more advanced features to it. What’s so great about it is anyone can use it — newbies and power users alike. There are actions that require almost zero experience in the matter and others that will demand some extra skills. ## First look [image:DABFAB52-1EB6-432B-8A42-513B3F6AE0DA-10073-00001B439CC6D3B0/Shortcuts-app-on-macos-1024x640.jpeg] Upon launching the app on your Mac, you’ll notice a major difference compared to its iOS counterpart — the /Automation/ tab is missing. For those not familiar with the /Automation/ tab or its purpose, it’s a section that triggers specific shortcuts based on certain, preassigned conditions. These conditions could be time of day, DND status, battery levels, Bluetooth/WiFi connectivity, NFC tag detection, etc. So whenever your iPhone detects one of these conditions, it will trigger the specified shortcut for you. You don’t have to interact with your phone at all — in some cases at least. * [image:66862DF4-9FD0-4592-A51C-F56F5A4407EA-10073-00001B439C8FE72E/Automation-tab-on-ios-shortcuts.jpg] [image:75E90F72-115D-4298-A791-176D67DD080B-10073-00001B439C6781C4/Automation-creation-on-ios-shortcuts.PNG.jpg] It’s hard to tell why the /Automation/ tab is nonexistent on macOS, considering there are plenty of conditions the Mac could support. Apart from NFC, CarPlay, and maybe a couple more actions, macOS can theoretically support the automation conditions available on iOS. Whether Apple will add it by the time macOS 12 is out of beta — or maybe in a future update — is still unknown. We’ll have to wait and see what happens down the road. Back to the Shortcuts main screen on macOS. You’ll be greeted by the /Gallery/ tab, topping the /My Shortcuts/ and /Folders/ sections. /My Shortcuts/ is divided into seven different categories: * All Shortcuts * Recently Modified * Recently Run * Share Sheet * Apple Watch * Quick Actions * Menu Bar The /Folders/ section contains whatever folders you personally create to categorize or group your individual shortcuts. [image:A632CA21-0AC4-48EC-BCD1-24789B4288C8-10073-00001B439C340F16/emphasis-on-my-shortcuts-in-shortcuts-app-on-macos-1024x640.jpeg] ## Gallery The Gallery is a great place to start exploring Shortcuts as a newcomer, thus being the first section in the app. It’s a collection of shortcuts, grouped based on their different functionalities and categories. These groups include: * *Starter Shortcuts:* very basic — but handy — ones, such as messaging your most recent photo to someone. * *Shortcuts for Accessibility:* mainly health and emergency focused, with shortcuts such as sending a message and location information to emergency contacts or tracking medication. * *Great with Siri:* shortcuts that may come in handy hands-free, through Siri. This collection includes a shortcut that ask Siri to tell you the weather and travel time to work, in addition to playing you a podcast. * *Wonderful Widget Shortcuts:* convenient to access through the Shortcuts app widget, such as a “ /play entire current album”/ shortcut. * *Share Sheet Shortcuts:* these shortcuts are focused on saving, sharing, or editing content you’re viewing. Some of the shortcuts include editing a Safari webpage, turning a webpage into a PDF, and adding a book to your wishlist. * *Shortcuts for Apple Music:* for everything Apple Music. Open genre playlists, play an artist, share your week in music, and much, much more. * *Shortcuts for Sharing:* from Mail to Twitter and Instagram. These shortcuts will make sharing content with others a tad easier, such as the /“AirDrop screenshot”/ shortcut. The Gallery also includes more collections, mostly focused on productivity. These include /Get Stuff Done, Get Organized, Work from Anywhere/, and over a dozen more. Once you explore the Gallery and its shortcuts, you can start building your own. It doesn’t take long to grasp the logic behind them, and we’ll be detailing everything later on. ## My Shortcuts ### All Shortcuts [image:415AB731-2186-492D-B23F-72EB31BC83BA-10073-00001B439C093D0C/Screen-Shot-2021-09-09-at-5.15.50-PM-1024x640.jpg] This section includes all the shortcuts you’ve added or created in the Shortcuts app. There’s a plus sign towards the top right that lets you create new shortcuts from there. You may also change the view from thumbnail to list and vice versa. A search bar is placed at the very right, making it easy to look up a certain shortcut you know the name of. ### Recently Modified [image:4A69C06E-7A74-4683-B64C-FD453544A9A0-10073-00001B439BE289C5/Screen-Shot-2021-09-09-at-5.19.30-PM-1024x640.jpg] This section displays shortcuts you’ve recently modified. It mentions on top when the last modification has occurred, and they’re sorted accordingly. ### Recently Run [image:6E6C1219-93CE-48EA-A456-10C50CE49CE2-10073-00001B439BB90760/Screen-Shot-2021-09-09-at-5.22.42-PM-1024x640.jpg] Similar to the previous section, this one displays shortcuts you’ve recently run. It mentions on top when they were last triggered, and they’re sorted accordingly. ### Share Sheet [image:66C30B20-69AB-4CC0-AEFF-B57DD3062E85-10073-00001B439B8B99CB/Screen-Shot-2021-09-09-at-5.26.35-PM-1024x640.jpg] This section lists shortcuts that support and show up in the share sheet of iOS and iPadOS — not macOS. Since the Shortcuts app offers iCloud sync, you’ll be able to view which of your shortcuts support that setting on iPhone/iPad, right from your Mac. ### Apple Watch [image:ED0A96F1-9365-48D3-A80B-0FCBDA6B97E1-10073-00001B439B6FE76F/Screen-Shot-2021-09-09-at-5.29.26-PM-1024x640.jpg] watchOS 7 added the ability to run Shortcuts commands right from your wrist. This section shows which of your shortcuts have been synced to your watch. ### Quick Actions [image:FD802BFF-8104-4061-9012-D939BC955452-10073-00001B439B431903/Screen-Shot-2021-09-09-at-5.33.15-PM-1024x640.jpg] This section shows shortcuts that you’ve added to Finder and Services Menu, through the shortcut creation settings. ### Menu Bar [image:2452E0D1-E038-45B3-A7D6-689801448022-10073-00001B439B1415D0/Screen-Shot-2021-09-09-at-5.35.40-PM-1024x640.jpg] This section displays the shortcuts you’ve added to your Mac’s menubar for easy access. ## Folders [image:11844462-67A8-4485-BFE0-FC87D26A8AA1-10073-00001B439AF28313/Screen-Shot-2021-09-09-at-5.40.20-PM-1024x640.jpg] As we’ve mentioned earlier, Folders is where your own groups live to better categorize your shortcuts. You may create as many folders as you want, and they’ll sync to your iDevices, as long as you have iCloud Sync on. ## Preferences Before you start creating your own shortcuts, it’s a good idea to go through the preferences and customize them as desired. ### General [image:B952E76C-179B-43EF-9BEA-E7BC952D2615-10073-00001B439AD1C141/Screen-Shot-2021-09-09-at-6.04.02-PM-1024x640.jpg] Under /General/, you’ll be able to toggle /iCloud Sync/ on. This will keep your shortcuts up to date on all of your iDevices. You’ll also find a /Private Sharing/ option that lets your contacts share shortcuts with you directly. Apple however warns you that it can’t verify whether received shortcuts are safe or not. Use at your own risk, basically. ### Sidebar [image:BDCEA380-7049-473D-8FFB-E5D95492BD9E-10073-00001B439AB36B5F/Screen-Shot-2021-09-09-at-6.06.45-PM-1024x640.jpg] Sidebar preferences let you show or hide certain sections and folders from the sidebar of the app. ### Advanced [image:17028914-0AC8-427F-8320-C26645D23629-10073-00001B439A96276B/Screen-Shot-2021-09-09-at-6.13.08-PM-1024x640.jpg] Advanced preferences include advanced settings for more experienced users. If you’re still new to Shortcuts and everything feels too confusing, we’d advise you to leave advanced preferences as is — off. You can experiment with them eventually, once you’re more familiar with how everything works. ## Shortcuts Now the main sections have been explained in depth, it’s time to dig into the actual shortcut creation process! ### Creation [image:1F384768-C6F5-4FDB-86D3-8F87F7D04CE7-10073-00001B439A758185/Screen-Shot-2021-09-10-at-11.47.47-AM-1024x640.jpg] Start by clicking on the plus sign at the top right of the /My Shortcuts/ section. A blank canvas will appear. This is where you’ll be building your first shortcut. You have to give it a name and optionally change the default icon. These can be done through the top left customization settings of the canvas. There are 15 icon colors to choose from, but the actual icons are a few dozens. Animals, people, fictional characters, home appliances, the list of icons is endless. It’s almost guaranteed you’ll find one that matches the theme of your shortcut. Once you give your shortcut an identity, you’ll notice a /“Hey Siri, [shortcut name]/ ” phrase under its name. This is because you can trigger shortcuts through Siri, not only through physically clicking a button. On the right side of the canvas, you’ll find two buttons — /Action Library/ and /Shortcut Details/. ### Action Library This is where the magic begins. In this section, there are two main tabs — /Categories/ and /Apps/. The former defaults to the /Suggested/ option, which suggests a list of actions you might potentially want to add to your canvas. Other options include /All Actions/, which lists every single action you can add, /Favorites, Documents, Web/, etc. Each of these options narrows down the list of shortcut actions to make finding what you’re looking for easier. So if you’re creating a music-focused shortcut, you know that you’ll probably find most of the actions you’re looking for under /Media/. [image:CB51661F-7A70-4008-A4B0-A989F4962DD3-10073-00001B439A5AADAC/Screen-Shot-2021-09-10-at-1.05.14-PM-1024x640.jpg] If you know which app offers the action you’re looking for, then the /Apps/ tab is where you should head. From there you can click on your app of choice to view the list of available actions. It’s worth mentioning this section includes both first and third-party apps that support shortcut actions. ### Shortcut Details [image:1F429A44-6DB5-4F97-8CB4-17D31CCE402B-10073-00001B439A3C2738/Screen-Shot-2021-09-10-at-6.19.49-PM-1024x640.jpg] This part is divided into three sections — /Details, Privacy/, and /Setup/. The /Details/ section is basically the skeleton of the shortcut. There you get to decide where and under which conditions it should show up. These options include adding it to your Apple Watch, Share Sheet on iOS/iPadOS, or the Menubar on your Mac. Under /Privacy,/ you get to grant the shortcut special privileges, such as access to your music library. It’s pretty similar to how app permissions work on iOS. After all, shortcuts are like mini apps. In /Setup,/ you can add /Import Questions/ in case you plan on sharing the shortcut with others. ### Building Once you’ve set everything up, you’re ready to start adding actions to your new shortcut. Building is a pretty straightforward process. You just drag and drop actions in a chronological order. Once you hit /run/, they’ll each start doing their tasks, one at a time. When an action is done, it passes whatever result it has got to the next action, and so on and so forth, until the end of the shortcut is reached. [image:C00688DC-0C2A-4D03-9AB6-BC3C82F6FBFC-10073-00001B439A0EEB6B/Screen-Shot-2021-09-10-at-6.39.44-PM-1024x640.jpg] In the screenshot above, I created a sample shortcut for your potential morning routine. It’s just a simple demonstration of how shortcuts work. In this case, the shortcut checks the weather, then speaks it out loud. After that, it plays a podcast from your library. Once the podcast starts playing, it’ll grab the latest items from your favorite RSS feed and display the articles neatly in Quick Look. Most actions have self-explanatory names, so figuring out what each does shouldn’t be a challenge. Apple and third-party developers have also included further descriptions for vague ones. These descriptions fully explain what an action is supposed to do. Now you know how the logic behind Shortcuts works. It can be extremely fun to experiment with, once you actually get the hang of it. And the best part? It will save you time and effort in the long run. [A complete guide to Shortcuts on macOS](https://www.xda-developers.com/guide-shortcuts-macos/) #i #documentation # HiRes Tweet - RoutineHub [image:E365B544-E3A4-45E7-B3FB-EFD34E669375-9373-000016A3B84544BA/d468824e04114bf0815c63c32a45c360.webp] OS Compatibility macOS No iOS 15 or higher Yes iOS 14 or lower Yes /HiRes Tweet/ can download media from public or *private* accounts at the highest quality, save to /Photos/ or /Files/ or share. It can also upload images at up to 8K. ## Downloading Media * *Long-press* a tweet’s share button, then select /HiRes Tweet/ from the list. * Alternatively you can tap the share button, tap ‘Share via’, then select /HiRes Tweet/. This may not work on private tweets, though. * Images are downloaded at up to 8K (for comparison, the Twitter app is limited to 4K). * gifs can be downloaded as gif and/or mp4. Since Twitter stores submitted gifs as mp4, this shortcut uses the same algorithm as [Better GIF Maker](https://routinehub.co/shortcut/10377/) ‘s to obtain maximum gif quality (optional). * You can save media to /iCloud/ or /On My Device/ on iOS 15, or to /iCloud/Shortcuts/ on iOS 14 or older. [image:69CC17FD-9309-4D2B-A192-9621756BD7C0-9373-000016A3B8269E5D/bJzhC0F.png] ## Uploading Image * To compose a tweet with an image at up to 8K (for comparison, the Twitter app is limited to 4K), run /HiRes Tweet/ from the /Shortcuts/ app. * Share your own tweet, and you can reply to it with an image. ## User Settings * You can change user settings by running /HiRes Tweet/ from the /Shortcuts/ app. * Connecting accounts enables you to download private media and upload images. * To change folder or album, toggle the /Save to Files/Photos/ option off and on. [image:39679EA5-3F93-419D-8365-E0A8A10ADF0E-9373-000016A3B7E22CD8/IyhdOnA.png] [HiRes Tweet](https://routinehub.co/shortcut/7912/) #i #documentation # Mac keyboard shortcuts * ⌘-X,Cut the selected item and copy it to the Clipboard. * ⌘-C,Copy the selected item to the Clipboard. This also works for files in the Finder. * ⌘-V,Paste the contents of the Clipboard into the current document or app. This also works for files in the Finder. * ⌘-Z,Undo the previous ⌘. You can then press Shift-⌘-Z to Redo, reversing the undo ⌘. In some apps, you can undo and redo multiple ⌘s. * ⌘-A,Select All items. * ⌘-F,Find items in a document or open a Find window. * ⌘-G,Find Again,Find the next occurrence of the item previously found. To find the previous occurrence, press Shift-⌘-G. * ⌘-H,Hide the windows of the front app. To view the front app but hide all other apps, press Option-⌘-H. * ⌘-M,Minimize the front window to the Dock. To minimize all windows of the front app, press Option-⌘-M. * ⌘-O, Open the selected item, or open a dialog to select a file to open. * ⌘-P,Print the current document. * ⌘-S,Save the current document. * ⌘-T,Open a new tab. * ⌘-W,Close the front window. To close all windows of the app, press Option-⌘-W. * Option-⌘-Esc,Force quit an app. * ⌘–Space bar,Show or hide the Spotlight search field. To perform a Spotlight search from a Finder window, press ⌘–Option–Space bar. (If you use multiple input sources to type in different languages, these shortcuts change input sources instead of showing Spotlight. Learn how to change a conflicting keyboard shortcut.) * Control–⌘–Space bar,Show the Character Viewer, from which you can choose emoji and other symbols. * Control-⌘-F,Use the app in full screen, if supported by the app. * Space bar,Use Quick Look to preview the selected item. * ⌘-Tab,Switch to the next most recently used app among your open apps. * Shift-⌘-5,In macOS Mojave or later, take a screenshot or make a screen recording. Or use Shift-⌘-3 or Shift-⌘-4 for screenshots. Learn more about screenshots. * Shift-⌘-N,Create a new folder in the Finder. * ⌘-Comma (,),Open preferences for the front app. [image:E093179A-4A8A-4D02-BE84-A0909CAC37E4-5972-00000D5CCEA96A3C/_divider.png] You might need to press and hold some of these shortcuts for slightly longer than other shortcuts. This helps you to avoid using them unintentionally. * Power button,Press to turn on your Mac or wake it from sleep. Press and hold for 1.5 seconds to put your Mac to sleep.* Continue holding to force your Mac to turn off. * Option–⌘–Power button * or Option–⌘–Media Eject * ,Put your Mac to sleep. * Control–Shift–Power button * or Control–Shift–Media Eject * ,Put your displays to sleep. * Control–Power button * or Control–Media Eject * ,Display a dialog asking whether you want to restart, sleep, or shut down. * Control–⌘–Power button:* Force your Mac to restart, without prompting to save any open and unsaved documents. * Control–⌘–Media Eject * ,Quit all apps, then restart your Mac. If any open documents have unsaved changes, you will be asked whether you want to save them. * Control–Option–⌘–Power button * or Control–Option–⌘–Media Eject * ,Quit all apps, then shut down your Mac. If any open documents have unsaved changes, you will be asked whether you want to save them. * Control-⌘-Q,Immediately lock your screen. * Shift-⌘-Q,Log out of your macOS user account. You will be asked to confirm. To log out immediately without confirming, press Option-Shift-⌘-Q. * Does not apply to the Touch ID sensor. [image:88F735AB-F146-429B-80F5-F450282C2F28-5972-00000D5CCE03162B/__divider.png] * ⌘-D,Duplicate the selected files. * ⌘-E,Eject the selected disk or volume. * ⌘-F,Start a Spotlight search in the Finder window. * ⌘-I,Show the Get Info window for a selected file. * ⌘-R,(1) When an alias is selected in the Finder,show the original file for the selected alias. (2) In some apps, such as Calendar or Safari, refresh or reload the page. (3) In Software Update preferences, check for software updates again. * Shift-⌘-C,Open the Computer window. * Shift-⌘-D,Open the desktop folder. * Shift-⌘-F,Open the Recents window, showing all of the files you viewed or changed recently. * Shift-⌘-G,Open a Go to Folder window. * Shift-⌘-H,Open the Home folder of the current macOS user account. * Shift-⌘-I,Open iCloud Drive. * Shift-⌘-K,Open the Network window. * Option-⌘-L,Open the Downloads folder. * Shift-⌘-N,Create a new folder. * Shift-⌘-O,Open the Documents folder. * Shift-⌘-P,Show or hide the Preview pane in Finder windows. * Shift-⌘-R,Open the AirDrop window. * Shift-⌘-T,Show or hide the tab bar in Finder windows. * Control-Shift-⌘-T,Add selected Finder item to the Dock (OS X Mavericks or later) * Shift-⌘-U,Open the Utilities folder. * Option-⌘-D,Show or hide the Dock. * Control-⌘-T,Add the selected item to the sidebar (OS X Mavericks or later). * Option-⌘-P,Hide or show the path bar in Finder windows. * Option-⌘-S,Hide or show the Sidebar in Finder windows. * ⌘–Slash (/),Hide or show the status bar in Finder windows. * ⌘-J,Show View Options. * ⌘-K,Open the Connect to Server window. * Control-⌘-A,Make an alias of the selected item. * ⌘-N,Open a new Finder window. * Option-⌘-N,Create a new Smart Folder. * ⌘-T,Show or hide the tab bar when a single tab is open in the current Finder window. * Option-⌘-T,Show or hide the toolbar when a single tab is open in the current Finder window. * Option-⌘-V,Move the files in the Clipboard from their original location to the current location. * ⌘-Y,Use Quick Look to preview the selected files. * Option-⌘-Y,View a Quick Look slideshow of the selected files. * ⌘-1,View the items in the Finder window as icons. * ⌘-2,View the items in a Finder window as a list. * ⌘-3,View the items in a Finder window in columns. * ⌘-4,View the items in a Finder window in a gallery. * ⌘–Left Bracket ([),Go to the previous folder. * ⌘–Right Bracket (]),Go to the next folder. * ⌘–Up Arrow,Open the folder that contains the current folder. * ⌘–Control–Up Arrow,Open the folder that contains the current folder in a new window. * ⌘–Down Arrow,Open the selected item. * Right Arrow,Open the selected folder. This works only when in list view. * Left Arrow,Close the selected folder. This works only when in list view. * ⌘-Delete,Move the selected item to the Trash. * Shift-⌘-Delete,Empty the Trash. * Option-Shift-⌘-Delete,Empty the Trash without confirmation dialog. * ⌘–Brightness Down,Turn video mirroring on or off when your Mac is connected to more than one display. * Option–Brightness Up,Open Displays preferences. This works with either Brightness key. * Control–Brightness Up or Control–Brightness Down,Change the brightness of your external display, if supported by your display. * Option–Shift–Brightness Up or Option–Shift–Brightness Down,Adjust the display brightness in smaller steps. Add the Control key to this shortcut to make the adjustment on your external display, if supported by your display. * Option–Mission Control,Open Mission Control preferences. * ⌘–Mission Control,Show the desktop. * Control–Down Arrow,Show all windows of the front app. * Option–Volume Up,Open Sound preferences. This works with any of the volume keys. * Option–Shift–Volume Up or Option–Shift–Volume Down,Adjust the sound volume in smaller steps. * Option–Keyboard Brightness Up,Open Keyboard preferences. This works with either Keyboard Brightness key. * Option–Shift–Keyboard Brightness Up or Option–Shift–Keyboard Brightness Down,Adjust the keyboard brightness in smaller steps. * Option key while double-clicking,Open the item in a separate window, then close the original window. * ⌘ key while double-clicking,Open a folder in a separate tab or window. * ⌘ key while dragging to another volume,Move the dragged item to the other volume, instead of copying it. * Option key while dragging,Copy the dragged item. The pointer changes while you drag the item. * Option-⌘ while dragging,Make an alias of the dragged item. The pointer changes while you drag the item. * Option-click a disclosure triangle,Open all folders within the selected folder. This works only when in list view. * ⌘-click a window title,See the folders that contain the current folder. [image:42D252EC-C3AA-4B92-848D-84A494439715-5972-00000D5CCDEE04AE/___divider.png] The behavior of these shortcuts may vary with the app you're using. * ⌘-B,Boldface the selected text, or turn boldfacing on or off. * ⌘-I,Italicize the selected text, or turn italics on or off. * ⌘-K,Add a web link. * ⌘-U,Underline the selected text, or turn underlining on or off. * ⌘-T,Show or hide the Fonts window. * ⌘-D,Select the Desktop folder from within an Open dialog or Save dialog. * Control-⌘-D,Show or hide the definition of the selected word. * Shift-⌘-Colon (:),Display the Spelling and Grammar window. * ⌘-Semicolon (;),Find misspelled words in the document. * Option-Delete,Delete the word to the left of the insertion point. * Control-H,Delete the character to the left of the insertion point. Or use Delete. * Control-D,Delete the character to the right of the insertion point. Or use Fn-Delete. * Fn-Delete,Forward delete on keyboards that don't have a Forward Delete key. Or use Control-D. * Control-K,Delete the text between the insertion point and the end of the line or paragraph. * Fn–Up Arrow,Page Up,Scroll up one page. * Fn–Down Arrow,Page Down,Scroll down one page. * Fn–Left Arrow,Home,Scroll to the beginning of a document. * Fn–Right Arrow,End,Scroll to the end of a document. * ⌘–Up Arrow,Move the insertion point to the beginning of the document. * ⌘–Down Arrow,Move the insertion point to the end of the document. * ⌘–Left Arrow,Move the insertion point to the beginning of the current line. * ⌘–Right Arrow,Move the insertion point to the end of the current line. * Option–Left Arrow,Move the insertion point to the beginning of the previous word. * Option–Right Arrow,Move the insertion point to the end of the next word. * Shift–⌘–Up Arrow,Select the text between the insertion point and the beginning of the document. * Shift–⌘–Down Arrow,Select the text between the insertion point and the end of the document. * Shift–⌘–Left Arrow,Select the text between the insertion point and the beginning of the current line. * Shift–⌘–Right Arrow,Select the text between the insertion point and the end of the current line. * Shift–Up Arrow,Extend text selection to the nearest character at the same horizontal location on the line above. * Shift–Down Arrow,Extend text selection to the nearest character at the same horizontal location on the line below. * Shift–Left Arrow,Extend text selection one character to the left. * Shift–Right Arrow,Extend text selection one character to the right. * Option–Shift–Up Arrow,Extend text selection to the beginning of the current paragraph, then to the beginning of the following paragraph if pressed again. * Option–Shift–Down Arrow,Extend text selection to the end of the current paragraph, then to the end of the following paragraph if pressed again. * Option–Shift–Left Arrow,Extend text selection to the beginning of the current word, then to the beginning of the following word if pressed again. * Option–Shift–Right Arrow,Extend text selection to the end of the current word, then to the end of the following word if pressed again. * Control-A,Move to the beginning of the line or paragraph. * Control-E,Move to the end of a line or paragraph. * Control-F,Move one character forward. * Control-B,Move one character backward. * Control-L,Center the cursor or selection in the visible area. * Control-P,Move up one line. * Control-N,Move down one line. * Control-O,Insert a new line after the insertion point. * Control-T,Swap the character behind the insertion point with the character in front of the insertion point. * ⌘–Left Curly Bracket ({),Left align. * ⌘–Right Curly Bracket (}),Right align. * Shift–⌘–Vertical bar (|),Center align. * Option-⌘-F,Go to the search field. * Option-⌘-T,Show or hide a toolbar in the app. * Option-⌘-C,Copy Style,Copy the formatting settings of the selected item to the Clipboard. * Option-⌘-V,Paste Style,Apply the copied style to the selected item. * Option-Shift-⌘-V,Paste and Match Style,Apply the style of the surrounding content to the item pasted within that content. * Option-⌘-I,Show or hide the inspector window. * Shift-⌘-P, Page setup,Display a window for selecting document settings. * Shift-⌘-S,Display the Save As dialog, or duplicate the current document. * Shift–⌘–Minus sign (-),Decrease the size of the selected item. * Shift–⌘–Plus sign (+),Increase the size of the selected item. ⌘–Equal sign (=) performs the same function. * Shift–⌘–Question mark (?),Open the Help menu. #documentation #software # Swaggatronix (@cantinto@eldritch.cafe) [image:EB96B5FA-74B9-4072-8AC7-27CB113C7CEA-2395-000006311D123967/d8ac57c3b40c3563.png] [@cantinto](https://eldritch.cafe/@cantinto) oh god you don’t want to have this discussino, do you? David’d whole purpose in the bible is to function as an object of forgiveness. As in, his character trop is “oh fuck I’m sorry I killed my best friend just so I could rape his wife, God, will you really forgive me, this time???” it is the worst biblical name to be associated with imo. christians like to call the psalms the prettiest book of the old testament, poetically, but only because they won’t read the hebrew [@cantinto](https://eldritch.cafe/@cantinto) honestly, the fact that you acknowledged the title at all is really flattering. even the folks I know who actually do occasionally read my shit never mention it and I”ve always wondered why lol…… I mean it *is* actually better reading than the book in the old testament, imo, as someone who’s had to pretend to academically study said book at length. if you ever decide to read and strongly disagree with that, I will try the self-flagellation thing I guess. [Swaggatronix (@cantinto@eldritch.cafe)](https://mastodon.social/web/@cantinto@eldritch.cafe/106809006889022097) # Software Thanksgiving — The Psalms [image:3746DAAF-6A05-4ED6-BD5E-F304FD9083AF-1337-0000020ECD3C5217/SFHmuSlu.png] ## Purposing a disciplined effort to reflect on those tech products which have remained too fair and/or too good to catch the attention of the alarmists in us, recently. I've never been a big fan of holidays, nor do I think Thanksgiving should be a federal one, given its shitty, undebatably imperialist origins, but these opinions are entirely inconsequential. Regardless of how I feel, Thanksgiving will remain as pervasive as ever in the spaces around me, so I thought I'd change things up this year and /actually participate/ in a substantial way. I did my best to travel back to a vastly less complicated self, letting all of the crud that's accumulated atop my love of computers in the past twenty years: wokeness, adtech, Obama wearing VR glasses, etc... When I thought the Native Americans were /glad/ to see white people because they gave them guns and horses and assumed people made things because good ideas were the apex of currency. When I was able to respond to new software discoveries by screwing around aimlessly without wondering if they'd been stolen entirely from a handful of talented developers lacking in the resources and know how required to protect their ideas in the face of Microsoft's ruthless /Embrace, Extend, Extinguish/ crusade. Forgive yourself for a moment and return there with me. Or perhaps somewhere else, if you need – wherever and whenever you last remember feeling genuinely enthralled with /The Future of Computers/. (Perhaps it was yesterday! If so, Gourd bless you. Never change.) Let's take ourselves back to kindergarten, before we knew anything about the rapid cyclical consolidation and monopolization within the technology industry that had already established itself as a trend, by then, when all we knew of the software we interacted with was contained within our most visceral reactions: /I like Ask Jeeves because I like red and I like Jeeves./ I vaguely remember when Google (the search engine) first broached the general awareness of my elementary school's computer lab. I'm fairly sure I even remember the sort of feelings that were elicited the first time I actually set eyes on the Google.com homepage: it looked so modern, then, compared to the rest of the web. (After two decades, it currently looks like shit.) Upon the first first query, it was immediately clear that Google was superior to any of the other search engines we'd been using. This sort of encounter – with a service that significantly alters one's perception of a given set of tasks – is precious in our lives as users. A few examples from my own using life which come to mind: * The first time I witnessed a Skype call. * Downloading and using the beta Evernote client on the school machines in Junior High. * The first album I uploaded on Bandcamp. * Discord's first public release. * The “moment” I first put a name to Markdown. (I'd been using bits of the syntax for years before I actually read the word.) * And most recently, exploring Notion as personal catch-all documentation software. The atmosphere of elation about the future on which I so often lament has been replaced by wariness for most of us – from Californian software developers to tractor-hacking farmers. Now, the conversation is saturated with CEO appearances before legal committees, corporate memo leaks, and somber interviews. Of course, I have unquestionably contributed /more/ than my share. In fact, I wish I could be twice as critical in twice the written volume, and [I believe](https://twitter.com/NeoYokel/status/1329078973691695117) the tech media industry to be far too culturally-embedded within Silicon Valley to be nearly critical enough. For this holiday, though, I think a respite from the negative is worthwhile and essential. I know it is for /my/ personal sanity, at least. A week ago, I shared [this Google Form](https://bit.ly/softthank) and asked you to reflect with me on the “really great” software/services /you/ have encountered in your using life built by “technology companies who's business ethics align toward the benefit of us users and who's products are well-priced (or free!)” As of the time of this writing, nearly 80 responses have been recorded on the form, itself, and several more via [comments on Hacker News](https://news.ycombinator.com/item?id=25177582). I deeply appreciate your participation! They're far from predictable, too – I've ended up learning a lot. The very first submission was for [Logos Bible Software](https://en.wikipedia.org/wiki/Logos_Bible_Software), which has [quite a fascinating history](https://blogs.bible.org/bible-software-history-101/). I feel like those less-secular of us go unexposed to theological software without participants such as the human who submitted this one (thank you, human!,) and end up missing out on an entire segment of software development. Having studied The Good Book in a very much analog fashion through Lutheran school, I wonder in retrospect how software solutions could've changed the experience. I have never received this volume of feedback in my prompts before, nor have I ever really seen a reason to close any of them to responses, so I'm going to take a blind shot at the dartboard and plan to close the form on *New Year's Day, 2021*. Until then, please feel free to respond in any way you'd like and/or view all the live answers in this [very bad spreadsheet](https://bit.ly/thanksheet) full of these very /good/ responses. (My apologies – I have absolutely no idea how to use Google Sheets.) [image:B9916C7D-E4FB-447C-A630-51D623EA553A-1337-0000020ECD0F6911/bj3zAfNm.png] ## ⓣⓗⓐⓝⓚⓢ I originally intended to go into relatively extensive detail for each of the entities on my own Most Thankful For list, but I do have to /actually stop somewhere/, so the commentary on these isn't remarkably insightful or educational. It /is/ genuine, though, which is worth something, I hope. ### 1. [Bandcamp](https://bandcamp.com/) Yes, I have tirelessly promoted [my essay about Bandcamp's holiness](https://bilge.world/bandcamp-streaming-music) for years now, but I have done so with good reason: here is a for-profit technology company which is building a one-of-a-kind product that invests directly in independent artists. I spent a whole summer scouring The Web looking for /a single misstep/ or controversy and found absolutely none. > Over the course of this super link-laden journey, we’d consider the alarmingly hypocritical possibility that it’s been overlooked by mainstream conversations only because it has so long operated in the precise manner we claim is so hopelessly absent from its neighbors in its deliberate, principled, and innovative journey towards a transparent, progressive vision. ### 2. [OBS](https://obsproject.com/) Before OBS (Open Broadcaster Software,) streaming video was an absolute mess that usually involved paying for or pirating some proprietary software. Remember Ustream? Good God... OBS is the streaming video equivalent of Audacity and GIMP: an extremely powerful, infinitely-malleable set of tools that allow one to take full advantage of their hardware to capture and/or stream video and audio. [image:F6B88D9D-A40A-43E0-A624-5FFD28EE0CA2-1337-0000020ECCF7EBAA/uWDyI56s.png] ### 3. [Typora](https://typora.io/) There's a file entitled “ [My Darling, Typora](https://github.com/extratone/bilge/blob/main/Drafts/My%20Darling%2C%20Typora.md) ” sitting in my [essay drafts folder](https://github.com/extratone/bilge/tree/main/Drafts), currently, which describes this text editor as “the perfect writing software.” (See its [notes page on Notion](https://www.notion.so/rotund/My-Darling-Typora-b20ac14f9d7e4b20b9c823b0d8292c8f) for more.) From another recommendation I wrote: > Typora is an infinitely-customizable markdown editor spanning all platforms that's managed to become my primary word processor (and I'm someone who demands /a lot/ from word processors.) It's immensely powerful in all the important ways – my use over the past two years has stress tested it with both enormous (100,000+ words) and extremely complicated (100+ images and embeds) documents. It's able to export even these chunkos to any format you can imagine instantaneously and never crashes. From a comment I made on [The Information's notetaking software comparison](https://www.theinformation.com/articles/tech-execs-are-obsessing-over-note-taking-apps-we-tested-them-out): > Typora is a Markdown editor with left sidebar file sorting, very much like Bear (several available themes can make it look actually identical, in fact,) but without its native iCloud-based file syncing. It is cross-platform, open-source, and definitely more powerful, though. The Typora theming community has been especially on-point, as of late. In the screenshot embedded above, it's wearing the Slate variation of [H16nning's Gitbook theme](https://theme.typora.io/theme/Gitbook/), which is by far the most beautiful configuration I've yet to see the editor in. ### 4. [GIMP](https://www.gimp.org/) The GNU Image Manipulation Program – which just celebrated its [25th anniversary](https://www.gimp.org/news/2020/11/21/25-years-of-gimp/) last week – is one of the most powerful tools in its space and perhaps /the/ number one exemplary example of open source software to cite when explaining the concept for the first time. I have used it my entire creative life for all manner of tasks and evangelized it plenty, but it wasn't until I [returned to college](https://www.davidblue.wtf/college-return/) this Fall and took advantage of Adobe's student discounts that I had an opportunity to thoroughly explore its proprietary nemesis, Photoshop. What I found was indeed a very powerful piece of software, albeit as arrogant as ever in its stubborn commitment to the original keyboard shortcuts set by default and other legacy artifacts, though not one I would compare to GIMP, necessarily. This shouldn't be breaking news: as far as I know, there are billions of posts comparing the two going back to [the beginning of the written word](https://www.wired.com/1998/03/a-thrifty-photoshop-built-for-the-web/). My personal conclusion: *I can accomplish much more, much faster with GIMP* in every single one of my own use cases. ### 5. [Audacity](https://www.audacityteam.org/) I was browsing some FOSS-related article aggregation page a few weeks ago when a post caught my eye: “ [Audacity exceeds 100 million downloads](https://blog.fosshub.com/audacity-exceeds-100-million-downloads/).” In reflection, I realized in that moment that perhaps no other single piece of software has been so thoroughly present in my “workflows” across all sorts of projects through the years, largely because of its God-sent [Truncate Silence feature](https://manual.audacityteam.org/man/truncate_silence.html), which I have used to remove silence from audio files for as long as I've been working within the medium, basically. Every podcast episode I have ever published has passed through Audacity for this reason and others, as have voiceovers, high school punk band demo tapes, personal voice notes, and more. > the world would actually be perfect if audacity's truncate silence feature could be autotied to video timecodes. > — David Blue (@NeoYokel) [August 19, 2016](https://twitter.com/NeoYokel/status/766786796898357248?ref_src=twsrc%5Etfw) Until OBS came along, Audacity was where all recorded audio started for myself and my creative friends. It was Audacity that captured (and caused, technically) the [death of my friend's soundcard in audio form](https://clyp.it/ycvt1wij) during the recording process for [Hamura](https://ihadtopee.bandcamp.com/album/hamura), the first Drywall album, back in October of 2011. Fucking around in Audacity through the years has led to some halfway creative results on my part, including [“SLOWED 'N' THROWED” Hilary Duff tracks](https://soundcloud.com/digivoid/hilary-duff-with-love-slowed-n-throwed) and [legacy Windows sounds remixes](https://soundcloud.com/chordoslut/windows-operatic). I still use it for every episode of [End User](https://anchor.fm/davidblue) and have recently created a macro for remastering [Drycast](https://anchor.fm/drycast) episodes. (A big feat for me and reflective of Audacity's ingenuity.) As far as I know, there are /zero/ competitors, proprietary or not, which can replicate Audacity's particular usefulness as an audio utility. [image:CA00F3B3-9F45-485A-B54F-D53F654B5FDD-1337-0000020ECCDB5985/10geW13j.png] ### 6. [NeoCities](https://neocities.org/) Shortly after I discovered NeoCities last Spring, I signed up to be a [Supporter](https://neocities.org/supporter) for $5/month, not necessarily for the additional storage or bandwidth, but because the project immediately sounded like one I was personally obligated to uplift. Parimal Satyal's essay “ [Rediscovering the Small Web](https://neustadt.fr/essays/the-small-web/),” along with the design of the website which delivered it, inspired me to make another attempt at building an HTML site by hand. So far, [davidblue.xyz](https://davidblue.xyz/) obviously borrows /heavily/ from his CSS, but looking at the code itself was vastly more pleasant than one would expect. Recently, during the course of writing an [academic research essay](https://github.com/extratone/bigblue), I found myself listening to [interviews with its founder, Kyle Drake](https://www.softwaresessions.com/episodes/bringing-geocities-back-with-kyle-drake/) and reading [articles from its debut in 2013](https://www.wired.com/2013/07/neocities/), which prompted me to take even further advantage of my account. [image:9DDEF24B-E61D-4C40-B7F1-166908F40DA6-1337-0000020ECCC19297/UhS9a89b.png] Last week, I moved my inactive automotive blog ( [dieselgoth.com](https://dieselgoth.com) ) from a Writeas blog to a purely-HTML [NeoCities website](https://neocities.org/site/dieselgoth) with disturbingly little friction. (I challenge you to spot any differences.) After discovering a backup of the original Drywall Website deep within my old files, NeoCities was the only reasonable host on which to [archive it](https://iowa.neocities.org/). After I'd finished uploading, I fell down what the youth call a “rabbit hole” of discovery, mesmerized by what I found on page after page of [NeoCities' site browser](https://neocities.org/browse). I did my best to save the best finds by [following them](https://neocities.org/site/davidblue/follows) within the sites dashboard and have since set up a [Best of NeoCities GitHub repository](https://github.com/extratone/neocollect) with my absolute favorites among them archived thanks to [wget](https://www.gnu.org/software/wget/). > LOOK AT THIS GORGEOUS WEBSITE! [https://t.co/nahoRCEkeE](https://t.co/nahoRCEkeE) [pic.twitter.com/mzEfhGygWz](https://t.co/mzEfhGygWz) > — David Blue (@NeoYokel) [November 16, 2020](https://twitter.com/NeoYokel/status/1328337497416458247?ref_src=twsrc%5Etfw) Trust me when I tell you that *some of the best web design, /ever/can be found on NeoCities*. What's even better: after my deep dive, I was pleasantly surprised by strangers [commenting on what I'd found](https://neocities.org/site/davidblue?event_id=1301289)! Replying in a timely, substantial, and genuine manner seems to be a hallmark of the community: my (rather verbose) question regarding the well-manneredness of publishing such an archive without permission in [the community Discord](https://discord.gg/pF7wHrf9tb) I discovered just this morning was almost immediately met with encouraging replies. A Post you should probably expect soon: “NeoCities is 2020's Best Social Network.” Going forward, I'd like to [digitize my poetry collection on NeoCities](https://neocities.org/site/feebles) in the near future while continuing to otherwise brush back up on HTML and CSS – both of which I am /also/ very thankful for, come to think of it. Thank you again for your correspondence! May your Imperialism Day be a positive experience! [ʰᵉʳᵉ](https://iowa.neocities.org/hacked) [ᵃʳᵉ](https://iowa.neocities.org/signout) [ᵗʰᵉ](https://iowa.neocities.org/mackie) [ᵈʳʸʷᵃˡˡ](https://iowa.neocities.org/dicks) [ʷᵉᵇˢᶤᵗᵉ](https://iowa.neocities.org/mackie) [ᵉᵃˢᵗᵉʳ](https://iowa.neocities.org/test) [ᵉᵍᵍˢ](https://iowa.neocities.org/goodmorning) [image:7AFEC105-1860-46ED-94B9-12FFF5F911B1-1337-0000020ECCA0DB7B/MKqV97y9.png] [#software](https://bilge.world/tag:software) [Software Thanksgiving — The Psalms](https://bilge.world/big-thank) # Blue on Blue ``` ``` ![Twitter Blue Brand Image](https://i.snap.as/F4AODRKo.png) ## Gargantuan, ridiculously avoidable misses in Little Blue’s Blue. Incredibly, the second most powerful social media company in the world has finally managed to implement a paid subscription model, as I’ve been begging them to do for [at least 5 years](https://twitter.com/neoyokel/status/696094018862718976), now. For three U.S. Dollars a month, “[Twitter Blue](https://blog.twitter.com/en_us/topics/company/2021/introducing-twitter-blue)” is [now available](https://www.theverge.com/2021/11/9/22766286/twitter-blue-subscription-service-scroll-nuzzel-undo-tweets-ad-free-articles-us) for all United States users. Aside from [a relentless, rude, two and a half hour-long rant](https://apple.co/3wVZs3v) at two new friends on *End User*, I should confess that I haven’t spoken adequately to peers at length about their Twitter use - understandably, busy independent artists don’t seem to find themsevles with the spare time to hypothesize methodically about what they might want from the service, going forward. From the mass of commentary on Twitter Blue I *was* able to gather, a resounding sentiment refrains: *these features should be available to everyone*. https://open.spotify.com/episode/0ImyC2Twm5qyx9lxmcKmkP `![Twitter in Jorts Dock, 2021](https://i.snap.as/zp5uCNwa.png)` Frankly, after all these years, there’s not all that much to actually say about the product, itself. Thanks to Spaces, I happened to catch a chance to ask my favorite sage of late - Jason Scott, original creator of textfiles.com - for his thoughts. “Well, I bought it.” “Yeah, same.” Then, we talked for 45 minutes about self-actualization. As I’ve recently honed my understanding of the significance behind my own personal extraordinary dependence/investment in this one service, I have also - in parallel, ya might say - refined wholly a set of expectations which I do not ever again expect to be usurped in any way by Twitter, Incorporated’s decisions. Believe it not, these thoughts of mine really *do* have real potential to add value to your life, especially if you’re still reading. The next time you find yourself wondering what Twitter might do next, try to internalize the utter inanity of that whole pursuit. Not one second can be concretely spent in that endeavor because the organization is defined singularly by its outrageous negligence. They are not villains or demons like [Big Blue](https://github.com/extratone/bigblue) - they are through and through a village of idiots, and no manner of user action can possibly budge them. Of course, this new development of mine hasn’t actually managed to delivery any peace upon my person. In fact, because it is impossible to be *constructively* critical in such a situation, I am one of few I know who must continue to be critical, anyway, because my livelihood does not depend on the newsworthiness of my subject matter. I guess I should just be thankful my “must” represents so little time-sensitive consequence, if any, given how long it takes me to finish anything, these days. On that note, please [look elsewhere](https://www.theverge.com/2021/11/14/22778827/twitter-blue-undo-button-paywall-features-paid-free) for the bulletpoints… Come back for at least a second, though, because this Post *does* eventually circle around to a handful of poignant, original comments on the ~~Whats~~. The peeves aren’t new, but I’ve found my own redundancy within *The Psalms* to be less and less… redundant, if that makes sense. This company’s software is bad and its continued prioritization of the two native mobile applications (neither of which it actually built) over any other clients for *all* user considerations is a spectacular tedium to follow. Its world record breaking inability to understand anything about how its *whole shit* fits into the lives of *any* of its users continues to astound. My peak irritation about the whole situation, lately, is that *you fuckers* continue to discuss alterations to social software, generally, as if they are *inevitable* with a sense of complicity I will *not* allow. I’m not going to argue that you’re *obligated* to speak up and out in a labor sense, but beseeching that you **expect more** from these organizations as a customer, a citizen, and a human being. ### All Users are Power Users The episode of *End User* embedded above is one of the only podcast episodes I’ve ever made which I actually find *too painful* to listen back to[^2], but I still think it’s valuable. There’s a specific bit of the conversation between [@alisonbuki](https://twitter.com/alisonbuki) and I in which the term “Poweruser” is actually thrown around regarding my own use of Twitter Lists, Tweetbot, and a few other “”””Hacks”””” to consume content *deliberately*. ## Undo Tweet Perhaps unlike you, *I* have never had a problem understanding why “editable” Tweets will never exist, largely thanks to [my conversation with Eugen Rochko](https://hyp.is/znp7tEQJEeySOXvhkqI2DQ/bilge.world/eugen-rochko-interview) about implementing editable posts on Mastodon: > That won't happen. There's actually a good reason why they don't do that. It's simply because you could make a toot about one thing, have people favorite it and share it, link it from other places, and then suddenly, it says 'Heil Hitler,' or something. This, actually, is *not* the reason I found it easy to understand, though I hope it makes a bit of a sense. It was when Eugen mentioned (unquoted) Twitter's original design around SMS.[^1] As I noted all those years ago. **Delete & Re-Draft** - the answer Mastodon integrated natively and third-party social clients have featured for years - makes *a lot* more sense than straight up "editable Tweets" *or* the chosen answer at the top of Twitter Blue's feature list, "[Undo Tweet](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet)." Here's the full text from [**its subpage**](https://help.twitter.com/en/using-twitter/twitter-blue-features#undo-tweet) in Twitter's documentation: > **Undo Tweet** gives you the option to retract a Tweet after you send it, but before it’s visible to others on Twitter. It’s not an edit button, but a chance to preview and revise your Tweet before it’s posted for the world to see. Once the Undo period is over, the Tweet is viewable to your followers and you can either leave it or delete it, like you normally would on Twitter. > > - Tapping Undo sends you back to the Tweet composer where you can make changes before posting the Tweet, or deciding not to post at all. You can also select Send now to skip the Undo Tweet option and post your tweet immediately. > - You can turn Undo Tweet settings on for all or some of the [different types of Tweets](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undodifftweets) including Original Tweets, Quote Tweets, threads, and replies. > - When active, Undo Tweet displays a countdown of the time left until your default 30-second Tweet Undo period expires, and your Tweet appears on Twitter. Shorten or lengthen the expiration window to 5, 10, 20 or 60 seconds under the [Twitter Blue feature settings menu](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweetperiod). > - If you turn off Undo Tweet, you won’t see the Undo Tweet prompt. > - Read more about [how to adjust the settings of your Undo Tweet feature](https://help.twitter.com/en/using-twitter/twitter-blue-how-to.html#undotweet). By default, Undo Tweet is turned on for every single post of any kind at 20 seconds' notice. This was my very first change to the default settings ([other than the highlight color and app icon](https://twitter.com/NeoYokel/status/1459235983174639626)): I turned it off for Original Tweets, Replies, and Threads. This makes it tolerable, but still useless. [^1]: Despite the fact that Tweeting via SMS has [since been disabled](https://www.theverge.com/2019/9/4/20849865/twitter-disables-sms-text-message-tweeting-jack-dorsey-ceo-hack). [^2]: I was just… rude. Very rude. “Necessary” is not a term I’d apply to this rudeness, but… Just give me this once, is all I’d ask. #software # I Trust Telegram [file:DDDA1C36-1932-4024-B5F9-381685FF5D9D-878-00000037E25D097D/Clipboard.txt] ![Patel Clouds Theme in the Chat Background Tool](https://i.snap.as/9Bxz27ZX.png) ## How I’ve used Telegram as the ultimate cross-platform Universal Clipboard, file sharing service, and more. Believe it or not, I, too originally sought the Russian-owned, cross-platform-as-hell messaging service for “privacy” - or perhaps *solitude* would be more apt. It was in 2017, amidst the shock that the Tump Presidency was *actually going to happen* [^1], that I happened to hear about his pick for Secretary of Education, Betsy DeVos, whom had just 18 months prior led myself and some twenty thousand other poor souls in a most capitalist prayer to the Christian God for prosperity at her pyramid scheme’s ultimate “superbowl” gathering in Cincinatti. I had decided to “infiltrate” AMWAY under the ridiculous assumption that I might be able to contribute some new insight in writing critically about what I might witness. (In truth, I found my experiences that summer so utterly traumatic, existentially, that I never was able to do so.) I don’t know what consequences of her ascension to the Lord of American Schooling I expected to happen, but I was pretty hysterical about it - that is, more unhumorously alarmed about some grander world happening as I’d ever been by a long shot. For the first and only time in memory, I felt compelled to take some sort of malicious, obscured action - to organize somehow for a purpose other than to be publicly critical of this person, and to use my knowledge about digital media to the fullest possible extent to scrutinize her administration’s every movement and to be prepared, even, to take some sort of real action if she… well, I don’t know. I *didn’t* know anything, really, about anti-government organization, generally, but I was not acting rationally in the slightest.[^2] ![White Sapphire](https://i.snap.as/aNADRjvK.png) I’m bringing this up for a few reasons, and the fact that the very first digital decision of my personal hysteria was to set up a private Telegram channel is telling, though I can’t recall just how much or how little I actually knew about it at the time. I launched myself back to the channel’s very beginning (easier to do with regular URLs than in any other service I’ve ever encountered,) but was only able to bring myself to dig just long enough to grab the utterly absurd photograph above… Though I certainly did not consider myself actively *interested in automation* at the time,[^3] Telegram’s infamous bot ecosystem proved so prevalent (and accessible,) that I was able to configure at least three bots on that channel within days of first establishing it: a repeater hooked to DeVos’ Twitter account, an RSS-powered bot watching the main feed of a website set up by Senator Elizabeth Warren called [*DeVos Watch*](https://www.warren.senate.gov/oversight/devos-watch), and another republishing everything from [the Department of Education’s press releases feed](https://www.ed.gov/news/press-releases). https://twitter.com/ammnontet/status/1449594872139186181 Was any of it genuinely useful in helping me maintain *Action Readiness* in hypothetical defense of American education? Most certainly not. It was, however, genuinely *comforting* to have such diligent, automated minions keeping watch - to have a centralized, private, reliable, and purely-chronological feed of information in a super-handy location, regardless of whether or not it was usable. As I began to unconsciously integrate Telegram into my day-to-day online life on both of my PCs and my iPhone, the usefulness of my private channel for *other* applications became rapidly apparent. On iOS, not even dedicated file managers like DEVONthink are capable (or *willing* might be a more accurate term) of handling the diversity of data Telegram will happily pass on for you, *especially* through the Share Sheet. https://twitter.com/NeoYokel/status/1442554265956986882 ## Drafting I have used this “flow” so extensively for so long that it has come to define the whole of the abstract method in my muscle memory. Observe me browsing the web on my phone in an exhausted or particularly distractible state and you’d probably catch at least one or two completely irrational, inexplicable instances of sharing to my “[Saved Messages](https://telegram.org/blog/albums-saved-messages)” Telegram channel, which would be problematic for just about any other link-saving service. Add too many links to Safari’s Read Later list and you’ll end up crashing the browser on your Mac. I don’t even feel comfortable sending links willy nilly to the brilliant bookmark managing/curatorial service Raindrop, these days, after finding out that my [Reading List feed](https://raindrop.io/davidblue/reading-list-13380406) has *actual daily followers*, but there are zero consequences to sending ultimately-worthless or duplicate links to my personal Telegram channel, which has no content limit and is instantly and competently searchable. ![Send to Telegram Drafts Action](https://i.snap.as/p3K96LiX.png) Over the years, I’ve discovered a bunch of other uses for the Saved Messages channel. As demonstrated in the screenshots embedded above, the [Send to Telegram Action](https://actions.getdrafts.com/a/18E) for my writing app, Drafts, utilizes Telegram for iOS’ Universal Links support (in the format `tg://…`) to instantly send the whole text of the current document in Drafts to a Telegram channel of one’s choice. I suspect this was intended to streamline posting for admins of public channels, but I’ve used it to quickly “back up” work as well as to transfer edits directly to my (Windows-running) PC. By adding `&to=+[my phone number]` to the end of the action’s URL, I was able to remove the single, unnecessary step of choosing the destination chat. Because text messages are automatically split at 5000 characters, though, I usually depend on the [Share as Markdown File Action](https://actions.getdrafts.com/a/1V4) (the output of which I also send to Saved Messages through the Share Sheet) for the latter function. Anecdotally I’ve also used this method literally just to inspect unknown content passed to the Share Sheet because it’s often **faster than Quick Look** to share to my Saved Messages channel and then immediately open it in the app. (Hilarious, I suppose. Mostly sad, these days.) I found my inspiration for this Post in replying to a [thread on the Automators.fm Discourse forum](https://talk.automators.fm/t/equivalent-to-drafts-but-for-windows/6159) regarding a Windows equivlalent to the same Mac/iOS/iPadOS app Drafts mentioned above. I suppose my reply was a bit off-topic, in retrospect, but still worth including: > I have been using [**Telegram**](https://desktop.telegram.org/), of all things for years. Notably, if you hit Ctrl + 0 from *anywhere* in the Windows client, you and your cursor are taken to the compose field beneath your personal "Saved Messages" channel, which is searchable, has an extremely high per-message character limit (after which it just automatically splits,) and is ridiculously reliable in saving "drafts" live as you're typing. As in... I have actively tried to lose characters by killing the application and then logging in on my phone and have yet to accomplish losing a single one (among other advantages: zero formatting added to plain text by default - not even line breaks - no total file limit and *2GB* per file limit uploads, absurdly cross-platform, literally more reliable than SMS in poor network conditions.) You can immediately reenter a sent message with `↑` to edit, copy it, escape with just `Esc` and then paste to start a new revision. The feature within Telegram that makes this whole usecase worthwhile was introduced in [June, 2016](https://telegram.org/blog/drafts), and is entitled - appropriately - “Drafts.” Unlike the Drafts function in Twitter’s various native clients, for instance, Telegram’s really is impossible to fool, though it’s not perfect. [Markdown formatting support](https://telegra.ph/markdown-07-07) is inconsistent across Telegram clients - the iOS app being the most woeful - and the few keyboard shortcuts the app supports on iPad are not supported whatsoever on iPhone. ## Universal Clipboard Users familiar with the MacOS + iOS + iPadOS ecosystem should be well-acquainted with “[Universal Clipboard](https://support.apple.com/en-us/HT209460),” which instantly synchronizes clipboard content across Apple devices. More recently, Android + Windows users have supposedly had access to an [equivalent functionality](https://support.microsoft.com/en-us/topic/seamlessly-transfer-content-between-your-devices-8a0ead3c-2f15-1338-66ca-70cf4ae81fcb#WindowsVersion=Windows_10). To my knowledge, though, truly cross-platform clipboard sync has yet to be realized.[^4] As someone who’s used iOS and Windows regularly - along with Linux, occasionally - for more than a decade, now, I’d put my full weight behind Telegram as the best available solution from (far too much) personal experience. ![Security Considerations in Telegram for iOS](https://i.snap.as/Qim9gsZZ.png) When first entering a new system, real or virtual, regardless of OS, my very first step upon completion of its setup process has for years been to install Telegram, largely because all of my passwords for any/all given services are huge - 30+ characters, at least - and complex enough that typing them out is both tricky and absurdly time-consuming. Authorizing a new Telegram client, however, is as simple as entering a one-time numeric passcode or scanning a QR code. Managing logged-in sessions (see: the far right screenshot embedded above) is quick, reliable, and includes a handy button to kill all but the current session. Thanks to these considerations, I feel quite comfortable sending myself passwords in Telegram, including .csv exports of whole password vaults, when it’s appropriate, even when working on systems I do not own. For this function, I can’t think of any other service/software capable of replacing Telegram. For day-to-day hyperlink sharing across my platforms, a variety of alternatives continue to come and go. The “Send to [device]” features represented throughout the palette of available web browsers - Firefox, Opera, Edge Chromium, Chrome, etc. - aren’t exactly reliable, in my experience. Most recently, I discovered a service specific to Hewlett Packard machines called “[QuickDrop](https://www.hp.com/us-en/solutions/quickdrop-photo-sharing-app.html),” which - along with [its accompanying iOS app](https://apps.apple.com/us/app/hp-quickdrop/id1495071972) - does indeed allow me to send files, links, and text between my iPhone and Big Boy HP tower, though even my brief testing was filled with inexplicable prompts to reauthenticate and intermittent hangups, neither of which lend easily to regular use. I still maintain high hopes for [Snapdrop](https://snapdrop.net/), which allows devices to share files and text over a *local* network from within any web browser, but it, too, is prone to frustrating hangups. ![Drake Telegram Joke](https://i.snap.as/2YhRCO0I.jpeg) ## File Transfer & Cloud Backup Amidst the saga of my failed move to Portland spanning 2017-2019, I ended up losing *all* of my physical file storage - my old desktop and its hard drive, as well as 3 external drives containing a bunch of raw video I probably wouldn’t have gotten around to using, anyway, site backups for *Extratone*, and who knows what else. This loss taught me many grand, metaphysical life lessons (I hope,) but more practically, it affirmed a (admittedly gluttonous) truth about digital assets: if one truly wishes to make a file permanent, they must back it up in as many different places as possible.[^5] Perhaps the single most durable of these in my own computing life to date has been Telegram, which still has no per-account file upload limit and a per-file size limit of *two gigabytes*. The amount of pre-2019 work I’ve recovered solely thanks to Telegram is too great to enumerate here, but a rough draft of my [2018 Thankful for Bandcamp Mix](https://pod.link/1437549809/episode/626a66d3f37807b69c59f56faa4d3b94) comes immediately to mind. How exactly the service is able to maintain this virtually unrestricted storage, infrastructurally, borders on *don’t want to know* status. My own net server impact as a user is fairly difficult to estimate, but I’d bet real paper currency it’s between 50 and 100 GB, the vast majority of which I uploaded several years ago. Within any mainstream cloud file storage service - Dropbox, Google Drive, Box, iCloud, etc. - the cost of storing that amount *over time* would have added up to a not-insignificant chunk of change. I don’t want to advocate for Telegram as a cloud storage replacement for loaded cheapskates, but for working-class users on a $0 budget, it can be counted upon to keep large files in a relatively shareable, ultra cross-platform, and super-accessible manner. Students, especially, should take note. ![Local Visibility and Voice Notes Publishing in Telegram for iOS](https://i.snap.as/jfBVJqyw.png) ## Community At this point in my life, I must acknowledge to both readers and myself that **I am completely inept at community organization**. Especially when it comes to grand suggestions about how I suppose online communities might be ideally-run or just better served by particular software environments and configurations, I have literally received *zero* positive feedback, and not because I haven’t spent significant time positing publicly within the space. I spent the first half of my twenties trying to Peter Pan an independent online music magazine into existence, written by fresh-minded youths on the fringe at 140% throttle and managed to accomplish startlingly little for my all my invested time and gumption. The relevant component of that tale was a significant and all-out commitment from the beginning to run the whole project entirely within Discord. The one absent activity throughout my years of Telegram use - save for intermittent correspondence during one relationship - has been *messaging other users*. I managed to find and participate in a few group chats - “[Telegram iOS Talk](https://t.me/TelegramiOStalk)” and [*It's FOSS*' official channel](https://t.me/itsfoss_official), notably - in my preparation/research for this post. I’ve discovered plenty of new clever bits, like the button to jump to one’s nearest mention in a chat. I’ve also done my best to actually apply some [much-needed administrative attention](https://t.me/columbiamo/7774) to [my years-old attempt](https://reddit.com/r/columbiamo/comments/c4na0v/local_telegram_group_chat_for_columbia) at creating the [definitive location-based local group chat](https://telegram.org/blog/contacts-local-groups) for the Mid-Missouri area where I live. Truthfully… It [hasn’t exactly gone as I’d hoped](https://reddit.com/r/columbiamo/comments/q0843f/local_telegram_group_chat), but the failures have been all my own. I have yet to find a satisfactory balance in terms of moderation bots, so I’ve (as of this writing) resorted to manually removing the (significant) spam bot traffic by hand. Also, I must admit that I’ve never had to do so more than once or twice on *Extratone*’s public Discord, despite how much more circulation its public, open invite links have received. In the past few weeks, I’ve had the privilege of watching *MacStories* relaunch their premium membership program, *Club MacStories*, on their incredible bespoke CMS. Part of this launch included their first exclusive community space, on Discord, which has been deeply rewarding for me, personally, but has also highlighted some serious limitations of that service which I not-so-long-ago [advocated so heavily for](https://bilge.world/discord-slack-comparison). Namely, **hyperlinks to specific messages** within Discord are a hopelessly problematic endeavor. Even for a public server like *Extratone*’s, navigating to a message link [like this example](https://discord.com/channels/107272441889341440/107272441889341440/893958033401593898) will require any and all users to log in to Discord on the web, which - on mobile devices, especially - seems to struggle to navigate to the precise position of the subject message after you’ve successfully done so. Slack’s public message links are smart enough at least to prompt users to open them Slack for iOS, but Telegram’s system for message links in public channels and groups makes both services look daft. Telegram message IDs are purely chronological from their channel/group chat’s creation - the first message in a channel or group chat is `1` and the 15th is `15`. Together with the simplicity of channel/group chat IDs, which are just their alphanumeric @ names, this format makes URL schemes for Telegram message links super malleable and easy to understand. The sixth message posted in the [@extratone channel](https://t.me/extratone), for instance, can be found at [https://t.me/extratone/6](https://t.me/extratone/6), which even those without Telegram installed can view natively within their web browser. Within Telegram clients, said links are ultra-responsive, regardless of whether or not one had previously “joined” the channel or group containing the message. ![Orange Noir Telegram Theme by Valespace](https://i.snap.as/moymK7EY.png) In *MacStories*’ case, there’s another essential point of reference. When I pinged the staff in their Discord regarding their experiences running [their now-abandoned Telegram channel](https://t.me/MacStories), John Voorhees replied: > I don't really have anything to say about Telegram one way or the other. We ran it for a short time 5 years ago as an experiment and it didn't stick. I wasn’t yet a subscriber in those days, but little details like [behind-the-scenes voice messages](https://t.me/MacStories/281) are definitely missed. [Federico’s initial audio introduction](https://t.me/MacStories/39) describes a potential for the channel I wish more readers had enjoyed. They’re much more intimate, even, than the publication’s new exluclusive Town Hall events on Discord, which doesn’t make much sense, I know. ![Live Streams and Video Chats](https://i.snap.as/v1zhWmwN.png) ### Streaming Admittedly, another attention-grabbing feature that contributed to my finally getting around to this Post was [the introduction of "Live Streams" for channels and groups](https://telegram.org/blog/live-streams-forwarding-next-channel) (really just a slight augmentation of their ["Voice Chats 2.0" features](https://telegram.org/blog/voice-chats-on-steroids)) at the very end of this past August. Discord, of course, was way ahead of Telegram in implementing Voice Chats and Screen Sharing [back in October of 2017](https://youtu.be/mMloc55o1jc), and it's long since become one of the services' core features. However, *recording* live content of any kind is not natively supported, though there is a [handy utility bot named Craig](https://craig.chat) who can accomplish this for you. For the sake of transparency, I should admit that not a single one of my live streams on Discord has actually included any viewership, but I have participated in a handful of others’ and viewed a couple dozen. https://twitter.com/NeoYokel/status/1448837428534521858 For the past few months or so, participating in any sort of voice or video chat in Discord desktop has led to [a spectacular relaunch loop](https://twitter.com/NeoYokel/status/1448837428534521858) that can only be solved by reinstalling the application, entirely.[^7] It’s not that Discord for iOS’ now full support for such streaming - both in terms of participation and simple viewership - isn’t impressive, but honestly, *Telegram* for iOS’ superiority should be immediately obvious to anyone who’s tried them both, recently. Not just in pure capacity’s sense, but in moderation tools, shared link customization, and, obviously, native recording support. I’ve embedded two recordings of different test streams of mine, below. [The first](https://t.me/extratone/7054) (embedded in [YouTube form](https://youtu.be/uhXZZBl0fn8),) was streamed from both my Surface Laptop 2 and iPhone 12 Pro Max. https://www.youtube.com/watch?v=uhXZZBl0fn8 [The second](https://t.me/extratone/7196) is a very brief recording (in native form [directly from *The Psalms*’ GitHub Repo](https://github.com/extratone/bilge/raw/main/video/TelegramiOSLiveStreamTest.mp4)) of a stream I did *just* from the share screen function of my phone, in the wrong orientation.[^8] Below is a screenshot of the recorded file’s metadata (as provided by Telegram for Windows.) ![Telegram Live Stream Meta](https://i.snap.as/oDQqSYHF.png) As you might note, there’s definitely something to be desired from the quality of Telegram’s stream recordings, especially in its included audio. I find it a bit strange that it’s recorded in 48 kHz just to be compressed down to *46kbps*. When you’ve stopped a recording, you’ll receive both the video file and just the extracted audio in an .ogg file. Unfortunately, the latter is no less compressed than it is combined in the video file. (Both are sent to one's Saved Messages channel immediately upon stopping a recording, from where they can be forwarded virtually anywhere.) Aside from a boost in audio quality, though, Discord’s default 720p base resolution is matched by Telegram. Via server boosts, this figure can be upgraded significantly, though the end result is quite costly. According to [a not necessarily trustworthy site](https://clutchpoints.com/discord-server-boost-cost/), accounting for Discord’s [recent reduction in boost requirements](https://www.facebook.com/discord/posts/4524749577592737), here’s the pricing laydown to boost a server (per month:) > …a total of $34.93 for Level 2 and $69.86 for Level 3. That’s $24.45 for Level 2 and $48.90 for Level 3 for Nitro subscribers. Among quite a few other abilities, here are the extracted audio/video requirements per server level **only**: 1. 128kbps audio/720p video upped to 60fps 2. 256kbps audio/1080p 60fps video 3. 384kpbs audio/no video boost So, if I had the spare change to maintain a level 2 boost for *Extratone*’s Discord server, myself, I could do so for $34.93 per month, which would allow me to *stream* (not necessarily *record*) in 1080p/60fps video and 256kbps audio to up to [50 viewers](https://support.discord.com/hc/en-us/articles/360040816151-Go-Live-and-Screen-Share) (as of this writing.) Theoretically, at no cost, I can stream with virtually identical features (though I prefer Telgram's) to my Telegram channel to [infinitely many users](https://telegram.org/blog/live-streams-forwarding-next-channel#unlimited-live-streams) in 1280p/30fps with absurdly low-quality audio and share/manipulate recordings natively/instantly from within any Telegram client. If I were All Powerful, I would make all the members of my "[Family Tech Support](https://bilge.world/ios-15-family-review)" iMessage group install Telegram on their devices so we could use it, instead. I would also make them collectively attend occasional live streams, where they could ask questions verbally of my demonstrations sharing my own screen, or even share their own screens to demonstrate an issue or provide context for a question. The reality, though, is that I do not expect any sort of anticipation for my personal live help events on any platform, which innately suggests Telegram over Discord, I'd argue, for when I *do* stream such content, given its total lack of investment.[^9] ![Location Sharing in Telegram for iOS](https://i.snap.as/FRj5GGPN.png) ### Location Sharing One of Telegram's most unique (and potentially powerful, I believe) community features is [Live Location Sharing](https://telegram.org/blog/live-locations) on its mobile apps. Borned by Siberian native developer [Roman Pushkin](https://twitter.com/romanpushkin), LibreTaxi is the single truly exciting open ridesharing alternative I've ever encountered.[^10] As [an item for *CBC radio* from 2015](https://www.cbc.ca/radio/spark/346-biometrics-audio-intelligence-and-more-1.3987746/the-man-who-wants-to-out-uber-uber-1.3987987) (among other assorted coverage compiled [here](https://telegra.ph/LibreTaxi-press-coverage-07-14) as of July, 2017) explains, it utilizes Telegram's live location sharing functions to act as a decentralized Uber/Lyft alternative in the form of [a bot](https://telegram.me/libretaxi_bot), which connects users needing a ride with users providing them, free of any fees or service charges. Discourse surrounding LibreTaxi has been silent for years, but [this channel](https://t.me/s/libretaxi_all) tracking all LibreTaxi orders in realtime is proof that it *really is* helping folks get around. * As for the persistence of *Live* location-sharing, I can vouch for its reliability on the Android side, at least, as per my aforementioned experience with a partner who used Telegram and shared their location with me for both safety and convenience. As someone with the most immense possible privilege regarding safety and dating, I would also like to suggest sharing one's live location with a private Telegram group chat with friends as an alternative to service's like [Tinder's Noonlight](https://www.help.tinder.com/hc/en-us/articles/360039260031-What-is-Noonlight-). ![Chat Export in Telegram Desktop](https://i.snap.as/TbPFRPnG.png) ### Permanence I've long evangelized (and extensively used) Alexey Golub's [Discord Chat Exporter](https://github.com/Tyrrrz/DiscordChatExporter) to make beautiful, stylized archives of Discord channels and/or entire servers for safekeeping. Telegram's native [Chat Export Tool](https://telegram.org/blog/export-and-more) came just a year after Alexey pushed [version 1.0 of the tool to GitHub](https://github.com/Tyrrrz/DiscordChatExporter/releases/tag/1.0.0), in August of 2018. In features, they're very similar utilities: both can export in either stylized HTML or data-only JSON formats between infinitely-configurable time/date constraints. Again, I wouldn’t know how much external backup of community activity actually weighs in the day-to-day operations of large online communities. I know I personally find it comforting to have a swift, polished method of exporting *text*, especially, living in this era of [blatant disregard for users of suddenly-abandoned online services](https://github.com/extratone/bilge/issues/79). ![TG Colors](https://i.snap.as/r0WpvFQr.png) ## ~~Transparency~~ Opacity One of my primary justifications for the time spent in composing this Post has to do with the immediately-available discourse surrounding Telegram on the web, which is wholly incomplete, at best. The main obstruction, from my perspective, is the subject of **encryption**. Even within publications as legitimate and frankly out-of-scope as *Forbes*, one can find an article like my chosen example, from February of this year, entitled "[No, Don’t Quit WhatsApp To Use Telegram Instead—Here’s Why](https://www.forbes.com/sites/zakdoffman/2021/02/13/why-you-should-stop-using-telegram-instead-of-whatsapp-use-signal-or-apple-imessage)." It was written to address a mass "[exodus](https://www.theguardian.com/technology/2021/jan/24/whatsapp-loses-millions-of-users-after-terms-update)" of users from WhatsApp after [a grandiose misunderstanding](https://www.theverge.com/2021/1/12/22226792/whatsapp-privacy-policy-response-signal-telegram-controversy-clarification)(?) of its Privacy Policy caused a noisy controversy ([catalyzed by Idiot Melon, himself](https://twitter.com/elonmusk/status/1347165127036977153).) I've been unable to find the added/altered text, itself, in my brief reading, but it's not as if the happening wasn't thoroughly covered elsewhere. It's not that I doubt the expertise of "Cybersecurity Expert Zak Doffman" when he notes "Telegram’s cloud-based architecture is a serious risk when compared to the end-to-end default encryption deployed by Signal and WhatsApp, which also uses Signal’s protocol," nor that I do not believe the following details are as true as truth gets: > All group messages on Telegram are only encrypted between your device and Telegram’s cloud, your message history is stored on Telegram’s cloud, and if you ([unwisely](https://www.forbes.com/sites/zakdoffman/2021/01/30/stop-using-this-dangerous-whatsapp-setting-on-your-apple-iphone-or-google-android-phone/)) transfer your WhatsApp chat history to Telegram, then this is also stored on its cloud. Make you sure understand that Telegram has the decryption keys to any of your data that you store on its cloud... To this argument and the many variations of it present in Telegram for iOS' [App Store reviews](https://apps.apple.com/us/app/telegram-messenger/id686449807), [obscure German PeerTube servers](https://tube.tchncs.de/w/2d958ef9-1be4-477c-bc13-852ec6391487), and even within [public chats on Telegram, itself](https://t.me/crackheadlegit/409), my formal response for the record is: *Okay! Affirmative! Received and understood!* I must acknowledge - given my own introduction to the service, narrated above - that Telegram's brand is vaguely associated with privacy and security. I can see that the second of nine duckies in the Ducky Grid on the root of telegram.org sits above the subhead "**Private**" and a caption with the following claim: "Telegram messages are heavily encrypted and can self-destruct." (The seventh ducky's subhead is "**Secure**.") Continuing on in Doffman's *Forbes* article, we find an overview of several vulnerabilities found throughout Telegram's native clients by Dhiraj Mishra - surely they with the most ghastly typographical preferences in all of cybersecurity - on their blog, *Input Zero*.[^6] The [specific example hyperlinked](https://www.inputzero.io/2020/12/telegram-privacy-fails-again.html) concerns a bug in the MacOS client that resulted in "the application leak[ing] the sandbox path where [a sent audio or video message] is stored in '.mp4' file." (The whole of the ghastly-typewritten summary is embedded below in screenshot form.) ![Telegram Privacy - InputZero](https://i.snap.as/a0xgY5cJ.png) Just to be clear, I am being sincere when I acknowledge that these are genuinely problematic issues that no doubt affected real Telegram users who depend upon its Secret Chat function. Even something so benign as the file path to local media storage on my device is not something I'd want piggybacking my otherwise-anonymous, NDA- and/or law-breaking messages to a journalist, for instance, but frankly, I don't know of any journalists who maintain public Telegram contacts, anyway. Come to think of it, I don't think I've *ever* seen a Telegram username publicly associated with a journalist. Indeed, the overwhelming majority of anonymous modern messenger service tip lines advertised by news organizations and news people which I've come across have all linked to Signal. In this particular case, then, Mr. Elon’s advice is sound. The question I would like to surface: **what if I have no use for encryption or privacy across my purposes for Telegram**? *All* the channels I have ever engaged with have been public, and those private ones I’ve come across have either been shady crypto spam channels or shady porn channels. I realize this doesn’t exactly reflect positively on Telegram’s community, but - as I argued regarding Discord, long ago - why let the community or even the app’s branding, itself, confine how you use it as a utility? ## A Hearty Foundation My thinking while drafting this argument kept returning to a single, simple realization: **in age, Telegram is just two years ahead of Discord**, yet the various software distributed by the two organizations for their respective services represent quite disparate opinions in design terms. [Discord's desktop "application"](https://discord.com/download) is an Electron app - [Telegram's](https://github.com/telegramdesktop/tdesktop) is virtually pure C++. [Telegram's iOS app](https://github.com/TelegramMessenger/Telegram-iOS) is mostly written in Objective-C (I'm to assume the 30.8% Swift code number on the repo as of this writing is mostly comprised of its widgets/other recent iOS-specific integrations,) while Discord's is mostly ???. That is, because Discord's software is proprietary and the source is closed, all I can tell you is that it was written in React Native [as of December, 2018](https://blog.discord.com/why-discord-is-sticking-with-react-native-ccc34be0d427). What I *can* tell you is that the current build of [Discord for iOS on the App Store](https://apps.apple.com/us/app/discord-talk-chat-hangout/id985746746) weighs in at 153.2 MB - significantly less than [Telegram's](https://apps.apple.com/us/app/telegram-messenger/id686449807) 185.1 MB. As I've noted plenty of times this year, **I am not a software developer** and therefore I can't promise you an app's initial payload size is actually all that relevant, but I was surprised to see Telegram wasn't slimmer than Discord, given how the two apps behave and my previous experiences with the platform, this year. ![Storage Management - Telegram for iOS](https://i.snap.as/BecGI6kg.png) Returning to the topic of their age… In its eight operating years, Telegram has embarked upon - and *actually completed*! - a gargantuan amount of projects. [Telegraph](https://telegra.ph/), the CMS, its [Web](http://web.telegram.org/), [Android](https://telegram.org/android), and [Linux](https://itsfoss.com/install-telegram-desktop-linux/) clients, [embeddedable comments widgets](https://comments.app), its [online theme creation tool](https://themes.telegram.org/), and on and on. Across their various types, Telegram’s software is universally simple, frugal, robust, and easy-to-use. Frankly, by contrast, Discord has done *nothing*? Though you’ll find openly-available solutions to accomplish much of what you can on Telegram in terms of moderation and other utilitarian concerns, like the aforementioned Craig bot, they are *all* the work of third-parties. While Discord the *company* is much more [transparently profiled](https://discord.com/company) on the web than “Telegram FZ LLC,” the latter’s actual work is very well documented [across GitHub](https://github.com/TelegramMessenger). ![Telegram Desktop in Windows 11](https://i.snap.as/DFQzGGeZ.png) If you’ve stuck with me this far, perhaps it’s not too much to ask that we retreat a bit and ask ourselves **what we’d truly like prioritized in community chat software for 2021**. I really do show my age in my bias, here, as someone just old enough to have had extensive experience using IRC,[^11] I think there’s a less-than-adequately discussed division happening which its successors might benefit dwelling on. IRC was extremely frugal and it was easy to find a freeware or FOSS IRC client for one’s given platform which was well-optimized to sit in the background of their desktop operating system, completely untouched and barely acknowledged visually for days… weeks… months at a time. It was easy to find oneself a member of a dozen or so IRC channels for specific interests, projects, or organizations averaging a dozen or so actual updates/pots per day, each. It was distinctly low pressure - many of my channel memberships functioned more like a wire service or, much more contemporarily, like an RSS aggregator, than a local party line. ![Telegram for iOS Sharing and Notifications](https://i.snap.as/FltrCV6Z.png) As I see it, the ultimate shift dividing those solutions from these is the big fucking obvious one: IRC was conceived in a world where computers were mostly static objects associated by their intended use and physical dimensions with the referential, unmoving waypoints around which *we* orbited (the kitchen counter, the desk in your study at home, parallel series of workstations within the public library, etc.) The *entirely* contrasted needs of community engagement on a *handset* should have - in my opinion - done much more to break apart these communal contexts than they have. As prolifically and extensively as I have used Discord for iOS since before its official release, even, it is hopelessly compromised by its loyalty to the PC gamer’s paradigm. My 12 Pro Max is not just *capable* of keeping 100 Discord channels up-to-date in the background as I move about the world - it is all too fucking *eager*, and for not a one rational explanation. Going on down this vector eventually leads to an adjacent argument I’ll name but otherwise save for later: it is literally **over a decade** past the time when we should have ceased celebrating the fact that mobile computers had matched and outdone desktop computers! We have to snap the fuck out of our obsession with lugging desktop computing alongside our persons and refocus entirely (once again) on exploring what “mobile computing” can/should mean, going forward. Please Gourd, help us do so ASAP. Unlike my heroes in most (if not all) of these tedious comparisons, I would *not* say Telegram is *the single software manifestation of total clarity in direction* within the subject, or anything, but in the area where it fails along with the rest of them, it has comprehensively iterated, invested in trial and error, and eventually produced tools that remedy the disparate gluttony. How swiftly and easily one can find one's installation full of media files, for instance, after *any* time spent exploring within its mobile apps. It very well could have been mostly chance that contributed to Telegram's current lead in terms of thoughtful design decisions and development investment toward **mobile-first optimization**. Perhaps it was their comparative longstanding Hype Famine, especially in the United States, these past few years. Maybe Discord hasn't built anything because they simply can't hear each other over the buzzwords overflowing their name in mainstream Discourse so abruptly thanks to The Big Virus. Telegram's story certainly *stands out*, though the voice of its creator, Pavel Durov, actually *telling* this story at length can now only be found [on *WIRED UK*'s MixCloud account](https://www.mixcloud.com/wiredUK/telegrams-pavel-durov-podcast-256), in [episode 256 of their *WIRED Podcast*](https://www.wired.co.uk/article/episode-256). Telegram was experiencing the peak of its presence in mainstream Western news media, who just *would not* let go of the fact that some leader of some terrorist organization recommended Telegram to someone for something at some point in time.[^12] Listening back, it's the nomadic "decentralized" beginnings of the organization - which I had forgotten entirely - which sounded a big, resonant Parallel Alarm in my brain: for very different reasons, [Bandcamp also operating without an office](https://bilge.world/bandcamp-streaming-music) (from a public library, charmingly,) at that time. --- "Can there only be one winner in the messaging wars?" David Rowan, to which Pavel - in the deliberate, uncomfortable-sounding tone he uses throughout the interview - responds by first noting a *real truth* for actual users: we tend to end up with a billion, each grouped generally by types of relationships. ------ [1] I still have not accepted this, by the way. I’m still back there. [2] If I were to be 100% sincere, I might ask you to consider that this (hilariously brief) intent was a method of coping with the great existential truths I was facing for the first time. [3] I *definitey* was, though. For whatever reason, I do not remember associating the term “automation” with such activities, but I just found the “receipt” for my “purchase” of [IFTTT for iOS](https://apps.apple.com/us/app/ifttt/id660944635)… From July, 2013. [4] I am currently working on a less-than-instant solution using iCloud and CopyQ’s clipboard sync function. [5] I would’ve said “one can never have too many backups,” but the result of such thinking is ridiculously wasteful and not something I actually want to encourage. [6] I'm almost positive I've heard of/been linked to this blog before, which is perhaps only notable in that I managed to keep my typographic opinions to myself. [7] Not that the process of doing so could be any easier on Windows. [8] It’s also worth nothing that [word of screen sharing framerate issues](https://t.me/TelegramiOStalk/104997) was circulating at the time of this recording. [9] Simulcast services like [Happs](https://happs.tv/@DavidBlue) - which still exists, astonishingly - offer an intriguing utility for those intending to stream regularly and wishing to do so across multiple platforms. It does not, at the moment, support either Telegram or Discord. [10] Speaking as someone with [actual extensive ridesharing experience](https://dieselgoth.com/volkswagen-jetta-sportwagen-tdi-review.html), notably. [11] Yes, there are some fellow Open Source Folks who’ve frankly struggled to let IRC go. It was an amazing protocol and will always be intertwined with the very first layed bricks of what we’d call the Social Web, but my friends… I sincerely think we should all try our hands at ham radio, instead. I think that would legitimately be a better use of our time than trying to implement two-factor authentication for IRC in this year of our spiteful Lourde 2021. [12] Disparaging Telegram for this is akin to shitting on Google because it is or was almost certainly the Taliban's favorite search engine, no? #software # “Music Taste Through Generations: Boomers’ Destructive Generational Tastemaking Disaster”" ::Created: Oct 7, 2020 7:55 PM:: Quote From [the Bandcamp Essay](https://bilge.world/bandcamp-streaming-music) It’s bewildering how content we are to abruptly abandon the substance music had to our teenage selves out of misconstrued justifications for our classic fainéance – actively choosing to subject our public ambiance to thousands of replays of “the best” records in favor of dipping even the most cowardly toe into unfamiliar waters, even when the opportunity cost is inherently halved – only to then have the audacity to evangelize our dilapidated conceptions of “good music” to our children as we demonize the music of their generation, depriving them of a very essential rite of their cognitive development. I can think of little more reductive, repugnant, reckless, or racist crusades as a model figure than indoctrinating your child with an inherent distaste for their own culture, and nothing more deeply alarming to hear from the mouth of someone born in the 21st century than shit like “Queen was better than any rapper will ever be,” or “real musicianship will die forever with Eric Clapton.” It’s unfair and unnatural: imagine if your high school classmates had consistently turned up their scrunched nose at the living whole of rock & roll, declaring Scott Joplin to be the last musician they could stand. Consider if the industry-wide customer experience standard for the musical ambiance in 1970s American eating and drinking establishments was entirely comprised of works by John Phillip Souza, and the most prevalent cultural revolution manifested itself something like the following: In countless popular films set in the time (and the stories told today by your parents of their youths that informs them,) a group of popular high school boys – generally three longtime childhood friends and a single addition from the previous summer with an Army Dad and a moderate bad boy aura that’s made him one of the school’s notoriously attractive students and the somewhat-abusive leader in the pack. After spending some time trying to convince the other three (the crucial moment for his case being the bad kid’s rare moment of sincerity trope) of its guaranteed social, sexual and financial ROI, they seal their agreement to start a band with a four-way saliva slap. Imagine if in the progression of this exhausted old tale, it remained entirely classic (and boring) when it faded to a “THREE MONTHS LATER…” ceiling shot of the four the in full, gleaming, performance-spec get-up of the presidential marching band in their garage, and it was revealed that they’d they practiced “The Star Spangled Banner” every night just to make the girls swoon in the film’s resolution with an encore of “America the Beautiful” at an unsanctioned (and very patriotic!) house party. Would you have made out on your first date with someone in your 80s high school Chemistry class after they’d was about but suffice it to say that it’s absolutely fucking bonkers how often I encounter “Sweet Home Alabama” (and other tunes I’ve already heard hundreds of times throughout the first third of my existence, conservatively) dripping down from the overhead speakers in all manner of big retail stores, where it’s inappropriate and unwelcome. Even from the generous assumption that every single one of them is an objective masterwork of composition, the amount of affection the American music listening audience has for the same 500 singles is on par with our rampant gun violence in terms of our unanimous tolerance for ridiculously illogical habits. I’ve been sitting in a cute, moderately trendy coffee shop on the corner of the major avenue of access to my cute, moderately trendy Portland neighborhood for an hour now, and I’ve recognized every single one of the tracks played just a bit too loudly on the stereo. I’ve been sick of them all since Middle School. That one Bow Bow Chicka Chicka thing… How very charming. “The 70s, the 80s… the one-hit wonder channel!” Contrary to the popular hipster narrative we’ve just defeated, it’s not the popularity of the lineup that makes these experiences so distasteful, but their regularity. It doesn’t take a doctor of psychology to observe that tireless exposure to any given work of art inevitably erodes its value, yet we continue to expend resources saturating most mundane spaces in our society with an unyielding regurgitation of the same brackish pop culture symbols as if we’re trying to either induce a canonical vomit, intentionally obliterate the Yelp! reviews for a distant future museum’s “North America Enters the 21st Century” exhibit, or both. This issue is not unique to American society nor to men, really, but is entirely the sickness of white boomers and gen Xers. It is an anomaly that has genuinely and profoundly perturbed me for virtually the entirety of my existence as a culturally literate entity - certainly longer than any of the other disturbances addressed in this volume. * The process of jazz becoming mainstream (which I think it had definitely by the 1940s.) * “Boomers’ Destructive Generational Tastemaking Disaster” # Vanity for Good Chapter: 3 Created: Nov 1, 2020 6:20 PM ## Instead of Elon Musk, Jon Male is your hero... --- # Tesla [image:1D6D5AD7-BA9D-4B6C-9B71-A63E7F793B21-2055-0000005F847DE927/Untitled.png]Vanity%20for%20Good%20a57a3dc04de84f258c844faf3d4c33af/Untitled.png [How Elon Musk Turned Tesla Into the Car Company of the Future | WIRED](Vanity%20for%20Good%20a57a3dc04de84f258c844faf3d4c33af/Chapter%203%20References%20b4c5a616d7524b2a807cb5e320c87082/How%20Elon%20Musk%20Turned%20Tesla%20Into%20the%20Car%20Company%20of%20e57d045c58924ad6b397e95199f3296a.md) The fact that Tesla was handed **half a fucking billion dollars in public** money after only **a single year** and having only produced ~1300 little electric Lotus sports cars is absolutely # Notes-Twitter Blue Review ## General Notes - [ ] Bookmark folders don't function on Desktop??? - [ ] Configurable Navigation is great, but *make Home removable*! - [ ] I absolutely love continuing to see ads. - [ ] Lists Discovery (sortof separate) helped me catch a few accounts/friends I assumed were on The New List uhhh for years??? - [ ] “These features should be available to everyone” is the recurring sentiment among the commentary I’ve found so far. - [ ] All Twitter Users are Power Users. - [ ] **Stop talking about this bullshit like it’s unavoidable**. - [ ] [**POST QUEUE**](https://twitter.com/NeoYokel/status/1460486229800230914) - An actual poweruser feature that cannot be found in *any* Twitter client aside from the PRO tools. - [ ] It just occurred to me that the app has not randomly logged me out since I paid for Twitter Blue. ``` ``` - [Twitter Blue · Issue #269 · extratone/bilge](https://github.com/extratone/bilge/issues/269) - [Telegram Thread](https://t.me/s/extratone/8134) - [Twitter Topic/Collection](https://twitter.com/NeoYokel/timelines/1459236827248967690) - [Twitter Feedback: Bluetooth Keyboard Support x Custom Navigation *on iPhone*.](drafts://open?uuid=E25B0B9C-9463-4B76-B6A1-CC8E36A0F34F) - [Annotation on Eugen Interview](https://hyp.is/znp7tEQJEeySOXvhkqI2DQ/bilge.world/eugen-rochko-interview) - [Twitter Blue Publishers - Twitter List](https://twitter.com/i/lists/1448014243245150209) ## Tweets - [ ] [Avery on threader absorbtion](https://twitter.com/echoesremained/status/1460391960536096771) - `https://twitter.com/echoesremained/status/1460391960536096771?s=21` ## Videos 1. [Survey](https://twitter.com/NeoYokel/status/1459232262986379265) 2. [First Pokes Around](https://twitter.com/NeoYokel/status/1459235983174639626) 3. [`⌘ + V` to open Twitter link](https://twitter.com/neoyokel/status/1460658848914673671) ## Images - [ ] `![Twitter Logo 2021](https://i.snap.as/aGCRJeUq.png)` - [ ] `![Twitter in Jorts Dock, 2021](https://i.snap.as/zp5uCNwa.png)` - [ ] `![Ad-Free Articles in Safari - Twitter Blue](https://i.snap.as/7RBw18tJ.png)` - [ ] `![Pinned DMs - Twitter Blue on iOS](https://i.snap.as/8aFbZdVQ.png)` - [ ] `![Custom Navigation - Twitter Blue on iOS](https://i.snap.as/hu2p7mN2.png)` - [ ] `![App Icons - Twitter Blue for iOS](https://i.snap.as/vNO1FH8h.png)` - [ ] `![Twitter Blue Brand Image](https://i.snap.as/F4AODRKo.png)` - [ ] `![Thread Reader - Twitter Blue for iOS](https://i.snap.as/SAYPlThr.png)` - [ ] `![STOP](https://i.snap.as/RLAwI1K4.png)` - [ ] `![Voice Tweets in Thread Reader - Twitter for iOS](https://i.snap.as/1ia6xNyv.png)` ## Tweets - `https://twitter.com/neoyokel/status/696094018862718976` - Start of thread/poll: `https://twitter.com/NeoYokel/status/1459223941575319557` ## References - [ ] [**Twitter shouldn’t be hiding basic app improvements behind its Blue paywall**](https://www.theverge.com/2021/11/14/22778827/twitter-blue-undo-button-paywall-features-paid-free) - [ ] [Twitter smarter, Twitter harder with Twitter Blue](https://blog.twitter.com/en_us/topics/product/2021/twitter-smarter--twitter-harder-with-twitter-blue) - [ ] [I tried Twitter Blue so you don't have to — here's what I found](https://www.androidcentral.com/i-tried-twitter-blue-so-you-dont-have) | *Android Central* - [ ] [Twitter Blue Is Now Available. Here's Why We Hate It...](https://www.makeuseof.com/twitter-blue-available-why-we-hate-it/) | *MakeUseOf* Damn MakeUseOf… lol - [ ] [Where the Intention Economy Beats the Attention Economy](https://blogs.harvard.edu/doc/2021/10/04/where-intention/) | Doc Searls - [ ] [Twitter Blue’s Nuzzel-like top articles summary has arrived for iOS](https://www.theverge.com/2021/11/15/22783594/twitter-blue-nuzzel-top-articles-ios-arrivial-top-articles) | *The Verge* - [ ] [Tony Halle interviewed about Twitter Blue](https://megaphone.link/VMP7301782835) | *Recode Media* - [ ] [Twitter disables tweeting via SMS after CEO gets hacked - The Verge](https://www.theverge.com/2019/9/4/20849865/twitter-disables-sms-text-message-tweeting-jack-dorsey-ceo-hack) - [ ] [Twitter turns off its original SMS service in most countries - The Verge](https://www.theverge.com/2020/4/27/21238131/twitter-sms-notifications-disabled-jack-dorsey-hack) - [ ] [Twitter quietly deletes millions of accounts from the old text message days](https://mashable.com/article/twitter-sms-changes-account-removals) | *Mashable* - [ ] [Twitter brings back UK SMS; Vodafone first, others to follows](https://www.theguardian.com/media/pda/2009/mar/27/twitter-socialnetworking1) | *The Guardian* (2009) - [ ] [‎Waveform: The MKBHD Podcast: Sony Xperia Pro-i, a USB-C iPhone, and Twitter Blue! on Apple Podcasts](https://podcasts.apple.com/us/podcast/sony-xperia-pro-i-a-usb-c-iphone-and-twitter-blue/id1474429475?i=1000541583420) - [ ] [‎Waveform: The MKBHD Podcast: Twitter Blue and WWDC! on Apple Podcasts](https://podcasts.apple.com/us/podcast/twitter-blue-and-wwdc/id1474429475?i=1000525031067) ### Better Tweetdeck Configuration ![My Better Tweetdeck Configuration - 11-12-2021](BetterTweetdeck11-12-2021.png) `https://gist.github.com/extratone/a4dd8bb4fe1f1a8891993a9e4b3532da` #i # Drafts Keyboard Shortcuts ``` 06-23-2021 22.52.482021-09-23-01.48.36 `27.0.11` ``` - Embed