Sunday, November 28, 2010

Starting with Amazon Web Services

As a Software Engineer (and nerdy tinkerer), I have always been interested in trying out new technologies. Luckily I've had the chance at work to play with Amazon Web Services for a few things here and there. Played around a little with Windows EC2 instances (prior to them getting Windows 2008 which meant no ASP.NET MVC for me at the time). Did a little bit with S3. But the thing is as an Engineer who has spent an inordinate amount of time playing in the Windows realm I have been trying to diversify.

I've spent my own time playing with Python, Ruby and Haskell. I even managed to convince work to buy me Macbook Pro. The problem being that since I spend a lot of time living in the Web space, generally my ideas for coding involve the Web. I dont really have the extra income to have a Linux server at my beck and call when I want to try something out, so I've been pretty much not doing a whole heck of a lot. But Amazon has recently fixed that for me!

For those of you looking to try out cloud computing, or for someone trying to get that startup off the ground for a very low price Amazon now has a Free Usage Tier!

Thats right! Now I get the chance to not only play in the Cloud (hooray! Resume buzzword! sigh.) I also get a Linux instance that is up all month! That means I can pretty much spin up an idea check it out, see if I like it and if I want to continue. For those entrepreneurial folks out there. It means you can have a free server to create your web application on, and you aren't out any money for things like data centers.

Dig it!

Monday, November 22, 2010

Big Brother Facebook?

So I will be the first to admit I was a little late signing up for the whole Social Networking, Blogging, sharing craze. I mean after all I'm not exactly a hugely outgoing person, and I'm not even a big fan of blowing my own horn. So when I heard about the whole concept of blogs and micro-blogs and sharing things with your "network of friends" I was a little sceptical. I had always been conditioned in the world of Google, that what goes on the web stays on the web and that if you wanted to keep something between you and your friends you either kept it off the web or you encrypted the crap out of it. Well then along comes this Zuckerburg guy touting ideas like:

"openness, making things that help people connect and share what's important to them, revolutions, information flow, minimalism" 
"I'm trying to make the world a more open place by helping people connect and share."
-Mark Zuckerburg from his profile on Facebook 

I'd be lying if I said that the idea of connecting, sharing and openness on the web didn't kind of freak me out. I mean in the end how do I know how this information is being used? Who is going to see it? When will this come back and bite me in the ass. 

Well one hundred and sixty million users later I began to think that maybe I was in the minority. Maybe people truly wanted to share. Maybe it wasn't quite so bad as all that. I mean hell when all was said and done, some of the things that were coming out of Facebook like the Facebook File System and the fact that the whole thing was built from the ground up using open source.

Of course all that still didn't get me to sign up. What finally got me to sign up in the end were two factors: 1.) My Mom signed up. 2.) My teenage Son signed up. Damn it! Couldn't get behing my Son or my Mom on the technology curve! I mean I am a proud geek here! So grudgingly I signed up and began my path towards sharing and openness. 

Well here we are a few years later and all of a sudden it seems that Facebook has got an army of lawyers and decided that they need to "protect" their intellectual property. So they sued a professional community for teachers. Um. Wait. You are suing a resource for teachers? One of the most underappreciated jobs in the United States? Really? Why? Oh the lawsuit alledges that Teachbooks use of the word book in the url dilutes Facebook's brand name and makes it hard for the brand to remain unique. It also apparently created some kind of facade that there is a relationship between the two social networks. So let me get this straight: You are suing them because their companies name is like yours, and that may be confusing to people? I have two problems with this: 1.) I think people would figure out the two sites aren't in cahoots when it doesn't say anything about Facebook on it, and that your Facebook credentials wouldn't work on Teachbook and vice versa. Call me old fashioned but in general I try to assume people aren't total morons. 2.) And most importantly: YOU ARE FACEBOOK! I mean really? That brand can't remain unique with 500 million users? Seriously? The lawsuit goes on to say: 

“If others could freely use ‘generic plus BOOK’ marks for online networking services targeted to that particular generic category of individuals, the suffix BOOK could become a generic term for ‘online community/networking services’ or ’social networking services’.”

Hmm. So you are basically saying you should now effectively own any work + the name book which happens to be a social networking site. Sorry. Gonna call bullshit on this one. Suck it up build a better product that the rest of the competition which by the way, according to numbers, you already have. Don't take this one to court. (By the way if your bored, or a lawyer, or both, you can read the whole Complaint Filing here)

Apparently thought Facebook has a long habit of pulling this crap. Although many don't actually go to court, they tend to send out a large number of Cease and Desist Letters.,, and all owned by one budding entrepreneur got one which he put online. A number of other people have complained about it in various forums across the web. 

So now along comes the lamebook DOT com lawsuit. Lamebook decided to be proactive in order to not get a Cease and Desist. So they sued Facebook invoking their First Amendment rights to parody since basically thats what the site is. Facebook of course turned around and sued them to force a name change. Now as stated above that seems to be normal standard operating procedure for Facebook. However in addition Facebook took the step of deactivating Lamebooks Facebook account. As if that weren't enough, notice that I'm not actually putting a link on this. Or actually even spelling out the URL. You know why? Because at some point this may actually get posted to Facebook. Do you know what happens if there is a link reference to lamebook?

Hmm. Wait a minute. So my blog could now all of a suddenly contain a link to something that is abusive or spammy. Wait. What? Abusive to whom exactly? They are suing Facebook not me. Spammy? I'd never even heard of the site until Facebook decided to sick their army of lawyers on anything with a URL that contained "face" or "book". So all of a sudden it would appear that content is being censored. This by the company who is run by a man who once said:

"I find the mounting pressure on us to remove Holocaust-denying groups incredibly frustrating" - Mark Zuckerburg

Apparently freedom of speech on Facebook is totally acceptable unless you have something to say against Facebook. So for all of you thinking about taking the deeper plunge into Facebook with their new Instant Messaging/SMS/Email application think about this: Your data is in a closed environment. Only you and Facebook have access to anything you put on Facebook. It seems that if Facebook has an issue with you, they can terminate your account. Meaning you no longer have access to that data. Any photos, emails, instant messages, posts, events or contacts that you wanted to keep would be gone. 

Now I ask you, does that seem open place to connect and share to you?

Friday, November 19, 2010

Windows Phone 7

I've spent the last week at the Microsoft Technology Center here in Atlanta. As you may have guessed I am surrounded by Microsoft Blue Badges*. As many of you may have heard Microsoft recently announced a program that would allow for full time employees to be reimbursed for the purchase of Windows Phone 7 device. One of the stipulations of this purchase was that it had to occur 10 days after the initial release of the phone.

Well here we are a little over ten days later and I have had the chance to get my hands on a couple of these devices. I must say that I came away quite impressed. The OS is pretty snappy and responsive. Its quite intuitive and definitely appears to be quite polished. I definitely liked the user interface more than that of my Android, and I couldn't help but think to myself: If this had come out when windows mobile 6.5 came out we would have had one hell of a phone war!

That being said Microsoft definitely has its work cut out for it as far as pushing this OS out to the public. The marketplace is obviously nowhere near iTunes or Android Market, but with it being built on the .NET platform it could probably have a fairly quick ramp up time. I found a free download of the Programming Windows Phone 7 ebook from Microsoft Press. I figure I may as well take a look at it and see what all an be (re)created for it.

*Blue Badge (or Blue Card): (sometimes, slightly derogatorily, blue badger, or just plain blue) Synonym for full-time Microsoft employees, the Brahmins of the deeply ingrained Microsoft caste system, whose card keys have a blue background rather than the orange used for contractors (see Orange Badge) and green for vendors. Derivative terms include "turn blue," meaning to earn full-time status.  [Thank you Microsoft Lexicon ]

Thursday, November 18, 2010

Microsoft CRM Performance Toolkit: Part 2

And here we are hours later with not a whole lot to show for it. Seems like no one really wants to take ownership for the product. Can't say that I blame them. Not sure I would want to be the go to guy on this one.

After all is said and done I'm going to have to find someway to get this to work, but when black magic and voodoo seem to be the way that these configurations actually get registered I'm not sure how much luck I'm really going to have.

On the bright side I think I'm finally getting a grasp on how this thing is SUPPOSED to work. Not sure I would have done it the same way, but I always like to use the ThoughtWorks  retrospective prime directive:  "Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand."

Now if I can only gather my skills, abilities and resources and get some performance testing going!

Microsoft CRM Performance Toolkit: Part 1

Our mantra around the company has recently become "Always Up, Always Fast and Never Fails." So for the last few days I have been asked to help perform some testing around the performance of our Microsoft Dynamics CRM system as we plan for a scaling up users over the next few years.

To begin with you have to understand that my companies existing CRM installation is heavily customized and exceedingly complicated. The way that it is used is not only as a CRM tool, but also almost as a centralized location for information used by the multiple Web Applications. Consequently "Always Up, Always Fast and Never Fails." is even more important for this application. Needless to say I am all for testing the heck out of this thing to make sure that we can indeed do what the business needs us too. After all, I don't really like getting yelled at when the proverbial poop hits the fan.

So since Monday I have been living at the Microsoft Technology Center here in Atlanta working with some folks in order to get our implementation up onto a virtual environment. That part actually wasn't so painful since I have had the experience of setting this thing up in so many different environment in many configurations and for the most part have run into every headache that comes along with that so far.

Where things have become painful is actually using the Microsoft CRM Performance Toolkit. For those that don't know, the Microsoft Dynamics CRM 4.0 Performance Toolkit is a toolset used to test performance on Dynamics CRM.  The toolkit is a free download available at

Downloading is simple. Getting the thing to work is friggin nightmare. After playing around with the installer, reading the obviously out of date documentation and trying to get it to work, it has gotten to the point where I have downloaded the source code (Yay codeplex!), and I have begun to go through the code line by line. Two days later we've managed to get something resembling working, but its not really working. With a deadline fast approaching tomorrow this is going to prove to be an interesting day.

The Cloud

Ahh the cloud. The latest buzzword out on our industry.

I read this article today basically stating that if you wanted a job or a raise you just need to add the word cloud to your resume. In all honesty how ridiculous is that? It reminds me of so many fads that have come and gone. The HTML coding fad that could get you a six figure job like this article mentions. The Social Networking buzzwords that came along in the last few years.

So lets take a breath and take a step back from the buzzwords.

Don't get me wrong I think cloud computing is really cool. A buddy of mine is working on the NASA Nebula project. Which is based on the OpenStack project. The great thing about the whole thing is the abstraction of the code and data from the hardware. The fact that a lot of it is built in Python and that my buddy talks in terms of petabytes just makes the whole thing that much cooler.

Bottom line is that the idea of the cloud isn't coming, its here. Has been for a while. I've built Microsoft Dynamics CRM 4 instances in the Amazon EC2. I've also used EC2 for standing up staging and test environments for Web applications (Here are a couple of books that can help: Host Your Web Site In The Cloud: Amazon Web Services Made Easy: Amazon EC2 Made EasyProgramming Amazon Web Services: S3, EC2, SQS, FPS, and SimpleDB). Generally its not a particularly difficult process although there are definitely some gotchas.

My current development rig is actually a huge beefy box with Windows Server 2008 Hyper-V because development requires having multiple servers communicating, and I would rather not have to go out and acquire new hardware every time I need to add a new server. Before my Hyper-V installation I used VirtualBox to set up a small mock production instance locally. Granted being able to push that stuff out to Amazon or Rackspace makes things a whole lot easier, especially if budget isn't as much a concern.

Speaking of budget I was recently talking to a Director of IT (not naming names or companies) and he said that if he had to build a company now, everything would be in the cloud. From a financial perspective it just makes sense. Housing your servers in a Data Center is expensive. Having your own Data Center is expensive. Hosting, Scaling and Load Balancing is time consuming and (you guessed it) expensive. I can spin up a scalable app in Python using Google AppEngine in next to no time. More importantly its free to start with, and if the demand was there I can pay to scale up! Microsoft has a similar deal with Azure. Granted its a little more pay up front but the power and versatility is there.

In the end though, putting it in the Cloud is a tool not a panacea. If you have a crappy product and/or crappy code the cloud is not going to magically make it better. Don't fall for the buzzword hype. Don't fall for the latest fad. Understand what it is the cloud can do for you but don't try to pound a square peg into a round hole. After all remember the AJAX buzzword?

Wednesday, November 17, 2010

Let the blogging begin

I've recently been spending time working on customizing shrink wrapped applications and getting legacy apps into a test harness. As you can imagine both can be very unpleasant. I have been lucky to work with some extremely bright individuals, and consequently learned a few tricks and tools along the way.

I realized that some of the things that I probably do on a daily basis either haven't been done often, or just not documented well on the Internet. I figure as I go along I may as well share what I can so that hopefully some day I can mitigate someone else's pain.