This is definitely not "off the grid", except for very narrow definitions of the grid.
Perhaps "somewhat eco friendly" would be a better designation, or "light on corporate resources" (with the exception of Internet and GP's longish list).
Off "the grid" is more than off the utility grid. It implies a rejection of the globalized supply chain, and a return to subsistence consumption. If you can't make it, you don't have it. This also includes non-existence in the financial system, and the minimization of data footprint.
It's just off the electric and waste disposal grid (and sometimes not even that).
Not "off the grid" in a fuller self-sufficient sustainable way.
And there are many people who do live in today's world "off the grid" in a fuller sense of the term - far more than the description of "off the grid" living here. People living in rural villages, island dwellings, and so on, in Europe, for example, can be far more off the grid than above (self-sustainable, that is, growing most of their own food, doing with less, hardly owning a TV or a smartphone, and so on), even if they still have a power line.
This includes not just old rural families and such, but also young people in a "back to the village" movement that's been going on.
One patten I've seen to address this is to define a "plugin architecture" where disparate components are integrated into the main system via fixed "sockets". The sockets themselves are generic as is the glue code that attaches plugin and socket.
This does create a lot of boiler plate, but that boiler plate is predictable and uninteresting, and a good candidate for code generation.
“Instead of sharing your entire Contacts list in third-party apps, you can now type individual names to automatically fill their corresponding phone numbers, addresses, or email addresses in fields that request it. The autofill happens on your device, and contacts are not shared with third-party developers without your consent.“
This is pretty clear to me, you type a name, it’s looked up in your contacts by the OS, data is retrieved if there is a match and placed in the form. This is not the same as sharing an individual contact and allowing the app to continue to read it later, but still gives you a means to give contact data to an app without giving it access to the entire list.
> But, wow. This is beginning to look pretty scary.
This is the main benefit I see of having our government take these measures: making people like you realize THIS IS SERIOUS. It has "looked pretty scary" for almost two months. And no one has taken it seriously. And now we're here.
I practice extreme germ control daily. So it has nothing whatsoever to do with me not taking it seriously.
I just think I am unlikely to get coronavirus because I'm a fucking hermit who works from home and doesn't touch anything and practices germ control so my genetic disorder won't kill me.
Maybe read all my comments before making insulting assumptions about me. I've already talked about having CF in this thread.
> If the first line of a commit message is a title, it changes the way you write it. It becomes just some text to introduce some more text, without any stress on the information density.
I agree with the author that commit messages should optimize for information density. However the example they provide does a poor job of this:
> This is a smart synopsis, as information dense as possible.
"This is a" is the type of thing that should never appear in a commit message as it could apply to EVERY commit message. Synopsizing is the action, but doesn't indicate what is being synopsized; one of the most important facts for someone to understand what is happening here. Finally "as information dense as possible", again should also be cut as this is telling us HOW not WHAT (and ironically hurts information density).
Were I writing this example it would be:
Synopsize how to write a commit message
---
I led an initiative at my current company to enforce all commit messages start with an imperative verb and be less than 72 characters. Some people hate it, some people love it.
Aside from standardization, the primary reason to do this is the imperative mood leads to the most concise sentence possible. By leading with the action, the most natural thing to do next is to talk about what is being acted upon. Unnecessary words are dropped and the most important facts are emphasized. In short it forces the author to get to the point.
[Act] upon [some aspect of the code]
e.g.
Add user login link on home screen
Refactor authentication into separate classes
Lint PR titles conform to standard format
I agree with your idea but I would take it further. If possible I think the commit message is more concise if it can actually refer to the resulting action that is the result of the change to the code, unless the primary result of the commit is to refactor or clean up code formatting, etc. This way we avoid one more level of indirection to indicate that we edited code to accomplish something, since that is always the case.
Link to login from home screen
Enforce standard for PR titles
For refactoring, applying linting changes, or general formatting, I do prefer a prefix to indicate that it is not intended to change behavior. Something that is consistent for a project is good such as "Refactor:" or "Reformat:" or "Lint:" as a prefix to make it easy to spot these in the history is good.
I often see message such as:
Implemented new framework to...
Edited 3 files...
Then someone will edit it to be imperative and it reads:
Implement new framework to...
Edit 3 files...
Which is not really any better. They were past tense indicative because they described the actions of the programmer which are in the past. Writing from the imperative is not just better because it is more concise in english (shorter verbs) but because it is the natural way to describe what will happen in the program when the commit is merged.
Rather than `git add -p`, I suggest creating a second clone of your repo, staging your foundational refactor changes in the second repo, creating and merging your commits there, and then rebasing your working branch.
This makes sure you can fully test your refractors and that their change sets stand alone.
If you know your way around git well enough that you're not going to be screwing up repository state in ways you can't fix, there's no reason to operate from separate clones - check out git worktrees :)
I use long-running git rebase -i with a line like “x false” to pause the rebase, run tests or finish packaging the refactor, then git rebase --continue.