Archive for February 21, 2020

Friday, February 21, 2020

Git Tower 4.2

Tobias Günther:

And finally, with version 4 of Tower for Mac, we’ve reached another huge milestone in our mission to make version control with Git easier and more productive for everyone. Why, you ask? Because undoing mistakes in your daily work has now become as easy as pressing CMD+Z!


I don’t understand their version numbers. Version 4.2 was released just 2 days after version 4.1, and the only documented change is a single bug fix.


Update (2020-05-25): Kristian Lumme:

There's a wide gap between implementing a feature as a gimmick and actually making it feel natural, intuitive and solid. In Tower, actions happen asynchronously relative to the UI, so right away, we had the challenge of making sure the undo feature could handle this — for example, repeatedly undoing and redoing some action could not result in something breaking or data being lost.

In order to undo some more complicated actions, we had to save additional data for each step undertaken by the user, so that we would have all the information necessary to get back to the previous state in case the user decided to undo. An example of this occurs with some operations involving the working tree. The working tree is complicated, with many different potential states for files: files can be modified, staged, they can have merge conflicts and so on.

App Store Confidential

Juli Clover:

Apple is aiming to stop the sale of a new insider book called “App Store Confidential,” written by former Apple employee Tom Sadowski who ran Apple’s App Store business in Germany until November 2019.


Apple claims that the book reveals “business secrets” that are of “considerable economic value,” but Sadowski denies the inclusion of proprietary information. Apple also says that Sadowski has violated his employment agreement.

Malcolm Owen:

Lawyers working for Apple have ordered Sadowski and his publisher to cease deliveries of book orders, to recall all copies of the book that are already in circulation, and to destroy all manuscripts of the book. Publisher Murmann and the author have so far resisted the demands from the iPhone maker.


Identifying Monopolistic Moves

Benjamin Mayo:

In the hearing, Daru complains that iOS 13’s repeated location permission alerts disfavours Tile, imposing hurdles on third-party apps that Apple’s Find My don’t have to contend with. I’d say that is indeed unfair and anticompetitive; third-party apps should be treated the same as Apple’s. The problem is how far do you take this. If Apple’s apps and third-party apps must be concomitant partners, should Apple then be forced to remove Find My as a built-in installed-by-default application? That seems like a step too far, beyond what would be deemed reasonable.

Daru also voices her company’s frustration that the U1 chip does not have a public API and therefore unavailable to developers. She argues that anyone should be able to use the ultra-wide band technology in the iPhone, saying that UWB is a standard and the only thing that makes it proprietary is Apple’s decision not to expose an API for it. […] Personally, I don’t think that a manufacturer should be required to allow access to every component of the products they make.


But it’s that exact freedom to lock the platform down that allows the platform proprietor to make choices that benefit itself. Let’s say Apple never provides an API for ultra-wide band. That means every other company will never be able to match the AirTags on features. Is that a monopolistic move, or just inherent to the state of play? I really don’t know how you can distinguish the two.

AdSense Extortion Scheme

Brian Krebs (Hacker News):

Google declined to discuss this reader’s account, saying its contracts prevent the company from commenting publicly on a specific partner’s status or enforcement actions. But in a statement shared with KrebsOnSecurity, the company said the message appears to be a classic threat of sabotage, wherein an actor attempts to trigger an enforcement action against a publisher by sending invalid traffic to their inventory.

“We hear a lot about the potential for sabotage, it’s extremely rare in practice, and we have built some safeguards in place to prevent sabotage from succeeding,” the statement explained. “For example, we have detection mechanisms in place to proactively detect potential sabotage and take it into account in our enforcement systems.”

I don’t really believe that because even without bad actors the AdSense/AdWords system seems untrustworthy. The amounts you have to bid often don’t make sense, and there’s no one to help you.


However, it seems that as soon as we went over a certain amount, our budgets started getting exceeded by about 10am in the morning.

But our competitors ads kept going.

We contacted Google to find out what was going on. None of these clicks were even resulting in business, contacts, nothing. So we assumed the worst, our competitor was having someone click all our ads.

This process started the downward spiral for our business. Not being able to stay live in Adwords long enough to get any new business was devastating and I sure as heck wasn’t going to participate in clicking on my competitors ads because that’s fraud as far as I know. SO, we just suffered and I couldn’t get any support from Google.

Mac Backups and the Versions Database

Howard Oakley:

What that doesn’t tell you is that, without that Versioning database, all old versions of your documents are lost forever from your cloned volume. And that can be a very significant loss indeed.

So, Time Machine goes out of its way, and your time, to ensure that the Versioning database is copied for each volume it backs up. You might therefore presume that when you restore a document from a Time Machine backup, that restores all its old versions too. Only you’d be wrong: restored documents from Time Machine backups also lose all their old versions. You might consider that to be a bug, and I’d agree with you.

As far as I can tell, in recent versions of macOS including 10.15.3, the only way that you might get access to the old versions of a document is when you perform a full volume restore, which isn’t sensible when all you want are previous versions of a single document.

This is a general problem with storing data out of band. macOS goes to all this trouble to efficiently store the file versions in a location and format where apps can’t access them. And it never developed its own tools for working with them, so the versions system ends up not working with other parts of macOS like Time Machine.

I find low-tech methods, such as those employed by BBEdit and MarsEdit, that rely on saving actual files for each version to be more useful. For example, their backups can be backed up and restored, and I can use other tools with them, e.g. to search for which version has the text I’m looking for.

I wonder how much more efficient the versions database is than APFS file clones. Is it still worth it?

Howard Oakley:

If you find the macOS feature to keep previous versions of documents useful, you may have been disappointed when you looked for previous versions only to find there weren’t any. This article explains why that might be, and what you can do to preserve those versions.


The most robust and reliable way to preserve previous versions is to convert the document into a folder containing each version using my free apps in DeepTools, or Revisionist, which is a complete toolkit for accessing versions and the macOS Versioning system.