iOS Feedback Assistant on non-beta iOS – accessing & visibility

The Feedback Assistant iOS app is visible and acts like a normal app on beta builds of iOS, but it’s hidden in release versions of iOS. On release builds the app icon is hidden on the Springboard/Home screen, it doesn’t come up in Spotlight searches, Siri can’t find it, and the process is hidden in the process switcher if you do get it launched.

The magic incantation to make it visible on release builds of iOS is to enter:

applefeedback://inbox?make_visible=1

in the Safari address bar to make the Feedback Assistant app on iOS always visible (spotlight, app icon, Siri search, process switcher, etc).

or, if you want to leave it hidden and auto-hiding but want to launch Feedback Assistant to file a new feedback enter the following in Safari:

applefeedback://new

Use just:

applefeedback://

alone to switch to Feedback Assistant without changing visibility or starting a new feedback (because Feedback Assistant is hidden from the process switcher, you need this if you are in Feedback Assistant and want/need to switch to another app but want to come back to Feedback Assistant to finish the feedback you’re editing, for example).

This is somewhat documented by Apple here: https://developer.apple.com/bug-reporting/

Note 1: You’ll need an Apple ID to file feedback reports.

Note 2: You can always go to feedbackassistant.apple.com to access your feedback assistant account without the Feedback Assistant iOS app, but you can’t include sysdiagnose files and it doesn’t have quite the same ease of use as the app.

How to eat half an ice cream sandwich

I told someone I’d just eaten half an ice cream sandwich and they said they were impressed.  🤔

It wasn’t trivial, because I do enjoy sweets, but wasn’t that difficult.

Here’s how to successfully eat half an ice cream sandwich (or anything else your body craves), from easy to difficult:

1) [Easy] Take an ice cream sandwich out of the package and cut it in half. Hand half to your wife/kid/friend/neighbor/etc and then pick up your half and enjoy it.

2) [Not difficult] Store your ice cream sandwiches in a freezer in the basement/garage.  Go get one and bring it to the kitchen.  Open one end of the package and slide the ice cream sandwich out of the package and put it on a plate. Cut it in half and put half back into the package.  Take that half an ice cream sandwich in a package back to the freezer in the basement/garage and put it away.  Only then do you pick up the half you’re going to eat and enjoy it.

3) [Medium] Same as above but don’t bother taking the half you’re saving back to the basement until after you eat the half you’re going to eat.

4 [Difficult] Open the package and start eating the ice cream sandwich. When you’ve eaten half of it, stop eating it, close up the package, and put it back into the freezer.

 

So, I wouldn’t be impressed that you ate only half an ice cream sandwich unless you did number 4 on this list 🙂

 

* I did (2) on the list, fwtw 😉

Quick Action ‘shortcut’ to clear metadata from a file in Finder

When you use AirDrop to move an image from your iOS device to your Mac macOS adds some metadata that made me uncomfortable. In particular, the com.apple.metadata:kMDItemWhereFroms metadata is a binary property list which includes the name of the device it came from. The default name is often your name, as in, “Dad’s iPhone 12 Pro”.

Lots of ways you might share that image which don’t copy that data, but copying the file to another Mac through an external hard drive or file sharing, at minimum, seems to transfer this metadata across.  Sending as an email attachment, or as a Messages message attachment doesn’t seem to transfer this metadata, on the other hand.  It would be nice to have a preference to prevent adding this to the file metadata (FB10992657).

Since I’m not 100% clear when this metadata is getting transferred and when it isn’t, I wrote a small macOS Shortcut to strip it.  First Shortcut I’ve put together and the lack of logging for shell commands or of any kind makes Shortcuts significantly less usable than Automator, for example (where I had to go to figure out what was going wrong).  Also the initial text for an Run Script node in a Quick Action are not as helpful as the Automator environment (FB10993044).

Anyway, here’s the result:

ClearMetadata

I’d attach the actual shortcut file but Apple chooses to make them tightly linked to the creator and doesn’t allow sharing the source code for the shortcut without attaching my AppleID certificate to the file (WTH?!) (FB10993444).

AppleScript to search the contents of Safari Windows & Tabs

I have too many windows open in Safari (416 tabs in 133 windows currently – yah, I wrote an AppleScript to count those 🙂 ).

Got tired of not being able to find something I knew I had open so I wrote an AppleScript to search the text content of all Safari tabs in all Safari windows that aren’t minimized (even across Spaces).  Does not currently search tabs in windows that are minimized to the dock.

I’ve now found this useful enough that I thought I’d share it.  Disclaimer: I’m not an AppleScript programmer and don’t really like AppleScript (probably because I don’t know the language and tricks!).  There are likely things that could be done better or smarter.  Contributions welcome.

That said, this seems to generally work and, thanks to me learning about using references, fast enough that I wasn’t sure it was actually working at first 🙂

Source is on GitHub here.

Instructions for installation are in the Read Me there.

SwiftUI – Simple ScrollViewReader use to get ScrollView to start at the top left.

Had occasion to use a SwiftUI ScrollView today and ran into the issue where the SwiftUI team decided to use one of the two most sensible defaults for initial presentation when the content is too large to fit in the container – center the content. This makes sense for images or maps, but not for much of anything else I am thinking of. Everything else seems to want top left (for left-to-right locales at least). Strange that something that a large percentage of people are going to want isn’t as easy to set as alignment or something, but so it goes.

Anyway, this gave me an opportunity to read up on ScrollViewReader which, combined with the .onAppear modifier, can get the initial presentation of a ScrollView to the top left like so many want/need it to be.

Putting the code here so I remember for next time and in case anyone else finds a bazillion Stack Overflow posts about how ScrollView is so hard to make display properly but no modern ScrollViewReader answers.

//
//  ContentView.swift
//  trashme
//

import SwiftUI

struct ContentView : View {
  var cellSize: CGFloat = 50
  var numRows: Int = 30
  var numCols: Int = 10
  var body : some View {

    VStack(alignment: .leading, spacing: 20) {
      ScrollViewReader() { proxy in
        ScrollView([.horizontal,.vertical], showsIndicators: true) {
          HStack( alignment: .top, spacing: 0) {
            VStack ( alignment: .leading, spacing: 0) {
              ForEach(0 ..< numRows, id: \.self) { row in
                Text("row " + row.description)
                  .frame( height: self.cellSize )
              }
            }
            ForEach(0 ..< self.numCols, id: \.self) { col in
              VStack( spacing: 0) {
                ForEach(0 ..< self.numRows, id: \.self) { row in
                  Text("\(row), \(col)")
                    .frame( width: self.cellSize, 
                            height: self.cellSize, 
                            alignment: .center)
                    .border(.blue)
                }
              }
            }
          }
          .id("root")  // since our ForEach views don't really 
          		// have true ids (\.self ~)  
          		// we make one for the outer HStack
          		// in the ScrollView
        }
        .onAppear {
          proxy.scrollTo("root", anchor: .topLeading)
        }
      }
    }
  }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

And here’s what it looks like in an iOS SwiftUI preview pane:

Twitter Advanced Search cheatsheet

Here so I can find it again 🙂

from:username
to:username       // to username
@username         // mentioning @username
keyword           // can be a #hashtag
-keyword
keyword OR keyword
min_retweets: x
min_faves: x
min_replies: x
filter:links
filter:images     // any image
filter:twimg      // twitter pic.twitter.com image
filter:video
filter:native_video
filter:periscope
filter:vine
filter:media      // image or video
filter:retweets
filter:safe
filter:verified   // verified users
-filter:____      // use with any of the above filter nouns to exclude
since:YYYY-MM-DD
until:YYYY-MM-DD
near:X within:10mi // (where X is a city name)
list:user/listname
url:apple          // has url containing "apple" anywhere in it
lang:languagecode  // en, da, cs, de, es, fr, it, ja, ko, nl, no, pt, ro, uk,…

Taking Mars Edit 4 for a spin!

So I was sad the WordPress macOS “app” is just an Electron app that wraps the website with a few macOS menu items to jump to specific pages on the site. 

Thought I’d give MarsEdit a try.  But the Mac App Store glitched 😦

 

AppStore download error for MarsEdit

 

Worked after I quit and restarted the App Store.

So one thing I’m not seeing is how to have it post to Twitter when I post to my blog.  Maybe that’ll happen inside of WordPress?

It DOES!   Ok, that’s pretty cool.  This might work after all.

 

Hmm.  So maybe I’ve been using Pages & Numbers too much lately, and the WordPress site, but I find myself looking to the right side “Options” pane for formatting commands.  I often want to format some content as code (go figure!) and having that very handy is nice.

OH MY WOWZA!  You can add your own formatting macros to the Format menu with key command shortcuts.  Ok.  That is slick.

let foo = 12

Little bit of trouble getting out of code mode.. but not terrible.

— 

Wow. The feature where MarsEdit downloads my template from WordPress so that it can preview posts is very cool.

––

There are a few things that are tripping me up, but since I want to put more of the content I usually put on twitter onto a platform that I can keep if I bail on twitter, this seems like a good way to do it.  (I think about micro.blog also, but I just don’t ‘get’ it.  ¯\_(ツ)_/¯ ).

I do wish MarsEdit would save out static blog posts and use FTP to upload them to a statically hosted blog/site.  But a WPXML roc adaptor to Jekyll or something has been sketched out by two different friends so maybe that’ll materialize somehow.

macOS custom window titlebar – don’t forget to implement the standard title right-click feature!

PSA: For a great macOS app experience, the details matter. As an example, if you implement a custom macOS window titlebar for a document based app* don’t forget to implement the feature whereby you display a menu with the folder hierarchy for the document if the user right clicks, control+clicks or command+clicks the document title in the window titlebar.

Just ran across an app that failed to do this and it was quite annoying. I needed to open the folder containing the document in the Finder so I could duplicate the file and selecting the folder name in this menu from the document title is the easiest way to do that. Bug report filed with the app maker, but please save me the time of filing one against your app by getting this right from the beginning 😉

* Note that the Finder implements this for Finder windows, so I’d follow their lead and interpret “document” broadly as ‘anything with a location in the file system’.

Psychology hack: Convert shopping therapy urge into donation urge

Chatting with one of my sisters and she remarked upon our mother’s Amazon book buying … addiction? compulsion? Orders way more books than she can or does read. Hear or read a book review that sounds good? Go order the book. Etc.

I opined that this was probably a form of shopping therapy and given our mother’s chronic health issues in recent years, probably understandable. My sister then mentioned that she just goes to the dollar store to satisfy this for very little money 🙂 but also that one of her kids seemed have a bit of a shopping therapy urge also.

I mentioned that I’d been pretty successful some years back when I hacked what felt like my own occasional shopping therapy urge (“Feeling down? Buy something!” – such an American consumer ingrained message for so many years).

What I decided to do was every time I felt that urge and couldn’t just easily talk myself out of it I’d find one of the organizations I like to support, a creative person trying to make their first album/book /comic/etc on Kickstarter, a request for help that a friend or Twitter acquaintance had shared, or similar, and make a donation instead.

I found that I got a better “feel good” feeling this way, someone benefits, and I don’t end up with more STUFF cluttering up my life. Triple Win!

I thought I’d share this hack here in case anyone else might like the idea and want to adopt it.

19?! Wow…

Today we remember Nina who would have been 19 today.

Today we remember Nina who would have been 19 today. Impossible for me to really imagine her at 19 since she didn’t live to 4, but here she is on her 2nd birthday in her new dress from a friend of grandma’s in Kenya:

Nina 2nd birthday in her new birthday dress made by grandma’s friend in Kenya

I woke up this morning remembering what an intense day this was 19 years ago and the intense week that followed. We knew she had hydrocephalus and that she’d need a shunt in her brain to relieve the CSF pressure, but we didn’t know she’d be in the neonatal intensive care unit (NICU) for a week and we definitely didn’t expect all the other medical challenges she was born with. Nor did we expect the three other major surgeries she’d need in that first year (spinal cord surgery, intestinal surgery, eye surgery).

It wasn’t until a couple of months before this picture on her 2nd birthday that we finally got a diagnosis of Fanconi Anemia (FA), and some idea of what to expect for her as a result. Up until then it was a mystery to her doctors. Unfortunately, that expectation was likely a short life due to the type of FA she had. She had a pretty great year from this birthday through the next one. And then a month not so great due to brain surgery to remove a new tumor, but then a really great summer of family visitors, and good early fall before her decline and departure.

Outcomes are much better now for people with FA, but it’s still tough for many. These improvements are largely thanks to the efforts of researchers supported by the Fanconi Anemia Research Fund (FARF) and all the family and friends who’ve raised money for them to fund research over the years (including ours). Much of this research has shed light on, and improved treatments for, cancer as well as FA due to physiological pathways in common between the two and the higher determinism for FA.

Anyway, it’s been a long road, but we feel very lucky to have had Nina in our lives for part of it. Hug the ones you love.