Ok, I know there are virtualizations that will let you run iOs on a linux or windows PC, but they take a lot of frigging around and aren’t technically legal as you can’t run iOs on a non-apple device legally I believe.
I don’t have a Mac and I am making a multiplatform app using Kotlin Multiplatform (with compose). So what am I to do? The top two cloud Macs I can find are MacInCloud and MacStadium. Lets see which one works best when you are on a lousy public WiFi in St Lucia on your sailboat.
So MacInCloud will let you sign up for an hourly plan at $1/hour. That is a pretty good rate for trying something out so lets sign up!
Nothing surprising other than they want you to pay in advance for credits and it seems the minimum is $30 which gets you 30 hours, and my MS in Mathematics from Western Washington University says that is in fact $1/hour but only if you use all 30 hours. Skeevy as they say.
The other interesting thing is this little add-on:
Looks like with visual studio (and I assume VS Code) you could run on your own machine and remotely build which would probably be a nicer experience especially with a bad connection. But I am not using either product and as far as I know intellij doesn’t do this. And I am not sure whether I have to do the actual development on xCode - I haven’t dug into this at all yet.
So ok, lets pay the man.
Account set up, go to the dashboard and here we see:
(yes that is an old picture of me and my wife back when we were young, it took it from my google account which I haven’t bothered to update forever because I love the picture).
We see Connect Now, and Download Connection File (which sounds interesting, will have to look into that at some point). Connect now asks for a login which isn’t the login I created when I created the account, instead I was assigned a user###### format username and an impossible to remember password. Logging in with them is annoying because you can’t paste into the web-page and I use a dvorak keyset (unless one of my hands hurts, then I use a one-handed maltron keyset) but it has decided to use the hardware keys instead of the translated keys so I am back to hunt-and-peck with no copy-paste.
ok, several failed attempts and I decide to figure out what the connection file is. Looking around and it is apparently a windows remote desktop connection file. It pulls up the same connection window, and very carefully typing I manage to log in!
I can’t change my username, that is annoying. I can change my password, so I got that done so I only have to remember one long string of numbers instead of two.
A little playing around, and it is your basic Windows Remote Desktop interface to a half-decent computer, and if you need a better one you can pay for it. Being Windows Remote Desktop, it is ok, but not great for bad connections.
It came with most of the apps I needed, had git, ssh-keygen, chrome. It had intellij-ce but I want intellij-ultimate because I like the github copilot which apparently only integrates to ultimate. (I played around with intellij’s ai, it was ok, but I like copilot better for its closer integration to your code).
So this is working fine when I have a decent connection. So I started trying to get testing going on my ios app, and got into some arguments with github copilot as it apparently is unaware of both my code and the latest kotlin multiplatform wizard sourceSets. It recommends places for your iosTest directory that don’t make sense.
Lets leave that for the next blog post, and check out MacStadium to see how it works.
Get past the signin and you get their pricing:
You might as well buy a mac I think. There are probably very good justifications for using a service like this, but they are not my current use-case. So I will stick with MacInCloud for now.