Archive for October 10, 2023

Tuesday, October 10, 2023

No Counter-Strike 2 for Mac

Tim Hardwick (Hacker News):

Valve on Monday said it has no plans for a macOS version of the recently released game Counter-Strike 2, the follow-up title replacing the hugely popular FPS Counter-Strike: Global Offensive.

[…]

Last month’s release of Counter-Strike 2 forced a 26GB update for everyone with CS:GO, including Mac users, but after installation those on macOS soon discovered that the update makes the original game as well as the update unplayable because of the lack of support and no rollback option.

[…]

Though CS:GO launched all the way back in 2012, it’s still one of the most popular FPS games available today, with tens of millions of players logging in each month. So even if less than 1 percent of the user base is on Mac, that could still account for hundreds of thousands of players.

[…]

Vulkan was designed to succeed OpenGL and address some of the latter’s shortcomings, and while there is an open-source library called MoltenVK that provides a Vulkan implementation on top of Apple’s Metal graphics API, it still lacks some of Vulkan’s advanced features.

Previously:

Burger King’s Botched Apostrophe Curling

John Gruber:

The various “smart quotes” algorithms you get while typing aren’t smart enough to make this contextual distinction — even very good ones — so you need to do it by hand. Here’s how to type them manually[…]

Mac Windows Linux
Open single quote: ‘ Option-] Alt-0-1-4-5 Use ASCII
Close single quote: ’ Shift-Option-] Alt-0-1-4-6 Use ASCII
Open double quote: “ Option-[ Alt-0-1-4-7 ✊🍆
Close double quote: ” Shift-Option-[ Alt-0-1-4-8 Shift-✊🍆

These key combinations have always seemed weird to me. Why didn’t they use the opening bracket for both opening quotes and the closing bracket for both closing quotes? Then add Shift for the double quote, since it’s “bigger.” That seems easier to remember than [ meaning ", ] meaning ', and Shift meaning close-quote. Maybe the reason is that there’s a third quote type: next to the ] key is the \ key, which is used to type « and (with Shift) ».

The Care and Feeding of Developer ID

Quinn:

I regularly see folks run into problems with their Developer ID signing identities. Historically I pointed them to my posts on this thread, but I’ve decided to collect these ideas together in one place.

[…]

This post focuses on traditional signing identities, where you manage the private key. Xcode Cloud introduced cloud signing, where signing identities are “stored securely in the cloud”. These identities have the Managed suffix in Certificates, Identifiers, and Profiles. For example, Developer ID Application Managed is the cloud signing equivalent of Developer ID Application.

[…]

Even without a hardware token, there are steps you can take to protect your Developer ID signing identity. For example, you might put it in a separate keychain, one with a different password and locking policy than your login keychain. That way signing code for distribution will prompt you to unlock the keychain, which reminds you that this is a significant event and ensures that you don’t do it accidentally.

[…]

Given that Developer ID signing identities are precious, consider making an independent backup of them. To back up a signing identity to a PKCS#12 (.p12) file[…]

Hacking NSAlert Button Appearance

Daniel Jalkut:

Notice how the “Bar” and “Baz” buttons do not have a border or background color, making it difficult to know whether they are even buttons at all. The line between Bar and Baz clunks up the interface even more.

[…]

This exploded view from the Xcode view debugger shows that the top, default button, is showing the background for the button, while the other buttons don’t have one at all.

[…]

So how would you work around such a problem? As I shared in the thread on the forums, one approach that seems both safe and effective is to patch up the appearance of the buttons, and hide the unwanted line. Because NSAlert performs a great number of modifications as it’s displaying the alert, you have to subclass and override its “layout()” method to catch it after it’s done tweaking the UI[…]

Pierre Igot:

After years of fine-tuning, all the kinks have finally been worked out.

Previously: