• Fatal error CS1647 on one server but not other

    This error reared it’s ugly head one day and we were very perplexed as to why. The code was running just fine on the development server but on production we were receiving CS1647: An expression is too long or complex to compile.

    After much digging as to why this might be, it was discovered that the .NET versions on the servers were different, but not dramatically so. The development server was running 4.6.2 while the production server was 4.6.1. A simple update to the .NET version and the error was resolved.




    Share
  • Using S3 with Kentico CMS




    In order to improve the performance of a Kentico CMS install we decided to setup a content delivery network (CDN) using Amazon S3 and CloudFront. While Kentico is .NET and more easily deployed on Azure than AWS via their documents, making a resilient Kentico install on Amazon is achievable after working your way carefully through the setup process.

    Setting up S3 in Kentico CMS was a less than pleasant experience thanks in part due to a small inconsistency in their documentation. After a call to their support, the recommendation was to use the Azure setup instructions for setting up a custom file system provider. Upon reading these instructions it became apparent WHY the instructions for the S3 setup was failing.
    Read the rest of this entry »

    Share
  • Amazon AWS costs have improved 55-100% since 2009

    I previously wrote an article in 2009 about how much you might expect to pay for hosting your server/services using Amazon AWS EC2 and S3. The conclusion was that it would cost you approximately $920/year up to over $10K/year depending on the instance type you chose to run to host your server on Amazon.

    Over the course of time the cost of hosting on Amazon Web Services has come down dramatically and their service offerings have increased 5 fold from what they had. Let’s take a look at what you will pay now versus 2009 for the comparable setups. For the sake of simplicity I am going to use current 4th generation on demand pricing but there are a few cases where it might be cheaper to use 3rd generation over 4th. There are very few good reasons to still be using first generation servers though. It should also be pointed out that Amazon also launched spot instances which are an even cheaper way to run an ec2 instance albeit not necessarily as reliable.
    Read the rest of this entry »

    Share
  • How to easily caption an animated gif

    So the challenge came up to add a caption to an animated gif without purchasing software and preferably without watermarks. While there are likely many ways of adding text to an animated gif, the all online solution we came up with works very well. Furthermore, as of this writing at least, there will be no watermarks on the resulting image either.

    The big problem when it comes to adding text to an animated gif is most tools open every single image contained in the gif, thus you can edit every image and hope that you can save it again in a working state with your caption.
    Then many free online tools that can do this like to watermark the image and charge you to have it removed in some cases. Here is our free solution for captioning an animated gif.



    Read the rest of this entry »

    Share
  • Collection of useful Apache redirects, rewrites, directives and reminders

    These are a slew of rewrite and redirection commands for Apache that can be setup in .htaccess or other site configuration files. In some cases there are multiple ways of doing things that might work in one situation but not another. I have a love/hate relationship with mod_rewrite, as I think many do, but in the end it is a powerful tool that can do so much that it is indispensable.

    ** IMPORTANT – Anywhere you see RewriteXXXXX, make sure you have “RewriteEngine On” to enable it! **

    Custom error pages:

    
    ErrorDocument 400 /errors/400.html
    ErrorDocument 401 /errors/401.html
    ErrorDocument 403 /errors/403.html
    ErrorDocument 404 /errors/404.html
    ErrorDocument 500 /errors/500.html

    Read the rest of this entry »

    Share