I made GitHub Copilot write a raindrop sound synthesizer in Swift (plus some SwiftUI and Charts) and wrote about how it feels, as an experienced developer, to wrangle an LLM-based coding assistant for Swift/Mac development.

https://www.cocoawithlove.com/blog/copilot-raindrop-generator.html

Using Copilot to write a raindrop audio synthesizer using AVAudioEngine

A quick look at the state of LLM assistants for Swift programming but also having fun with AVAudioEngine and SwiftUI Charts

Cocoa with Love
@cocoawithlove Thanks for writing this up. I’ve never used an LLM, and it was really interesting to hear about your experiences.
@mattiem @cocoawithlove this actually inspired me to give ChatGPT a try on implementing a simple Metal shader, an area I know almost nothing about. And it wasn’t terrible! Not great but gave me enough to get started. This was only with like 10 minutes of playing around
@calicoding @cocoawithlove Something I always wonder about is what you miss out on learning by skipping to (more or less) an answer. You never know what you’ll stumble across along the way, but sometimes there’s nothing other than frustration…

@mattiem for sure. Especially if something is wrong and I need to fix it. For example, I grabbed a random shader from Shadertoys, had ChatGPT convert it to Metal, dumped it in a SwiftUi view, and performance was terrible. No idea how to fix that.

At the same time, there’s a limit to what I can learn, and I’m just trying to get something quick. If I really wanted to learn about Metal shaders I would do the homework.

@calicoding TODO: learn how this works one day 😉

@mattiem It turns out that good ol’ CAEmitterLayer is good enough for this silly little app.

Now let's see if I can actually stay up late enough to see this live LOL

@cocoawithlove The thing about GenAI, it’s not about being good at anything. That is not the intent. It just needs to be “good enough”. It’s purely labor arbitrage. Commoditization/industrialization of skilled labor. Its purpose is to devalue what you do & reduce the cost develop software by making it unskilled labor.

@causticmsngo @cocoawithlove This is arguably true for everything from functions to compilers to autocomplete.

Doing more work in less time — and with less human effort — is, arguably, the raison d'être of computer programming itself.

There are legitimate issues with generative AI as applied to software development, but “labor arbitrage” — and, if we’re being honest, “good enough” development — is inherent to the field.

@causticmsngo @cocoawithlove I’ve yet to find circa-2024 LLMs to be more than marginally useful for writing my own code. That may or may not ever change.

But, as a software developer, the idea of not wanting a piece of technology to get better because it risks opening development up to more people by making it easier rubs me the wrong way. It’s protectionist gatekeeping.

@cocoawithlove similar experience with trying it out on some basic mac app code a bit ago. It’s significantly more helpful in something with lots of training data like react or go so it’ll be interesting if Swift Assist can give us that level of behavior
@cocoawithlove Slight error that I found in your article: Copilot didn't choose the Voss-McCartney algorithm, it picked Paul Kellet's "pk3" filter from his 1999-10-17 post. Voss and Voss-McCartney involve summing "rows" of random numbers rather than using filters. https://www.firstpr.com.au/dsp/pink-noise/ covers both methods.
DSP Generation of Pink Noise