How much RAM will be comfortably enough for Web Development in 2018? - hardware

I have old enough laptop. And decided to buy a new one.
Usually I use Chrome, Docker, Datagrip, Intellij, Slack etc..
Now I have only 8gb and it is really few.
I think that MB Pro 2018 (touch-bar) (i7, 16g RAM, 512g ssd) will be enough for my needs.
Or I should take 32g RAM?
Or I should not take MB at all ? (never used it before)

I have a i7/4 cores/8 threads/8GB PC which I still find comfortable to do development in different areas (Web Development/Embedded/Mobile/Qt5 on Virtualbox).
There is one key item that you did not mention which is a huge performance improver: switching from HDD to SSD.
My previous PC with similar caracteristics that broke down had a HDD inside and at some point I got tired of its slowness. I replaced the disk with an SSD and the slowness was gone. I've done the same on many other systems, including old ones (Windows XP, Windows 7, Windows 10, Linux, Pentium, Core i5, Core i7): all show significant improvements when switching to SSD.
Now when I buy a computer, I change the HDD into a SSD - it is worth the cost when using it professionnaly for development purposes.
The Web applications I develop are pretty "heavy". Of course my portable computer is about half as slow as the web application running on a server with higher clock speed, more memory (usefull for caching, ...). But I could surely tune my local server a bit more.
Of course, RAM will matter when you plan on running multiple virtual "computers" at the same time. I could clearly use more memory when running Android Studio, with one emulated android system running - running a Virtualbox instance with Ubuntu at the same time gets my computer in trouble.
And remember: it is better to choose a computer that allows you to upgrade RAM and disk(s). I always make sure that the computer can host a 2.5" SATA drive and that it is easily accessible.

Related

DotNetZip performance issue, but only on one specific server

I'm having a wierd performance problem with the DotNetZip library.
In the application (which runs under asp.net) i'm reading a set of files from the database and packs them on-the-fly into a zip file for the user to download.
Everything works fine on my development laptop. A zip file being about 10MB with default compression rate takes something around 5 seconds to finish. However, on the dev server at the customer, the same set of files takes around 1-2 minutes to compress. I've even experienced even longer times, up to several minutes. The CPU utilization is 100% when the zipping is running, but otherwise it stays around 0%, so it's not due to overload.
What's even more interesting is that on the production server, it takes something about 20 seconds to finish.
Where should I start looking?
Some hardware specs:
My Laptop
Development environment running on a virtualbox with 2 cores and 4GB RAM dedicated.
Core i5 M540 2,5GHz
8 GB RAM
Win7
Dev Server
According to properties dialog on My Computer (probably virtualized)
Intel Xeon 5160 3GHz
540MB RAM
Windows 2003 Server
Task Manager Reports Single Core
Production Server
According to properties dialog on My Computer (probably virtualized)
Xenon 5160 3GHz
512MB RAM
Windows 2003 Server
Task Manager Reports Dual Core
Update
The servers are running on a VMWare host. Found the VMWare icon hiding in the taskbar.
as mitch said, the virus scanner would probably be your best bet. that combined with the dev server being just a single core machine and the production server being a dual core (and probably without virus scanner) may explain a delay. what would also be valuable to know is the type of disk in those machines. if the production server and your laptop have SSDs and the dev server has a very old standard harddisk with low rpm, for example, that would also explain a delay. try getting a view on the I/O reads/writes for the zipfolder for the dev server and production server, you could use the SysInternals tools for that, and if you have a virus scanner or any other unexpected process running you're probably going to see a difference there. the SysInternals tools could be of value here in finding the culprit quickly.
UPDATE: because you commented the zip is created in-memory I'd like to add you can also use those tools to get a better understanding of what happens in memory. a delay of several minutes where you'd expect almost equal results because the dev server and production server are a lot alike has me thinking of the page file.. see if there are other processes on the dev server that have claimed a lot of memory. if there isn't enough left for the zip operation the dev server will start using the page file, which is very expensive.
The hardware seemed to be the problem here.
The customer's IT guys have now upgraded the server hardware on which the virtualized dev server runs and I now see compression times at about 6s for the same package size and number of files as on my local computer.
The specs now found in the My Computer properties window:
AMD Phenom II X6 1100T
3.83GHz 1,99 GB RAM

Multi-platform development from one computer

I am planning to build a new development computer for both Windows & Linux platforms. On Windows, my development would be primarily in .NET/C#/IIS/MSSQL Server. On Linux—preferably Ubuntu—my development would be in Ruby and Python.
I am thinking of buying a laptop with Windows 7 pre-installed with 4GB RAM, Intel Core 2 Duo, and 320 GB HD; running 2 VMs for both Windows and Linux development with the host OS as my work station. Of course, I would be running DBs and web servers on the respective platforms.
Is this a typical setup? My only concern is running two VMs side by side. Not sure if this configuration would be optimal. Alternative would be to do my Windows development on the host Windows 7 OS. What are your thoughts?
I really like using VMs for development, because it makes it really easy to maintain different configurations, make backups, test comms between machines, experiment, and so forth.
Linux VMs work pretty well. Windows in a VM on Windows, however, can be a resource hog. You probably want more than 4 GB on the laptop.
If your not going to be switching between the two platform frequently, I would recommend repartitioning your hard drive after you get your machine, and installing Windows in one partition and Linux in the other. Doing things that way is usually simpler, in that you don't need the over head of the VMs.
Sounds like you will get 15 minutes out of this laptop's battery, maybe 20.
Speaking from experience, you will prefer a desktop plus a "more mobile" laptop. You can do this without spending more than you had budgeted (remember you can skip the monitor on the deskop), but that will probably get you slightly less specs in exchange for the flexibility and a laptop you really can take with you. But I recommend spending slightly more than you would on the single laptop, and remember you do get two machines out of it.
You can network between them (e.g. use remote desktop programs from the laptop to connect to VMs on the desktop).
In my particular case, about 6 years ago I needed a new machine that could be used for on-location photography and had the power, screen-size, disk space, etc. to run Photoshop and other tools (e.g. batch processing ~900 largish images was one use case). I got a beefy laptop, which worked great for that, but the battery quickly died and never had much lifetime in the first place. The system has always been more of a "slightly-easier-to-move desktop" than a laptop, and it sounds like you'd rather have a real laptop.

Staging, Testing, and Version Control Server Spec Recommendations

I am going to be working with a few outside developers for some ASP.NET projects and wanted to setup a co-located server for version control, testing, and staging client sites until they are ready to deploy.
I already have the ISP and have a 10 megabit connection burstable to 100, so I don't think bandwidth is going to be an issue.
My question is, what specs should the server itself have? I was thinking of getting a Dell server with the following specs:
Dual Core Intel Pentium E2180, 2.0GHz, 1MB Cache, 800MHz FSB
4GB, DDR2, 800MHz, 4x1GB,Dual Ranked DIMM
RAID 1 160GB 7.2K RPM SATA 3Gbps hard drives
Windows Server 2008
Will this suffice?
If the project isn't too big that looks fine. My experience with version control systems on large projects is that memory tends to be the biggest bottleneck. I'd make sure you can upgrade to 8GB RAM if the project is going to be large.

Pros and Cons of Developing on a VM on a PC

I recently build myself a semi beef up PC (Q9450, 8GB DDR2 1066, 1TB HDD, Dual 8600GT, Vista Ultimate and Dual 22' Monitors) and I'm evaluating whether i should develop on a VPC/VMWare session on top of Vista or not?
One benefit I can see is that I can run the same VM on my Vista laptop so my development environment is the same on any of my machines. I also plan on purchasing a MBP before the end of the year as well.
Found a couple of articles online that semi-help Here
Any other thoughts would be really appreciated?
For webdevelopment I like to have the serverpart separeted out into a VM. My current setup is a Macbook Pro with several Debian VM's inside. I like the isolation aspect of it. I can try new software on the servers and have the ability to revert them back if something is messed up.
I do the programming via network-share (samba) in Textmate on the host system.
Another advantage of a VM is having a clean installed base. I use my desktop and laptop for lots of things aside from development. You never know when a piece of software you install is going to conflict, or if the little tweaks and what not you play around with are going to trash your OS. Reinstalling/configuring all your tools so they are exactly the way you want them can take quite some time. If you have a backup of your Development VM Image you can mess up your PC as much as you want but still be able to code without downtime. It also allows you to run Win/Visual Studio/Etc on a box that you would otherwise prefer Linux or MacOS on.
You can also make multiple copies of the same Image and use each one for a separate project.
Being able to transition between a laptop/desktop/server/remote connection, and always be in the same environment is also very helpful.
One problem I found (at least when using VMWare Server) is that no matter how fast your machine is, the screen refresh rate is still around ~30hz. That makes for a slightly unpleasant experience after using it for a while.
Where I'm working at now I use a VM for all of my development because I don't have admin rights to my base copy of XP.
Pros:
I like using a VM's because it give you some flexibility - you can switch between machines - have programs running on both and have a cool environment to work on.
Cons:
You have to boot up multiple operating systems. This takes time, memory and resources.
Clipboard operations on VM's can be interesting at times. Sometimes copying to clipboard does not work or gets mixed up between VM's. (Using VMWare).
File operations can be interesting when you plug in USB drives and other external devices. VM's sometimes do not see the devices, sometimes it does.
If your VM image become corrupt - you can easily loose everything in it.... unless it is backed up.....
It's great for presenting development talks, you can revert to a snapshot and give the talk from the exact same starting point each time.
Bulk-up your RAM on your future MacBookPro if VMWare will be used. I haven't (yet) and the performance with several other (mac-side) apps open really starts to feel sluggish.
All the best.
I was doing some work with Visual Studio recently with a Windows XP vm on Linux and somehow the guys who made the vm (vmware) made the windows machine actually run faster. We did some time tests to make sure and it wasn't major, but a few things (autocomplete for example) really did pop up faster.
If you are on Windows, Virtual PC is pretty decent for development work. VMWare Virtual Server is not really designed for use as a desktop and you will get very tired of it with any prolonged use. Sun's VirtualBox is another option competing with Virtual PC. VMWare has a workstation product but it is not free.
Typically, I do development on the real desktop (non-virtual) and then deploy or test to virtual machines which I can snapshot and roll back easily.
For a long time, we were developing on very early versions of Visual Studio 2005 and the associated .Net bits that went along with it. To protect our real machines from the various problems associated with pre-release software, we did all of our development work inside virtual machines. It worked amazingly well. I've been considering moving back to that model as it makes upgrading the physical hardware a snap (not to mention making it easier to deal with hardware failures by just replacing the entire machine): you just copy the VM image over.
On my current machine (A Core2Duo with 4GB of RAM), the performance drop when running one VM is almost not noticeable. Running two VMs, however, is painful.
I also can't figure out how to get VMWare Server to work across two monitors well.
I wouldnt want to develop in a VM so much as test things in a VM. For instance, it might be nice to set up a couple VM's to emulate an n-tier architecture, or a client-server setup or finally simply to test code on multiple OSs
It depends what you are developing and in what language.
VM's tend to take a fairly hard hit on disk access, so compiling may slow down significantly, especially for large C/C++ projects. Not sure if this would be such an issue with .NET/Java.
If you are doing anything that is graphics intensive (3D, video, etc) then I would steer clear of a VM too.
I don't know if it is so useful as a development platform unless you are doing something that ties into software you don't want to have installed on your regular working machine or that needs to work around a certain event that you need to be able to reset on a regular basis. It can also be handy when you are working with code that risks crashing your computer as it will at least only crash your VM.
It is brilliant for testing different configurations and setups- working with installers and so on, that is where virtualisation really shines as far as I am concerned, being able to roll things back whenever you need to and run through stuff repeatedy is amazingly useful for identifying problems before your end users run into them.
While doing development at home, I have to VPN into my company to be able to use the collaborative tools that are on the intranet. I also have a desktop + laptop that are hooked together through Synergy.
The problem that I have is that our VPN software wants things to be so secure that it will force all network routing through the VPN gateway -- even if I'm using additional NICs to network my desktop and laptop through a separate private network. The end result is that I can't use Synergy between my desktop and laptop and VPN into my company at the same time.
The solution suggested to me by a co-worker was to setup a VM instance on my desktop and use that for all my VPN needs. Works like a charm!
Speaking from personal experience developing java in an Ubuntu VM on Windows 7, I've found this to be quite productive. Mainly because my local IT support on the ground supports Windows 7, so I can do things like access all the local file shares and printers in Windows, and then config my Ubuntu VM to my heart's content.
Huge productivity benefits around remote access and desktop sharing. Windows allowed me to very quickly and easily use tools like logmein.com and join.me to access my machine from home and to desktop share the VM with other people in the company (both work seamlessly with the VM in a nearly full screen window). Neither of these services are supported on Linux, and I wouldn't want to deal with all the associated VNC/X setup and network config on Ubuntu.
My machine is fairly beefy. Quad core, with 16Gb RAM - 8Gb for the VM. Java dev in the VM is pretty quick.

How practical is Virtual PC on a personal development machine?

Is virtual PC practical on a home personal development computer. I do some custom .net programming at home and I was wondering if in terms of performance and overall use, Virtual PC is useful. Do the applications inside Virtual PC session run slower. It will help me with my personal dev machine. Would you recommend any other products?
In my estimation virtual machines are one of the best tools that a developer can have. I have my base dev machine and on it I run VPC for different platforms to test installations and application functionality. For web development I keep VPC;s running each of the major browsers that I support, so I continually test my websites on various browsers. I even still maintain an old VB6 app and I have replicated my old VB6 build environment to a VPC image. Make sure you have lots of RAM. My machine runs with 4GB and that works well for most everything I need. I also have Sourcegear Vault set up for source code management. I have the clients loaded on the various VPC's that I use for development and they all check data in and out from my central SQL Server box. It works great.
It really depends on what your home computer is like. I've used VPC to test different versions of Visual Studio (e.g. to make sure that a solution is VS2005 compatible, and to check out VS2010).
I wouldn't want to use it all the time, but then I am working on a laptop. Given a really meaty multicore home desktop (preferrably with hardware support, of course, and lots of memory) it could be reasonably practical for day-to-day use.
VMWare Player is free and some people find it faster - I haven't used it enough to compare the two properly myself. If you're spend a lot of time "in" the VM, it would probably be worth giving both a proper test-drive.
VPC is a very good choice. I use it to test deployments and for presentation purposes.
If you have a PC with a new Intel chip and at least 2 gigs of RAM it actually works just as fast as a regular PC would :).
I recommend 4 gigs of ram though, they're cheap as hell these days and it really matters.
I've had some success with this; I had to develop some older .NET 1.1 software on Vista, which wasn't supported. I had to run XP in a virtual PC container in order to get the project done.
The biggest issue was available RAM; I'd recommend maxing out your home PC to use as much as it can- this will likely be less than 4GB unless you're running a 64Bit OS. I found that getting an extra gig of ram made life much better. Ram is cheap right now, so I'd start there if it didn't work well enough for me at first.
Yes applications will run slower but the hit isn't as big as you might expect. It is pretty reasonable to do development on a virtual machine. Obviously the performance is relative to how fast your computer is, a mulitcore machine will do nicely.
If you develop driver or core routines, where every mistake can and usually will result in a crash. A VM is the best you can use.
I tried Virtual PC and VMWare. They are both pretty good for such stuff.
Virtual PC should be fast enough, unless your driver or code is really time sensitive. A cross-platform, free alternative to Virtual PC is Virtual box.
If you've got a VirtualPC license already, by all means use it. If not, you might have a look at Sun's VirtualBox. It's Free/Libre and cross-platform. I use it to run windows and linux on mac os x and linux and have been quite happy with it.
You can run your dev tooling natively on your pick of O/S. and use VM's to test on other environments. Get lots of memory if you're going to do this, say 2GB or more - if you haven't already.
AMD chips have some facilities (nested page tables etc.) that improve VM performance. 2nd gen Opterons and some Athlon 64 chips will support this for reasonable money. You can even get brand-name hardware like an HP XW4550 with this sort of chip for fairly reasonable money. I'm not sure to what extent Intel has caught up with this yet.
Assuming your host machine has enough raw power then a virtual machine works fine. I have a 2.5GB ram, 2Ghz duel core work laptop and don't want to install vs2008 for personal development so have a virtual machine for that. I've given it 1 GB of dedicated memory at the moment and it runs great, no problems. If needed I'll up the ram allocation but for now I'm happy.
Hope this helps :-)
I use VirtualBox for all development and find the performance much better than VPC. My machine is about a 2 year old dual core with 4gb ram and performance is not noticeably slower than running natively. The virtual machines are Vista and the host OS is Windows 2008. I would definitely recommend using virtual machines as creating a fresh new machine for a new project is very easy.
I have a toshiba notebook with 2Gig of Ram. I am wondering if its worth to install Virtual box and use it to browse web, do quicken, some small dev work etc.? How would I install Windows OS on virtualbox virtual session? Are there good tutorials out there? Would 2gig of ram be enough to run virtual sessions on notebook computer with following configuration:
2 gig of ram
Intel Pentium 4 cpu
60 gig hdd