Quite a few of my start-up friends use laptops exclusively and I've never understood how they can be very productive on them. Besides the resource issue, they're only working with a single screen, usually a 15" one at that! I have a Macbook that I will occasionally use for work (though mostly just for reading HN after I wake up, as I am now), but a mere 17" of screen real state and 2GB of RAM is just not enough for the long-term.
Compare this to the 48" of screen and 6GB of RAM I get from my Mac Pro and there is no comparison. Still, even on that machine I routinely use 4 Spaces because there's just too much crap to keep on one desktop. Another advantage is never having to think about what to keep open; everything I use on a daily basis is always open and accessible in a Space without any waiting. There's no way I could do this on my laptop.
I think mobile working is a possibility, but I simply don't believe that laptops can replace desktops when it comes to software development.
The 17" MBP is very nearly the same price as a Mac Pro, and nothing says you need to buy one of those. You could build an impressive Linux desktop for far less than either of those machines.
the current generation of macbook/macbook pro's unofficially can handle up to 6 gb's of memory and i think that a pretty nice desktop setup is just to use your laptop but have 1-2 additional screens and a nice keyboard and mouse pair.
Though honestly, as far as I can tell, the main utility of having multiple screens is to physically separate your work from you fun visually and hence make it easier to focus.
I have a 15" MBP with 4GB of RAM. Whenever I'm in the office I connect it to a 22" LCD, time machine backup, external mouse, keyboard and storage, etc...
I think of it more as a moveable desktop than a laptop but I like being able to carry all of my files, settings and apps around with me when I travel (and still have everything properly backed up). Give me a decent network connection anywhere in the world and I'm almost as productive as if I was sitting in my office.
The combined area of two 24" monitors is equal to the area of one 33.94" monitor of the same aspect ratio.
((24^2)*2)^-2 = 33.941125496954281171240529381033
A combined area equal to the area of a single 48" monitor would imply that your two monitors each have a diagonal measurement of 33.94". Since modern widescreen laptop displays tend to have 16:10 aspect ratios, one might reasonably guess that you meant to imply that you have two desktop monitors and that they are 16:9 37" flatscreen televisions (which would have a combined area roughly equal to that of one 16:10 48" monitor or, more likely, flatscreen-television).
Screen real estate isn't reasonably measured in inches; resolution makes a ton more sense. My laptop's display is 1600x900, which is plenty of room for three terminals side-by-side. The screen itself is only 13.3" though. On the other hand, I know plenty of people with 20" displays that run them at really low resolutions, such as 1024x768 or 1280x1024.
Why couldn't you use Spaces on a laptop? My old powerbook G4 ran spaces just fine; I used 6 of them; one for email, one for a browser, and the rest for terminals. I never had a problem with it.
That works out to a horizontal PPI of 138.03. http://members.ping.de/~sven/dpi.html If subpixel rendering is being used (e.g. ClearType on Windows), then the horizontal PPI [EDIT: when displaying text] is 3x that, or 414.09. Don't you think some of those subpixels might be wasted on such a small screen? What is your typical viewing distance?
If subpixel rendering is being used (e.g. ClearType on Windows), then the horizontal PPI is 3x that, or 414.09. Don't you think some of those subpixels might be wasted on such a small screen?
The text on my laptop very crisp and clean looking; I don't think I have any sort of subpixel stuff enabled though; I'm running Linux, and have no idea if X even supports that sort of thing.
The typical resolution for a small laptop is 1440 pixels wide, which requires some really small fonts or terminals <80 columns to fit three across on a screen. With 1600 pixels, it's really easy to fit 3 terminals with reasonable fonts. I don't know anything technical about it, but I know it looks nice and is easy to read.
What is your typical viewing distance?
Well, it's a laptop, so the distance from my eyes to my lap, or closer on an airplane. I'd say I'm rarely using the laptop when it's more than about 3' away from me.
I use my MacBook Pro for design in Photoshop and development in TextMate + terminals + webkit. It's nice to be plugged into a screen, of course, but I can operate just fine with six spaces at 1440x900. I've become quite efficient with it, actually.
The cost and size and power consumption of a desktop just doesn't make sense anymore unless you're doing serious data processing, video editing, or something like that. I like to work at coffee shops and outside often, too, and you definitely cannot do that with a desktop.
Now that I think about it, you actually are the only developer I know who works on a desktop.
I think the original author is overestimating the cost of swapping. If you have a decent amount of memory (2GB+) and a fast hard drive (7200RPM+) you will usually get decent performance even when you have lots of memory-intensive tasks open.
Personally, I run Vista + 3-4 virtual machines + Outlook + Carbide.c++ and/or IntelliJ IDEA and/or NetBeans + a bunch of web browsers + multiple databases with 3GB of RAM with no problem.
I use a 14.1" screen on my laptop. Sometimes I wish I was using a bigger screen, but the majority of the time screen real estate isn't a big problem. In order to really make use of a giant screen I would need some new plugins for my IDEs that let me control my web browsers while keeping the focus in the editor. Otherwise, the smaller screen actually makes it easier for me to focus on the what I am looking at--everything is always in the center of the screen.
The main issue I have with my current system is with the CPU speed. Since I started doing C++ programming I have really noticed the slowness of my 3-year-old CPU and memory. I would love for my builds to complete instantly instead of taking 3-5 seconds each.
I have a 24" monitor at home, and it's nice, but I don't have any trouble working from my 9" netbook screen either. I use Xmonad, so I can basically manage windows in my mind instead of by moving them around on screen. I only need to see what I am interacting with -- if I need something else, it is just a keystroke away.
A bigger monitor just means I can be easily distracted by IRC, since I can see my code and IRC window at the same time. That is not necessarily good for productivity :)
This is the second comment by you on xmonad I've seen in a few minutes - have you written anywhere about your use of it, or do you know of anyone else who has written a good summary/explanation/use case of it?
The use case is that the computer manages window positioning for you, instead of you doing it manually. This frees up your brain to do something less boring.
There are 8 enginers at my startup. Four use Lenovo laptops (1 with the write on screen), 2 use Mac Book Pro's, and 2 use desktops. In terms of power, we're all on Linux or Mac OSX and we have enough power for most stuff, if we need more there is a 16 core build server we share. In terms of interface, we all have 2 monitors and nice keyboards and just put the laptop on a stand during the day. The productivity of being able to just grab your laptop and take it home for late night hacking, or on an airplane to a conference, or in a meeting you just don't want to pay attention to outweighs giving up 20% more power.
So true. I can take my laptop home. I can take it to the coffee shop. Tomorrow I'm taking a bus up to Tahoe to do snowboarding. 4 hour bus ride will allow me to get plenty of work done on the way (thank you git!).
30" display + Aeron is definitely well worth it for office productivity, but frankly 4GB+2Ghz+2cores is plenty of juice for my typical web dev load which includes Photoshop/Illustrator/2 Parallels Instances.
When people make these arguments about 2x performance increasing dev performance by a similar factor I call bullshit. Frankly I spend less than 5-10% of my time waiting for the machine, and even when I do that I'm still thinking, which is what developers should be spending most of their time doing anyway.
Better approach to developer productivity is incremental process improvement. Analyze problems. Automate checks to prevent them in the future. Spend time refactoring. Maintain a test suite. Set up continuous integration. Over time these things make the difference of an order of magnitude for programmer productivity.
I think you must be looking at the total memory for the apps (including shared libraries, etc), because I ran OSX with 512MB for five years without much trouble. I typically had mail, opera, and tons of terminals open, and there was still typically around 40MB of free memory. Upgrading my laptop to 2GB did allow me to run safari and webkit and iTunes (now that's a hog) at the same time, which was definitely nicer, but I never really felt crippled by only having 512MB before that.
It's currently running X.5, whatever cat that is associated with. I did have to disable the background indexing stuff (searchlight?) due to my blazing fast 4200 RPM drive, but it ran pretty well with 512MB. Spaces even worked. Things were better with 2GB, but it was completely usable for what I needed, which was email, a light browser, and terminals galore.
As I said, that's the RSIZE column from activity monitor. Safari is now 532 rsize, 562 rprvt, and 69 rshrd. It's a lot less if you restart it more often and have less windows open.
itunes is not a memory hog by comparison. it's using 62/30/32 in the same order.
Are you running 64-bit? I wonder if the size difference is due to that. I've heard 64-bit processes are bigger, due to larger pointers and longs, but I wouldn't expect things to be so amazingly huge. I certainly couldn't have survived on 512MB if my computer were using memory the way yours is.
Also, have you tried using webkit nightlies? I found that they were much more memory-friendly than safari, especially with flash disabled.
32 bit. i don't have to try webkit nightlies, or restart safari, because i have enough ram. ram saves my time. which was kind of the point of the article :)
Indeed. On my system (2GB), I use Vim in urxvt with zsh.
From top: .1 + .4 + .2= .7% of my ram. I could add in Postgres or sqlite and Apache (or even a lighter weight webserver) if I really needed it, and still probably not use my swap.
I noticed that as well. I run Ubuntu, which could be part of it (although that's not to say Ubuntu's not a little bloated as well). Just to test this, I opened up every program that I could think of which I use on a regular basis:
- Firefox, with 20 tabs
- Skype
- Pidgin
- Three terminal windows, running Python, vim, and CherryPy
- Songbird
- GIMP with a photo loaded
- Two OpenOffice Writer files
- Geany (a text editor) with nine tabs
- Nautilus
- Three large PDFs (books) using Evince Document Viewer
- System Monitor (not much)
And I'm only at 1.2 GB! (No swap, out of 2 GB total.) I rarely have all of these programs open at once, either.
While I agree with his point in general, it might be overall more effective to avoid relying on apps as bloated as Visual Studio. Then, you can save some of the money on computer upgrades and avoid any negatives that might be associated with developing on a high-end computer. (Of course, I'm a moron for suggesting that there might be any.)
I agree with you that using less bloated software could be an option but for some it just isn't an option and they are bound to use (at least some of) the bloated software because of the platform they are developing for or other dependencies...
I think what we can take from the article is that companies bound to use such software have to invest a bit more for their hardware, and to be honest, the costs for the additional RAM probably are pretty negligible compared to the licensing costs for the "bloated software".
Of course 8 GB is a pretty high number but it doesn't come with that high a price anymore.
You're right, of course. But there are a lot of people who use this kind of software that don't actually need to, and who would probably be better off using other options.
Also, I don't think that licensing costs hurt my point; by using free software, they could save on that money as well.
Every business software developer should have his own copy of SQL Server Developer Edition.
edit: Oh god, I didn't notice this nugget:
Note to the morons who argue "this is why developers are writing big, bloated software that suck up resources"
.. Dear moron, this post is from the perspective of an actual developer’s workstation, not a mere bit-twiddling programmer
I wonder how this guy manages to hold down a job with such a hostile attitude.
Hell, I can't make this crap up. Here's from another post:
People who swear by Linux for the most part only hate Windows for the sake of hating Microsoft; it has little to nothing to do with the overall quality of the Windows product. They just feel that they have the moral prerogative to spread hate of Microsoft throughout the world.
I think the last statement would be more true if it read: "[people who hate Microsoft] for the most part only hate Windows for the sake of hating Microsoft; it has little to nothing to do with the overall quality of the Windows product. They just feel that they have the moral prerogative to spread hate of Microsoft throughout the world."
Actually I "hate" Windows because after 15 years and 6 major version it is still crap. There are so many errors, bugs, crashes in Vista that you wonder if the developers of Windows are all retarded.
Yeah, the blog author manages to bring the stupid. Perhaps he should go take a look at alexa, and note how every site not owned by Microsoft uses so-called cult operating systems?
It's hard to take that seriously. Guy is a non-sensical MS fanboy, much like the 13-year-olds who believe that their allegiance to Microsoft makes them wise just because MS has more desktop marketshare than competitors. Article is ridiculous, dude is an anachronism. He should be returned to junior high so that he can have a second shot to mature out of this phase. My feelings do flash about.
It's hard to take seriously because of the hyperbole and smug, but he does make some good points in the article. He's basically right that any Linux software is available for Windows and lots of widely used Windows software isn't available for Linux, for instance.
But your response is just a personal attack. Two personal attacks, indeed.
8GB is almost barely just enough, but that article is fluff.
No one has all those apps running at once, and the numbers are exaggerated.
The real reason 8GB is just enough: open task manager and look at the virtual memory size for your applications. All that can be a lot faster if you have the memory to stick it in.
That number doesn't correspond to how much physical memory an app will use. Just see how much RAM is free or being used for disk cache during your normal workload, if that number is less than 500MB you would probably benefit from more memory.
people developing end user products should be given a machine that matches the average machine the application will be used on. fast and powerful machines reserved for fast feedback of large testing.
developing an interface on an 8GB machine then hoping it will run nice and fast on X users 1GB laptop is just silly.
that aside, I develop entirely on my laptop, I run linux, virtualbox with windows xp, photoshop + excel, emacs, firefox and a shell and it never breaks a sweat
no, they should be given the worst possible machines their application is still expected to run on, then it will run like greased lightning and use very little resources for everybody else.
The main reason I see for code bloat is because developers have too powerful machines.
I worked for a guy who wouldn't buy even modern machines for developers using the logic "if they write code that runs really fast on a 486, think how fast it'll run on a pentium" (yes, this was that long ago). This completely ignored that we couldn't use SIMD instructions/MMX or chip specific optimizations which exist because they are significant faster and more efficient than the alternatives.
Even if you use the latest and greatest machine for development, by the time you release the machine is out-dated in some respect.
I use a MacBook Pro with 2 GB, and I'm very happy with it. Would it be nice to have 4 GB? Yes.
Would I work faster with 4 GB? No (I would work much faster if I just spent less time reading Hacker News, Reddit, Digg, Wikipedia, etc.)
I'm very happy that I upgraded my MacBook Pro to 4GB of RAM -- as depressing as it may be, it was just painful trying to do work with only 2GB of RAM, and 4GB is barely enough. The biggest memory hog is VMWare, but Eclipse, Firefox, and OSX itself take up a lot of memory. In addition, you really need your entire working set of documents in memory, so that means the source code of all the projects you're working on. Considering the cost of 4GB of RAM for the MBP, upgrading is a no-brainer.
I have 4GB on a regular old Macbook and I've never had any trouble whatsoever keeping not only Xcode and Firefox running in the background, but also a VM running XP, VS2008 and Google Chrome on it, among other programs. 8GB is useful if you need all of your (many many) programs ready to go at once or if you're dealing with HD video, though.
Running OS X, I just got an upgrade from 2GB to 4GB of RAM. I wouldn't have bothered--just running the OS, Eclipse etc. is fine--but when I'm running Photoshop and an instance of XP under VMWare Fusion, things start getting a little sluggish.
Hardware is cheap. People are expensive. However these facts are lost on most upper management.
I have developed software for four decades. I was expected to develop the next generation software on what was essentially obsolete systems. I was never allowed to use development hardware that was much over current entry level capability. I did it but at what cost of lost opportunity and lost productivity? The management was stupid cubed if you ask me.
61 comments
[ 3.2 ms ] story [ 132 ms ] threadCompare this to the 48" of screen and 6GB of RAM I get from my Mac Pro and there is no comparison. Still, even on that machine I routinely use 4 Spaces because there's just too much crap to keep on one desktop. Another advantage is never having to think about what to keep open; everything I use on a daily basis is always open and accessible in a Space without any waiting. There's no way I could do this on my laptop.
I think mobile working is a possibility, but I simply don't believe that laptops can replace desktops when it comes to software development.
Though honestly, as far as I can tell, the main utility of having multiple screens is to physically separate your work from you fun visually and hence make it easier to focus.
I think of it more as a moveable desktop than a laptop but I like being able to carry all of my files, settings and apps around with me when I travel (and still have everything properly backed up). Give me a decent network connection anywhere in the world and I'm almost as productive as if I was sitting in my office.
Compare this to the 48" of screen and 6GB of RAM I get from my Mac Pro
You run four 24" monitors?
Why couldn't you use Spaces on a laptop? My old powerbook G4 ran spaces just fine; I used 6 of them; one for email, one for a browser, and the rest for terminals. I never had a problem with it.
That works out to a horizontal PPI of 138.03. http://members.ping.de/~sven/dpi.html If subpixel rendering is being used (e.g. ClearType on Windows), then the horizontal PPI [EDIT: when displaying text] is 3x that, or 414.09. Don't you think some of those subpixels might be wasted on such a small screen? What is your typical viewing distance?
The text on my laptop very crisp and clean looking; I don't think I have any sort of subpixel stuff enabled though; I'm running Linux, and have no idea if X even supports that sort of thing.
The typical resolution for a small laptop is 1440 pixels wide, which requires some really small fonts or terminals <80 columns to fit three across on a screen. With 1600 pixels, it's really easy to fit 3 terminals with reasonable fonts. I don't know anything technical about it, but I know it looks nice and is easy to read.
What is your typical viewing distance?
Well, it's a laptop, so the distance from my eyes to my lap, or closer on an airplane. I'd say I'm rarely using the laptop when it's more than about 3' away from me.
The cost and size and power consumption of a desktop just doesn't make sense anymore unless you're doing serious data processing, video editing, or something like that. I like to work at coffee shops and outside often, too, and you definitely cannot do that with a desktop.
Now that I think about it, you actually are the only developer I know who works on a desktop.
Personally, I run Vista + 3-4 virtual machines + Outlook + Carbide.c++ and/or IntelliJ IDEA and/or NetBeans + a bunch of web browsers + multiple databases with 3GB of RAM with no problem.
I use a 14.1" screen on my laptop. Sometimes I wish I was using a bigger screen, but the majority of the time screen real estate isn't a big problem. In order to really make use of a giant screen I would need some new plugins for my IDEs that let me control my web browsers while keeping the focus in the editor. Otherwise, the smaller screen actually makes it easier for me to focus on the what I am looking at--everything is always in the center of the screen.
The main issue I have with my current system is with the CPU speed. Since I started doing C++ programming I have really noticed the slowness of my 3-year-old CPU and memory. I would love for my builds to complete instantly instead of taking 3-5 seconds each.
A bigger monitor just means I can be easily distracted by IRC, since I can see my code and IRC window at the same time. That is not necessarily good for productivity :)
The use case is that the computer manages window positioning for you, instead of you doing it manually. This frees up your brain to do something less boring.
30" display + Aeron is definitely well worth it for office productivity, but frankly 4GB+2Ghz+2cores is plenty of juice for my typical web dev load which includes Photoshop/Illustrator/2 Parallels Instances.
When people make these arguments about 2x performance increasing dev performance by a similar factor I call bullshit. Frankly I spend less than 5-10% of my time waiting for the machine, and even when I do that I'm still thinking, which is what developers should be spending most of their time doing anyway.
Better approach to developer productivity is incremental process improvement. Analyze problems. Automate checks to prevent them in the future. Spend time refactoring. Maintain a test suite. Set up continuous integration. Over time these things make the difference of an order of magnitude for programmer productivity.
I'm using an open source editor, gmail, xamp, and some webbased servuces and I'm having no problems with 1GB of memory.
Safari 550 MB. Safari leaks memory, and restarting it then reopening all tabs is quite slow.
kernal_task 322 MB
Textmate 300MB (not normal)
WindowServer 136 MB
Mail 106 MB
itunes is not a memory hog by comparison. it's using 62/30/32 in the same order.
Also, have you tried using webkit nightlies? I found that they were much more memory-friendly than safari, especially with flash disabled.
From top: .1 + .4 + .2= .7% of my ram. I could add in Postgres or sqlite and Apache (or even a lighter weight webserver) if I really needed it, and still probably not use my swap.
While I agree with his point in general, it might be overall more effective to avoid relying on apps as bloated as Visual Studio. Then, you can save some of the money on computer upgrades and avoid any negatives that might be associated with developing on a high-end computer. (Of course, I'm a moron for suggesting that there might be any.)
I think what we can take from the article is that companies bound to use such software have to invest a bit more for their hardware, and to be honest, the costs for the additional RAM probably are pretty negligible compared to the licensing costs for the "bloated software".
Of course 8 GB is a pretty high number but it doesn't come with that high a price anymore.
Also, I don't think that licensing costs hurt my point; by using free software, they could save on that money as well.
Every business software developer should have his own copy of SQL Server Developer Edition.
edit: Oh god, I didn't notice this nugget:
Note to the morons who argue "this is why developers are writing big, bloated software that suck up resources" .. Dear moron, this post is from the perspective of an actual developer’s workstation, not a mere bit-twiddling programmer
I wonder how this guy manages to hold down a job with such a hostile attitude.
Hell, I can't make this crap up. Here's from another post:
People who swear by Linux for the most part only hate Windows for the sake of hating Microsoft; it has little to nothing to do with the overall quality of the Windows product. They just feel that they have the moral prerogative to spread hate of Microsoft throughout the world.
But your response is just a personal attack. Two personal attacks, indeed.
No one has all those apps running at once, and the numbers are exaggerated.
The real reason 8GB is just enough: open task manager and look at the virtual memory size for your applications. All that can be a lot faster if you have the memory to stick it in.
developing an interface on an 8GB machine then hoping it will run nice and fast on X users 1GB laptop is just silly.
that aside, I develop entirely on my laptop, I run linux, virtualbox with windows xp, photoshop + excel, emacs, firefox and a shell and it never breaks a sweat
The main reason I see for code bloat is because developers have too powerful machines.
Even if you use the latest and greatest machine for development, by the time you release the machine is out-dated in some respect.
But you don't necessarily quadruple the performance by quadrupling memory.
More memory -> slower hybernation
64 bit -> fatter pointers, leading to larger memory consumption
I have developed software for four decades. I was expected to develop the next generation software on what was essentially obsolete systems. I was never allowed to use development hardware that was much over current entry level capability. I did it but at what cost of lost opportunity and lost productivity? The management was stupid cubed if you ask me.
On my netbook 16GB is plenty and 8GB would be just enough. That's including all my dev tools. The 1G of RAM is more than enough.