Skip to content

Instantly share code, notes, and snippets.

@danabauer
Created March 30, 2013 14:29
Show Gist options
  • Save danabauer/95417ae5a86c4c89b2ee to your computer and use it in GitHub Desktop.
Save danabauer/95417ae5a86c4c89b2ee to your computer and use it in GitHub Desktop.
Here's what I'm using now. I'd like to make the transition to Linux. It doesn't have to be Ubuntu.
iMac (2 yrs old): primary work machine; OS X 10.6 / Windows 7 dual boot
* I keep Windows around because I run mapping software that only works on that operating system
* I'm working hard to transition to 100% open source mapping/GIS software so I can ditch Windows
* I spin up Ubuntu VMs when I need them
Macbook (3.75 yrs old): kid/music/entertainment machine, traveling work machine; OS X 10.6
* Lately I've been using this for work-related tasks during the day (when I'm coworking); family stuff at night
* I spin up Ubuntu VMs when I need them, but they feel painfully slow
I also have an old Dell around that is semi-functional.
@tpanzarella
Copy link

All kidding aside, for me, what works is:

  1. Macbook Pro for digital media / home entertainment purposes (photos, music, movies, kids games, etc.)
  2. Linux laptop for work - I use a ThinkPad T430s -- I don't love it, but it is OK for now

I used to want 1 machine for everything but ultimately I realized I would be sacrificing either my work or my play. So, since I already had my MBP, I decided to get a Linux machine for work. I used to do the whole VMWare Fusion thing, but it wasn't working out for me. For the work I do, direct access to the hardware matters and so does (machine) performance. A VM is just no bueno. Additionally, Linux is the platform of choice for real-world robotics. It just makes sense for me.

To Nick and Angel's point (on twitter). I was playing around, but there is truth to what they say. Linux is ugly. Clunky. You have to be wiling to hack to get basic things like robust video/sound, use a projector, etc. But, I look at that as a small price to pay to have Linux running on the bare metal for engineering purposes. Additionally, the work it takes to get those things working on Linux isn't nearly as difficult as it is to get an actual working scientific python stack running on OS X -- at least last time I did it.

My summary is this:

Mac is an (mostly) awesome user experience. I use it for play.
Linux is an awesome developer experience. I use it for work.

I should also note that Linux isn't all that bad for non-work stuff too. If I didn't have to go grab a crying baby right now I would elaborate more and edit this so it is more eloquent, but I'll have to save that for a later date. I'd be happy to discuss this with you IRL next time I see you.

@neirbowj
Copy link

I'll add my two cents here too. If you consider pursuing Linux in the hopes of having an awesome developer experience, I would recommend also considering FreeBSD. I went cold turkey (well, almost) on Windows about two years ago for my home (/office) desktop in favour of Ubuntu. About two years ago I was starting to ramp up on FreeBSD at work, mainly for network device prototyping and testbed work. Looking back, Ubuntu makes the initial jump into Linux comparatively awesome, but then it makes the transition from there to an awesome developer experience comparatively awful. In fact, I'm not even sure I can have an awesome developer experience on Ubuntu because I haven't had it yet. On the other hand, FreeBSD is a bit more clunky and awkward at the start, but once you hit your stride, it provides a brilliant developer experience.

I changed jobs recently and elected the MBP path for my work computer this time. My rationale is that FreeBSD and OS X share BSD ancestry, and, from time to time, core developers. As a result, I expect to find better parity between my main work environment and my preferred development environment. So far, because I am not and have not been primarily a developer, I can't say how well that will pan out, but so far, so good.

If this sounds remotely interesting to you, I'll gladly go into more detail.

@delagoya
Copy link

Yes, all kidding aside now. Both Tom and I agree that messing with VM's is something you should not be doing. Also agree that compiling SciPy and other tools for OS X is more of a pain than it needs to be. Luckily, the Anaconda CE packaged Python does all of the hard work for you :

https://store.continuum.io/cshop/anaconda

List of precompiled packages they provide, installed using their "conda" command line tool:

http://docs.continuum.io/anaconda/1.4/pkgs.html

You would still need OS X command line tools to compile packages and homebrew for external dependencies not in the Anaconda CE repo. Also the use of virtualenv with Anaconda is unsupported. But it is what we are recommending folks to use as a base Python env for a tool we have recently developed that has Numpy and HDF5 dependencies.

@tpanzarella
Copy link

@neirbowj From your post it is not clear what about Ubuntu made your Linux developer experience not-so-good. I too choose Ubuntu as my Linux distro. Primarily because I want a debian-based system (apt is unrivaled, IMHO) that is a bit more modern in its stock packages. In terms of development tools, there is nothing Ubuntu-specific about what I use so I question where your troubles came in. I employ the "Unix is my IDE" philosophy. To that end, Emacs, gcc, CMake, python, and then the standard Unix utilities: grep, sed, awk, strace, valgrind, gdb/ddd, etc etc make up my development environment. Those tools on Linux are superb. What didn't work for you?

While I am not so sure this applies to Dana and her original request, I would like to point out that the choice of GNU (Linux) vs. a BSD system will make a difference to systems programmers and application programmers writing in C/C++ when making system calls. In general, both systems are POSIX and provide that level of portability. However, in practice there are subtle differences between a BSD and GNU system that "low-level" programmers will eventually encounter -- e.g., slight differences in systems calls, reliance on an OS-specific library, ABI changes, managing compiler versions, etc. Additionally, if you write kernel code, your choice of system obviously matters. For example, in robotics, it is not uncommon to have to write a device driver for some piece of unsupported hardware you would like to integrate into your system. Again, I don't think this applies to Dana's initial query, so I will stop talking about it now. In summary: "Unix is Unix is Unix" is a dangerous position to take sometimes.

@delagoya While I have not used anaconda I suspect it is a nice option. In the past I have recommended EPD Free: http://www.enthought.com/products/epd_free.php And there is also this: https://github.com/fonnesbeck/ScipySuperpack

However, I view Anaconda and EPD (and others like those) as "Enterprise Python" distributions -- great if you need a common environment for 100's of developers or a runtime for non-developers. For Dana, an independent developer, I would expect she wants more control over her Python distribution, versions of modules, etc. That means running CPython from Python.org. Not being able to SIMPLY update her stack to whatever it is she wants to use is a non-starter if you ask me. That is why most people I know using scientific python on Mac OS X tend to run Linux in a VM. Which starts the vicious cycle of VM vs. bare metal, etc etc. This song-and-dance is what leads one back to Linux on the bare metal for work.

@dherbst
Copy link

dherbst commented Apr 1, 2013

Hi Dana,

Another option is to get a chromebook, and run ubuntu in developer mode. We have a couple of developers where I work that do this, but I haven't made the leap myself. Here's another story from someone that does it with the samsung chromebook: https://plus.google.com/112449749826562830126/posts/ZS9WaegrZYH with crouton, so it can run side-by-side instead of dual booting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment