Getting started developing with Sitecore CMS on a Mac using C# - sitecore

We are going to be switching to Sitecore for our CMS and my team uses Macs. We have no .net, c# experience but are excited to learn. I understand Microsoft recently released Visual Studio Code to work on Mac, and I've looked into Xamarin. Can someone provide any tips for a Mac guy?

Visual Studio for Mac will not help you because Sitecore quite tightly relates on windows features like IIS and windows filesystem with drives and paths; also the rest of cross-platform ASP.NET 5 features (like owin etc.) are not yet supported by Sitecore.
At the moment the best way to work with Sitecore on Mac is virtualisation and in particular - Parallels Desktop for Mac. I am using that myself for last 3 years - that is the most convenient way. Parallels Desktop is a virtual machine solution that integrates your Windows VM very tightly into Mac, you can run multiple (let's say 2-4) Windows virtual machines at the same time (nice to test Content Management / Content Delivery distributed between separate "machines" just on one Mac) - they are all connected to each other and Mac by a "network". Also you will need to have an instance of SQL server (in that case you may allocate a separate VM or simply reference an external SQL server).
Parallels Desktop has a mode called Coherence, when in fact win and mac environments are sort of merged into each other, so you can for example drag-drop from Finder into Windows Exploreк like you do it natively, and get Windows start button at you Dock and many other great features.
However I prefer to run Parallels in a full screen mode on a second monitor to be 1-to-1 like a regular Windows machine. By setting hosts file on Mac machine I can run CMS and hosted websites right from Safari on Mac.
Also virtual machines are stored as folders on your hard drive, so you can easily backup your current state of OS as easy as just archiving that folder, and later revert to that moments you have "saved" - very helpful to experiment, especially if you are a beginner in Sitecore, so you'd not afraid to break anything accidentally.
Good place to start: official website, as well as quickly investigate all its magic on YouTube reviews.
P.S. of course, you may use any alternative virtualisation software, like VmWare etc.

I use Visual Studio for Mac to build my Sitecore solutions. We use a gulp task based on the one that comes with Habitat to deploy changes to files (binaries, views, config, etc...) into a Windows virtual machine running in Parallels on my Mac.
There have only been two things I am missing from Visual Studio on Windows - debugging and Sitecore Rocks.
If you can live without those two things you can definitely develop your Sitecore solutions from a Mac with Sitecore running in Windows.

Related

VMWare Workstation Pro Shared Folders - Directory update notification not working

I use VMWare Workstation Pro 15.5.7 installed on a Windows 10 laptop (host) to run Windows 10 virtual machines (guests).
The laptop has git and some other tools to maintain source code repositories, while all development tools (IDE, compiler, etc...) are installed on the guest VMs.
To access the source files I use VMWare Shared Folders feature. Everything works almost fine in terms of I/O performance, even if a little slower than Windows native sharing (SMB), which by the way is disabled by company policy restrictions.
However, when a file on the shared folder is updated inside the guest, the directory update notification is not sent to all open applications on the guest itself. The result is that, as an example, if you have a file open in your source editor (say Notepad++), the application does not detect the file change. This leads to some unexpected behaviors when using IDE or other tools with code syntax features and/or other "live" features while coding.
Also the same happens when you modify a file or folder from the host.
In both situations the only way is to force a folder update (example refreshing files with F5 key).
This seems to be related to a missing feature as stated here by one of the VMWare developers.
I would like to know if the same issue is currently present on the latest release VMWare Workstation Pro 17. Alternatively, is there a workaround for this? Am I missing some additional driver or tool? (I have VMWare Guest tools installed).
Here you can see my question on the VMWare official forum.

How do I deploy a web service to a virtual server from the host?

all. First of all I am sorry if this question is better for SuperUser, I couldn't tell. If it is it would be great if someone could migrate it.
So anyway, I'm building this service for SharePoint in Visual Studio 2008 with C#. Of course I need to be able to debug it to build it fast. Unfortunately my OS is XP Pro which can't run SharePoint because it is not a server OS. Instead of reinstalling my OS (which would create other problems) I got Server 2003 + SharePoint Server 2007 up and running inside a virtual machine with Virtual PC. Is there some sort of pipe I can create from Visual Studio that will let me test my service from within the virtual machine?
Thank you!
I guess I should add, these are the tools I have been given. At this time, reinstalling or getting new equipment/software is not an option.
This is definitely stackoverflow worthy. It is a development process related question after all.
So you have two issues, deployment and debugging.
For deployment, there are really two ways to approach this. One is that you create a real .wsp package that you can deploy/install/upgrade via the SharePoint provided mechanisms. You really should have this prepared since it is the way that your final code should be deployed. The trouble is that you can only perform the deploy/install/upgrade via a machine connected to the farm. In this case it would be your VM. In cases where I have had to work this way, I have scripted the creation of the .wsp and copied it to the server. On the server is another script to do the deployment. Yes it is more steps than I would like but it does work and it is pretty mindless so it isn't too much of a hassle.
The second approach would be the quicker, less correct way. In this case if all you are doing is changing the code, then you just need to get your new DLL to replace the old one and bounce IIS. You might be able to do that all remotely via script fired from Visual Studio after build succeeds action.
As for debugging, you can certainly debug things remotely. Look into tutorials on remotely debugging processes using Visual Studio.

Django Development Environment Setup Questions

I'm trying to set up a good development environment for a Django project that I will be working on from two different physical locations. I have two Mac machines, one at home and one at work that I do most of my development on. I currently host a Ubuntu virtual machine on one of the machines to host the Django environemnt, install DropBox on it, and edit source code from my Mac. When I save the code file, the changes get synced over DropBox to the Ubuntu VM and the Django development server automatically restarts because of the change. This method has worked well in the past, but I am starting to use DropBox for a lot of other things now and don't want all of that to be downloaded on every virtual machine I use. Plus, I want to start using Eclipse + PyDev to be able to debug code and have code completion. Currently, I use TextEdit which is great, but doesn't support debugging or completion.
So what are my options? I thought about setting up a Parallels VM on a thumb drive that has my entire environment on it (Eclipse included), but that has its own problems. Any other thoughts?
Here is the environment I set up and it has the components you are after. I have used pydev as well and it works but I prefer Komodo.
Things which I think you are missing:
An SCM - Using Dropbox works but there are some real shortcomings by not using a real version control system. Examples include reverting changes, branching, merging, etc. I agree with Simon
Using a virtualenv will really help when developing on multiple platforms.
I do ALL of this on my Mac:)
HTH

Simplest technology for distributing Web Services

Is there a way to meet the following criteria in distributing a Web Service to Windows machines?
1) Automatic installation and configuration of the Web Server.
2) No configuration (or even awareness) of a Web Server required by the customer.
3) No prompts to download and install Java or .NET - especially anything after .NET 2.0; those installs / restarts can take forever!
In short, is there a way to deliver a single install process that installs the Web Server along with a simple web app without requiring lengthy installations of pre-requisites? Something for even the most non-technical of users?
.NET's WCF almost meets the requirements but getting .NET updated up to 3.0 / 3.5 is a lengthy process and can be a turn-off for customers, even if the install holds their hand through the whole thing.
Rubyscript2exe was also very close, but it is extremely touchy and out-dated.
I am open to any technology / programming language - just looking for the slickest distribution process for my customers that meets the above three criteria.
I've been doing quite a bit of research on this as it is extremely important to me that my users have a simple installation experience. Here are a few things that I've found:
UltiDev Cassini: Cassini is that convenient mini-server that runs when you debug your web apps from Visual Studio or Visual Web Developer. UltiDev Cassini builds on that and looks pretty promising. It offers support for all non-beta flavors of .Net and integrates right into Visual Studio. Most interesting to me is the ability to include as part of your installer. The only down side is that pesky .Net pre-requisite. I can handle helping users get installed up to 2.0, but the install process to move to 3.0 and 3.5 is way too heavy for the typical user.
RubyScript2Exe: I like the premise of an executable Rails app. However, I attempted to use this on a Mac and it is simply too outdated and requires too many workarounds for my tastes. It's too bad, because I love Ruby on Rails development.
Server2Go: This is my favorite of the three options. It is easily distributable (just send off a zip file) and has a lot of nice options. For example, you can configure it to leave the included Apache server running even after the browser closes - that is PERFECT for a nicely packaged web service. It can also provide a customizable icon in the task bar for shutting down the service if necessary. I think this best meets my needs for the time being.
Please, if you know of any other options, let me know.
Also, you may be wondering, "Why not just write a desktop app?". The simple answer is that I don't need much of a GUI, if any. I need a simple to install web service that can be consumed by various other applications (web, mobile, and desktop included).

Whats the best way to get started with server virtualization?

We recently bought a new rack and set of servers for it, we want to be able to redeploy these boxes as build servers, QA regression test servers, lab re-correlation servers, simulation servers, etc.
We have played a bit with VMWare, VirtualPC, VirtualBox etc, creating a virtual build server, but we came across a lot of issues when we tried to copy it for others to use, having to reconfigure every new copy of the VM.
We are using Windows XP x86/x64 and Windows Vista x86/x64, so I had to rename the machine, join the domain etc for every new copy.
Ideally we just want to be able to add a new box, deploy a thin boot strap OS (Linux is fine here) to get the VM up an running, then use it.
One other thing we have limited to no budget, so free is best.
I would like to understand others experiences in doing the same thing.
FYI, I am not in systems IT, this we are group of software engineers trying to set this up.
Any links to good tutorials would be great.
The problem you're running into is the machine SID must be unique for each machine in a domain. Of course by copying an image you now break that unique constraint.
I'd suggest that you read the documentation for Sysprep in the reskit and Vista System Image Manager - your friends for XP/Win2k3 and Vista/Win2k8 respectively.
These tools enable to "reseal" your configured instance of the OS such that the next time it boots - it can prompt for information such as network configuration, machine names, admin user ID's, run scripts etc.
Also be aware that the licencing restrictions for Windows desktop clients are generally per image - not per server.
Using these tools with HyperV we created complete preconfigured instances of Win2k3 & Win2k8 that boot to finish installing Sharepoint - going further we used the diffing disks to overlay Visual Studio so our devs could use the production images for their work. It has radically changed our development process.
At this point our entire public website is run on HyperV with of 5 boxes running 15 images for a mix of soft and hard redundancy - they take several hundred million page views per week.
Another option for dealing with the SID probelm is NewSID. This is a simpler tool than sysprep, in that all it does is rename the machine and reassign the SID; if you don't need all the other features of sysprep this is a much easier tool to use.