iOS Shortcuts

Apple’s Hidden Pot Of Gold

Two days ago I found myself hip deep in IFTTT settings, in their Button Widgets trying to find a way to make individual posts to my work log in my journal software, Bear.app.

I keep two tracks of logs, and they both share similar structures. I have a Personal Log, and a Work Log. They look like this in Bear.app: “August 7, 2021 – Personal Log” and then have space below where I journal my day. Usually I find myself forgetting to actually write anything and so I have days that go by where there is nothing in there. Sometimes I’ll turn to my Signal app, try to scroll back and see what I was posting to all my friends in our group Signal chat, and use that to help me remember. I’ve been wanting, for the longest time, a way to press a button and enter quickly some commentary, and then have it associated with a timestamp for me and added to my Bear log.

This all started with IFTTT. I know that Bear.app doesn’t have any connectivity to IFTTT, but Remember The Milk does, so I thought I could use IFTTT to write journal entries into RTM, and then at least I’d have them captured so I could eventually copy and paste them into Bear.app. It wasn’t elegant, but it was a workaround that could work. As I was looking around Google seeing how other people did things like this, I started noticing some references to Shortcuts. I had always thought of Shortcuts as this kind of Siri-linked simple tinker toy thing, Apple’s way of getting Siri to be more than it is. How wrong I was!

Turns out that Shortcuts has it’s own programming language, access to a shocking amount of iOS functionality that I previously never thought Apple would willfully reveal to end users, in the iOS platform, and the answer to this particular need of mine. This is how I did it.

It all starts inside the Shortcuts app. Older versions of iOS didn’t include this by default, but since iOS 13, I think, Shortcuts has been a stock app preloaded on every iOS device. Tap on Shortcuts, then create a new Shotcut, and here’s the screen shots:

The first item was to “Get A Variable” from the Scripting group. This lets you pick “Current Date” and if you press there, you can pick the format of the timestamp. I wanted a simple short time-only stamp, so setting Date to None was the key.

The “Text” object was next, from the Documents group. I don’t know why I needed it, but I think it draws the variable into the scope of the rest of the project.

Then “Ask for Input” from the Scripting group presents a small dialog box so you can type in whatever entry you like.

Next I created a new Text object, with the text I entered from the Scripting object. This is how I introduced a hyphen between the time entry and the text entry, formatted the way I wanted in my Bear journal entry.

Some apps have Shortcut-enabled controls provided to the system, in this case, Bear definitely has a lot of controls available. I was gratified to see an append-to-note function, so I added it to my Shortcut. This particular control creates a Bear entry for the entire day, gives it a special name, “Work Log Inbound” so that when I am in Bear, I can just copy and paste items from the Inbound daily item into my real work log bear entry, then throw away the “Work Log Inbound” entry.

After a short while of using this shortcut, which works really well, I must admit, it struck me that sometimes, not all the time, but I would like to maybe share my journal entry in Signal, or maybe email it, so the “Copy to Clipboard” from the Sharing group works really well. I can just ignore it, but if I want to add my journal observation to Signal, it’s waiting for me in the clipboard.

The Shortcut in the first iteration left me in Bear app. I didn’t want that. I wanted a “quick journal entry and back to the home screen” turns out, this home screen is technically called “SpringBoard”. There used to be a “Exit to SpringBoard” control in the Beta version of Shortcuts, but Apple removed it. Someone figured out a hack. The trick is to create a Shortcut to open something innocuous, like Notes, then save it as a plist file, then change it textually to force it to work for SpringBoard. Right now in iOS 14.7.1 this works, but it might break if Apple decides to be grumpy about it.

I created a duplicate Shortcut to this, called it “Personal Log” and it pretty much follows along. But that was easy since my work log and my personal log are pretty much parallel with each other in Bear. One small thing to note, this is only for basic text, there are no frills or extra neat bits, it just bangs in text chunks by button, nothing more, nothing less.

Exhausted

The issue at the very heart of modern American life is that we are exhausted. There is no more disgust, no more shame, no more national embarrassment left. He has dug deep, he has dug all the way as far as it goes. Even Tartarus is completely tapped out. People are numb to all of this, terrorized by a political party that no longer seeks to improve life for the people, but just to accumulate political power for their own designs and line their pockets with federal money.

Where do you draw the line? Children in cages, whoring around with porn stars and paying for their silence, asking foreign leaders to interfere in our domestic elections multiple times, the fat spinning Rolodex of emolument violations, or being silently complicit in the murders of US Servicemembers for a bounty?

How about allegations of child rape, and paid abortions from those rapes? Would that do it? What would it get you, even if you could, even if you desperately wanted to see justice served, you know it isn’t going to happen. We impeached him, but all his cronies in the Senate turned their backs on justice because they are all bought men, every single one of them. They have nothing to fear from the people because trickle down economics has brought about a redistribution of wealth from the poor and middle classes to the filthy rich who then use that money to secure more political power as their vast sums of money equate to speech thanks to Citizens United. The entire government is lost to liars, cheats, and grifters who have cornered the system, maximizing their political power and squeezing the treasury dry for their troubles with outrageous no-bid contracts from practically every corner of the federal government.

Here’s a list of all of his Atrocities

We are already exhausted from dealing with a blazing public health crisis of an untreated pandemic where The Great Orange Latrine Fire and his cronies are fleecing us while we are dying in droves, profiting off of our illness and suffering and doing absolutely nothing to stop it or even slow it down. Why should they bother, when our suffering and dying is so very profitable for them all?

So where are we to draw the line?

Give me a fucking break.

Onyx

Aside

I like to run Onyx (https://www.titanium-software.fr/en/onyx.html) every few weeks to clean up all the little dingy spots that can build up in my MacBook Pro. If you have an Apple computer, I really recommend it. Just be careful, there are specific versions of Onyx for each release of Mac OS X. You can find your version in the Apple Menu, About This Mac.

Snakes In The High Grass

Today I learned a very valuable lesson at work. There are two companies, Company A and Company B, unnamed because if I were to name them there would be an endless pissing match over this blog entry and I have gone down that road in the past before in a different lifetime, so we’ll just call them A and B. These two companies have services, IT Services that are very close to one another. Company A has a product that pretty much sells itself, and I was asked to look into it. I asked the rep of Company A for a quote, easy enough, and so we moved forward. Then because I wanted to be fair, and because the relationship was technically over with Company B at the end of this month, I asked Company B for a competitive quote, thinking they would possibly come in at or maybe even below their primary competitor.

Instead of what I expected, I got a very rude and shocking awakening. Company B could meet the license levels of Company A, as the magic number was round and small. But instead of the pricetag going down, to where Company A and B would be rationally competitive with each other, Company B’s quote was the total cost of Company A’s quote on top of Company B’s original cost! This took my breath away. It was very much like a very famous brewery near to where I live. You can have a taster of beer for $12 or you can buy a pitcher of the very same beer for $3. So, what we have learned is that the margins are upside down and inverted, which in the brewery example simply means that you can buy a taster of beer for $3, take the remains to the mens room and pour the remains into the urinal. Bye, Felicia.

The shocker was still awaiting my eyes, and even still this takes my breath away. Company B reminded me that while I might be interested in changing before my renewal date, that I might have overlooked a browse-wrap Terms and Conditions item that quite clearly stated that any changes that a customer might want to do must be on-file thirty days before the due date on any agreement. This means that while all the correspondence says one date, the true date to decide came a month before-hand! Now, I’ve faced browse-wrap Terms and Conditions before, none of it is actually enforceable in a court of law, but the cost to fight it out in court is way more trouble than it is worth in the end, unless you’re seeking a pyrrhic victory. I wasn’t looking for a pyrrhic victory. So I accepted the unenforceable Terms and Conditions for what I was facing as it was already budgeted and letting it go was easier than picking a fight with Company B.

Obviously, this entire arrangement went from an innocent and even gamely effort to keep Company B relevant in the marketplace to being regarded as anti-consumer treachery. Hiding your Terms and Conditions in browse-wrap, and then trotting them out and using them when your quote already lost you the battle pretty much rendered our interest in Company B dead-on-arrival. So we have a relationship with Company B, but it isn’t a happy one. I immediately informed Company B’s renewal team that we will not be renewing next year, and I set a reminder to tell them twice more because, well, there are Terms and Conditions to meet.

Which starts a really useful conversation about these Terms and Conditions. What is the positive use of a thirty-day minimum renewal term before the actual terminal date of an agreement? What would Company B get out of those thirty days? Maybe wrangle up more sales to cover the loss? I don’t really understand what benefit comes with a thirty day term like this except to function as a hidden trap for your hapless customer. If I were really cynical, and I am, this thirty-day trap is really a kind of extortion! So that’s what we have, a poisoned relationship with Company B, turning the last year of service into a perverted period of drawn out extortion. This singular revelation has incinerated the customer relationship in this particular case with Company B. That’s what this particular Term and Condition earns a tech company, having it on your browse-wrap site is a clarion call to all your customers that you are treacherous, untrustworthy, a bad-faith actor, greedy, and actively seeking to perpetrate extortion upon your victims which used to be your customers. Now you can witness your customers fleeing from you, as is right and appropriate.

So what did I learn? I learned this single bit of advice, and it’s vital for any IT Manager to listen to what I have to share. If you have an agreement with a vendor, request their Terms and Conditions right now, have them email you everything. Read it, and keep an eagle eye out for this particular nasty little trap. If you find the keyword “days” or “renewal” anywhere in the document, highlight it, and then you will know that the renewal date that the company sends you is a prelude to this particular trap, find the day value, for me it was thirty days, and then roll that relevant and real due date forward one month, so not at the end of June, but at the end of May, for example.

If you are a company trying to do business, and you have the fantasy of being a good faith actor somewhere in your aspirations, know that these Browse-Wrap Terms and Conditions are the battleground we enter when we stop thinking of you as a partner helping us do whatever it is that you offer to us to accomplish, and we start thinking of you as a treacherous snake in the high grass, coiled up and just waiting for us to blunder by so you can strike at us. The Business To Business relationship is a wretched one, you screw us, we leave you, and we make sure that everyone we talk to knows what sort of open treachery you sustain.

Permanent High Call Volume

At first it started as small signs surrounding certain sectors of the economy that responded centrally to some sort of epic event. Like Hurricanes affecting Homeowners Insurance Companies, that sort of thing. A recording, and then later on it starts to show up in websites as well, “Due to high call volume, your wait to talk to a representative may be very long. Please use…” and the message usually trails off to some sort of self-service arrangement or DIY resource.

Over time I started to suspect that more and more sectors, and the companies with them were all just recording this line in their automated greeting audio, put on their website, trotted out for everyone to see. Now I see it in high tech companies, and of course, the wretched guilt-ridden abominations will go unnamed here, because if I were to name them, I’d never hear the end of it, but know that they provide a bridge to nowhere and they are proud of it.

Why does it seem that everyone is encountering higher than normal call volume, obviously we have an active pandemic in play, plus the world is flying apart at the seams, so all of that makes sense, but what doesn’t really make a lot of sense is openly advertising your failures. Why are the people in short supply? Last I checked, there were seven billion people on Earth, is the labor supply that constrained and limited? So there are a few ways to paint between the lines on this proliferation of corporate excuses for a lack of human talent to perform services for the basics, and corporations are really free to point at any of these damning options:

  • They are too cheap and too lazy to hire the right people to do the work. Too disorganized to have human resources on hand to address surge conditions, even if they are unusual, and perhaps the unwillingness to hire and train more people to meet the needs from their customer base.
  • That people are too dull to actually do the work. How is the education system? Is it functioning properly? Are people being taught how to perform the work, and is there work ethic consistent with actually performing well in that job?
  • That wages are too low to attract the proper talent. That all the financial considerations are made top-down, with CEO’s getting lovely paychecks and to meet those requirements, some sacrifices have to be made?
  • That through poor planning, insufficient quarantine procedures, insufficient testing, insufficient contact tracing, and a poor handling of an active highly communicable pandemic, your labor force that otherwise would be available to meet the needs of your company are either out sick, or dead?

Obviously all of these are loaded options. There is no positive way to spin any of it. Either the company has failed, its culture is corrupt, the indigenous population is insufficient when it comes to providing a robust and brilliant source of talent, or you may find your headquarters in a country that has massively failed to address life in a pandemic.

What should be a matter of corporate shame is just another throwaway excuse to cut human labor, and raise the ambient suffering of using whatever product it is to just beneath the point where buyers remorse and professional regret at hopping into bed with such a failed and backward organization is enough to make them jump overboard and go back to swimming.

The first place where a company starts to die is the soft underbelly parts, the places where when you cut, the blood that seeps out isn’t that noticeable. Because you can hide behind your shield of the permanent excuse, high call volume. Yes, it’s high all right, and you’re doing nothing to address it. Maybe because you won’t, maybe because it’s self-inflicted wounding, maybe because the local talent supply is just not bright enough to actually do the work.

Mopping Up The Mess

It’s Sunday and while I’m washing dishes and running the laundry, I figured the best thing to do next would be to remove the Facebook app from my phone and iPad. So that’s done. I half wonder what it might do for my battery life. Probably extend it.

There is nothing on Facebook that I will miss. My input isn’t useful, so why bother? All Facebook does is make you upset with a steady stream of wretchedness and flung piles from the cultural latrine. Rise above by dropping out.

The best thing that happened to me so far this week has been the forced banishment from the wretched platform that I despise. So I will take that as a solid gold win.

Crochet Cat Sitter Pad

This is a project I’ve been working on for a while now. It uses single rib knit to create a 20×30 pad that I can place on my lap. My oldest male, Bailey, an American Shorthair loves to be on my lap and sometimes he likes to dig in. This pad will help us both. He can dig in til his hearts content and I won’t feel any of the pain as the pad will take it all.

Single Rib Stitch Pad

Cat Toys?

I got home after work and thought that since I had a little bit of time to spare that I’d try to learn the single crochet thermal stitch. So I sat down and made a 12 chain foundation and followed along. Knitting into the back bump, not the top loop. I got three rows in and realized I borked it. I think I have the basics down, so it was just as well to give up and frog the yarn I was using. I got pretty much down to the foundation chain and then the yarn jammed. So somewhere there is a knot that has formed and refuses to release. So I cut it free. It looks like a body with a long tail, somewhat like a little snake or mouse with a long tail. Bailey thought this was amazing and made off with it. So I apparently have created an accidental cat toy.

I briefly considered making cat toys and spritzing then with catnip, a dollar a piece? I guess a 12ch by four row thermal stitch with its leader and tail tied together would make a delightful cat toy.