Follow @stevenmfowler Office365Steven (aka SharePointSteven) | Development

My Computing Environments

Introduction

I've been fielding many questions from students, and peers about the various environments that work with and ask for my recommendation. In other instances clients want to know what infrastructure I have available to perform their outsourced project.

Which environments utilized depends on the types of service provided. In some cases the work product will be delivered to the client to include any virtual machines that were produced during the execution of a project. In other cases I will develop and host environments based off of logistical requirements of engagements that may have a blend of on and off site work.

This blog entry is to provide an overview of the environments that I utilize.

Environments Overview

I have four primary environments that I work with: laptop, on premise server, managed server, cloud. Let's take a look at each in detail.

The Laptop

I've been a fan of the IBM/Lenovo W series for my last two rigs. My previous two were Toshiba (primarily because of my budget). My current machine is a Lenovo ThinkPad w510 which has an Intel core i7 CPU (Q820) 1.73 GHz with 16 GB of RAM and (stock 8 GB). In the 1.5 years I have not yet updated the primary HDD to a solid-state drive. With this ring I do make use of the USB 3 port and a high-speed external drive (this could also be a USB 3 SSD). The advantage of the two drives is to have your VM's on separate spindle (but that's another post)

This machine has served very well in its dual-purpose for supporting my role as project manager/BA in addition to architect/developer. The native operating system is able to both hosts a VM in addition to having my common business applications open at the same time (office, twitter, Skype, screen share, Dragon dictation, etc)

I primarily use this when I am on a client site when I perform PM/BA activities or when POC development needs to be performed. There are instances where a client does nopt have a development server, and will not allow me to use my development server, thus I use use this as the primary development manchine during the implementaion phases of a project. As stated previously keep your VM on a seperat spindle.

On Premise Server

In my office I have a custom built server which has an Intel i7-2600k 3.4 GHz processor and 16 GB of RAM (expandable to 32GB). I have three separate SSD drives each for: operating system, applications, and virtual machines. It also has a pretty good video card for gaming - not that I would use my server for that :)

It is amazing how fast the boot up of the host and the virtual machines are with this configuration. It cannot be underestimated the productivity that is realized by utilizing the right tools.

I will leave 4gb to the host server while leaving 6gb for two active VM's. If I needed I can jump between various client/demo dev/test/staging VM in under 30 seconds.

This machine is not publicly accessible, but I keep very small/secure gateway allowing me access in the event that I need to remotely access content, code, or configuration. Because of my organizational size, the number of environments we have, and my typical client requirement - There is never more than two people accessing this server at the same time.

Managed Server

In the local data center I have a managed server that I utilize to host projects in instances where clients do not have development, testing, or staging environments. I also utilize this environment to perform rapid proof of concepts that I might not want to host on my laptop or want to access via the on premise server. The advantage to this is that is publicly accessible and I can utilize this environment by RDP with just about anything (netbook, mobile phone, etc)

Office 365

I recognize the power of office 365 and have adopted it were possible for collaboration both internal to my organization in addition with clients, partners, and vendors. I'll share more thoughts on office 365 in another post, but it's a complete turnkey cloud solution provided by Microsoft allowing the use of Exchange, Office, SharePoint, and Lync technologies - all via the browser.

Virtual Machines

One last thing I'll add to this discussion - Which is my preferred virtual machine technology? I very much like virtualbox (http://www.virtualbox.org) because it is an Open Source that allows me to share virtual machines with others without having to occur the cost of purchasing a virtual machine host technology. Virtualbox is constantly sending updates improving the feature set. It is extremely stable in suits my needs perfectly. I will however utilize VMware and hyper V if the project requires me to do so.

Link into LinkedIn APIs

Facebook and Twitter have been doing great with social integration. Well LinkedIn has announce an update to there API's allow for access to its: People and Connections, Groups, Companies, Jobs, Social Stream, and Communications.

I came across this as I was looking at the Worldwide Partner Conference 2011 event website

Here are some details:

"The JavaScript API is a rich client library enabling you to build dynamic applications in the web browser. Use OAuth 2 to easily authorize users via the "Sign In with LinkedIn" button, access LinkedIn data with native objects, and interact with Plugins."

"The REST API provides a simple, consistent representation of people, companies, jobs, and the interactions and relationships between them. Our query language lets you read data in XML and JSON at the granularity and aggregation that you choose. Use OAuth 1.0a to authorize users and begin making REST API calls using any programming language."

You can find out more here: http://developer.linkedin.com/community/overview