Beginner's Cross Platform App Development Notes: Getting Started

I am a long time C# developer and have worked with Visual Studio extensively for server and client side development, but have not developed any Apps yet. I have a few friends who are interested in App development, so I'm starting a thread here on this blog to cover some of the material that we'll be exploring together.

I'm approaching this with a few basic ideas in mind:

  1. As far as possible, everything we're doing will be free or inexpensive, with a single exception, #3 below: a good computer is important.
  2. Following along should be possible for someone who has no development experience, but a willingness to learn. The goal is not to make you a professional software developer, but to get you in the door on that path deep enough that you can evaluate how much further you want to take this.
  3. You need a strong development machine, with at least a terabyte of space laying around (you won't use it all--yet), plenty of RAM (8G minimum, 16 is better) and as fast a processor as you can afford. I've spent many hours working with a slow computer in software development and understand well that it's simply counterproductive. Modern IDEs are powerful and hungry, but if you keep them well fed, everything else gets easier.
  4. This is not for people who have basic questions, like "what's an IDE?" Google is your best friend in this world. Software development is always a process of rapid, intense learning, and at least 50% of the effort is in knowing how to go online to find anything you don't know, and to do so efficiently so you can get right back to the larger task at hand.
  5. The key thing that sets a software developer apart from "normal people" is an absurdly extreme level of patience while attending to tedious, trivial things that "should" take a few minutes but actually take hours. Just a few days ago, I spent well over 12 hours building a small authentication layer, which is something that should take maybe an hour or two. You never know when this skill -- patience -- is required, but it's often, and without it, you won't get far.

    Two Virtual Machines

    At first, I installed the development environment Xamarin/Visual Studio 2017 on my main Dev machine, and quickly discovered that because of the fundamental schism between Android and iOS development (i.e. you MUST have a Mac to develop iOS, even though Xamarin is fully cross-platform), that I want to set up the dev environment using virtual machines. So I'm uninstalling Xamarin and putting in a pair of Virtual Machines, one for Android and one for iOS, both installed with Xamarin/Visual Studio Community. Yes, it's true you can run a Mac inside of Windows. Both of these will run on a single Windows dev machine.

    First, install VirtualBox

    http://www.wikihow.com/Install-VirtualBox

    Then, install macOS High Sierra on VirtualBox on Windows

    https://techsviewer.com/install-macos-high-sierra-virtualbox-windows/

    Last, install Windows 10 on a virtual machine

    http://download.cnet.com/blog/download-blog/how-to-run-windows-10-on-a-virtual-machine/

    (Another approach to getting Windows 10 downloaded)

    http://www.zdnet.com/article/heres-how-you-can-still-get-a-free-windows-10-upgrade/

Apparently, you can select "Add product key later" when you're installing Windows 10 and thereafter you'll get some minor nag popups but it will run. That's okay for my present purposes, which are largely to get familiar with App development.

I'm personally storing both of these VirtualBoxes in a folder called DevMachines on my D: drive, which has a whole lot more room than my main Windows drive, but you can put them anywhere.

Posted in Developing Software on Jun 29, 2017