Tuesday, May 20, 2008

Moving the IT Infra-structure into the datacenter or the cloud !?

My company is growing considerably. We have a small room that we call our "datacenter" but it's just a room with minor adjustments in order to support our IT infra-structure. Since we are now just reaching the 100 employees mark, our "datacenter" needs to grow in order to accomodate our needs and also to provide the features that will avoid failures and the inevitable downtimes.

I started asking for quotations for revising our datacenter having these things in mind:

  • "Professional" Ar conditioning
  • Access control
  • easy passing of cables
  • "Professional" UPS with separated energy
  • Fire detection and prevention
  • wall layout change
  • etc

I started thinking if it made sense to make such an investment on a local "datacenter", and two alternatives came to mind:


  1. Moving the local infra-structure to a professional Datacenter

  2. Starting the shift to the so called "Software-as-a-Service" (SaaS)


I think any of these alternatives would provide a more professional service with less costs in hardware and people to administer it. It would obviously increase the communication costs and the dependency on communication links. Another benefit would be the ease whenever the company would need to change it's headquarters.


1. Moving the local infra-structure to a professional Datacenter


All servers and storage would move to a professional datacenter where we would be able to connect over a fibre optic channel. Only local communication hardware and some local high demanding storage would stay in the company premises. All else would be housed at the datacenter. Products like Riverbed could help on the bandwidth optimization of the link to the datacenter.

This option would provide professional services for housing your machines: cooling, ups, access control, 24x7 service, fire and temperature control, etc. It would also allow you to grow as you go, without the need to have major changes on your local office. Possibly we could use their backup robots and a NAS storage ... not having to invest in your private solution.


2. Starting the shift to the so called " Software-as-a-Service " (SaaS)

Forget about any investments on the local datacenter, and migrate services into the cloud.

If I sum the anual cost of delivering Microsoft Exchange to our employees: Anti Virus, The OS license, the Exchange License, the CAL's, The System Administration time, the cost of downtimes, etc, it will surely be higher then any of the SaaS options out there like Exchange Hosted Services or Google Apps. Besides, the SaaS model for email would provide some functionalities that I don't have on my current model, like the possibility to search the index of all email remotly (If I have local PST's they are not availble over Outlook Web Access ).

There is allways that fear of losing control and security concerns when moving to SaaS, but ... do you keep your money under the mattress or int the bank ? With time, confidence in the SaaS providers will for sure increase and using their services will be as normal as putting your money in the bank.

Here are some services that I see feasible of migrating into the cloud:

http://www.microsoft.com/exchange/services/default.mspx- Exchange Hosted Service

http://cvsdude.com/

  • Spam Filters

http://www.anubisnetworks.com/


Also, instead of using a SaaS, another alternative of having the server locally or a hosted datacenter is to use Amazon EC2 . It is a is a web service that provides resizable compute capacity in the cloud. One EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit, 160 GB of instance storage, 32-bit platform ) costs around 72 USD per month (depending on the used bandwidth).


Please share with me your thoughts :)


Friday, May 16, 2008

Mechanical Turk and The Sheep Market

Amazon has a very interesting service called "Mechanical Turk".


Mechanical Turk is a Crowdsourcing Marketplace for work. You can offer work to be done by others (paying for it) or you can offer your services (and be reward by it).


The offered taks are ones that can only be made by humans (HIT = Human Intelligence Tasks). The big advantage of using this service is the massive laboral capacity that it offers and reduced cost.


I rethought about this service when I saw a presentation by Aaron Koblin at the OFFF festival. Aaron put up a task on Mechanical Turk offering 2 cents to people that draw him a sheep. He gathered 10,000 drawings of sheep, made a book and a website available at http://www.thesheepmarket.com/. Besides the idea beeing funny and allowing him to win some money by reselling the drawings, it shows the capacity of the Mechanical Turk service.


Mechanical Turk puts at our disposal a very ease way to use a huge humanal laboral capacity.


Here is a video of Aaron presenting the project, and also some statístics about it.

Thursday, May 15, 2008

Agile Documentation

One of the principles of the Agile Manifesto is "Working software over comprehensive documentation".

This usually rises the question of how much documentation is the right documentation !?

I posed this question to Mitch Lacey on his interview. You can see his answer here. But today while reading the Agile Database Techniques book I noticed a section about Agile Documentation which I found very interesting.

Here is the summary from that section of the book:

Wednesday, April 30, 2008

Case insensitive search in mssql

Recently I needed to make a case insensitive search on a table in Microsoft SQL Server.


Because I wanted to overcome common incorrect type errors on the names of people, I needed that this particular search be accent insensitive.



After implementing another alternative I found I could do it in a better way:



select * from names


WHERE (name COLLATE Latin1_General_CI_AI) LIKE '%antonio%'



The list of collations can be obtained by consulting:



SELECT * FROM fn_helpcollations()



Pareto law and Powerpoint presentation viewer

One of the tools that clearly shows the Pareto Principle - in which 80% of the funcionalities take 20% of the implementation time, and the other 20% take 80% of the time (and are rarelly used) - is Presentation Viewer in Microsoft PowerPoint.


Most people don't know this functionality of powerpoint , which is extreamly usefull. It has been available since 2001 and for sure took a considerable time to implement.


Presentation viewer allows the person presenting to view on his screen more information then the one that is shown to the rest of the audience. This way the presenter can see the slide notes, the next slides, the elapsed time, etc, in order to better manage his presentation.

Monday, April 07, 2008

Agile and Scrum events on the week of 21st of April

Following the success of Scrum events that Fullsix organized last January, Mitch Lacy will be back in Portugal on the week of the 21st of April 2008.


The list of events for the week is


21st and 22nd : Certified Scrum Master


23rd : Agile Estimation and Planning


24th: Scrum for Managers (morning) - at Microsoft


Business Value of Scrum (afternoon) at Microsoft.

Wednesday, April 02, 2008

Assign permissions to multiple Stored Procedures in mssql 2005

Enterprise Manager from SQL 2005 allowed us to easily manage the permissions of multiple stored procedures from one place. I don't know why but SQL Server Management Studio for Microsoft SQL server 2005 only allows to manage the permissions of one stored procedure at a time.


Here is a script that Pedro Cruz shared with me that will ease this task:

SELECT 'GRANT EXECUTE ON ' + name + ' TO [UTILIZADOR_RW] AS [dbo]'

FROM sysobjects

WHERE type = 'P'


running this script will generate the sql scripts that will assign permissions to all stored procedures. just need to take out the ones you don't want and run them.


The result is something like:


GRANT EXECUTE ON FirstInsertUser TO [UTILIZADOR_RW] AS [dbo]

GRANT EXECUTE ON SecondInsertUser TO [UTILIZADOR_RW] AS [dbo]

GRANT EXECUTE ON InsertSendToAFriend TO [UTILIZADOR_RW] AS [dbo]

GRANT EXECUTE ON sp_upgraddiagrams TO [UTILIZADOR_RW] AS [dbo]

GRANT EXECUTE ON sp_helpdiagrams TO [UTILIZADOR_RW] AS [dbo]

GRANT EXECUTE ON sp_helpdiagramdefinition TO [UTILIZADOR_RW] AS [dbo]

...etc