upvote
Generally, assuming an RYO solution is a reasonable first approach is is a trap beginners fall into.
reply
RYO is the best way to learn, if you have the time to learn. After building one own solution one is able to assess the strengths and weaknesses of what other more experienced people built. Without the learning phase those other solutions are incomprehensible black boxes. The trick is not to skip the phase in which one researches available solutions.
reply
> RYO is the best way to learn, if you have the time to learn

The problem is that nowadays, people roll their own solution, don’t take the time to learn (somewhat understandably, given the complexity of today’s stuff. You simply cannot learn all details about your hardware, OS, and third-party libraries anymore) but immediately deploy things in production.

Eating your own dog food can be good, but for security related stuff, it can easily be disastrous.

reply
I could never have thought adding the word "vibe" would draw so much public ire :)

I for one would encourage people to learn how the stuff works, including various low-level internals. But Tart and VirtualBuddy et cetera are again convenience wrappers (settings, pulling packages, friendly UI, and so on), the OS framework (Virtualization.framework) here does the actual work. If someone for personal use constructs a bad UI or chooses to store their settings on a public server then that's on them. And maybe a good learning opportunity, everyone has to start somewhere.

Not to forget, people are letting agents run loose in their home directory on their main box, surely we can do better than that here.

reply
Strong StackOverflow "don't do anything new, god forbid you may actually learn something" vibes

On "Hacker" News of all places :)

reply
> don't do anything new, god forbid you may actually learn something

vs

> vibe code your own wrapper around the OS API

reply
In fact, I suggest reviewing the documentation to assess your own level:

https://developer.apple.com/documentation/virtualization/run...

If the below sounds too complex to work with, can review more basics first. Can start with a Swift tutorial

  virtualMachine.start(completionHandler: { (result) in
      if case let .failure(error) = result {
           fatalError("Virtual machine failed to start with \(error)")
      }
  })
reply