Ask HN: Is it sane to ask for a non Apple PC when starting at startup?
Just about to graduate from college at the age of 24 and got a great offer from a startup. One thing I noticed though during my interviewing was that everybody used Macbooks or iMacs. I mean everybody.
I am an open source guy who has used Linux as his OS of choice for as long as he can remember. It's just what feels natural to me.
I should say this is for an SRE position rather than developer.
So to ask, is it sane to ask for something like this or just go with what they give me and deal with it by acclimating?
74 comments
[ 125 ms ] story [ 1960 ms ] threadLeaving aside the virtues of Linux vs. OSX as a development environment, I'd use this as a litmus test. If your request for a Linux box is refused, run for the hills. It's as bad a sign as being forced to wear a suit and tie.
Re. OSX vs. Linux: my opinion, having spent years using Windows, Linux (various flavours), OSX and a little FreeBSD: OSX is better than Windows for software development, but that's as far as it goes. It's still a locked-down proprietary imponator that you'd do well to avoid.
I've used Windows, Linux and OS X to develop, mostly of the environment I'm responsible for is Linux (and some Mac dev machines our team uses). In my opinion I'm really most productive in OS X, I don't have to be aware of weird glitches when using distro Y in hardware Z nor do I need to configure anything to work in my Macs, they just works and that's what I really want from a workstation.
I don't feel locked-down, I have a lot of UNIX tools to leverage myself while having support from a very sane and invisible UI experience.
Really, the time when Mavericks came and fucked up ntpd and our machines started to have weird glitches with HTTPS and other time-based authentications I got really angry. But then I remembered when I had to fiddle with Xorg or run a laptop without sound for months under CentOS or Mint or any other of the dozen of distros I've tried to use.
I love to tinker with computers, that's why I chose this career, but when you get older you begin to really praise when work-stuff "just works", you let the tinkering to stuff which you want to play with.
So yeah, I know there are some good arguments to use Linux vs OS X but ideology is not one I'm really fond of.
Yet this is exactly where ideology matters. If Apple as a corporation decides to make OSX worse than it is, later on, you will have no choice but to follow, if you stay on Mac hardware.
Linux is the only option that gives you freedom to choose your tools, your distribution that fits you best, and change if needed.
And exactly how is Apple or the use of a Macbook restricting your toolset in every way. OSX is UNIX compliant and will run damn near any tool a generix Linux distro can, with the added bonus that it wont take a thousand years to configure and maintain. Add to that the ability for enterprise to use a policy server and even domain logons with limited hassle and it forms quite a reasonable platform for development. Linux is a perfectly usable development OS, but OSX and Windows are just as capable given the same amount of configuration.
As a development environment both Windows and OSX are noticeably more broken out of the box as compared to Linux / FreeBSD. Neither comes with a package manager and you have to go through a song and dance to get a compiler / debugger / profiler toolchain setup on either platform.
You cant dump out the list of installed packages from your prior machine and use it as a recipe to get your new machine setup. On a linux box, I can provision a new machine and have it behave exactly as I want in under 10 minutes.
Getting nfs setup with good transfer speeds was an exercise in frustration on Yosemite (Ultimately I gave up, even on an ethernet connection I cannot coax my macbook pro to do > 2 Mbps nfs transfers). On Windows I had to buy an enterprise version for NFS share support.
All my Linux (Mint) setup is in a bunch of scripts that live in Git. I can have a fully configured dev machine running in under an hour, starting from a fresh OS installation.
With similar scripts an OS X machine could also be configured.
Quite a while; I haven't totalled up the hours but I'd guess several days at least.
The amount of time it's saved me must surely exceed that. I've installed a good number of machines (personal, work, hacking etc.) from scratch using them. I generally don't bother upgrading OSs, either; I just perform a fresh installation, run the scripts, and tweak whatever is broken in the latest release. History is here: https://github.com/duncan-bayne/mint-setup/branches
"With similar scripts an OS X machine could also be configured."
Not in my experience. I did spend - along with a team of very smart OSX-based developers - quite some time trying and failing to achieve a similar level of automation on OSX.
We got tantalisingly close at times, but never achieved anything like the level of control possible on Linux or BSD.
Edited: oh, and having those scripts on hand can be really useful when attempting to provision ancient hardware. See e.g. https://github.com/duncan-bayne/g3-setup/wiki
What issues did you run into trying to automate the setup of an OS X environment?
* versioning: we wanted to get very specific versions of things (DB servers, JDK, etc.) on our dev boxen to replicate production as closely as possible
* breaking changes to OSX: it seemed as though every new version of OSX broke All The Things. It wasn't easy to do what we'd do for Linux, that is, mandate "start from a fresh installation of Ubuntu 12.04 LTS"
* breaking changes to tools: the software management tool we were using (I forget the name, it was written primarily by a guy here in Melbourne) kept changing in ways that made things difficult
* massive installations: I seem to recall downloading GiB of data per machine, something about installing XCode through iTunes
* iTunes: again this is going from memory, but I recall there were certain tools we used that wouldn't install nicely from the CLI, only through iTunes
* hardware-specific OSX discs: I also recall having issues with having to have the right installation media for the right hardware (ours was, errr, not homogeneous)
All in all, it was death by a thousand cuts. Everything 'sort of' worked, but new versions changed things, new hardware changed things, ... it was very, very rare to receive a new Mac and just be able to deploy our dev environment to it.
Perhaps things have changed for the better in the past few years, and we certainly did have an odd (publishing industry specific) set of tools and requirements.
But the experience really did suck.
I have had literally years of experience trying to standardise OSX across a range of pairing workstations, and the experience was sufficiently bad to:
a) put me off OSX entirely as a 'serious' OS
b) motivate me to develop a Vagrant-based dev system that could be shared across OSX hosts, and used via SSH w/ X forwarding
I demonstrated the solution to a local Ruby on Rails meetup, where it was fairly well received despite the vast majority of the audience being Apple users and, in many cases, advocates.
I wasn't trying to make an ideological argument there. Leaving the ideology aside: been there, done that, never again.
"So yeah, I know there are some good arguments to use Linux vs OS X but ideology is not one I'm really fond of."
In terms of ideology, look at say kernel extensions. These days, you have to have permission from Apple to sign kernel extensions such that you can install them on your own machine. Not only does this mean that OSX is broken as a machine for serious work (i.e. stuff beyond running your latest Rails project), it's a clear example of how important ideology actually is.
Ideology is important. Sooner or later, it makes or breaks your project in ways you'd never expect. (The same is true of teams, companies and entire countries).
Also, Macbook Pros are incredibly well built hardware, compared to the typical Thinkpad.
I'd recommend that the OP try using a Macbook Pro if he/she hasn't used them before. You might be pleasantly surprised. I think it might be better to be a little bit open-minded when considering a job, rather than rejecting them if they don't let you use linux. Ask them what their reasons are for using Apple hardware.
They are built to be monoliths that cannot be opened and tweaked with. I'm not sure how you can say it's well built hardware if one cannot interact with it at all. On a Thinkpad, I can upgrade the memory, add a SSD on top of my base hard drive, remove and replace the LCD screen, completely replace the keyboard... and of course change the battery - and everything just works. That's incredibly well built -modular- hardware, without any stop needed at your local Lenovo shop to change anything.
Unlike a many-year-old thinkpad, Macbooks generally dont have problems requiring you to open them and fiddle. As with alot of Ultrabook style machines, everything's soldered down meaning you get a thinner, lighter product, even the new thinkpads. Granted upgradinng RAM is a bit tricky now, but 8GB base isnt too bad.
EDIT: pre-empting the reply, I use both a T61 and a Macbook and they're both useful in their own ways.
> As with alot of Ultrabook style machines
That's the problem I have with Macs - trying to be thinner for the sake of being thin. We're past the stage where most laptops were bulky and very heavy. I'd rather have one that's a little thicker, has several extension ports, and can be tweaked with (hence a Thinkpad works for me).
I own a T61/T60P hybrid I built myself. I'm not sure what I'm going to do when I need more than 8gb of RAM. I haven't had a problem with this hardware since the HDD died and got replaced with an SSD.
Whether the battery is replaceable by the user or not has zero to do with how well made the thing is.
I had a MBP when they had replaceable batteries. I much prefer to have one one that's thinner, lighter and lasts a lot longer on battery power, knowing that if I still have it when the battery is no longer adequately holding charge, I can take it into an AppleStore and they will replace it for me, for the same cost they used to charge for a battery alone.
If you want user replaceable everything that's your choice but don't try to associate that attribute with the build quality of a machine, and don't assume everyone else wants to replace parts themselves. The vast majority, do not.
Well among people who built desktop PCs for the whole life, the idea of having something completely closed and locked up is ludicrous. That's maybe what you don't understand, if you don't come from that culture (and if you don't enjoy that aspect of hardware). And the "Vast Majority" does not mean anything, most computers users nowadays are amateurs who have no computing background, that should not be a benchmark for considering if something is appropriate or not (fallacy).
> No one claims an Audi is not "well made" because the engine is not user-replaceable.
I don't know about Audi (I don't repair cars), but I know people who do in my close family, and who get really mad a newer cars whose engines are all locked into a single block as they cannot be repaired anymore. That's the Apple model for cars at work, and in the future kids won't even understand how cars or computers work since all they see is a black box that has no key. Even for educational purposes, it's essential to be able to see the innards of your machine.
> has zero to do with how well made the thing is.
Oh, and if you can't see it, how can you judge how well made it is ? It could be a glorious mess for all you know.
That's not to say that the MBP's profile of compromises and benefits doesn't work for some people. But whether a glued in battery is a signifier of high or low quality is a matter of subjective opinion not soundly deduced objective fact.
You're right actually.
Now, when was the last time anyone who didn't work at/own a tire shop, mechanic's garage change their own tires?
You need very specialised tools and specific knowledge/experience to change tires on cars - particularly if you want them balanced/aligned so they last more than a month.
So how is this any different?
Even if that's the case, your analogy is broken, because with tires you can go in just ANY tire shop and have them replaced, so it's actually a free market more or less, and that drives costs down for the consumer to the point that they don't bother doing it themselves. You don't need to go to Audi-approved Store only.
With Apple you don't have this choice. Even if you wanted to replace stuff by yourself. You are left with a useless brick once the battery dies out.
It's my pet theory that it's only a small percent of the population that faces issues with the macbook pro hurting their wrists due to a ratio of (long)arm length to (short)torso length. Never the less the common response is to blame the users (and google macbook pro wrists to see they are many), instead of realizing people don't always get to work in a perfect ergonomic setup.
Worst-case scenario is they say "Oh, we only provision stock MBPs" and then you use Parallels or VMWare to boot into your favorite flavor of Linux. It is highly, HIGHLY unlikely that they'll micromanage that decision.
Also: welcome to adulthood. You are hereby authorized to speak to colleagues at your workplace about issues like this without asking permission from anyone.
The best thing to do is to talk to potential employers. Be sure to make an honest effort to understand why they have the policies that they do, and remember that you don't have an experience managing n employees, so you may not be familiar with the challenges inherent to an environment where managers are outnumbered by 10:1.
Every moment you spend understanding their viewpoint will allow you to better articulate how your desire to use Linux fits in to their model.
The key is whether you can foster a development environment which is portable across systems. That is why we develop in an Ubuntu VM, because that way everyone can run our docker container cluster consistently no matter how their host system is configured.
If the startup you are working at is developing directly on host machines this may be your chance to introduce a better pattern of using repeatable, dependable vagrant environments instead of ad hoc setups. The benefits are massive, as everyone has the same configuration within the vagrant, and they can still code in their editor of choice on the host machine using shared directories inside the VM.
The difference in the metal is not a difference in the software (unless you happen to be doing something very specific to the hardware), and the difference in desktop environment basically does not matter.
It's very easy to have laptops that are similar to servers... stick Debian on your server, and (X)Ubuntu LTS on your laptop.
With Virtual Machines your developers can use an environment that is almost exactly the same as production, and still use whichever desktop OS they are most productive in.
1. Are they relying on any OS X software? For example, at my last job the front-end developers relied on Codekit, an app for compiling CSS, etc. Now, it could totally have been replaced with Gulp or similar - but do you want the first thing you do when you join the firm to be proposing they alter their workflow around you?
2. Whilst you work best on Linux currently, perhaps you could learn to use a Mac too? Then you have experience with both platforms. You could always use Linux in a VM as a backup too.
3. If you have issues as the only person running Linux, you'll have a harder time fixing them and people will have less time for you. I've seen this a number of times. People choosing something different to the rest of the team because they prefer it and it improves their productivity, only for it to cause trouble (rarely their fault) and them get looked down upon because of it.
Overall, it probably won't matter - but it might be worth thinking about it. If there were some other people running Linux too, I'd say go for it. If you're going to be the only one, you might end up making too many waves - it's up to you if you're comfortable with that.
I'd have thought one would need to be doing some serious heavy lifting to really notice the impact by running your VM on fullscreen compared to bare metal. The host OS isn't /that/ bloated, is it?
So I'd totally agree with the advice re "if you're going to be the only one"...
Keep in mind though, if you go for the Apple hardware you're actually free to use whatever OS you want. You might just boot it straight into your favourite linux variant, but you'll still have the option to run OSX if need be. And honestly if you setup your toolkit properly OSX is pretty great, even for Linux users.
Development of some things on a Mac is fine after some adjustment, some things obviously require a Mac (iOS), and other things come with varying degrees of pain. I think it's totally reasonable to ask for the tool that'll make you most productive.
We used to be close to 50/50 mac/linux and would let you get whatever you want. Over the years, we've noticed people with linux spend a much larger portion of their time dealing with some issue or another than their mac comrades. If we need to swap their box, they spend more time getting it back to the way they like it. They also have more trouble with projectors and with web conferencing software (1). Finally, when something does break, we're about 5 minutes from the apple store.
We're now pushing much harder for people to buy mac laptops and then offering to put a tiny i7 linux desktop on their desk if they want it. And of course we've got racks of linux servers in the closet for people to use.
That said, if you really want a linux laptop or desktop. I'll buy you one.
-
(1) I'm sure you have no problem with projectors and your linux laptop. It seems to work most of the time, only failing when it's really important. ;-)
Also note 100% of development is using at least a virtualbox linux vm either way.
I think a large part of it is that linux has finally gotten very usable on specific laptops (lenovo t series, Dell xps), and almost all of our internal tools are actually just external network endpoints that linux handles wonderfully (gmail, hipchat, github, etc). Also - recent Mac OS X updates have had serious stability problems for lots of my coworkers.
Only negative? For a short period I put linux on my macbook air and that was a massive headache.
AppleCare is frictionless. I've also had OK (but not great) on site warranty support from Dell.
IMO it's better to save your energy for your work rather than fixing your tools.
Anecdotally - I worked in a startup with 30 employees, half running Apple hardware and the other half Dell/Lenovo/Build your own. The latter employees always had a worse time dealing with manufacturers warranties and contractors to fix their stuff when it broke.
Worth clarifying with your (future?) employer if you're planning on running hardware distinct from the rest of the company.
I was in a similar situation to you and I caved and got a macbook when I started my job. I absolutely love it.
I have my linux desktop at home that I use perhaps 15% of the time, while at first most of the time I was wanting my linux features on OSX, anymore, its the other way around.
My point, is I absolutely did not give osx a fair chance before I finally switched, and I was missing out for years. So I suggest at least consider it.
Having said that - it shouldn't be an issue to get the workstation that is going to make you the most productive - I guarantee you'll get pushback on the matter in a similar vein of this comment, but you should be able to get the computer you need.
After awhile though, I have to say... "meh". Don't get me wrong, the hardware is absolutely lovely. Great battery life, eye-pleasing screen resolution, comfortable keyboard, and the first laptop touchpad I've ever seen that's just as nice to use as an external mouse.
However, for me there are just as many annoying quirks in OS X as there are in Windows or Ubuntu/Mint. I dislike the single global menu bar model. I absolutely HATE HATE HATE the fact that "maximize" means something different from one moment to the next... that you have to hold down the "Shift" key and double-click the title bar to make your Chrome window maximize in the expected manner. Etc.
Moreover, I've become aware that I spend 99% of my day toggling between an IDE and a web browser, both of which are nearly identical across all platforms. I can see how UNIX-y underpinnings would help someone who works more closely with the console or with UNIX-y programming languages. But for me as a Java guy, it just doesn't matter. If anything, I'm slightly less productive because I still get the keyboard shortcuts mixed up several times a day.
I'm not trying to hate on my MacBook Pro, it's a great piece of hardware. It's just that knowing what I know now, I wouldn't spend my own money on one for personal use. It turns out that my frustrations over the years have had less to do with Windows itself... and more about the fact of being told to use Windows. I'm kinda over that now.
For a long time it was just a "zoom" button. Now it's a zoom/full screen button.
By default, this expands Chrome to the "appropriate" size for whichever website you have loaded in the current tab that moment. To get the normal maximize effect that one would expect from double-clicking a title bar in Windows or any Linux desktop environment, you have to hold down the "Shift" key while double-clicking.
Actually, I'm not sure if it's Google or Apple who is responsible for this specific issue, but it's inconsistent either way. Chrome doesn't work like this on any other platform, and none of the other Mac applications I commonly use (e.g. IntelliJ, Atom, Terminal, Spotify) behave this way on OS X.
If you really want the browser window maximised, scale it up once and if it's a halfway decent Mac App it will retain that window size & position until you change it. Or make use of full screen mode for that app maybe?
1. He gets the work done. 2. His choice of hardware/OS does not become a timesink.
In other words, in my department you can use whatever you please if you know what are you doing and you are going to properly deliver the work.
I personally have not seen any company with a mac only policy, but depending on the size or even the mood of the people in charge they might be annoyed at the fact that the newcomer does not like a seemingly perfect computer and they have to buy a new one, so I suggest a bit of caution.
If you are not sure about how will they take it and it worries you, why not just dual boot whatever OS of choice in that computer, or go for a VM for now until you can figure them out?
It's more important to be able to work well and communicate with people than to be comfortable and I feel like being on the same platform is an important part of accomplishing that.
If you do trust it then trust it and learn.
Hood luck.
If you are on the command line most of the time, you won't miss Linux that much anyways. The rest you get used to pretty fast. I do like the trackpad on the mac better than anything I've used ever.
That's what I mean when I suggest fleeing. My personal experience is that companies that force developers to use any one particular OS are not the companies I enjoyed working for. It's not so much about which OS, just that having that sort of decision enforced from on high speaks volumes about the culture, & whether I'd enjoy it.
YMMV though.