Ask Slashdot: Configuring Development Environment On a Shared Workstation?
First time accepted submitter xyourfacekillerx writes "After a long hiatus of developing (ASP.NET), I decided to pick it up again. I need to learn .NET and SQL for my new job (GIS tech using ESRI software). Down the road they need a PHP website, tons of automation tasks, some serious data consolidation, they want mobile apps in theory. This is not my job description, but I'm sure I can do it. Long story short, I need to setup a development environment on my home desktop, so I can do all this in my spare time. Trouble is, I share the machine (Win 8.1, 2.7 dual core pentium something or other, with virtualization support.) I want to avoid affecting the other users profiles. I currently use my profile for music production (Reason) and photography (Photoshop, et al) so it's already resource intensive with RAM, CPU and VMM. I'll be needing to install all of your basic Microsoft developer suites, IIS, SQl Server, ANdroid SDK, Java SDK, device emulators, etc. etc. Plus AMP and finally GIS software. There will obviously be a lot of services running, long build times, and so on. To wit, I wouldn't be able to use my desktop for my other purposes like the music editing. So I need some advice. Would it help to set up all these tools under a different account on the same Win 8.1 install? Or should I virtualize my development environment (and how?), and run the virtual machine side by side? Or should I add a HDD or secondary partition and boot to that when I intend to develop? I am poor ATM, but is there a cheap very mini PC I can place next to my desktop and run all my development software off that, remote desktop into it? I've done a lot of googling the last week and haven't turned up anything, so I turn to Slashdot. Please help me get organized so I can start coding again."
They don't take up resources when they're not running...
Comment removed based on user account deletion
Why are these questions landing on ./?
I am sure there is forums more adequate for this kind of line noise.
Let's turn the tide before Slashdot turns into News For Idiots.
Step 1: Install VirtualBox (https://www.virtualbox.org/)
Step 2: Install the dev. OS of your choice inside your new virtual box.
Step 3: Install all the dev. tools you need into the OS inside the new virtual box.
Voilla, you've now hidden most of your dev. changes from anyone else using the PC. They just see a VirtualBox install.
http://www.amazon.com/s/?ie=UTF8&keywords=lenovo+tiny&tag=googhydr-20&index=aps&hvadid=25726585877&hvpos=1t1&hvexid=&hvnetw=g&hvrand=337053786747876411&hvpone=&hvptwo=&hvqmt=e&hvdev=c&ref=pd_sl_3l2jixlovt_e
You didn't post your exact specs, but if you're worried about services and are resource constrained, just set them to start manually. When you want to code, start the ones you need (webserver, SQL, etc.). It's a little more work but it's not that bad. You could even script it so that all you'd need to do is run one command script to start or stop the needed services.
If you're that concerned about not affecting other users, then either separate hardware or virtualization is the answer. Whether you virtualize or buy new hardware depends on the level of performance required and what else will be running at the same time. If you want to build in the background and continue to maintain your existing audio suite (wich, as you say, needs to take over all reqources on the machine) then you've answered your own question: buy the separate box that you remote into for your development work. I would note that a lot of the audio editing suites out there do not like it when you install additional products to your system and become more unstable the more you add. This is another vote for separate hardware - keeping stability on your current box (which means more time working and less time debugging the system).
Great reason to use a VM, VMware, Parallels, whatever..
If you build up a dev system in the VM, it's portable and can be very stable over time (a big plus when you spend a lot of time getting your tool chains all configured).
I use native boot virtual machines - get the benefit of separate os environments and (almost) all the speed of running bare metal (only the disk is virtualized).
Why are you sharing a workstation with someone else if you're doing all this stuff on it? With whom are you sharing it? For all my jobs I have had my own workstation and so have any other developers. Are you only coming into work 50% of the time or something?
== Jez ==
Do you miss Firefox? Try Pale Moon.
Pretty much this. Not sure who these "other users" are, but if they are children, you're going to regret giving them access to your dev machine.
Personally, I use a host for a lot of my development. Local development is nice and fast and all, but I find it tends to give developers a false idea of how well their code performs in a live environment.
Someone flopped a steamer in the gene pool.
Draw the line between personal and work. You can find a diplomatic way to ask for your manager to provide the tools that you need to perform the work that they will ask you to do.
If work has a test environment, ask for access to that. No test environment? Develop on the system where the site will be hosted. Once that is done, go back to the manager and ask them to budget for the test server (unless they want to deploy test code in production.)
Woah. Question asked and answered. I vote we close this discussion now.
Two removable drives and a drive bay.
... it's a life.
Seriously, I know this could be unpopular here on ./ , but I think you are waaaaaayyyy over the top and all over the place...
Myself, I did all this stuffs, multimedia, audio production, programming and so... I and strongly recommend you to NOT DO ALL AT THE SAME TIME.
Besides, you should not be sharing a PC by now.
for 3hundred bucks you can get pretty much anything you will need
im totally serious
sharing a box with other users is just going to be a lot of trouble
Get a dedicated development box. Quickly. Do it now. You will be heading for serious trouble otherwise. And as another use above said: SEPARATE YOUR CONCERNS. You need at least 2 boxes, then. Really.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
I don't get it. Just install the development environment. Having Visual Studio installed is not going to make other applications slower. Just don't run Photoshop, Visual Studio, Reason and Crysis at the same time?
Good luck and congrats on your motivation.
Now, if you have spare time but no cash, get another job, evenings or weekends, and then buy yourself a decent dev box.
Or a tablet or laptop for the other people who share the machine.
If you're space and budget constrained, you can share the screen(s) with a switch box.
Vagrant is a great tool to keep your work organized on a VM. Spend the time to build a nice Windows VM with your base tools on it, then use it as a template (box in Vagrant terms). Unless you are also working off of crappy hardware you should be able to host the VM on your workstation and have it be fast enough for work use. Write a script to take your base tools image and your source control repo and build out a working development environment in one shot and you now have a consistent and repeatable process that can be handed off to someone in the future, is easily backed up to rebuild on a new workstation or can even be moved to "the cloud" using a different Vagrant provider like VMWare, AWS or Rackspace.
It will also make backups easy since you can clone from one disk to the other.
I couldn't function without it.
You need IE 6,7,8,9, and w3c compliant browsers all up. You may need node.js to test something that can conflict with Apache? Problem solved create another VM and don't mess with the other one. Need a domain setup like work to test app? Create a server and client to test etc. I would even go as far as saying no real professional would not use them.
Now in terms of your computer and conversation with the misses. Get a new one. It is pennywise and dollar dumb without one. It is an asset and not an expense. VMWare is not kind for anything under 4 cores and 8 gigs of ram without an ssd. Well ok maybe 1 vm but you will be using many ancient versions of IE and web servers. Get an AMD as for 1/3 the cost has 6 cores with hardware virtualization that only icore7s have. For the moderators, I am not proselytizing AMD as a fan boy but rather had to get it as 1st Gen icore5's did not support virtualization in the bios.
http://saveie6.com/
Huh?
Why will there be "a lot" of services running? Yes, you'll have IIS and SQL server, but that's only two services - and if you've only got a small test database and a couple of dev websites, they'll hardly take any resources at all if you're not actually using them. So, if you're not sat in front of the computer actually doing development, and someone else is logged in instead, it shouldn't really affect them at all. Ditto "long build times" - what sort of things are you planning on writing that are going to take so long to build that you'll have to walk away from the computer for long enough that someone else will want to use it concurrently?
Visual Studio, the SDKs, and the emulators will put extra entries in other people's start menus, but so what? If they don't run them themselves, they won't do anything or get in the way. Presumably not all these other users run your music production and photo editing software either, and that's not hurting them, is it?
Why on earth not?
Why doesn't the gene pool have a life guard?
So just use a virtual machine to set all of this up. Set up a VHD in Hyper-V, install Win8.1 and all of your tools to it, and it affects no one else. Alternatively, you may be able to do cloud-based development, since MS has an internet version of VS as well as a cloud DB and storage, but then you may lose the Android stuff.
My advice is to remind your new employer that ESRI recommend using the most powerful Xeon based developer workstations in their system design whitepaper. If you are developing server based code your dev and test environments should match the server operating systems, which you'll need licenses for. Last time I fully licenced ArcGIS Server Enterprise it ran to the tens of thousands per environment. You may need to write a business case for all this but your employer may thank you for it in the long run. The ESRI vendor may be willing to help if they think there is a chance of opportunity in it for them. Good luck!
Stop right there. If this is what your company is going to pay you to do, let them pay you to do it. Also, let them provide the tools you need to do the work. A powerful laptop can handle what you're trying to do.
Spin up a Virtual Machine. It is already built into 8.1, you just have to enable it. When you are not using it, shut it down. It won't impact anyone else or your other projects if you turn it off. Also by putting it into a VM, you can protect it from everyone else in your family. If you are just getting started with this stuff, I would not expect the built time to be that long. So it only has to be running when you are developing.
If you don't want to use Hyper-V, there are other options out there. I think you are looking directly at this option, you just have to fire it up. If you run low on disk space, then get a second drive. If you are tight on ram, then get more ram. It really does give you a lot of options.
"I need to setup a development environment on my home desktop"
No.
If you are doing it for work then your employer supplies the equipment. Maybe if it is convenient for *you* then some might add something for their personal equipment, e.g. I get my work calendar on my personal phone since it is more convenient for me to see it there than on my employer-supplied computer and the overhead is low. Since you have demonstrated how inconvenient it is to do it on your own equipment, you've proven that it is incorrect to use your own equipment.
Install Visual Studio.. it has its own built in web server. You can use SQL express. If you are really worried about system resources, manually start/stop SQL server only when you are developing
Evolution: love it or leave it
Work product on a shared home PC? Multiple users? The most brain-dead idea ever posted to Slashdot.
Like some of the other commenters, I would really, really think about it before you went down that road. Doing stuff for free is rarely a good idea long term, even if it's "simple" like being the family tech support. If you do go down that path, troll around on craigslist for a cheap C2D SFF desktop. I don't know where you are, but you can find them for around $50 here in Chicago. Maybe throw in a larger HD or some more RAM but that is plenty to run all the development stuff you want. You're not going to get the fastest build times, but it's plenty powerful enough to do what you need. It's also going to be small enough to stick next to or on top of your current workstation. Getting a KVM is probably a good idea as well.
If your current hardware is so crap that it can't run IIS and a SQL instance on idle without causing your recordings to buffer under run, then you really should throw that old Pentium II out and buy a current gen PC.
You're not going to be doing a rebuild all on 1,000,000s of lines of code while working with your DAW, so it's not even an issue.
As for background processes...I have 158 of them running right now and the only two who are above 0% utilisation are the system idle process and IAStorDataMgrSvc, which is probably running some long stupid windows task just at this time. Neither SQL nor IIS ever appear above 0% unless I am actually requesting web pages off them that have database queries at the time.
Finally, the sort of web development that is done with PHP has zero compile time and anything done with Java should happen so fast you barely even notice it.
I'm currently working on a project using the CryDev FreeSDK, which means I am working with about 300,000 lines of code, a huge amount of which are header files. A full compile of all of that takes about 10 minutes. Incremental compiles are done in seconds.
It's a storm in a tea cup, just get the tools and try it out before you worry about virtualisation or any extra crap you don't need. If it doesn't work you can uninstall them quickly enough. I typically run Photoshop, Mudbox, 3DS Max, World machine, CryFreeSDK Editor, CryFreeSDK runtime (1+), VS 2012 (up to 3 copies at once), and a host of other software - all without skipping a beat.
Just make sure your machine has 8GB+ RAM and fast hard drives. Any decent developer machine is going to handle far far more work without dropping frames than you are expecting.
As for users, make sure they don't have admin access. They shouldn't be able to do anything at all to your work if you don't give them admin on the machine.
All those moments will be lost in time, like tears in rain.
Pretty much this. Not sure who these "other users" are, but if they are children, you're going to regret giving them access to your dev machine
Wait, has windows 8.1 slipped so far in the security department that you can't isolate one user from another?
Windows professionals tell me all the time that windows can be protected and locked down just as tightly as Linux. (I don't necessarily believe this, but they get paid the big bucks to do this in their day jobs).
Normal account control features should provide all the protection you need if used correctly. Children should have a limited account, obviously, but permissions should keep any unauthorized users out of protected areas aren't new, unless someone is saying they have been deleted from windows 8.1. (In which case a swift downgrade to Windows 7 might be in order).
A big thumb drive for backups might be in order, obviously, but Windows should be able to provide enough protection for a self study project.
Sig Battery depleted. Reverting to safe mode.
doesn't PC stand for Personal Computer? I wonder why.
"Trouble is, I share the machine (Win 8.1, 2.7 dual core pentium something or other, with virtualization support.) I want to avoid affecting the other users profiles."
You want to do technical shit and you don't know your technical shit.
Don't pass go, don't collect shit.
If you can't figure this out on your own perhaps you have no business developing software.
http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx
It may be worthwhile encrypting the OS within the virtual machine with TrueCrypt or similar (install the OS, then install TrueCrypt in it, it's very straightforward.)
Your thinking is not adequate for programming. You are too confused.
Running all that on a desktop PC with loads of other stuff already installed will be a pemanent trip to purgatory.
Having said that, if you even manage to get even half of what you are proposing running on a Windows 8.1 machine, you will have a lucrative new career as a consultant available to you. The lack of anything when googling should have told you that.
However, your wishlist is such a bizarre alphabet soup of available tech that I'm not sure that there is a clear goal here. And if your employer isn't willing to pay for you to learn and implement this, get specialised and properly experienced in a much smaller subset of this stuff and find a new employer.
The problem is that when you start installing dev tools, you end up with system services installed.
If you're using a computer for any significant music production you should probably make sure that it's only used for that. You don't want some bullshit printer driver or Java trying to run an update while you're recording & ruining the take.
When idle and not receiving requests, tools like web servers and databases consume virtually no CPU on a Windows box.
You can even game on a box that's running a PHP server and a database engine or few, provided you have enough RAM to prevent thrashing and swapping.
You don't need to futz around with virtual environments or any of the rest of it. After the installers place their icons on all the accounts, just remove them from the desktops where you don't need those tools. Or ignore the extra icons -- they won't hurt anything just sitting there.
My Windows boxen have been multi-purpose for years, including audio encoding, video editing/transcoding, gaming, and software development. I've never had a problem, provided they had enough RAM.
I do not fail; I succeed at finding out what does not work.
Isn't this type of thing exactly why modern operating systems have multiple users? You install as much software for your user as you want to, and when your wife logs on with her user account to do music editing or whatever, she doesn't see any of your development tools at all.
I run a LAMP environment + PostgreSQL + Java (Eclipse, Tomcat, Android JDK, etc) on a 6 year old desktop computer with 5GB of RAM and it runs just fine - sure, there are several backup services running (databases, tomcat, webservers), but they run in the background and don't keep me from getting work done.
When my wife and I were sharing the same desktop computer, I ran a second X server, so she could hit a hotkey to switch over to her desktop without affecting anything on my desktop. Now she uses a Tablet for everything she used to do on the desktop, so I'm the only user.
Wait, has windows 8.1 slipped so far in the security department that you can't isolate one user from another?
No. 8.1 continues with the NT-based windows concept of user account separation and has virtually (if not exactly) the same user separation as windows 7
I don't know how you even read it as a windows 8.1 problem either. I think the implication in parent comment was that children can wreck things in general.
It's a no brainer. You'll want a development environment, and ideally a replica of the environment your app will be running on in production. You'll want to keep these environments clean of other crap that is not related to avoid introducing dependencies on stuff not in your production environment and to simplify troubleshooting.
VMs also give you all the benefits of being able to roll back to prior snapshots to help develop/test an upgrade procedure for new versions of your software.
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
To the OP what are the specs on the mini-pc as that might solve your issues.
I don't read it as a windows 8 problem.
The people I was responding to seem to think you need all separate hardware.
No way that should be necessary, with any modern hardware if the user understands how to manage the system properly. .
Sig Battery depleted. Reverting to safe mode.
I'd start with Visual Studio Online (http://www.visualstudio.com/products/visual-studio-online-overview-vs) - five user free basic version. Get your coding skills up to date, then work on a new rig.
www.christopherlewis.com
If that's a problem, you haven't got enough computer for EITHER task.
Watch your processor utilization while messing with music. Its loafing.
Its just not a problem with modern multi-processor hardware.
Sig Battery depleted. Reverting to safe mode.
GIS?
ESRI?
PHP?
Shared Workstation[?] ? A Win 8.1???? IS NOT A WORKSTATION!!!!!
Likely not a real post.
But if I were and I would never be bought into such a situation as this, I would sponge the "Company" for at least 3 months (farming my cv out) of salary and claim an injury then bail, on a junket to a convention. But hay this is not a real post so I can .. indulge.
Ha ha
M$ is crap for a shared environment, you are in for some pain no matter how you slice it.
Once you get used to working virtualized with remote desktop access you'll never go back. Fire up a new "machine" for every work-profile. You can tune the number of processors and memory per VM so that big compile or video render won't step on something that needs to be interactive. After seeing http://www.virtuallyghetto.com/p/apple-mac-mini-resources.html I went out and grabbed a mac mini and a thunderbolt ethernet adapter (for dual ports), and downloaded the free vmware esxi package. It makes everything very easy.
Every project should bare it's own machine.. or better yet, VM.
Why in this day and age, would you pay or even BOTHER with those toolsets when you can almost certainly design and build such a system for far less, and better technology (Eclipse, PostGRES, LINUX, ANDROID) using far less hardware?
The GIS extensions in Java and PostGRES are fab.
You can check that out at:
http://www.postgresql.org/about/news/1387/
-Hackus
Got Geometrodynamics? Awe, too hard to figure out? Too bad.
I'm kinda disappointed. I was under the impression that businesses were avoiding Win 8.1 out of disgust. The last thing we need is to give creditability to Microsoft's current design trend.
If this guy doesn't know how to use a computer, how is he a developer?
I share the machine (Win 8.1, 2.7 dual core pentium something or other...
Do not go the Virtualbox/virtual OS path. Even if you have a good amount of RAM, your machine is not fast enough to seamlessly run two operating systems side by side, and use it for serious development.
Partition the HDD and install the OS in the new partition, and install the apps/servers/IDEs.
Do you have an SSD? if not buy a 64 GB cheap SSD...its worth the upgrade and install the OS/apps/IDE on the SSD.
Tat Tvam Asi
Assuming different library paths etc, then not easily.
Sadly, the CP/M I was using on a toy computer at school in 1985 had better user separation than modern MS Windows.
Wait, has windows 8.1 slipped so far in the security department that you can't isolate one user from another?
slipped? has windows /ever/ been there?
CLI paste? paste.pr0.tips!
As a consultant, I run a new VM for each client. This ensures that the software I install for one client (including licensed software) doesn't interfere with any of the software for another client. You should be able to do the same with your development environment at home. Virtual Box works well. I currently use Hyper-V on my Windows 8.1 machine. Whichever you prefer should do. If the machine is shut down, it doesn't really consume any resources.
If SQL Server isn't being used (no connections), the OS'll just swap it out and there's no wastage. Ditto all the other things you mentioned. If you're going to be writing software, maybe you should learn the old adage about premature optimization.
My advice is:
1) Install everything you need
2) See if a problem actually occurs
3) It won't so stop worrying
Comment of the year
A rather decent used laptop can be had off of eBay for under $200. Separate work and personal machines is a good way to go. Also, ask your accountant if such an expense could be tax deductible, since it is related to job education.
If you have to ask a question like this, you are too stupid to think on your own and to write or develop any kind of a system.
Assuming the parameters here are that you don't want to buy a whole new PC outright, I recommend getting another hard drive and installing a fresh windows copy to it. Mask it from the other installation entirely so no one messes with it, and if someone asks just tell them its for work and take reasonable security measures (if you can, disk level encryption would probably be good here with your standard account passwords etc.).
Considering the specs of the PC you probably don't want to try and run VMs for a lot of application development because it is much too resource intensive and if you can help it, you want all resources devoted to the actual development environment (I only run VMs if we need a standard environment for an entire team to test against). Plus it can be a pain in the ass in general running everything in a VM.
The reason I would say you want a split install, in my experience, you will run a development machine IN TO THE GROUND doing heavy .NET and SQL development. My work laptop has the most jacked up OS settings now because I have to do a number of things in order to test new code correctly. This also has the added benefit of now the other users are not affected by the weird settings you WILL have to configure for development, and they won't inadvertently change some of your settings and not remember what they did (screwing up your known good state). It does make it a little more tedious have to go through a boot menu every time you start up, but worth it considering you have to share the machine and this is making money for you. Soon as you can get the money, I would invest in a new machine entirely and just port your hard drive into that (there are some weird windows commands that let you do this without having to do a clean install, I've done it a couple of times, you should be able to Google it).
Beyond that, good luck, .NET isn't too bad to catch up on and can actually be surprisingly nice for business level application development.
They don't take up resources when they're not running...
Well, ... now I know...
ARM Board...
I agree with this. Hyper-V on windows 8.1 is the way to go for dev environment if you need desktop class OS. If you can get a dev license for Windows Server 2008 or 2012, it will be fine also and help you later on in the configuration management as you approach production level code.
Either way you should absolutely virtualize and learn how to use Fixed Differencing VMs (base workstation host + base virtual machine + differenced VM). Once you get a baseline virtual machine set up, you make it read-only and have all future modifications go to the differenced VM. This way if you ever need to start over or spin up a duplicate environment using different configuration, you can start a new differenced image or just delete the existing diff image.
I'm not sure that this is true. In the default installation the services are configured to run. I could be mistaken though.
Either way don't install IIS or SQL Server on the host OS, install only on the virtual machine.
The problem is that when you start installing dev tools, you end up with system services installed.
If you're using a computer for any significant music production you should probably make sure that it's only used for that. You don't want some bullshit printer driver or Java trying to run an update while you're recording & ruining the take.
Right. Getting the machine set up for music production was enough trouble the first time around.
And by another computer.
Well, parent was about the best post I read. Confirmed my doubts about not splitting up the installations... I guess this is my best option at this moment in time, so here we go. Thanks Slashdot, thanks Zmobie.
Seconded. Safer and easier to have a dedicated workstation. Sometimes you have to "invest" in your career.
I've purchased RAM, communications software, chair mats, thumb (flash) drives, etc. for work to keep things smooth that otherwise were difficult to get procured for various reasons.
Table-ized A.I.
Of course you could just go into the control panel and point-and-click until the services aren't running by default. But perhaps that's beyond the skills of the average slashdotter.
Strange how nobody picked up the more troubling notes from the question. GIS development and .NET do not really mix that well. If the company (and you) are serious about GIS (or it is a large component) consider switching to Python or Java, or be at the (not so merciful and closed sourced) hands of ESRI. I have been developing a extremely large .NET application suite for the Dutch government for the last 5 years. It is still not working. Problems are the use of Oracle and .NET (Oracle being the biggest problem).
Tooling needed for GIS jobs works with Linux and other open source tooling. Consider PostgreSQL with PostGIS and GeoTools, GeoServer and GDAL/OGR. It's for your own sanity...
Well, depending on the age and responsibility of the children you may well wish to consider separate hardware. Locking down user accounts is relatively easy on any modern OS, but it doesn't do anything to protect from orange juice in the power supply or a head crash from knocking the computer onto the floor.
--- Most topics have many sides worth arguing, allow me to take one opposite you.
I see a variety of suggestions of getting another PC, but if your physically at the machine usage and other peoples' won't overlap, just get more memory and a second hard drive. Run VMs stored on that second drive - odds are good that you're not really CPU-bound these days unless there's some serious gaming going on.
fencepost
just a little off
Let's learn about about some of the products I was referring to...
I want to avoid affecting the other users profiles
By definition different profiles exist to not affect each other.
I wouldn't be able to use my desktop for my other purposes like the music editing
Why? I'll assume you're talking about hardware limits.
Would it help to set up all these tools under a different account on the same Win 8.1 install? Or should I virtualize my development environment (and how?)
Here it seems like you think that adding another user or a VM would magically double your hardware resources.
I hope you poorly wrote your post, or you'd better figure out those basic things before you want to be a programmer!
Can I suggest you activate the Hyper-V Role in W8.1 and create a virtual machine for your dev work. Can I also suggest you take a look at Visual Studio Online (visualstudio.com) as a good free version control system.
Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.
Heh, they want mobile apps in theory - until they realize (1) you have to develop a mobile app from scratch on several platforms (or use a yucky cross-platform toolkit), (2) write the back-end service interfaces for your existing company business logic, (3) pay a mobile developer... then it's not so important any longer. The boss just wants to whip out his iPhone and show people a cool app, and has no idea it is a full development project!
...why would you do work for your employer in your spare time?
This is a quite clever answer. Thankyou. I'm not the asker (obviously) but still found this answer quite educational, especially when I read up on it a bit more afterwards. I'm surprised I hadn't heard of these kinds of vm's before.
Life is like a box of chocolates, you never know when your gonna get food poisoning.
I just picked up a nice Dell desktop at their off-lease store http://dfsdirectsales.com/ that could easily handle your development work. It is an Optiplex 790 desktop with anIvy Bridge i5 CPU (i5-2400), mfg says it supports 16 Gigs of RAM (web reports show it can take 32 gigs), has a single HD bay and with a coupon it was just about $250 with 2 Gigs RAM and a small HD (80-160 Gig) shipped.
This is a quad-core CPU, and for an OS I'd suggest looking into the various MS offering to get you a single-use OS license for the software you need (like dreamspark, biz spark, etc.). You can run Win 8.1 Hyper-V or Windows Server 2012 Hyper-V on this type of machine, whichever you have a license for...
Ken
The answer I would have gone with is if you wanted to keep the same desk was to use a KVM and have things separated. Others suggested Clever VM ideas which I think are pretty neat. However you're right. There's no separation of systems in case things go to crap on one and you need to use another pc as a plan-b or you need to quickly interrupt your recording session to do something on the Dev environment for whatever reason (say you received an inane phone call at 9 at night from someone you've been waiting all week to hear from, etc)..
In any case there has to be some form of partitioning between the systems, be it physical or logical. One system configured to do all will find more limits than dedicated equipment/systems for each specific task
Life is like a box of chocolates, you never know when your gonna get food poisoning.
CP/M with user accounts?
Ken
Just install Oracle VM VirtualBox and create a virtual machine. The development tools and build times will probably not be as big a resource / time hog as you think.
I wanted to setup my devel environment exactly once and use it on my home desktop, my travel laptop and be able to hand it off to my development partner and have him use the exact same environment.
Assuming both workstations are adequate resource-wise (RAM, CPU) to host a VM that runs all your devel tools then an external HDD with a VM disk works pretty well in my experience. I setup my repo on the HDD and I can clone the whole HDD and put a copy in my fire safe with my other drives.
I'd get a USB 3.0 or another fast link that both stations support. And get a big enough disk to host a big enough virtual disk file to make it static. The dynamic virtual disk file seems to slow the VM down too much. And remember that you have to keep enough padding for temp files for things like program setups, etc.
I like Virtual Box's networking and host/guest sharing options. I setup a host only link to connect to my remote repo to keep another backup of the repo.
My 2 cents...
"Now, I doubt any of you would prefer a rolled up newspaper as a weapon against a dictator or a criminal intruder."
I actually have several installs on my laptop booting with this method.
Would it help to set up all these tools under a different account on the same Win 8.1 install?
No, I wouldn't do that if you're having problems with concurrent users.
Or should I virtualize my development environment (and how?), and run the virtual machine side by side?
Probably the best idea. Download Virtualbox for free and use your Windows 8 install media to put a fresh version of the OS on it. Start it up when you need to do your development work, close it down when you're done.
Or should I add a HDD or secondary partition and boot to that when I intend to develop?
You may eventually choose to go this route, but since the previous option is cheaper and easier, try out Virtualbox first, and then decide if you need to run a bootloader.
I am poor ATM, but is there a cheap very mini PC I can place next to my desktop and run all my development software off that, remote desktop into it?
I would recommend this over the previous suggestion. There are many cheap PCs that will do the job, but your best bet is Craigslist. I do not recommend using a remote desktop service to get into it, but attach a physical keyboard and mouse to it so you can use it locally. That way, you're not lagged by the network. Additionally, you have the option of putting the work computer in a different room than the photo editing computer, and multiple users can work at the same time.
I've done a lot of googling the last week and haven't turned up anything, so I turn to Slashdot. Please help me get organized so I can start coding again."
Hopefully this helps you. Good luck, buddy.
Use gparted to shorten the Window 8.1 partition and dual boot. You can setup grub to only show up on key press; this means it will essentially be hidden from those who do not know how to find that hotkey. I find this a very effective solution for said issue. I have done the same thing with my family computer
Everyone will use a virtual machine of some sort of they are sharing a physical box among clients or people. I virtual everything simply because I can backup the entire vm or move it to another box if I need. If you cant afford this, you are probably a shitty, out-of-work dev. Linus with Virtual Box or Windows with VirtualBox/Hyper-V. No one in their right mind dumps everything on the same OS and separate it by user profiles as you imply, so go fuck yourself you nit-wit.
Yes, and stuff always goes wrong when you try to change something. And you always change something. Even if you know you should not. Then you are screwed. And then there is the deadline. And the deadline just got shortened. And they added a new feature.
Are you really looking for environment separation? Or is it performance that's the concern?
i.e. You talk about "... a lot of services running, long build times, and so on. To wit, I wouldn't be able to use my desktop for my other purposes like the music editing".
So, if what you are trying to ask is: "how can I do two resource-intensive tasks (e.g. music editing/photoshop + development builds) at the same time without affecting each other on the same box?"
The answer is: you can't. Running virtual machines won't help you. In fact, it will make it worse. Creating virtual machines, or new user accounts doesn't add anymore 'horsepower' to your computer - it just helps you slice up what you already have. The only option is either live with the slowness, or buy new hardware.
If, however, what you want is truly 'environment isolation', then yes, virtual machines could help you. ... then yes, a virtual machine will provide complete isolation, at the cost of some performance. It will help if you have a 64-bit OS, and a lot of memory (more than 4 GB).
i.e. the other users of the computer have private financial information stored on the computer, and you are worried that installing IIS will accidentally make it available to the universe
-or-
you think you are going to be installing / uninstalling a lot of software, monkeying with what services are running, etc. as part of your development, and you don't want that to screw up other folks' software
At some point, you could consider using a 'hosted' machine, like Amazon's upcoming 'workspaces' offering ( http://aws.amazon.com/workspaces/ ) but it's only in beta right now.
Consider that you can be a new desktop/laptop for $200-$300 ..
Microbee has it, which was a nice feature in schools.
A few others had it too.
Some time back the writer Piers Anthony wrote a long afterword in one of his novels about the joys of writing on a shared home computer with CP/M keeping his writing stuff separate from other stuff.
I can't be the only one who noticed a few things that seem amiss with the premise.
/. for a question trivially answerable by Google or any modern best practices for development guide.
a) This guy has taken a new job and intends to take home an entirely unrelated project to do on his own.
b) He's not asking his workplace to provision resources for him to do this out of job scope project. Sounds like he hasn't consulted with anyone about taking on this task.
c) He claims to have the skillset to easily solve their website / application needs, but hasn't been successful enough professionally to purchase reasonable tools for his trade. Even car mechanics in the $18-25k / year range (essentially poverty) manage to save and invest appropriately in quality tools.
d) He's doing an Ask
e) Many of the tools he will more than likely be pirating are each worth more than the general requirements he has for this endeavor as far as hardware goes. Will his employer be alright with this?
f) Oh, I see, he's into music production (Reason). Ignore all of my other issues. Sorry, but his request for assistance falls awfully well into certain stereotypes which explain everything.