May 26, 2014

DNN Performance: Understanding ModuleCache and PageOutputCache

Over the past 4-5 months my company IowaComputerGurus has help to optimize the performance of more than 50 different DNN based websites.  This is a major uptick in performance related inquiries as compare to past years which is to be expected as website owners become more-and-more concerned about the performance of their applications. In the current era it is important for websites to be fast not only for the user experience, but also for placement within the Search Engines.  The faster the internet connections we get the more impatient our users are when it comes to waiting for our sites to load.  Depending on who you talk to you will see metrics that show page load times of anything greater than 3 seconds can lead to lost customers & revenue for your website.  What exact e"metric you are looking to meet is up to you, but regardless a DNN based site can still easily render in sub-second times with proper configuration & maintenance.  In this post we will look into two of the most commonly overlooked configuration elements for performance the ModuleCache and PageOutputCache.
April 11, 2014

Avoiding Performance Issues with Multi-Portal DNN

In the first 3 months of 2014 I have encountered multiple multi-portal DNN installations that have been suffering from severe performance issues.  In most cases these users had already followed the whitepaper recommendations that I have had published since early 2007 and the sites were still slowing to a crawl at best.  Digging in, each time I found that a single fundamental issue was the root cause, with a few other secondary considerations.  Given the popularity of DNN continuing to grow and the relative ease of Multi-portal configurations I though it would be important to share.
March 24, 2014

A Practical Introduction to .NET Async

I have been speaking quite a bit recently at events about .NET Async and how to use this .NET 4.5 and later language feature in day-to-day code.  Due to popular request I have decided to make the most current version of my presentation materials available for prior attendees, or those curious for a quick example to quickly download.  

January 17, 2014

DNN's Display on All Pages an Alternative to Avoid Nightmares

One of the age old pieces of functionality within DNN is the ability to check that magical little box "Display on All Pages." This single action might seem like the best thing since sliced bread the first time you use it, and even for days after.  But fast forward a bit and get to a year or two down the road and you might be paying the price for this little "efficiency" in ways that you might not have though about.  In this post we will take a look at the goal, the good, the bad, and the alternatives to this long standing DNN feature.
January 01, 2014

2013 a Year In Review

For the last 4 or 5 years I've done a year-in-review post to summarize technology happenings from the prior year as well as to help set a path into the following year.  Therefore, lets take a look back at 2013 and prepare to leap into 2014!
October 07, 2013

Enterprise Extension Development with DotNetNuke Part Four - Environment & Testing

If you have been following this blog series you will know that we have been making strides from the basics of what we are trying to accomplish under the term Enterprise Extension Development in the part one post.  In parts two and three we continued the trend and talked about project structure, NuGet, and overall organization.  If you have been following along since the beginning I'm sure that you have a number of questions.  I know I've been getting a lot of e-mails asking about various parts of the process now that we have setup our projects in a manner that doesn't necessarily match to what you would expect for working with DNN.  So lets continue the discussion with a little recap of what we have accomplished so far, then we will answer the questions.

October 07, 2013

Blog System Changes

Just a quick update on the blog system here on MitchelSellers.com.  As you all might have noticed almost all of the articles as of today 10/6/2013 show no comments.  Due to the exponentially increasing number of spam style comments that I was receiving through the existing platform on this site I've been forced to switch to a different comment platform. This means...

September 29, 2013

Enterprise Extension Development with DotNetNuke Part Three

This post is a continuation of my ongoing Enterprise Extension Development blog series talking about how to effectively leverage DotNetNuke in complex environments. In Part One we set the stage for why it is important to look at Enterprise Development slightly differently. In part two we started on the slight differences to basic project structures needed to ensure that we can "Compile Anywhere" and move our projects quickly between machines etc. In this part of the series we will take a look at your code structures within, to handle interdependencies etc successfully.

July 25, 2013

Enterprise Extension Development with DNN Part Two

A few weeks ago I set the stage for this series of posts with my Enterprise Extension Development with DotNetNuke Part One post.  This article, the next in the series, ended up getting delayed a bit.  As many of you know there has been a lot changing within the DotNetNuke world, as all of this unfolded my priorities were pulled from these posts to other areas of concern.  Now, I'm back on these posts and want to make sure to dive into this in detail.  In the first post of the series I covered the high-level details.  The reasoning behind this series, and the main goals that I hope to accomplish by putting this information out there.  This post is dedicated to the development environment, and development structure for our projects.
June 15, 2013

Enterprise Extension Development With DotNetNuke Part One

Earlier this year I spoke at the Southern Fried DotNetNuke event and one of the most popular of my talks was "Developing Enterprise Solutions with DotNetNuke."  Now that we have one of the final hurdles cleared from an implementation perspective in this post, and future ones I will start to share all of the details that I have been promising.   This post will serve as a launch point for the future parts, as of this point in time I believe this will span 8-10 posts to give everything the proper coverage necessary.  As the series grows I will update this post with links to the future sections.  So lets get to it!
June 13, 2013

Official DotNetNuke NuGet Packages.

Many of you have been asking me about my promised Enterprise DotNetNuke Development blog postings that I have been promising since the Southern Fried DotNetNuke event earlier this year.  I have been working on them, but one of the key pieces for me was to figure out how to get NuGet packages to the greater population as I was working locally with a private NuGet Server for my own purposes.  I'm happy to be able to note that today DotNetNuke corporation released official NuGet packages to the nuget.org repository and they are freely available for users as of today.  In this posting I'll run through the different packages that are available, when you would want to use them, and what versions are available as of this posting.  
May 19, 2013

DotNetNuke Form Patterns and You! 6.x or 7.x?

As a developer of hundreds of custom DotNetNuke extensions I have to say one of my favorite enhancements to the DotNetNuke platform over the last few years was the inclusion of the new DotNetNuke Form Pattern that was part of the 6.x release.  By incorporating a consistent design pattern it became trivial for extension developers to build modules that had similar UI patterns and would thus have consistently styled applications.  By doing this it is possible to make the understanding of flow within your applications easier as you are leverage a UI style that more similarly matches that of the platform itself.  However, as with any new feature it hasn't came without a few "bumps" in the road.  There were a few changes between 6.x and 7.x that have caused a bit of a problem for those of us that have already adopted the patterns, or those that might.  In this post we will look at these differences and the one small change that you can make for a seamless experience regardless of if you are targeting 6.x or 7.x!
April 27, 2013

Code PaLOUsa 2013 Presentation Materials

This week I have been at Code PaLOUsa 2013, which has been a truly amazing event.  Over the course of the last two days I have given a total of three sessions on various current .NET development topics.  In this posting you will see all of my presentations materials, they are provided for reference only!  If you have any questions or comments please fee free to reach out in the comments below.

April 22, 2013

ASP.NET Web Forms Model Binding – My Favorite ASP.NET 4.5 Feature

I have been working on this blog posting for over 2-3 weeks, by far one of the longest writes of any posting that I’ve done in the past. The reason for this is that I’m writing about a concept that you should already be aware of which is the inclusion of Model Binding Support for Web Forms in ASP.NET 4.5. You can find a number of resources out there that talk about this, including this amazing tutorial series. So why do I feel the need to spend so much of my time writing about this feature? Well read on to find out!

April 19, 2013

Southern Fried DNN 2013 Presentation Materials

Last week I was a trainer and a speaker at the Southern Fried DotNetNuke event that was held in Charlotte, NC.  This event was fantastic with a day of optional training on Friday and a series of sessions on Saturday in the format of a regular Code Camp event.  As I promised the attendees of my sessions I would be posting information and assets from these presentations here on this blog.  This posting is an overall aggregate with information on the two sessions and trainings, future blog postings will expand on the information contained within.
March 04, 2013

Simplifying DotNetNuke Module MSBuild Packaging With Auto Set Package Name

DotNetNuke module development became a lot easier when it became easy to use MSBuild to simply build your project and get a nice install-able module package in the end.  I've been using this process for a number of years now, but there have always been those little things with the default templates that many have been distributing that just don't meet my needs 100%.  For example a few years back I blogged about a fix for Auto Packaging Multiple Modules.  This post shows a fix for one of my other biggest pet-peeves when it comes to the auto-package process and that comes from the determination of the 'PackageName' that is used to name the destination file.
February 26, 2013

Creating an ASP.NET 4.5 File Security Process

Often when working with web applications it is necessary to secure access to documents or other user supplied resources.  If you look online you will find a number of different recommendations on how to accomplish this.  Some will recommend a HTTP Handler, some will recommend a simple ASPX, others will have other random ideas.  Regardless of the actual implementation there is always a common area of mixed recommendation, once you have validated that the user has the proper permissions to access the resource, how do you get the item to the user?  In this post I'll discuss a new API that is publicly available in .NET 4.5 that helps with one problem area.
February 01, 2013

Getting Started with DotNetNuke 7.0 Presentation Materials

So I've been promising for years to publish presentation materials after each of my events.  I've been working on so many different ways to handle this, and finally have came up with an easy way to share materials from my events. Thanks to SkyDrive, I can now easily embed the content while doing as much as I can to keep ownership of the content, so here is the first one! I'll be posting a bunch of others as well soon, all will be tagged under "Presentations". 

February 01, 2013

Using the DotNetNuke Extension Verification Service

As a person that has either directly written or managed the creation of over 400 custom DotNetNuke extensions in the past few years, the DotNetNuke package process is still the one item that I will at times overlook.  Well, recently DotNetNuke released a utility to help those of us looking to ensure that our extensions meet all of the proper requirements for consistent installation.  

January 20, 2013

Controlling DotNetNuke Static Logs

In the past I have blogged about various DotNetNuke performance and management issues, focusing on how to keep the Site Log, Event Log, and other database related functions in place. In this post, I'm going to take a look at a few other aspects, not all 100% DotNetNuke based, that should be closely monitored and addressed as well. For those of you that follow me on Twitter, my recent posting about clearing almost 40Gb of rogue data across servers is all part of what lead me to this posting.

December 31, 2012

2012 Year In Review

It is hard to believe that yet another year has passed and it is time for me to be writing another "Year in Review" post here on MitchelSellers.com.  It seems that each year the time goes by faster and faster.  2012 was most likely one of the fastest paced years for me professionally as there were a lot of changes and as such this blog has suffered a little bit.  As I look back at 2012 I will also share some important notes about 2013!
November 03, 2012

Using DotNetNuke Caching in Custom Modules

One of the biggest concerns for developers these days is how to increase the performance of delivered applications. User expectations have changed over the past few years and the expectations are very, very high in regards to page load times and how quickly information should be returned to the users. Thankfully, as part of DotNetNuke there are a number of different features that can help applications work quickly. Some of these features are known by everyone, things such as the DotNetNuke performance settings under "Host Settings", Cache Time settings on a module by module basis, and if on Professional Edition the built in page Output Cache Provider. However, one often overlooked API that is helpful for developers is the DataCache API. In this post I'll do a deep dive into why this API is so helpful and some scenarios where leveraging this API it can reduce page load times and system resources needed for each page request.

October 31, 2012

My Windows 8 Store Woes - Lesson's Learned

I have been debating for a while now on how much detail that I put out in this blog post.  However, today finally pushed the final button and I think it is important to share a bit of my experience and some of the key lessons that I have learned.  In doing this I hope that I can prevent others from going through such a horrible experience as what I have.  The story in this post is a bit trimmed down to make it easier to follow, but the key highlights are all here.  I will finish up with a few "Lessons Learned".

October 31, 2012

Nokia Lumia 920 & Windows Phone 8 First Look

I am attending BUILD this week and trying to do my best to get blog posts out all week to help share information a bit faster than I might normally do.  One of the big things if you followed the event on Twitter or any other medium today and that is that attendees were given a few great goodies!  100Gb of SkyDrive Storage, a Surface RT, and a Lumia 920 phone!  Pretty great haul!  Tonight as soon as I got back to my hotel I jumped right in to the phone!

October 30, 2012

DotNetNuke World Review and MVP

So first of all, I'll admit I'm a bit late to the game here getting this post put together, as DotNetNuke World was almost three weeks ago.  Sadly combined with two major site launches, some travel and other things the blog just hasn't gotten the attention that it deserved.  But better late than never I thought so here it goes!
September 24, 2012

Creating Custom DotNetNuke Module Categories

As part of one of the recent overhauls of the DotNetNuke interface the control panel was updated to include a "Category" selection that allows modules to be grouped logically into categories.  Out of the box a total of two categories are created "Admin" and "Common" with only the Text/HTML module included in the "Common" category.  In this posting I'll take a deeper look into this functionality and how you can create your own categories, and how to move modules around between categories to make administration even easier!
September 05, 2012

My Favorite Visual Studio 2012 Breaking Change

It is not very often that you see the words "favorite" and "breaking change" within the same sentence.  However, I will say with VS 2012 and .NET 4.5 there happens to be one that I thought I would call special attention to here on my blog as I've talked about the old behavior many times in talks throughout the past few years. 

August 15, 2012

Upcoming Speaking Engagements

As I am working to get better about making presentation materials available here on this site I've created a new "Presentations" category, and will post slides/materials for each of the events there and very occasionally update messages like this one to note times where I have speaking engagements coming up.  The reason for this post is that I am speaking at three great events in the next 8 weeks or so that I wanted to make sure to bring everyone's attention to. 
August 15, 2012

.NET Gadgeteer First Round Examples and Thoughts

A few weeks ago I gave a presentation at the St. Louis Day of .NET event focused on the use of .NET Gadgeteer.  In this blog posting I am going to share some of the information from that presentation, as well as the slide deck and sample code for everything discussed.  For those that were in attendance, I apologize for the delay in getting this information out here! 
July 06, 2012

Creating Simple Re-Usable Confirmations in DotNetNuke Skins

As part of the IowaComputerGurus site redesign that I just launched earlier this evening I was looking for a simple "no hassle" way to add a confirmation to a link before downloading. Historically I created a module to manage this and the module managed those links. However, I wanted to find something more flexible so that I can put my download links wherever I want, in any Text/HTML module, on any section of the site. Amazingly I was able to do this with two lines of JavaScript in my skin file!

July 05, 2012

Security Exceptions After Moving .NET 2.0 DNN Site?

Over the past few weeks it seems that I have been doing more DotNetNuke site shuffles than I have in a long time.  From local -> production, from hosting provider a -> hosting provider b, and any combination therein.  This process is practically second nature for me as I've done it so many times.  However I had two sties that proved to be really troublesome so I though I'd share the root causes here in hopes that it might help someone!
June 26, 2012

Taking Control of the DotNetNuke WYSIWYG Editor

DotNetNuke by default uses the Telerik RadEditor as the rich text editor. It is a truly amazing product and one of the better WYSIWYG editors. Just like any editor though it does have some mannerisms that are not so welcomed by users. A little known fact within DotNetNuke is that you have a number of configuration elements available to help not only make the editor easier to use by removing un-needed items, but you can drastically improve functionality for super-users if so inclined and prevent issues when staging content etc. In this post I'll dive into a few of the key configuration items that I make to all new sites.

June 23, 2012

Using radCaptcha Via DotNetNuke Wrappers

When putting a form that is public facing we often need to add a captcha to help prevent bots from submitting our forms.  Historically there has been a control available within DotNetNuke that worked for this, but admittedly it didn't have the best customization nor was it the most "pretty" of them out there.  Ever since DotNetNuke has had the Telerik Controls a new option has been available yet its usage isn't the most widely documented.  In this post I'll show you how to use RadCaptcha in your own custom modules.
June 21, 2012

jQuery and Clicking an ASP.NET Linkbutton

As a web developer one common request is to make sure that the interfaces we build out for users look the best that they can and also provide users with the best experience both via the keyboard and mouse.  As part of this we will often have areas of conflict.  This post is going to cover one common scenario that will impact users that might be using DotNetNuke common styles or working to create their own custom button styles.  With ASP.NET it is common for people to use "LinkButton" controls to trigger actions rather than your standard "Button" controls as they are easier to style.
June 15, 2012

Windows Azure 90 Day Free Trial - Buyer Beware!

This is just a quick public service announcement for those that might be looking at trying the new Windows Azure service for hosting a DotNetNuke site.  I have been working with a few people that have been wanting to try it out and overall the experience has been pretty good as the DNN install was successful and performed quite well.  However, the reason for this post is a warning to those of you that are working within the "free trial" period.
May 07, 2012

Development and Test DotNetNuke Installations and Search Engines

It is quite often that when working on a new version of a site that you will have a development, test, upgrade copy of the site that might be around for a while.  It is also possible that if you are working for a third-party that you might stage client sites on your server for a period of time before go-live.  At first glance this all seems common place and not something that you would be concerned about.  However, that is not the case.  Search engines have become overly aggressive in indexing sites, including those that have no direct back links but have been e-mailed to individuals or similar processes. In this post I'll discuss some important considerations when working with these "non-production" installations to help you ensure that search engines will NOT index the content and cause confusion.
May 04, 2012

DotNetNuke Login and Auto Complete - How to Cope

Recently I have been getting a lot of questions regarding the DotNetNuke login and why when you go to login that "auto complete" is disabled on the username/password fields.  The typical follow-up question to that is "how can I change that behavior".  So after answering this question individually around 5-6 times I though it would be best to get this out here, at least my opinion on the issue.
April 12, 2012

Windows Updates, Monitoring, and ASP.NET...Oops!

For those of you that are regular readers of this blog you will know that outages of the site are very, very rare with the past year showing almost 99.9% up time.  Well if you were around here this AM you will know that the record for up time was killed, with the sites being down almost 10 hours today.  In this post I'll talk a little about my experience with this as I know a number of other people across the world have experienced similar issues this morning based on my conversations with a few of them.
March 04, 2012

Replacing My iPad with a Windows 8 Slate How its Possible

For those of you that follow me on Twitter you might have found one of the tweets from earlier this week to spark your interest specifically "Its official with WIndows 8 my Samsung Slate replaces the iPad.".  As I promised in that tweet this is the blog posting that shows my justification behind the claim and why for at least my use this transition is not only possible, but beneficial to me.  Before I get too far into this though, I'll provide a bit of background on the basis/use scenarios that are important to me then I'll discuss the specifics.
February 29, 2012

Visual Studio 11 Caller Member Info Attributes

If you have been paying attention to what is going on in the Microsoft Community today you will notice is a big day.  Visual Studio 11 Beta as well as Windows 8 Consumer Preview were both released this morning, for those of us developers it means tons of new tools to try out and lots of new functionality that we can use in our applications as well as productivity and language improvements with.NET 4.5.  With this, I'm starting a new blog series highlighting some of the new items that I find helpful, cool, or otherwise interesting with VS 11 Development.  Today's installment talks about Caller Member Info Attributes.
January 23, 2012

Simple Zip Code to Zip Code Distance Calculations with SQL Server

Over the years I have implemented a number of various "near me" style searches using third-party zip code databases and a long, complicated formula to find the distance between two different latitudes and longitudes.  Well, starting with SQL Server 2008, it is possible to get the same result, with a lot less effort, following two simple steps.  In this post I will walk through things step by step.
January 22, 2012

DotNetNuke 6.x Text Editor Upgrade Issues

In the past 2-3 weeks I have been working on upgrading the DotNetNuke Installations on both this website and the IowaComputerGurus website and finally I can say I'm done with the upgrades.  These sites, although not that complex had a number of issues with the upgrades, some of which I have blogged about in the past, and then today a brand new oddity was discovered.  After upgrading the site everything was functional, however the text editors were behaving very unusually.  Clicking "Save" at times would not redirect you back to the page, but content would be saved.  Other times it would redirect you back to the page, but your changes were not saved.  I couldn't find any rhyme or reason behind it, so I started digging.
January 19, 2012

Improve Performance with Static File Caching

This post will be the first of what will be many posts with regards to application performance. After giving a number of presentations over the last 1-2 years, including one this evening in the Minneapolis/St. Paul area I've decided that some of these tips/tricks that I have with regards to improving application performance should really get put out here so people can find them and make the improvements to their applications. Going forward all of these posts will be categorized with at least the "Performance" category and then others that identify what systems are benefited by the changes. The subject of this post is Static Content Caching.

January 08, 2012

2011 Year in Review and a look at 2012

Over the last few years I have been trying to keep a little bit better track of usage of the content here on MitchelSellers.com as well as just keeping track of other interactions that I have through User Groups, Open Source Projects, and the like. Each year around the end of the year I try to compile a few of these items, if not for everyone that is reading things here for myself to see how things progress year to year.

January 06, 2012

Upgrading MitchelSellers.com - A DotNetNuke Upgrade Retrospective

For those of you that are regular visitors to this site you most likely noticed a number of changes to the site over the past 24 hours, including a small amount of downtime.  This was caused by changes surrounding the upgrade of this site to DotNetNuke version 6.1.2.  Now, I have worked on a number of DotNetNuke upgrades over the years, and I lost count a few years back at about 300 upgrades.  This site was by-far one of the hardest upgrades that I have ever completed and in this post I will share a bit around the growing pains that were experiences throughout the process.

December 19, 2011

Getting Up to Speed on DNN 6.x Design

So like many developers I have been spending some time recently updating my client, commercial, and open-source modules to support the new DotNetNuke 6 Form Pattern from a design perspective, to make my modules better integrate into the system.  Looking around when I was starting there is very little "true" documentation on this concept, and for me it was a bit cumbersome pulling everything together.  I started with this Wiki Article and then ended up spending a lot of time digging/inspecting lots of other modules that had been upgraded.  So in this post, I'm going to take a bit more of a 'code-centric" no-nonsense approach to what your form should really look like, I hope that this helps you.

November 18, 2011

Understanding and Mitigating DotNetNuke Upgrade Risks

With all of the recent changes that have come to the DotNetNuke product in the past few years I have been seeing more and more situations where users have older installations that want to get to DNN 6.x to take advantage of the new features that are available with the latest version.  I can't say as I blame them the newest features are great and a true benefit to all that use them, however, the road to getting there isn't always as peachy as it might seem, as you often find people with upgrades that fail horribly.  This has been a common trend and some of the things that DotNetNuke Corporation has done really makes this process less error prone, but a bit portion of the "getting it right" upgrade process really falls in the hands of the site administrators that are going to be doing the upgrades.  That is the focus on this blog post, how can we as site administrators identify potential risks and then mitigate/resolve the issues on our own?

November 13, 2011

DotNetNuke World 2011 Recap

As most of you know I was at the DotNetNuke World 2011 event in Orlando Florida this past week, and I thought I would give a quick recap of my experience with the event and share how much different I felt this event was in comparison to the previous DotNetNuke Connections events.  To help try and give proper justice to the topic, I'm going to break my review out in a few different categories to help make it a bit more understandable, and without further delay, here we go!

Content provided in this blog is provided "AS-IS" and the information should be used at your own discretion.  The thoughts and opinions expressed are the personal thoughts of Mitchel Sellers and do not reflect the opinions of his employer.

Content Copyright

Content in this blog is copyright protected.  Re-publishing on other websites is allowed as long as proper credit and backlink to the article is provided.  Any other re-publishing or distribution of this content is prohibited without written permission from Mitchel Sellers.