Hacker News new | past | comments | ask | show | jobs | submit login
Tools for Switching from Windows to Mac Development (josebrowne.com)
31 points by digitalmaster on May 3, 2013 | hide | past | favorite | 63 comments

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)

For anyone looking at Fiddler since it was mentioned, mitmproxy is a great alternative for Linux and Macs:

http://mitmproxy.org/ https://news.ycombinator.com/item?id=3556688

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.

HexFiend[1] doesn't do the trick? (I have only occasionally need for a hex editor, but it serves well when the need arises.)

[1] http://ridiculousfish.com/hexfiend/

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.

You might want to try 010 Editor: http://www.sweetscape.com/010editor/ It runs on OSX, Windows and Linux.

Does it run on Linux? There doesn't seem to be any mention of that on the downloads page.

No, it doesn't. My mistake.

"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."

Here are some tips I wrote up on "How to Turn Your Windows Machine into Unix": http://www.patfitzsimmons.com/2011/05/how-to-turn-your-windo...

#sweet!!!! Wish you had shared this 8 years ago tho. lol Thanks

There's Charles proxy, seems as good as Fiddler although I'm not a power user. http://www.charlesproxy.com/ For dev tools I use PHP Storm, IntelliJ IDEA and Emacs for everything else http://emacsformacosx.com/

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.

my thoughts exactly.. most of the traffic i care about i can already monitor with chrome's network tab.

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.

So what do you use? PuTTY?

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.

Other than that, I agree.

Just to note for existing Vista users, junctions are in Vista and junction points are even in XP (from Windows 2000).

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.

[0] http://sourcetreeapp.com/

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.

If you use Xcode, it has a visual difftool that is pretty good. I never use anything for git besides cli and Xcode.

That would be FileMerge, which also does folder diffs -- although not as good as Beyond Compare (one of the few apps I miss having from Windows dev).

Thanks didnt know xcode had a visual diff tool build it! I'll give that a shot!

git diff | gvim -

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?

As someone who uses Terminal.app, what are the benefits of using iTerm2? After looking at the features of iTerm2[1], I see a lot of it as superfluous.

That said I can see a usecase in the Growl notification feature for testing etc.

[1] http://www.iterm2.com/#/section/features

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.

It is far faster at scrolling with non-ASCII characters, helpful when scanning logs of such characters.

It has a better find interface.

It is almost exactly like Terminal.app in most respects, which I appreciate.

Thanks for pointing these out m8. Cheers.

My personal 10 tools for Mac dev (in no particular order):

1. Sublime Text 2 2. Tower 3. Kaleidoscope 4. iTerm2 5. Oh-my-zsh 6. Xcode 7. MAMP Pro 8. CodeKit 9. Homebrew 10. CodeRunner

Honorable mention to: xScope, Sequel Pro, Transmit

Any particular reason for Kaleidoscope over filemerge?

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.

Indeed.. but $70 is a hard pill to swallow for a pretty file comparison utility. I was thinking somewhere more around $30.

Nice stack.. i'll check these out too!

And remember clicking the red X does not kill the process...

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.

You get really good at using cmd+q on everything

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...

[1] http://chocolatey.org/

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'm afraid i'm going to have to agree. Cygwin is wayyyy better that vanilla cmd on windows.

Dash app[1] is brilliant. It's an all-in-one place for language documentations. Very useful.

[1]: http://kapeli.com/dash

I think if i had known about this before it would have been in my top 10! This is awesome! #thanks

The only development tools you'll ever need: a terminal, vim and the GNU toolchain (gcc, gdb, make, screen etc).

Not making any graphical assets?

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 thought we were talking about development not graphic design

Or websites, apparently.

Don't forget MACVIM. Vim on windows is terrible. Now that you're on OSX it's going to be fantastic.

<3 Vim

MacVim's pretty nice, but I've never had a serious problem with the Windows versions of GVim.

Can someone please explain to me the advantages of using MacVim over Vim through terminal?

It comes with a gui?

There isn't really any huge advantage (at least for gVim, I run linux...), it's just nice to detach it from the terminal.

Mostly, I can change the window size without it affecting the size of my terminal, and add some extra tweaks if wanted.

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.

Not mentioned yet: HexFiend for hex editing, Cocoa Packet Analyzer and Wireshark for packet inspection.

I disprove.

If you wanted a Unix environment you could have installed Linux.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact