Hacker News new | past | comments | ask | show | jobs | submit login

>> Could be a MBP replacement for developers. The only thing is those of us running on OS X, how is Windows 10?

>> I love my command line and linux like commands and tools. - Homebrew - Bash scripts - Docker (Windows 10 currently not supported) - Vagrant

I switched from OSX to Windows last year. I thought I'd miss stuff, but you don't.

There are package managers like chocolatey to replace homebrew.

I use Cmder as my terminal and it works a lot like Mac's terminal. It was probably the key app that made my transition easy.

I use Vagrant on Windows and it works fine.

Can't say much about bash scripts or Docker though, since I rarely run those locally.




I found compiling on Windows always a bit of a PITA.

On Linux I just install build-essentials and everything works fine. On Windows I had to install a specific version of VS and fiddle around with the path to get things running. But maybe there is something like the build-essentials package in chocolatey?

The terminal command history also feels strange. But I like cls more than clear, haha :D


> I found compiling on Windows always a bit of a PITA.

Yes, that is a legitimate source of pain, but thankfully that's usually a once-and-you're-done problem (for me at least).

When I switched to Windows as my full-time platform, I found Scott Hanselman's Developer's Tool list immensely helpful with my transition.

http://www.hanselman.com/blog/ScottHanselmans2014UltimateDev...


I use msys and mingw for Windows compilation. It's so much easier than Visual Studio --- no messing about with stupid configuration panes and easily scriptable. I also get to use the same makefiles as the Unix port of my program.

The only difficulty is that msys doesn't support parallel make, so builds are fairly slow, but my program's small and I do most of my development on Linux, so I don't care.

(As an additional bonus --- gcc supports C99!)


Oh, so I can use gcc to build on AND for Windows?


Compiling what? May be some of us can help you.

If it's C++, I did learn cmake, and now I use the same script for Ubuntu and for Win7/VS2008 and Win8.1/VS2012, and so far I just don't care about compilation issues anymore. Sadly the VS site only has VS2015 now.

But yes, the first time you have to check the VS version and add all the proper env vars for the cmake scripts to find the libraries.

But anyway, it is much better than when I used mingw and made makefiles by hand.


How about code written in C11? Or Fortran 95? Throw in a couple of numerical libraries you want to link to, maybe CUDA or some MPI or an optimized BLAS/LAPACK, and it's an all night party.

I lurk on a few sci.comp mailing lists, and the number and nature of problems that the Windows people have with compiling is crazy compared to Linux where the OS actually has a package manager and stuff Just Works.

As for cmake, I don't think it's any better than (gnu)make. I've seen big projects with complex buildsystems (eg. PETSc from Argonne) switch to cmake and then switch back again to make quite quickly. A frequent "problem" with make, I think, is that people learn just enough about makefiles to compile HelloWorld.cpp and then use that knowledge for everything.


I think I agree with you on all fronts, simply because the online cmake documentation is not as good as it should be.

For BLAS, it has a

    find_package ( BLAS )
script, which you can use. The same for CUDA. They define cmake variables you can use later for the include and link search paths.

https://cmake.org/cmake/help/v3.0/module/FindBLAS.html

https://cmake.org/cmake/help/v3.0/module/FindCUDA.html

I haven't used C11 or Fortran95, only C++11, and I had to add a cmake script for it, you can find it as CheckCXXCompilerFlag somewhere in the web.

I have to use Visual Studio instead of mingw because I'm using some winSDK libs, and VS has no (gnu)make, and what VS offers for the command line is not cross-platform, making it a poor investment of my time to learn about it.

After climbing just a section of the the steep cmake learning curve, I have deleted the solution and project files from my repository, and now I use cmake to compile and run the project in the command line with both VS2008 in Win7 (the PC) and VS2012 in Win8.1 (the laptop), without any path dependency. Previously the solution files depended on both my username and the path, and just moving the folder was cumbersome and required a lot of fiddling with those files.

Another thing I really like is the concept of an out of source build, and that's very easy to set up and use with cmake.

I now can write

    git clone somewhere:my_project.git
    cd my_project
    mkdir build && cd build
    cmake -DCMAKE_INSTALL_PREFIX:PATH=../install ..
    cmake --build . --target install && cmake --build . --target run
in both Ubuntu and Windows and see my program running, which means I will not go back to make, or nmake or gmake anytime soon.


Native modules for Node.js for example.


Doesn't help the slow-as-molasses NTFS unfortunately, or the inefficient scheduler.


Try msys2 - it has pacman for installing extra packages, it's basically what cygwin should have been.


alias cls='reset -Q && echo'


> I use Vagrant on Windows and it works fine.

Not really - there are some big differences to keep in mind.

If your shared folders have symlinks, they won't work within the VM unless you're using Virtualbox's native shared folders, which is dog slow.

Permissions are also messed up if your VM is on an NTFS HDD - all files and all folders will basically be 755/777 within the VM.

There are plenty more tradeoffs.


Out of curiosity, do you use vagrant for everything?

I used Windows a little while ago, and I couldn't do any work without firing up a VM. I missed my environment, but if I did everything in a virtual machine, I could accomplish what I needed.

Eventually I gave up. I was actually doing my development in linux and windows was just acting as a VM host. It's almost comical that I ever said I did development in Windows.


No. I do a lot of stuff in CMDer. I only use vagrant for testing deployments.

Most of the apps I use are cross platform GUI apps like Sublime, Evernote, SourceTree, etc.


I use babun for everything. It's cygwin on steroids with oh-my-zsh. You have a packet manager called "pact" that works way better than chocolatey (so far)


> I use Cmder as my terminal and it works a lot like Mac's terminal

What advantages does this provide over the Windows 10 terminal? Windows 10 fixed all of my biggest gripes with cmd.exe


It's more about muscle memory and not having to retrain your brain.

After using Mac for such a long time, it's nice to not have to recondition yourself to having to use backslashes or using commands like `dir` instead of `ls`.


Powershell supports both dir and ls


PowerShell calls its directory listing `ls`. Its "support" is limited to little more than the command name.


Thanks for the Cmder tip. I'm a linux guy now working for msft (started a few weeks ago) and am having a not-so-fun time with tools and the cmd.


Interested to know how your experience has been as a Linux guy working at Microsoft?




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

Search: