One complaint I do have for the board is its size in relation to the breadboards - inserting it into a breadboard leaves one row of pins available on one side and none on the other - pretty much have to straddle across two different breadboards to be useful. I'm using Dupont cables as an alternate, which works well.
Getting this thing running in a Windows 10 development environment, well, that's been the fun part. This is some of the struggles I had and what I had to eventually do to get it working.
Arduino IDE
Using the Arduino IDE, setup wasn't too bad.I originally had an older version of the Arduino IDE installed, version 1.6. So I upgraded that to the latest (1.8.3 at the time of this writing) and then followed the instructions on adding the ESP32 board to the Arduino board list. This is not as simple as adding the ESP8266 but still wasn't bad. I used a page similar to Installing the esp32 board in arduino ide windows for the instructions on how to set that up. The WifiScan example worked well. The standard LED blink example did not - according to what I've found, it seems the pin # for the onboard LED doesn't exist for the ESP-WROOM32. I added a normal LED, set the pin, and it worked great.
The problem with coding with the Arduino IDE is it's a bit limited, especially when it comes to the ESP32. There are very few libraries out for the ESP32, so that eliminates most of the advanced features of this controller. Bluetooth, DAC, etc cannot be easily programmed within the environment. Wifi works as well as input/output of the pins - all the stuff you can do with the ESP8266. Most everyone online mentioned using the ESP-IDF.
ESP-IDF in Windows
Following the various online how to's on how to set up the Windows environment for using ESP-IDF, including installing MSYS32 (which is basically an embedded Linux like environment btw) did not go well at all. Eventually gave up on it. The use of an embedded pre-setup Linux environment was kinda a big hint that setup is not easy on Windows.Ubuntu - HyperV
Since I'm running Windows 10 and already had HyperV setup, I tried running Ubuntu 14 in Hyper-V. In general, setup went well but I noticed it was awfully slow. Played around with the settings and found that RemoteFX greatly improved performance of Ubuntu...but, one big catch - I was stuck at 800x600 resolution max. After doing some searching online, people had mentioned to edit one of the files and force a resolution - which did not work. Another mentioned to not use RemoteFX for Ubuntu - well, that worked but now performance wise it was unusable. So, next to try is VirtualBox.Windows 10 HyperV and VirtualBox
Found out the hard way a year ago that HyperV and VirtualBox do not play nice together on my main PC - start up a VM on either and the host machine reboots without warning. So, had to uninstall HyperV and then install VirtualBox.Ubuntu - VirtualBox
Ubuntu installed extremely quickly in VirtualBox and performance was also very good so I continued to go down this route. I set it up myself but a good walk thru on how to do this is at http://iot-bits.com/esp32/getting-started-with-esp32-esp-idf-part-1/USB to serial port issues Ubuntu
The ESP32 worked great in Windows and was at virtual Com3. In Ubuntu, finding which port and getting it setup to work has been a pain. The ESP-WROOM32 has a built in USB to serial converter (if it was a true serial device I do not believe this would be as difficult). By default, USB pass thru is turned off in VirtualBox - change USB settings with the VM off. That was the easy part. Tell the VM to use Silicon Labs C2102 device and my KVM switches devices to a completely different computer or I lose keyboard/mouse entirely on my main machine and have to forcibly reboot (disconnecting/reconnecting does not work).Outside of those issues, when I do finally see a USB device on the /dev/tty path (in my case, /dev/ttyUSB0), try to connect to it in Putty and I get a dreaded "Unable to open serial port" - ok, is this a "port is not working" or something else? After doing more digging, it seems this may be a permissions issue, not a com port not working type issue. After doing an "ls -l /dev/ttyUSB0" command, I find this is probably the issue. Following the direction from Jesin's blog, I added myself to the dialout group and this seemed to fix the issue. Just remember to log out or the changes do not happen.
ESP-IDF Setup and test in Ubuntu
For setup for the toolset, I used http://iot-bits.com/esp32/getting-started-with-esp32-esp-idf-part-2/ - had no issues with this setup.For the IDF, I used part 3 of their tutorial, which also works great up to the point of their examples. The most recent version of the IDF (v2) moves "HelloWorld" and "Blink" to a "get-started" directory - you won't see them under examples as the tutorial states. The link to part 3 is http://iot-bits.com/esp32/getting-started-with-esp32-esp-idf-part-3/. For my setup, I did not have to install the flash utility ("make flash" worked just fine) - just remember to not have anything else open (Arduino IDE, Putty, etc) that could already have the port open.