humancode.us

Thoughts on AI art

October 4, 2024

Thoughts on #AI art, from my conversation on Mastodon:

Art is, fundamentally, a form of communication; that to me is what differentiates art from natural phenomena such as “nature” and math, within which we can still find beauty, but do not expect an author on the other side.

AI art breaks this contract in the most fundamental way: it is math that’s designed to feign humanity. It mimics communication, setting an invitation for the viewer to comprehend and communicate, only to yank the rug from under their feet—gotcha, you’ll find only random numbers here. This is what I mean by “dishonest”. It’s fundamentally a bait-and-switch at the most meaningful, human level.

I’m not as concerned about procedural art, because…it’s obvious what it is. A Lissajous pattern on an Apple II is as beautiful as a poster of plotter art, but it’s up front with me: the art is in the author’s choice of math, not in the image itself.

Dealing with Objective-C Protocol types in Swift

September 19, 2024

When Objective-C headers are imported into Swift using a bridging header, a single Objective-C protocol appears as two different entities in Swift code.

Say we have the following Objective-C header file that has been imported into a Swift target using a bridging header:

// Fungible.h

@protocol Fungible<NSObject>
- (NSString *)funge;
@end

There are two ways to refer to this protocol in Swift: using a native Swift type, or using an Objective-C Protocol object reference.

let fungibleSwiftProtocol = Fungible.self
let fungibleObjCProtocol = NSProtocolFromString("Fungible")!

These two types should be the same—after all, they refer to the same protocol—but they are not, as shown when we print out their descriptions and ObjectIdentifiers:

print("fungibleSwiftProtocol: \(fungibleSwiftProtocol)")
print("fungibleSwiftProtocol object identifier: \(ObjectIdentifier(fungibleSwiftProtocol))")
print("fungibleObjCProtocol: \(fungibleObjCProtocol)")
print("fungibleObjCProtcol object identifier: \(ObjectIdentifier(fungibleObjCProtocol))")

Which produces the output:

fungibleSwiftProtocol: Fungible
fungibleSwiftProtocol object identifier: ObjectIdentifier(0x00000001f5d8e300)
fungibleObjCProtocol: <Protocol: 0x100008780>
fungibleObjCProtcol object identifier: ObjectIdentifier(0x0000000100008780)

They are different! But of course they’re different, you say: one of them is a Swift Any.Type, while the other is a Protocol instance. Sure, but they refer to the same thing. Is there a way to actually test if they refer to the same thing?

Read more…

Open Source Software is the Pastime of the Rich

September 18, 2024

Open Source Software in a world of capitalism can only exist as a pastime for the already-rich. Only companies extracting profit from something else can afford to maintain OSS. Only individuals paid for something else can contribute significant time to OSS projects in their spare time.

It’s a precarious thing to profit directly from maintaining OSS and selling it as a service, precisely because someone else can copy and repackage your work for less money—which is entirely within the spirit of OSS—and undercut your business model. A business truly in the spirit of GPL would celebrate such a copy; but a business that must profit from their work on OSS would see it as theft of their livelihood.

In other words, insistence on “pure altruism” as the basis of open-source software is essentially a shorthand for excluding those who are not already wealthy. It’s elitist.

“Quiet Quitting” Doesn’t Exist

September 17, 2024

“Quiet quitting” doesn’t exist, at least not in any numbers that matter.

People aren’t “quiet quitting”; they’re burned out. Years of layoffs and increasing responsibilities are frying people to a crisp. Yes, people who WFH have more options to disengage for self-care, but that’s actually a good thing.

Almost every coworker I’ve met wants the company to succeed—their well-being is tied to the company’s fortune, after all. They want to do quality work. They want to brag about their products. They want to have fun. But also, almost every coworker I’ve met is stressed out with shrinking deadlines and continual layoffs, and always having to do more with less time.

Adding RTO to the mix means workers have to invest even more time in commuting to the office, and even less time to cope with ever increasing amounts of work. RTO will not cure Quiet Quitting. They’ll just reveal it for what it is: burnout, and make it worse.

Hardware is for Services

August 2, 2024

Jason Snell wrote on SixColors:

Without good hardware and software, Apple’s services would be irrelevant. I hope everyone in a position of authority at Apple understands that. Services are a way to help make Apple’s hardware even more profitable than it already was. But services can never, ever take precedence over Apple’s hardware. If Apple ever begins to see its hardware as merely a vessel for selling more subscription services, the game will be over.

https://sixcolors.com/post/2024/08/existential-thoughts-about-apples-reliance-on-services-revenue/

Existential thoughts about Apple’s reliance on Services revenue

Apple Pay and Apple Card are among Apple’s growing services. Apple’s latest quarterly results were about as boring as you can get while still featuring $21.4 billion in profit and setti…

I suspect this line has already been crossed. #Apple has gone through these phases:

  1. We sell hardware
  2. We sell hardware and software
  3. We give away software to sell hardware
  4. We sell hardware and charge other people to sell software
  5. We sell services to enhance our hardware
  6. We sell services through our hardware

We are now between phases 5 and 6. The sheer profitability of Services will inevitably lead to a de-emphasis of (non-iPhone) hardware sales. I predict Services will very soon exceed iPhone in terms of profits because of its incredible margins.

< Newer Posts