Software Shop Equipment
-
Hello, I'm currently a one-person software company (actually, I have someone helping me with some projects from home) and I'm about to invest some money and hire someone full time. Speaking on equipment (mainly computers and software), what would I need to buy/ Let's make an assumption that I have loads of money (I don't), but another (contradictory) assumption that I'm not willing to spend it if not absolutely necessary. I just want to get the idea of a great setup, without spending $100K US on it. Requirements: * VPN access from home. * A database server (MSDE probably) for my source control (SourceGear Vault) and bugs database (FogBugz). Ideally, this is the only critical server I will backup daily. * A build server. My definition of a build server: contains Windows, Visual Studio and a Vault client. Scheduled to every night check out the latest revision of the code, and build everything automatically. * Obivously, one computer (a great one) for each of the employees. Questions? * VPN requires Windows Sever (which I'll get through MS Action Pack), but could I use the VPN server, the build server, and the database server on the same computer? What about the build server on the same as the VPN server, and a databse server on its own computer with RAID and all that? * What else does the build server do or required? I've never seen a formal definition of one. * Any other tips from the experienced people here? Thanks, your comments will be appreciated! -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
Keep in mind that having good processes in place is 1000 times more valuable than the speediest computer system you can get for your developers. If the processes are broke, no fancy computer in the world is going to make software development easier. Marc MyXaml Advanced Unit Testing YAPO
-
peterchen wrote: Put everything on one OS Drive, and make an image to DVD is probably the most simple solution Yes, I'm planning on doing something like that. For the moment I was thinking about using my current computer both as database server and VPN server, and file share server and everything-server.... buying two computeres (one for each of us), and using my own computer as a build server through Virtual PC, and backing up the image. Nightly builds won't be nightly for the time being, but will require only one click (once VPC is setup). What about tools? I took a quick look at NAnt and seems good to me. Any experience? peterchen wrote: you've been listening to Joel again! Well, I've already used FogBugz for some time, and it's really cool. (And I got to know it by reading Joel's blog). And for the nightly build, I already knew about that, but now that I'm starting to do everything better, I took Joel's 12-question-test and I'm trying to improve one step at a time. -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
I have no expertience with NAnt, A co-worker is currently looking into CPPUNIT/VBUNIT. I am very hesitant with buying tools - I'm waiting until I have enough ideas to write my own, before I start looking what the market offers :) We are a bit of an unusual shop, though; no IT guy by trade, just one by passion (me), and four electrical engineers (one coder by choice, and two out of necessity, and the boss does DSP ASM), so don't take us as guideline. I guess for two people you can live with one dev PC acting as server (it was the boss' PC before because it had the least CPU load, we switched to a dedicated "everyhing" server as soon as we were 4 permanents). Luis Alonso Ramos wrote: I took Joel's 12-question-test I thought so much :cool:
Pandoras Gift #44: Hope. The one that keeps you on suffering.
aber.. "Wie gesagt, der Scheiss is' Therapie"
boost your code || Fold With Us! || sighist | doxygen -
Hello, I'm currently a one-person software company (actually, I have someone helping me with some projects from home) and I'm about to invest some money and hire someone full time. Speaking on equipment (mainly computers and software), what would I need to buy/ Let's make an assumption that I have loads of money (I don't), but another (contradictory) assumption that I'm not willing to spend it if not absolutely necessary. I just want to get the idea of a great setup, without spending $100K US on it. Requirements: * VPN access from home. * A database server (MSDE probably) for my source control (SourceGear Vault) and bugs database (FogBugz). Ideally, this is the only critical server I will backup daily. * A build server. My definition of a build server: contains Windows, Visual Studio and a Vault client. Scheduled to every night check out the latest revision of the code, and build everything automatically. * Obivously, one computer (a great one) for each of the employees. Questions? * VPN requires Windows Sever (which I'll get through MS Action Pack), but could I use the VPN server, the build server, and the database server on the same computer? What about the build server on the same as the VPN server, and a databse server on its own computer with RAID and all that? * What else does the build server do or required? I've never seen a formal definition of one. * Any other tips from the experienced people here? Thanks, your comments will be appreciated! -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
As a small software company this is very close to what I do. I put together a dual xeon server (2 gigs ram) with SCSI drives that I run microsoft virtual server on and has my cvs server database on it. This is also my build server and vpn server. I backup our CVS db by zipping the entire thing and burning it to a dvd. Since the server is business critical I use a raid 0+1 array for the storage which gives me piece of mind. I also back the server up to one of 5 400gig SATA drives every weekend. I keep 4 o the drives in one safe deposit box at the bank and every weekend I add one and take the oldest one to reuse for the next weeks backup. not really sure what your asking besides that. I built the big server myself for about $3200 total of which the SCSI array cost nearly $1200.
-
Keep in mind that having good processes in place is 1000 times more valuable than the speediest computer system you can get for your developers. If the processes are broke, no fancy computer in the world is going to make software development easier. Marc MyXaml Advanced Unit Testing YAPO
Yes, having processes in place for most things saves me tons of time and keeps me from making mistakes (forgetting steps). I can't recommend this enough. If you have good processes you'll save time and make much fewer mistakes.
-
Keep in mind that having good processes in place is 1000 times more valuable than the speediest computer system you can get for your developers. If the processes are broke, no fancy computer in the world is going to make software development easier. Marc MyXaml Advanced Unit Testing YAPO
Yes, I know about having good processes. Basically my original question could be also interpreted (and somewhat what I meant) into what are the basic processes I need. Source control, of course. A controlled build. Unit testing. Any others? We'll be only two people for the time being (maybe three, but not twenty, not soon at least) so I can't have big and complicated process for everything (altough I understand that the only way to do everything always right is to have well defined processes, but that will come one step at a time.) -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
-
As a small software company this is very close to what I do. I put together a dual xeon server (2 gigs ram) with SCSI drives that I run microsoft virtual server on and has my cvs server database on it. This is also my build server and vpn server. I backup our CVS db by zipping the entire thing and burning it to a dvd. Since the server is business critical I use a raid 0+1 array for the storage which gives me piece of mind. I also back the server up to one of 5 400gig SATA drives every weekend. I keep 4 o the drives in one safe deposit box at the bank and every weekend I add one and take the oldest one to reuse for the next weeks backup. not really sure what your asking besides that. I built the big server myself for about $3200 total of which the SCSI array cost nearly $1200.
I know I don't need the fastest machine. I have a P4 3.0 with 1GB or RAM that I'm using currently. I'm planning on using this as my server (reinstalling everything of course) and buying two computers (for each of us). I'll use this as my VPN server and my database server and filesharing, and using Virutal PC I'll set a build environment. By backing up to a DVD my databses and file shares, and the Virtual PC environments, I guess is enough, isn't it? -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
-
Yes, I know about having good processes. Basically my original question could be also interpreted (and somewhat what I meant) into what are the basic processes I need. Source control, of course. A controlled build. Unit testing. Any others? We'll be only two people for the time being (maybe three, but not twenty, not soon at least) so I can't have big and complicated process for everything (altough I understand that the only way to do everything always right is to have well defined processes, but that will come one step at a time.) -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
Well, the key is to start with simple processes and fix them as you find holes. A couple other things to consider-- having email notification of changes checked in to source control. Can be really helpful to quickly view what someone else has been working on. A good "to do" list, like this one.[^] In the beginning of a project, I'm not sure there's a lot of benefit to automated builds, but that's just my opinion. Marc MyXaml Advanced Unit Testing YAPO
-
I know I don't need the fastest machine. I have a P4 3.0 with 1GB or RAM that I'm using currently. I'm planning on using this as my server (reinstalling everything of course) and buying two computers (for each of us). I'll use this as my VPN server and my database server and filesharing, and using Virutal PC I'll set a build environment. By backing up to a DVD my databses and file shares, and the Virtual PC environments, I guess is enough, isn't it? -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
you know it really depends on how crucial your data is. For me, the data on the server is irreplacable. If I lost the cvs server or had some other failure, I'd be in a world of hurt. So backing things up often is an absolute must.
-
you know it really depends on how crucial your data is. For me, the data on the server is irreplacable. If I lost the cvs server or had some other failure, I'd be in a world of hurt. So backing things up often is an absolute must.
Of course, it's your work. For me it will be the same, the source control database and the bugs database is everything. My own machine could explode, the server could explode, but if I lose the source control database (or the bugs), an awful lot of time (and money) will be lost. I guess daily backup of the source control and bugs databases (by copying to a share on another computer) and a weekly (or twice a week) copy to CD to take home will be enough for the moment. And for the Virutal PC file (I suppose everything goes into a big single file -- or folder), I'm backing up the build environment, so I'll get all tools and code exactly the same every time for every build. -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
-
Hello, I'm currently a one-person software company (actually, I have someone helping me with some projects from home) and I'm about to invest some money and hire someone full time. Speaking on equipment (mainly computers and software), what would I need to buy/ Let's make an assumption that I have loads of money (I don't), but another (contradictory) assumption that I'm not willing to spend it if not absolutely necessary. I just want to get the idea of a great setup, without spending $100K US on it. Requirements: * VPN access from home. * A database server (MSDE probably) for my source control (SourceGear Vault) and bugs database (FogBugz). Ideally, this is the only critical server I will backup daily. * A build server. My definition of a build server: contains Windows, Visual Studio and a Vault client. Scheduled to every night check out the latest revision of the code, and build everything automatically. * Obivously, one computer (a great one) for each of the employees. Questions? * VPN requires Windows Sever (which I'll get through MS Action Pack), but could I use the VPN server, the build server, and the database server on the same computer? What about the build server on the same as the VPN server, and a databse server on its own computer with RAID and all that? * What else does the build server do or required? I've never seen a formal definition of one. * Any other tips from the experienced people here? Thanks, your comments will be appreciated! -- LuisR
Luis Alonso Ramos Intelectix - Chihuahua, Mexico Not much here: My CP Blog!
Well, if you don't want to use Windows Server for VPN, there is an open source project called OpenVPN ()[^]that I've used to connect my Dad and my Dad's boss' computers together. It worked ok, although with dynamic IPs it was a little problematic. Marc mentioned earlier that early on he felt automated builds weren't necessary. I would disagree and say that you're better off getting the process in place as soon as possible. We use NAnt for building, and setting it up retrospectively for projects has been far more complicated than doing it from the get-go. In particular, I would suggest putting the build file actually inside the solution, and then produce a build file stub on the build server. That way you get versioning of the build file, and it's also far easier to make changes than having to edit the file directly. Other build-server tips, I would definitely recommend using a continuous integration approach rather than scheduled builds -- i.e. listen for changes rather than always try building at one point. This ensures that changes are caught as they go in. I've not used Vault (but hear it's extremely good), if it supports atomic commits it should make it unbelievably easy to ensure that a unit of work doesn't negatively impact elsewhere. You'll also want to get automated NUnit and NCover reporting in too, and potentially FxCop. With CruiseControl.NET as your CI server, you'll get a good web app for monitoring builds, and a tray app that can monitor and update you directly. One other thing you'll probably want to do is to get NAnt building deployables. This in itself has been a huge timesaver for us, although this probably depends on what you're building. We build web-based apps, so our build scripts automatically pull down the latest code, build, test, and then zip the web site (including all dependent binaries etc.) into a zip that can just be extracted onto the server. The filename is along the lines of
ProjectName-buildNumber-buildTime.zip
and is stored in a shared folder. That way, we have a complete archive of all builds. We also build a source zipfile containing the source tree used for that build. Although not strictly necessary with SCM, it does make it very easy when identifying what code is currently on production etc. Oh, and another thing (sorry -- I appreciate this is probably over long already), you'll also want to put tools such as NAnt, NUni