19 Feb 2013

Free 5 Hours From Executify

No Comments Executify

Executify is offering 5 hours of complimentary compute time in honor of the MVP 2013 Summit for running CRON jobs in the cloud.

In honor of the Microsoft MVP Summit going on in Seattle right now, we are offering every person who signs up this week, 5 hours of complimentary compute time for running all your CRON jobs.

Signup here: http://executify.com/signup

After you sign up for your account be sure to checkout our documentation on creating your first CRON job in Executify.

16 Feb 2013

Being Stolen From Sucks

13 Comments FluentCassandra

When you put open source software out there in the wild there is a mutual understanding that, you are going to see my source code, and probably take some influence from it into your own source code.  Maybe sometimes you even take a little more than influence, and copy some lines of code.  As an open source developer, we all know this is happening and we all know this is alright, encouraged, and to be expected.

When it gets to the point of out right copying of whole files it becomes a different story all together.  And that is what I am addressing today.  I should start out by saying that Datastax is a great contributor to open source software, and has provided the Cassandra community with a great amount of free docs and tools, and is one of the primary drivers behind recommending the FluentCassandra library to clients.  I wish that is where we could leave it.

One of their developers decided to take some shortcuts and started copying FluentCassandra without attribution and passing the work off has his own. Everybody has deadlines and I understand that, but it takes a certain kid of malevolence and disdain for open source software, to out right copy certain parts of a competing code bases code for the expediency of getting your own out to market.

The developer who did this, Pawel Kaplanski, contributed a couple issues and some minor code that ultimately had to be rewritten to FluentCassandra back in September 2012.  You can see that he does work for Datastax here and that the only thing he has done for open source software ever to contribute a few minor things to FluentCassandra over a 3 day period in September. (side note: I would hope that a company like Datastax who loves open source software, would hire developers who love open source software, however that doesn’t appear to be the case with Pawel who seems to only troll for code to make his day job easier)

copycat-pawel-kaplanski

Pawel was first introduced to me back in September by Michael Figuiere. In the email Michael was explaining to me that Pawel was going to be helping me out on FluentCassandra while working on their own client library.  Which was wonderful news for me, because I always appreciate help, I thought this was a win-win for everybody involved. But as you can see from the above Github interactions, Pawel didn’t quite live up to his end of the bargain, and as I will show next in seemed to only be a win for Pawel.

email

So lets get down to the dirty stuff.  Which I have started to track in an issue on FluentCassandra.  The first and most egregious copying of code, and the part of FluentCassandra that has literally taken many many weeks of my time, over the past year, in tweaking and getting just right is the LINQ Expression Evaluator.

compare1

As you can see in this picture the white spaces in the indicator on the left hand side is code that was copied.  These pieces of code contain the exact method names, program code, positions, and everything, so it is undoubtedly copied as a whole and then tweaked for his own needs.  This is just lazy and dishonest.

There are others too, notice any similarities here:

https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra.Data.Linq/CqlQueryEvaluator.cs
https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra/GuidGenerator.cs
https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra/GuidVersion.cs
https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra/DateTimePrecise.cs

No attribution at all for our hard work:

https://github.com/managedfusion/fluentcassandra/blob/master/src/Linq/CqlQueryEvaluator.cs
https://github.com/managedfusion/fluentcassandra/blob/master/src/GuidGenerator.cs
https://github.com/managedfusion/fluentcassandra/blob/master/src/GuidVersion.cs
https://github.com/managedfusion/fluentcassandra/blob/2c77dfca83891a9559e14a2b58797095c0486050/src/System/DateTimePrecise.cs

The last one is the most interesting because it dates when he copied the FluentCassandra source code as somewhere between August 25 and September 6.  Which line up nicely to his 3 days that he looked at FluentCassandra.  I know this date range because I removed DateTimePrecise from the code base on September 6 because it had a nasty bug in it.

history-datetimeprecise

To be clear I am just very irritated that Datastax promised some help to FluentCassandra and the only help we seem to have gotten was a developer who decided to steal our code and not contribute anything back.  And the two bugs that Pawel opened on FluentCassandra were bugs that he fixed in his own copy of the source code, but couldn’t be bothered to contribute back to FluentCassandra.  That takes a real set of brass ones to be that blatant.pawel-issues

There is one bright spot and really all that I ask for, developer  does actually attribute FluentCassandrawhen he copied the BigDecimal code.

kcieslinski

That simple one line is all that I ever ask for.

31 Jan 2013

Azure Tip: How are Web Sites priced?

No Comments Uncategorized

Azure WebsitesOne of the questions that comes up often related to Azure Websites is: How are Web Sites priced?

To understand how they are priced you have to understand what a Web Site is to Azure. To Azure a Web Site, in its most simple definition, is: A single app pool tied to a single site running in IIS on a virtual machine.

Now that we understand this let’s look at the pricing models. Their are three tiers:

  • Free – You share a virtual machine with many other customers and you have to use as domain name supplied by Azure. Your web sites may or may not be on the same virtual machine with the others.
  • Shared – You share a virtual machine with a few other customers and can use your own domain name. Your web sites may or may not be on the same virtual machine with the others.
  • Reserved – You have a reserved virtual machine that is only for your use and you can use your own domain name. Your web sites will be on the same virtual machine with you others in the same region.

As you know now, the virtual machines and how they are shared is the main deciding factor in what tier you choose and the price you pay.  But lets break it down a little, because the pricing model changes on the tier you choose.

Before we get into the break down of the tiers and how their pricing differs it is good to understand one thing, every tier we talk about is priced per region. As of writing this post there are 5 tiers.

  • West US
  • East US
  • East Asia
  • West Europe
  • North Europe

Free

You can run up to 10 Web Sites per sub-region for free in a multi-tenant environment.  What this means is that each data-center you can run up to 10 web sites for free.

Shared

You can run your production site in a multi-tenant environment with support for custom domain names.  Notice that unlike the free tier that there was no mention of how many web sites you were allowed to have per region.  There is a very good reason for this, that is because you are billed out per website that you setup.  As of writing this the price is $9.36 per website per region per month.

Reserved

You can load balance up to 100 Web Sites across instances dedicated to your apps with support for custom domain names.  Notice that like the free tier there is a limit on the number of web sites you can run, it is 10 times more than the free tier, but there is still a limit.  You may be asking why the difference from the Shared tier, well there is a very good reason for this and it relates back to how the Reserved tier differs from Free and Shared.  In the Reserved tier you are billed per virtual machine instance per region per month.  And Microsoft has determined you shouldn’t have more than 100 web sites per virtual machine.

Now that you know you pay per virtual machine instance per region per month, you have options as to the speed and amount of RAM that your virtual machine has similar to the options the rest of Azure enjoys.  Here is the break down:

  • Small VM (1.6GHz CPU, 1.75 GB RAM) – $57.60 per region per instance per month
  • Medium VM (2 x 1.6GHz CPU, 3.5 GB RAM) – $115.20 per region per instance per month
  • Large VM (4 x 1.6GHz CPU, 7 GB RAM) – $230.40 per region per instance per month

The thing to know and understand is that when you switch the tier from Shared to Reserved or vice versa all your websites are moved at once to the other tier.  Because of how they are priced and the complexity of the different tiers this is the current approach that Microsoft is using.  So in other words, per region you can only have one tier of pricing.  

Conclusion

Unlike other services in Azure, the Web Sites is a rather complex pricing model because of the multiple tiers, and at a certain level of websites or usage it may make sense to move from a Shared tier to a Reserved tier.  So if you have more than 6 web sites or you are blowing through your usage limits it may make sense for you to move up to the reserved tier to keep your web site running and to save money.


Note: Azure is really shaping up to be a fantastic and innovative platform, so I plan on making Azure Tips a weekly feature of my blog, so stay tuned for some more tips in the near future.