Skip to content

Setting up a work box

January 10, 2014

I was recently awarded a brand-new laptop at work (yay!), which I now have to setup and migrate all my crap to (boo!). Of course, if you work in web development for even a few years, you have to go through this ritual at least once, if not more. I’ve been doing it for 18 years. I like to believe my box set-up kung fu is strong.

I’ve written a similar entry for a friend who doesn’t program, but needed software advice for his recently-purchased Windows laptop a while back. It lists a lot of software I wouldn’t install on a work box, but are great for home use. This is years old now, but I’d recommend many of the same programs today.

Of course, for programmers (even us webmonkeys), box set-up is Personal. Everyone does it differently. People will disown you for doing things a particular way. So, please be gentle in the comments section if you choose to tell me How Utterly Wrong I Truly Am.

Makin’ bacon

When I sign an employment contract, I believe there’s a tacit agreement in place: the employer has a reasonable right to assume that I will accept and use the software and hardware purchased for me to produce web sites or applications in return for money, and that I’ll use them responsibly and adhere to coding guidelines, no matter how much I may disagree with them personally. While I can make suggestions, the employer is paying me to do things their way. I’ve come across a lot of programmers who feel differently, but I just don’t believe this is professional conduct.

In my almost two decades doing webmonkey stuff, I’ve switched from Mac to PC at least half a dozen times. I’ve been given desktops and laptops. I spent a year on Mac System 7. Strangely, I’ve never had to use a Linux or Unix box at work. I’ve had tons of very disagreeable software rammed down my throat (I’m looking at you, Visual SourceSafe).

I’m not suggesting blind obedience, here. You do have the right to champion change and ask for things you’d like. You also have the right to ask about hardware/software during the interview. But, after you’ve signed the contract, you shouldn’t go rogue.

The zen of set-up

After doing dozens of set-ups, both at home and in the office, I’ve pared back my software needs dramatically. I try to do the minimum necessary for doing any type of productive work in a vanilla, generic setting, and only install additional stuff for the needs of each project.

So, the list below is pretty lame. It’s really designed for flexibility.

Write once, run everywhere

Just like the Java folks, I’ve come to embrace a couple of simple philosophies for software I rely on to pay my bills:

  • I prefer software that runs on all three major platforms (win, mac, linux)
  • I prefer free as in beer, as well as free as in freedom, in that order
  • I prefer hardware that can run as many operating systems as possible, either in dual-boot or virtualization
  • I prefer hardware that travels well

There are many outstanding software products that only work on one operating system, and using these can be a major productivity improvement. But I’ve been in situations where the shop I work for suddenly changes direction and forces the whole dev team to switch platforms. And then I’m stuck, learning a new tool, while deadlines don’t change. That’s bullshit. I want to learn a tool once, and have it work everywhere. The only thing I want to re-learn when I hot-swap an OS is the idiosyncrasies of that OS.

I support open-source as a concept, and think the movement has come a long way in the last decade. Generally, open-source has made the software landscape better, and you should consider donating time or money to these amazing individuals. But, in a work environment constrained by budgets, the price tag of software is more important to me than it’s philosophical openness. For instance, Komodo is a great editor, and I’ve had a lot of fun with it. But it’s price tag for the full IDE with source-control support built-in disqualifies me from asking my boss for it. Not when I can get a roughly analogous feature-set from Aptana/Eclipse for free. I want every conversation I have with my boss about budgets to count.

The move towards a mobile-first web means that testing, even if you’re building brochure-ware, has to happen on all three environments, and you need emulator support. The web development community has also embraced Unix/Linux-centric command-line toolsets to automate a lot of workflow and deployment tasks. Having a machine that runs all operating systems in either dual-boot or virtualization is a must-have. You’ll encounter shops that buy separate machines for each developer. Buying a single machine with a lot of horsepower is a better investment in the long-term. If the developer cares for it, it will last longer and cost less than two mediocre machines.

Employers are now much more open to tele-commuting, and many employers expect employees to present at or attend conferences. In addition, work/life balance is a hot topic, and many employers are more flexible about extended periods of working from home or on the road. A laptop makes the most sense in this scenario, even if desktops can deliver more power.

Webmonkeys only, please

A lot of the above won’t make sense in a variety of more traditional software approaches, where dedicated toolsets and more powerful hardware are needed. And that’s fine. I write HTML/CSS/Javascript/XML all day. I’m not compiling the latest EA game. You can get laptops with more than enough power to do webmonkey stuff. Granted, keeping them optimized can be a challenge, but that’s where individual choices matter.

Is he ever going to talk about software?

Ok, ok! Don’t get your IDE in a knot!

But first, my hardware choice (drumroll, please): a Mac laptop. Given the decision matrix I outlined above, a Mactop is the best current choice. I’ve seen devs produce hackintosh’s, but this is just too much damn work. I ask for as much RAM as I think I can get away with. I’m not as worried about the HDD…you can dump Windows and a Linux distro on even a meager hard drive without much effort.

In terms of software, this is the basic list I would have on a thumb drive if I was walking cold into a contract position at Webmonkey Corporation X.

Adobe CS isn’t on that list because there’s no way I can afford any of it. This is something I expect every employer to make available to developers. We have to cut graphics ourselves. Often, during refactoring, we’ll cut the same images over and over again, just a little bit differently each time. The back and forth with a designer will cost the company more than just buying the damn thing for everyone. Remember when I said I want every discussion surrounding software budgets with my boss to count? Adobe CS is why.

I use Aptana because a lot of shops are still running SVN, and Aptana is a solid IDE and SVN browser rolled into one, OS-agnostic, and free as in beer. I haven’t tried Git support in Aptana yet, because I haven’t worked for anyone that required it. If it’s as smooth as Aptana’s SVN support, I expect this to be my editor for awhile.

If I have the choice between Office or LibreOffice, I’ll pick Office. Web development is a multidisciplinary field, and I have to be able to read business docs with proper formatting intact. LibreOffice is the best alternative if you can’t get Office.

I’ve used Fusion in the past, but VirtualBox is what I run now for Windows and Linux images. I always install an image of Linux Mint with the MATE desktop. It’s a little lighter than Ubuntu, and the Mac Terminal has some missing features. Mint gives me the ability to run a Linux distro without a lot of overhead. The free Windows distro’s on Microsoft’s site are ok, but I prefer a licensed copy. You never know when MS’s altruism will go away.

I install all the browsers, generally with no extensions except for Firefox, which I still use for primary development. I know most devs prefer Chrome cuz it’s faster, but I prefer Firefox because it’s a little behind the curve in terms of standards support. If it works there, it should work in Webkit, and then I only have to worry about IE. I used to download Amaya because it had support for more obscure specs, but I haven’t for awhile.

My can’t live without extensions for Firefox are Firebug with Yslow, the Web Developer Toolbar, and User Agent Switcher.

The Web Accessibility Toolbar for IE is another must-have. Not only for accessibility. This is one of the better dev tools for IE, even with the stuff built-in to IE 8+.

And, of course, I install Flash and Acrobat plug-ins.

I only run a few utilities. 7-Zip will open archives that even time forgot. Ditto for video with VLC. CCleaner is the best de-crudder for Windows, and there’s a Mac version as well. While I would prefer never to FTP files in development, it comes up, and Filezilla works.

Portable Apps for everything else! The only Windows-specific app on the list, I have it installed on a thumb drive with a big list of ‘just-in-case’ software, so I’m never caught up short with weird requests. Transferring it to a Windows image is child’s play. It’s also easy to migrate to something like Google Drive. I also download the OpenDisc ISO for Windows as a back-up. While I try to never use these things, I’ve received enough oddball requests to know that I don’t want to be searching for weird freeware to meet a deadline.

On a Mac, I make sub-folders inside Applications to install my stuff. That way, I don’t have an endlessly long list when I use the drop-down, and I can find it quickly when I need to dust off the machine and hand it back.

What? No command-line doohickeys? But…

Yeah, I know. I’m a GUI kid. I don’t go out of my way to create a personalized space in Terminal, and everyone’s production and development environment is different. I’ve done projects that had ASP Classic, .Net, PHP, RoR, Perl, and a dozen other home-baked stacks on the server. Hell, one project had a TCL back-end. Yeah…TCL! I don’t want to walk in and spend hours or days tinkering with Terminal only to be told that there’s a bunch of pre-baked tools to use with it.

In general, I won’t install Putty if I’m working on a Mac, because I’ll use OS X as my primary development environment, and Windows for testing only.

Everything else the boss pays for

The above is really, really lean, intentionally so. With the above, you can sit down and be productive pretty quickly if you’re only updating user interface code. Getting up to speed on specific CMS, database, and other middleware stuff is going to require you to talk to your project lead, and install that as required. I don’t want my basic set-up taking up so much space and resources that I can’t do that, or it gets in the way. Every project has a different tech stack. I want my box lean for that.

No comments yet

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: