I am the lone Windows user in my office. I could use a post on how to go from Mac Development to Windows. Only half kidding.
I don't want to make this a Win vs. Mac thread, but I think it is important for both sides to understand there are things that are good about each.
The Mac guys get a closer to Linux environment, which makes much of the stuff that is happening on Web servers behave more closely in dev to the way they do in production.
Windows has a long history of dev tools, so there are some really great Large File (>4 GB) editors, memory inspectors, inspection proxies (Fiddler for example) which make my Mac devs jealous from time to time.
But I am routinely jealous of how easy it was when I was on a Mac to do installs of Libraries using Yum and such. Plus since we are a mostly Python Shop that is quite a bit easier on a Mac.
I am a long time user of Visual Studio, but there are a lot of great IDE's now so you do have choices, and because many of those are Multiplatform you do have more choice, even if your team mates don't share that choice. (Sublime, Pycharm, Eclipse)
Vagrant and Virtualbox made me rethink about issues of developping webapp on Windows. I mostly do Windows dev and sometimes I also do some webdev, so I can't switch everything to MacOS or Linux.
I'm just starting to use Vagrant, and I think that it's an awesome solution. Vagrant allows to manage headless virtual machine (VM without UI ). I have a headless VirtualBox right now and it uses 48Mo. I could easily run tens of them.
You can share folders with the host and serve files from the virtual machine in a completly prod like environnement. You can also isolate projects in separated machines. For those who think that a unix box is closer to prod think of how many conflicts you can have with tons of libs installed on the same laptop : python, ruby, php, node.js, mysql, mongodb, etc... It is really different from a prod machine anyway. And Virtualbox works better (faster ) on Windows because the shared folder implementation of VirtualBox is better on Windows ;).
I'm not sure how it will turn out for me as I'm not very far in this process, but it seems to be awesome for the moment.
The one thing that I absolutely cannot stand about my OS X workflow is that to this day, I still have not found a good hex editor. On Windows I used HxD, but there's nothing that really fits the bill. That, IDA Pro (I don't have an OS X license and from what I hear the OS X version isn't too spectacular anyways), and Visual Studio are what make me occasionally boot into Windows.
I believe I tried it once, but the UI wasn't very appealing to me. The key features I'm looking for are: fixed width of 16 bytes, clean interface, process inspecting (not sure how easy that is to do to be honest) and raw disk access.
Charles isn't free though. Though Telerik will probably screw up Fiddler somehow. For web app HTTP or REST stuff, most browsers do this today too (natively or with plugins, so I need Fiddler/Charles less and less.
Am I the only one who doesn't see the advantages of doing web development on a Mac instead of on Windows? If you're going to be running the site on a Linux server, why not just do development on a Linux server too? You can easily do this with a Windows laptop, by just mounting a Samba share or using SSH.
Almost all of my development work is via SSH to a Linux box. I still use a Mac though, because it comes with a gorgeous 256-color terminal, with the Unix shells and enough of a local Unix environment that I can just type "ssh my-linux-box" and it works. You could get something similar running on Windows, but it would feel weirdly shitty and alien.
I don't think it's "weirdly shitty and alien" at all. That is just a widespread perception that people have because they think having a UNIX-like system on their local machine somehow influences their ability to develop remotely on a UNIX-like machine. Once you've tried it, it doesn't feel strange at all.
nonsense. Cygwin is a dog. It looks horrid, it often breaks the unix abstraction with fugly windows paths and.idioms and weird issues when using libraries that have native ports. Yuck
Strawman. Did I ever mention Cygwin? If you really are a grad student, I hope you improve your reading comprehension, because I clearly stated in my first post that you don't have to run anything locally in order to do web development with Windows.
i wasn't responding to your first post. I was responding to your subsequent comment that says a local unix-like nvironment on windows is not shitty and alien. Cygwin is exactly such an environment and the best of its ilk. I claim Cygwin is shitty and alien.
The major one: a really decent free SSH client is built into every Mac.
You must download (featured but inelegant) PuTTY in order to do this on Windows.
Also, until somewhat recently (Win7), the lack of symlinks (junctions) caused all sorts of problems when pulling down a source tree locally for editing if it contained symbolic links.
The problem isn't the OS, it's software like SVN that didn't support junctions until much later than junctions were introduced into Vista (and backported to XP).
And then projects need to use the latest versions of those software in order to benefit... and that's assuming the feature support is stable.
As late as 2009, our windows project devs (at my old company) were at a disadvantage to OSX, Linux users.
@brandon_wirtz: I totally agree with you.. there goods and bads to both environments. I genuinely enjoyed my time on windows and always found a way, tool or trick to get the job done. Thanks!
I'd like to mention SourceTree[0] for a GUI DVCS. I typically drop to the terminal for git usage, but every so often use SourceTree when I need something that is easier achieved with a mouse.
SourceTree makes staging chunks/lines in git a snap -- I use it to do that every day. I couldn't imagine the tediousness of doing that on the command line.
You'll probably want a graphical diff tool. I use Araxis Merge, because I've used it for 15 years or so, but I'm sure there lots of other good options.
I can still remember the day our lead developer (at my previous job) led a mutiny and we switched from Windows to Macs. A great day in my life. ... I'm sure you'll enjoy developing on your Mac.
Autocoloring is enabled by default. Green for newly added lines, red for deleted lines. Ctrl-F/Ctrl-B jumps forwards/backwards by a page. Do other diff tools offer more functionality than this?
I love it for visor mode. Basically in the preferences you can set it up to toggle the terminal (slides down from top of screen..) with a global hotkey. It manages themes nice as well.
I'm a big fan of Filemerge. I also really like Changes. I just prefer Kaleidoscope's UI better. It has all the features for my needs in the recent version 2 release. Black Pixel makes fine software and Kaleidoscope is no exception.
That's true except when it's not true. Some apps are single window applications, and clicking the red x will in fact quit the app. For example, System Preferences.
I'm trying to do windows development and I'm learning that if you don't try to force it into a unix-lixe env, it works fine.
I installed chocolatey [1] a package manager. With that I install python, git, and vim and I'm up and running. My vimrc and gitconfigs almost worked copied straight out of linux. I use cmd. My advice is not to use cygwin and the other stuff like it...
I don't agree with this advice at all. That you are stuck with cmd is really all that needs to be said.
On the other hand, Cygwin's gotten to the point where it, plus mintty, are actually pretty good--Cygwin used to be a real pain to work with (I mean, bad) but it's improved by leaps and bounds over the last few years. You can get a bash or zsh shell that work remarkably closely to OS X or Linux and just about every tool you're likely to run into will work as you expect. Contrast this to direct Windows ports of your software, which are frequently compromised to work in the fairly deranged environment of the Windows shell.
I don't understand your point. You can make UIs with CLI tools as well as IDEs? My post was trying to say that the GNU toolchain is portable across all major systems. Switch to it and you never need to ask what tools you should be using to develop on XYZ.
I'll second this question. Terminal Vim has always been there for me, and when you're used to it, there's nothing stopping you from coding over an ssh connection.
I don't want to make this a Win vs. Mac thread, but I think it is important for both sides to understand there are things that are good about each.
The Mac guys get a closer to Linux environment, which makes much of the stuff that is happening on Web servers behave more closely in dev to the way they do in production.
Windows has a long history of dev tools, so there are some really great Large File (>4 GB) editors, memory inspectors, inspection proxies (Fiddler for example) which make my Mac devs jealous from time to time.
But I am routinely jealous of how easy it was when I was on a Mac to do installs of Libraries using Yum and such. Plus since we are a mostly Python Shop that is quite a bit easier on a Mac.
I am a long time user of Visual Studio, but there are a lot of great IDE's now so you do have choices, and because many of those are Multiplatform you do have more choice, even if your team mates don't share that choice. (Sublime, Pycharm, Eclipse)