• To OS X, or not to OS X
    20 replies, posted
I am currently in collage, studying computer science. So far we are using C and we will soon start using Java. I have been looking into changing OS to Mac OS X, but I am not sure if it is worth it. I am currently using Ubuntu, it is really easy for me to study and to write programs, my problems start when I try to use it for everyday use: I cannot watch YouTube videos without screen tearing, I cannot run MS office and gaming is out of the question. I have tried a Macbook Pro Ratina, and I love the display, text is beautiful on it. I haven't really done anything on it, other then just surf the web for a few minutes, but my understanding is that, since it runs UNIX at its core, it can be used similar to the Linux terminal and there should be a lot of good applications for developing. I wanna know you opinion on the subject. Which OS do you use for development and why? Is it worth the money to get an apple computer and if so, what would you recommend?
My advice depends on how much time you want to spend on your operating system. I've been using Linux for 2 years now and I love the customization aspect of it. I'm on a nearly-one-year-old installation of Arch Linux right now. Occasionally I get some problems, but I've always been able to either fix them, or work around them. I spend a lot of time on my desktop environment, which I can afford because I have a lot of free time. If you don't have the time, or simply don't want to spend time on your OS, (and have the money,) it's probably for the better to buy a Macbook. Otherwise, if customizing your environment sounds fun to you, take a look at other Linux distributions such as Linux Mint, Fedora, Manjaro or Arch. In conclusion, stick with Linux if you have time, move to OS X if you have money. (Myself I would never go back to Windows as main OS, but that's a personal choice.)
The convenient thing about Linux distros are the package managers, which OS X doesn't have. You'll have to use a third party, like [url=http://brew.sh/]Homebrew[/url] or [url=https://www.macports.org/]MacPorts[/url]. Once you have the packages you're used to on Linux, you'll get around the terminal just fine. I do all of my programming in a terminal on both Linux and OS X. Over the years I've had a number of laptops. I've used cheapo laptops, high-end laptops, and none of them have lasted as long as the MacBook I have now (and I bought mine used). I don't have overheating problems, I like the touchpad for casual browsing online, and the networking card in it is impressive for a 5 year old machine. Personally, I installed Wine on my MacBook, so there's not much it can't do. It's a bit weak for gaming, but I don't use it for that anyway. The new MacBooks might be better for games if that's something you care about, but I can't say. Any little Windows tools I need, I use through Wine. Any Linux tools I need, I install through MacPorts. Any OS X tools I need, I run natively. The only complaint I have is the keyboard. It might be better on newer MacBooks, I'm not sure, but mine is pretty limited. The quality is fine, it's just missing a lot of common keys. It's definitely something to look at and consider. A few years back I hated it, but now-a-days I use Vim (which is designed for even the most limiting keyboards) and I don't have any issues.
Thank you both for the advice. I am currently downloading Linux Mint, to try it. I think that I will get my self a Macbook pro at some point, but for now I will explore Mint and see how far it gets me.
Are your drivers set up properly? Your issues with everyday use sound like issues with your graphics drivers. Apart from MS Office, which you can either solve by using LibreOffice or running MS Office through Wine. Many GNU/Linux gamers dual boot with Windows since practically all notable PC games are on Windows. Dual booting is pretty easy, and if you point your Windows and Linux copies of Steam to the same library you will only have to install games once and it'll be available in both OSes (provided it has a Linux version).
[QUOTE=siraggi;46816480]I am currently in collage, studying computer science. So far we are using C and we will soon start using Java. I have been looking into changing OS to Mac OS X, but I am not sure if it is worth it. I am currently using Ubuntu, it is really easy for me to study and to write programs, my problems start when I try to use it for everyday use: I cannot watch YouTube videos without screen tearing, I cannot run MS office and gaming is out of the question. I have tried a Macbook Pro Ratina, and I love the display, text is beautiful on it. I haven't really done anything on it, other then just surf the web for a few minutes, but my understanding is that, since it runs UNIX at its core, it can be used similar to the Linux terminal and there should be a lot of good applications for developing. I wanna know you opinion on the subject. Which OS do you use for development and why? Is it worth the money to get an apple computer and if so, what would you recommend?[/QUOTE] Do you have a Mac already? If so, then use OSx, its just as good for development as linux is and much more user friendly (Though that isnt so true now a days with ubuntu) but programs generally are more likely to be available for mac. If not then its up to you if you want to spend that much money on what is essentially a glorified linux distribution
I could write buttloads about what I've learnt over my 11 years of developing (three of which were my compsci degree)... alas I do not have the time! The key to being a good developer is to establish a [b]system[/b]. That system should be effective, efficient, reliable, versatile, dynamic (easily changed), and pleasurable to follow! Don't try to develop on top of a Windows environment. You [b]will[/b] regret it and become the embodiment of hatred. The only exception is if your task is vendor-locked to Microsoft tools. Using Windows for remote access is alright though; I do so on my main desktop (as I'll explain in a moment). Mac OS X "is Linux" for the majority of things you're likely to work with. Homebrew brings the most popular packages, but again remote access is where it's at. If you set up a development environment on one machine, no matter where it is, you'll be bound to that machine; you want to it to be as reliable/available as possible. This pertains to both data and "metadata"—that is your projects, the tools you use, and their configuration. You could replicate everything between multiple machines, or you could do the sensible thing and set up a remotely accessible environment! But what should that environment consist of? *nix is undoubtedly the OS of choice for the developers of today. I rent a $30/mo VPS that runs Fedora 20. Whenever I need to work, I simply ssh into it; from my Windows desktop, my MacBook 13", and the RHELinux university machines. I used to use Sublime Text 3 (with a modified Mote for SFTP access), but have recently moved to emacs after a friend insisted (the power of emacs with plugins is insane...). What about performance, bandwidth, and connection availability? I live in rural Western Australia, so decent internet access is a bit of an issue. I have virtual machines on my desktop and laptop which are nearly identical to my VPS, which allows me to run the same version of every CLI tool (gcc, clang, emacs, python, nodejs, lua, etc). All the projects I work on are in git-repositories hosted on my VPS; including my configuration files for applications! This solves so many problems at once: versioning, backups, synchronisation, collaboration. A friend of mine syncs all of his "dot files" [url=https://github.com/LuminousMonkey?tab=repositories]using GitHub[/url]. You're probably wondering why I don't install Fedora on my desktop and laptop, seen as I rely on it so much. I use Windows on my desktop for games performance and driver support. I use OS X on my laptop [b]because it's fucking amazing.[/b] The quality of the "user experience" on OS X is far superior to any other operating system that I've used. Window management is a breeze (especially with BetterTouchTool), their implementation of multiple desktops is so comfortable to use, the power efficiency is great, the GUI design is aesthetically pleasing.... the list goes on! Contrary to appearance, I am not a salesmen for Apple.. their products are just so well made (though arguably overpriced). The recent improvement in quality of virtualisation technology makes it seamless to run Linux side-by-side a host OS. So.. what will work for you? Keep in mind that your [b]system[/b]—a concept that I cannot emphasise enough—is more than your editor... it is you. Read things; stay up to date; look at Hacker News and Slashdot; code new things frequently; build a "workspace" of effective tools; build your repertoire of knowledge; elicit experience from practice; learn from others; occasionally step back and objectively review the performance of your system; experiment with integrating the ideas of others; make your system awesome! If you "move with the flow of the water", your system will stagnate. An important thing for you, as you are starting university, is to inspire innovation amongst your peers. University education is not a competition (well, it shouldn't be...); it's easier to evolve your system faster if you have others working for the same cause. Also sleep... [b]regulate your sleep, meals, exercise, and anything that makes you feel "happy", else you will feel like shit.[/b]
[QUOTE=Deco Da Man;46836125]I could write buttloads about what I've learnt over my 11 years of developing (three of which were my compsci degree)... alas I do not have the time! The key to being a good developer is to establish a [b]system[/b]. That system should be effective, efficient, reliable, versatile, dynamic (easily changed), and pleasurable to follow! Don't try to develop on top of a Windows environment. You [b]will[/b] regret it and become the embodiment of hatred. The only exception is if your task is vendor-locked to Microsoft tools. Using Windows for remote access is alright though; I do so on my main desktop (as I'll explain in a moment). Mac OS X "is Linux" for the majority of things you're likely to work with. Homebrew brings the most popular packages, but again remote access is where it's at. If you set up a development environment on one machine, no matter where it is, you'll be bound to that machine; you want to it to be as reliable/available as possible. This pertains to both data and "metadata"—that is your projects, the tools you use, and their configuration. You could replicate everything between multiple machines, or you could do the sensible thing and set up a remotely accessible environment! But what should that environment consist of? *nix is undoubtedly the OS of choice for the developers of today. I rent a $30/mo VPS that runs Fedora 20. Whenever I need to work, I simply ssh into it; from my Windows desktop, my MacBook 13", and the RHELinux university machines. I used to use Sublime Text 3 (with a modified Mote for SFTP access), but have recently moved to emacs after a friend insisted (the power of emacs with plugins is insane...). What about performance, bandwidth, and connection availability? I live in rural Western Australia, so decent internet access is a bit of an issue. I have virtual machines on my desktop and laptop which are nearly identical to my VPS, which allows me to run the same version of every CLI tool (gcc, clang, emacs, python, nodejs, lua, etc). All the projects I work on are in git-repositories hosted on my VPS; including my configuration files for applications! This solves so many problems at once: versioning, backups, synchronisation, collaboration. A friend of mine syncs all of his "dot files" [url=https://github.com/LuminousMonkey?tab=repositories]using GitHub[/url]. You're probably wondering why I don't install Fedora on my desktop and laptop, seen as I rely on it so much. I use Windows on my desktop for games performance and driver support. I use OS X on my laptop [b]because it's fucking amazing.[/b] The quality of the "user experience" on OS X is far superior to any other operating system that I've used. Window management is a breeze (especially with BetterTouchTool), their implementation of multiple desktops is so comfortable to use, the power efficiency is great, the GUI design is aesthetically pleasing.... the list goes on! Contrary to appearance, I am not a salesmen for Apple.. their products are just so well made (though arguably overpriced). The recent improvement in quality of virtualisation technology makes it seamless to run Linux side-by-side a host OS. So.. what will work for you? Keep in mind that your [b]system[/b]—a concept that I cannot emphasise enough—is more than your editor... it is you. Read things; stay up to date; look at Hacker News and Slashdot; code new things frequently; build a "workspace" of effective tools; build your repertoire of knowledge; elicit experience from practice; learn from others; occasionally step back and objectively review the performance of your system; experiment with integrating the ideas of others; make your system awesome! If you "move with the flow of the water", your system will stagnate. An important thing for you, as you are starting university, is to inspire innovation amongst your peers. University education is not a competition (well, it shouldn't be...); it's easier to evolve your system faster if you have others working for the same cause. Also sleep... [b]regulate your sleep, meals, exercise, and anything that makes you feel "happy", else you will feel like shit.[/b][/QUOTE] Thank you for the great reply. I do have a question though; do you have the files you are working in on your computer locally, and then upload them to your VPS or do you work through your VPS, if yes, then how?
[QUOTE=siraggi;46838366]Thank you for the great reply. I do have a question though; do you have the files you are working in on your computer locally, and then upload them to your VPS or do you work through your VPS, if yes, then how?[/QUOTE] I work on my VPS directly for things like my website and other server-side stuff. I've got a tmux session running with a tab for each project, one vim instance per tab, and one or two terminals beside each vim window. tmux is a terminal multiplexer that allows you to spawn additional terminals in the same terminals. When you open a new one, your terminal splits into two halves with one terminal on each side. (You can split more than once, resize/reorder windows, etc. It's like a window manager except it's all terminals.) The cool thing is that you can just detach from a session and reattach later, which means your development environment basically stays untouched when you turn off your PC. vim is a very extensible terminal-based editor. It's very unlike any modern editor so it takes a while to get used to, but I think it's worth it because it's so powerful. There are many plugins available and you can really customize it as much as you want. A [url=http://en.wikipedia.org/wiki/Editor_war]popular alternative[/url] is emacs, which is pretty much the same thing except totally different. Here's a picture of my old workspace: [t]http://novaember.com/s/001487302.png[/t] And here is my current workspace after redoing mostly everything: (second screen omitted because it's irrelevant, it's just irc) [t]http://novaember.com/s/162180754.png[/t] If you use terminals a lot, you can pretty much blur the line between VPS and local machine if you want. For me, editing something on my VPS works almost exactly the same as locally, the only difference is that it's a different machine. You could also use sshfs to mount a remote directory on your local machine which could be useful for non-terminal-based editors like Sublime Text, but it's pretty unstable so I wouldn't really recommend it. If you have a good connection you could also use X forwarding which means you can use graphical applications on your VPS, but even with a good connection it's often pretty slow, though maybe you could do something about that. I don't know. Most of this works best on Linux in my opinion, but it's not that bad on OS X, either.
[QUOTE=siraggi;46838366]Thank you for the great reply. I do have a question though; do you have the files you are working in on your computer locally, and then upload them to your VPS or do you work through your VPS, if yes, then how?[/QUOTE] Happy to help! :eng101: I wish someone had told me such things when I was going into uni... This is how I handle my files: On my VPS: The directory [i]/home/declan/data/[/i] contains all of my data, organised into folders: projects, uni, env, util, creative, misc. [i]projects[/i] then has a subdirectory for each "category": personalweb, widget, ai, music, love2d, ns2, minecraft, etc. In each of those is a [i]projectname.git[/i] folder, which is a [url=http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/]bare git repository[/url]. [i]env[/i] is similar, but contains a bare git repo for each "environment" I use: bash-env.git, zsh-env.git, emacs-env.git, sublime-env.git, lua-env.git, python-env.git, js-env.git, clojurejs-env.git, cpp-env.git, etc. These repos have configuration files, libraries, useful snippets, and a bash script that symlinks things to the place I clone the repo (/home/user/.vimrc -> /home/user/dotfiles/vim.git/.vimrc). On each machine, including my VPS: I have a "workspace" folder; usually pretty disorganised. If I want to work on a project I just do: [code]git clone banjo:/home/declan/data/projects/ns2/modularexos.git[/code] Every so often, I commit. If I need to go, I commit regardless of the codes' state (in fact I often insert a syntax error to remind me that it's incomplete). Then, I push! Pull -> [Work -> Commit -> Repeat] -> Push I even use a workspace on my VPS, because git has issues when cloning from a non-bare repository (and also to my workflow the same everywhere). Learning to use Git this way is not difficult, and gives huge benefits. Whenever I need to do anything more complicated than clone, pull, commit or push, I open up SourceTree. Oh, and also important: I have a daily cronjob that uses rsync to copy everything in [i]data[/i] to my home NAS. How does this all apply to you? The important bits are: versioning, backup, being able to access it anywhere, branching (you will need it by accident one day you forget to push), consistency. A friend of mine likes to remotely use [url=https://github.com/CodeboxIDE/codebox]Codebox 0.9.4[/url] hosted on his home computer. This means he can use git repos without needing to push. It ticks all the boxes for him (except backup... he refuses to setup a backup plan :suicide: ).
[QUOTE=Deco Da Man;46839456]Happy to help! :eng101: I wish someone had told me such things when I was going into uni... This is how I handle my files: On my VPS: The directory [i]/home/declan/data/[/i] contains all of my data, organised into folders: projects, uni, env, util, creative, misc. [i]projects[/i] then has a subdirectory for each "category": personalweb, widget, ai, music, love2d, ns2, minecraft, etc. In each of those is a [i]projectname.git[/i] folder, which is a [url=http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/]bare git repository[/url]. [i]env[/i] is similar, but contains a bare git repo for each "environment" I use: bash-env.git, zsh-env.git, emacs-env.git, sublime-env.git, lua-env.git, python-env.git, js-env.git, clojurejs-env.git, cpp-env.git, etc. These repos have configuration files, libraries, useful snippets, and a bash script that symlinks things to the place I clone the repo (/home/user/.vimrc -> /home/user/dotfiles/vim.git/.vimrc). On each machine, including my VPS: I have a "workspace" folder; usually pretty disorganised. If I want to work on a project I just do: [code]git clone banjo:/home/declan/data/projects/ns2/modularexos.git[/code] Every so often, I commit. If I need to go, I commit regardless of the codes' state (in fact I often insert a syntax error to remind me that it's incomplete). Then, I push! Pull -> [Work -> Commit -> Repeat] -> Push I even use a workspace on my VPS, because git has issues when cloning from a non-bare repository (and also to my workflow the same everywhere). Learning to use Git this way is not difficult, and gives huge benefits. Whenever I need to do anything more complicated than clone, pull, commit or push, I open up SourceTree. Oh, and also important: I have a daily cronjob that uses rsync to copy everything in [i]data[/i] to my home NAS. How does this all apply to you? The important bits are: versioning, backup, being able to access it anywhere, branching (you will need it by accident one day you forget to push), consistency. A friend of mine likes to remotely use [url=https://github.com/CodeboxIDE/codebox]Codebox 0.9.4[/url] hosted on his home computer. This means he can use git repos without needing to push. It ticks all the boxes for him (except backup... he refuses to setup a backup plan :suicide: ).[/QUOTE] I think your setup is actually really interesting. I might look into getting something like this set up. On a side note, we have the same name. We are awesome.
Google Hackintosh if you don't wanna have to buy the entire Computer. I use Linux because it became increasingly difficult to manage libraries on windows. I prefer the shared library model to DLLs. When I develop for linux, I compile command line and all I have to do is add -l(library) to my compilations, but managing .dll files are an issue for me in windows, so I almost never code on my windows pc (i just have it for gaming)
[QUOTE=Deco Da Man;46839456]Happy to help! :eng101: I wish someone had told me such things when I was going into uni... This is how I handle my files: On my VPS: The directory [i]/home/declan/data/[/i] contains all of my data, organised into folders: projects, uni, env, util, creative, misc. [i]projects[/i] then has a subdirectory for each "category": personalweb, widget, ai, music, love2d, ns2, minecraft, etc. In each of those is a [i]projectname.git[/i] folder, which is a [url=http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/]bare git repository[/url]. [i]env[/i] is similar, but contains a bare git repo for each "environment" I use: bash-env.git, zsh-env.git, emacs-env.git, sublime-env.git, lua-env.git, python-env.git, js-env.git, clojurejs-env.git, cpp-env.git, etc. These repos have configuration files, libraries, useful snippets, and a bash script that symlinks things to the place I clone the repo (/home/user/.vimrc -> /home/user/dotfiles/vim.git/.vimrc). On each machine, including my VPS: I have a "workspace" folder; usually pretty disorganised. If I want to work on a project I just do: [code]git clone banjo:/home/declan/data/projects/ns2/modularexos.git[/code] Every so often, I commit. If I need to go, I commit regardless of the codes' state (in fact I often insert a syntax error to remind me that it's incomplete). Then, I push! Pull -> [Work -> Commit -> Repeat] -> Push I even use a workspace on my VPS, because git has issues when cloning from a non-bare repository (and also to my workflow the same everywhere). Learning to use Git this way is not difficult, and gives huge benefits. Whenever I need to do anything more complicated than clone, pull, commit or push, I open up SourceTree. Oh, and also important: I have a daily cronjob that uses rsync to copy everything in [i]data[/i] to my home NAS. How does this all apply to you? The important bits are: versioning, backup, being able to access it anywhere, branching (you will need it by accident one day you forget to push), consistency. A friend of mine likes to remotely use [url=https://github.com/CodeboxIDE/codebox]Codebox 0.9.4[/url] hosted on his home computer. This means he can use git repos without needing to push. It ticks all the boxes for him (except backup... he refuses to setup a backup plan :suicide: ).[/QUOTE] You are really helping me out here, thank you so so much. I do have a new question for you though, if you have time to answer; from where do you run and/or compile your code, do you do it through your VPS or do you do it locally?
[QUOTE=Deco Da Man;46836125] Don't try to develop on top of a Windows environment. You [b]will[/b] regret it and become the embodiment of hatred. The only exception is if your task is vendor-locked to Microsoft tools. Using Windows for remote access is alright though; I do so on my main desktop (as I'll explain in a moment). [/QUOTE] A major portion of the industry seems to do just fine, on windows. You need to kinda like Visual studio, because besides that its pretty much the same only you don't have as good of a packet manager inside MinGW or Cygwin(and there are some other annoyances, such as python scripts that aren't fully cross platform compatible, or some linux tools that don't have windows versions.) Regardless i don't think its very important what OS you use, just use whatever OS you want to use as desktop OS, and remotedesktop or virtualmachines options are soo good that what you develop on doesn't need to be your desktop OS. Personally i use Windows as Desktop OS, then have a selection of Virtual Machines with Windows, Linux a local NAS and a few VPS's, that cost me nothing, and all keep in sync with bittorrent sync. I mainly just do development in visual studio because it has better/more-accessible profilers and debuggers then other platforms, and when its stable i use some tools to convert the project file, and sort out some postix compatiblity problems.
hey im in collage too
[QUOTE=Duskling;46842626]On a side note, we have the same name. We are awesome.[/QUOTE] :dance: [QUOTE=siraggi;46844833]You are really helping me out here, thank you so so much. I do have a new question for you though, if you have time to answer; from where do you run and/or compile your code, do you do it through your VPS or do you do it locally?[/QUOTE] Anywhere! When I stared using this system, I had a $10/mo VPS. Bad processor, terrible IO and 512MB of memory with no swap. It was far more than enough to run everything I've described so far (even Codebox!), as well as compile most projects. Then I ran into a project that needed Boost... (for my third-year group project). Even my current $30/mo VPS has trouble with boost! On Windows, I run a seamless VirtualBox VM with Fedora and use that to compile. On OS X, it's close enough to Linux that working natively on it is not a problem for most of my projects. Clang for C/C++, and Homebrew the rest (Lua, Python, Ruby, etc). I've never needed to use the VM on my OS X, except for testing to see if an annoying bug occurs only on Mac. [QUOTE=Cold;46846416]A major portion of the industry seems to do just fine, on windows.[/QUOTE] The Microsoft "world" provides a plethora of powerful tools which are easy to learn and easy to use for the common case. That's why Microsoft products like the Office suite and Visual Studio are so popular; good results for little effort. God help you if you run into an uncommon case... I don't have enough experience with the latest Visual Studio to give advice; is it more stable than MSVS 2008 C#/C++ Express?
I prefer to compile commandline and use text editors to IDEs. IDEs make things more complicated
[QUOTE=Deco Da Man;46847986]:dance: Anywhere! When I stared using this system, I had a $10/mo VPS. Bad processor, terrible IO and 512MB of memory with no swap. It was far more than enough to run everything I've described so far (even Codebox!), as well as compile most projects. Then I ran into a project that needed Boost... (for my third-year group project). Even my current $30/mo VPS has trouble with boost! On Windows, I run a seamless VirtualBox VM with Fedora and use that to compile. On OS X, it's close enough to Linux that working natively on it is not a problem for most of my projects. Clang for C/C++, and Homebrew the rest (Lua, Python, Ruby, etc). I've never needed to use the VM on my OS X, except for testing to see if an annoying bug occurs only on Mac. The Microsoft "world" provides a plethora of powerful tools which are easy to learn and easy to use for the common case. That's why Microsoft products like the Office suite and Visual Studio are so popular; good results for little effort. God help you if you run into an uncommon case... I don't have enough experience with the latest Visual Studio to give advice; is it more stable than [B]MSVS 2008 C#/C++ Express?[/B][/QUOTE] I can't say I've ever had any serious stability issues with any visual studio version, but there are pretty significant differences between visual studio 2008, and the 4 versions after it.
Just wanted to let you guys know that I have bought my self a Macbook pro 13" mid-2014, and I am loving it!
[QUOTE=siraggi;47008525]Just wanted to let you guys know that I have bought my self a Macbook pro 13" mid-2014, and I am loving it![/QUOTE] Nice man, I have the 15" rMBP and it's a great environment to work in. Glad you're enjoying it.
The wonderful thing about Macs is that you get the versatility of all the OS's you need (like if you ever need a Windows environment) but you get much better hardware. Windows laptops tend to be awful hardware, but you're sort of locked into Windows/Linux (and maybe only Windows on some really really new models.)
Sorry, you need to Log In to post a reply to this thread.