Welcome to "The Mighty Blog"

Will StrohlWelcome to my personal web site.  I plan to add plenty of information and freebies here for you to use, try, read, view, share, and ignore.  Have fun!
Will Strohl

"If you try to fail and succeed... Did you really fail?"

My Recent Blog Entries

WillStrohl.com Moves to Mandeeps Live Blog

Writing a Blog

Since WillStrohl.com has been up and running, its primary function or purpose has been to host my personal blog about many things, but mostly DotNetNuke.  During this time, it has always run on the “core” Blog Module.  Say what you want about the core blog module, but it has always been a very functional way to build and maintain a blog presence on DNN.  There has always been a way to accomplish anything you wanted using it, whether it was adding other modules to the page, adjusting the design, or simply recompiling the module with any adjustments I’ve needed.  I’ve traditionally had time to do this, all with the intention of helping to make the blog module a better module.  Though, I recently changed blog modules, and that’s what this article is about.

Disclaimer:  First, I work for DotNetNuke Corporation, if you didn’t already know.  So, even though I have it posted everywhere, I should mention that this blog entry contains comments and opinions that are my own, and have no endorsement whatsoever from DNN Corp.  Second, I am doing a thorough write-up of my experience with a specific blog module.  While I feel that I have tried to not make this come off as an advertisement, I want you to know outright that I am not advertising for them. 

The “core” blog module has had a very exciting, long, fun, and rough past.  At some points it was simply misunderstood.  Other times it was missing features.  And yet other times, it was laying dormant, waiting someone to give it some long overdue TLC (tender loving care).  Such is the nature of a purely open source project.  It’s always at the mercy of those that hopefully have the necessary time needed to keep it updated.  I’ve always been very patient with the module myself because I love doing things with “core” modules first before going to the ecosystem.  After all, how else can the project know where and how to proceed if people are not using it and offering feedback, requests, fixes, code, and more?

Well, these days I have much less time to dedicate to helping that project than I used to.  I mean, I already run or contribute to more than 15 other projects on CodePlex.  This entire time I was basically working on a fork of the blog module anyway, since I had some specific requirements (or ideas) about how I best wanted my blog to do things on my site.  After all, this is one of the many benefits of using an open source module to begin with.  Unfortunately for the module itself, I needed to take that off of my plate, so the search for other blog modules began…

The Blog Selection Process

The DotNetNuke ecosystem has several modules that are either built to support blogging, or can be configured to support a blog.  Whether it comes from the Store or the Forge, you’re given many quality options.  Among them are some really great choices, and even some very flexible ones that aren’t a blog out-of-the-box, but can be after some configuration (some requiring more configuration than others). 

Mandeeps SoftwareAfter a bit of research, I decided to use Live Blog by Mandeeps.  Mandeep Singh heads up Mandeeps, has long been in the DotNetNuke community, and their solutions have always had a positive reputation during this time.  All of their modules have regular releases and very responsive support.  I tested this through the Store before moving forward.  This was the first step to feeling better about choosing Live Blog as my solution. 

Next, with very few exceptions, all of his extensions that have been reviewed continue to have 5 star reviews.  Whether I looked there, on twitter, or in the DNN forums, Mandeeps overall has had great feedback from those that use their modules.

The final piece that really sealed the deal was that it seemed that no matter which blog solution I was coming from, Live Blog had the hardest part of the migration path already solved for me.  It would simply import all of my blog posts and comments for me, maintaining the original integrity of by blog with nearly no effort at all.  I tested this several times in a staging environment, and it always worked great!  This alone is highly impressive.

The three components mentioned above were the critical first steps in my selection process.  Mandeeps Live Blog had very responsive support, great reputation & reviews, and it allowed me to easily migrate my content to it.

My Feature Requirements

Not every blog is created equal.  Although many blogs are created or used for the same general purpose, they all have their own agendas and goals.  My main goal is SEO.  I want to make sure that by blog entries can be found by people, regardless to whether those people were coming from Google, Bing, or {Gasp!} Yahoo.  Yes.  Yahoo is still around.  ;)

Since my main goal was SEO, I needed a solution that practiced some very specific key things in order to not hurt whatever goodness my SEO had already attained.  I needed H1’s and H2’s in the right places, great looking page titles and URLs, categories with friendly URLs, site maps, and so on.  Live Blog has all of these features and more. 

Comments are important to any blog.  I have wanted to transition to use Disqus for my blog comments for a long time because their comment engine is unmatched in capabilities and stickiness.  Unfortunately, I’ve either been too busy or too lazy to write the code to export my comments using their WP standard.  There were two great things about Live Blog in this area…  First, it already has them implemented as a forward only feature.  However, a very recent release also allows you to export your existing comments to Disqus, allowing you to choose to use their comment engine at any time!  Suh-weet!

I also track my own feed status through Feedburner.  I have really grown to like this service and didn’t want to move away from it for my RSS links.  Live Blog doesn’t get in the way here at all.

The final requirement I had was to be able to make the new blog fit into my own design.  Luckily, my design isn’t terribly complicated.  Regardless though, the template feature in Live Blog makes generating your own template to suit your needs incredibly easy. 

Any Bells or Whistles?

If you’re not familiar with the term “bells and whistles,” it is simply a slang way of talking about really cool add-ons or features.  Live Blog has plenty of them. 

Beyond what I’ve already mentioned, you get some really cool things like deep Windows Live Writer integration.  You can choose your own URL structure for each new blog post.  It has an easy to use control panel-style settings view.  It will automatically “ping” some common ping services for you such as blog search and feedburner.  You can simply paste in social bookmark code from sites like AddThis or ShareThis.  It will also allow you to automatically post new blog entries to twitter, but I have to admit that I haven’t tried using this feature yet.

I am sure that you will find some other things to be your own bells and whistles, but these few things are what stood out to me.

Is It Missing Anything?

Unfortunately, like with many 3rd party extensions, Live Blog has the need to fill the use case requirements of a large range of customers, including customers on many different versions of DotNetNuke.  As a result, this prevents Live Blog from implementing newer DNN features and APIs, such as editing pop-ups, client dependency framework, integration with the taxonomy API, cloud folder providers, mobile-friendly displays, and more.  This is not a deal-breaker (yet), but it will likely be frustrating for me moving forward since I always like to be on the latest version of DotNetNuke.

Did I Have Any Problems?

First, I would like you to know that I tested this module thoroughly in a staging environment before deploying this on my own website.  And even then, I made sure to retest everything since I was on my production website.  I highly recommend that you do this as well.  You never know what might creep up as a problem if you don’t.  I was able to do this side-by-side on my production site with the core blog module still actively in use.  However, in order to test on my own site and to mitigate any need to re-sync the data, I made sure to cease any blog posts during the testing phase, and I turned off comments during this time frame as well.  This made the migration path one that only needed to be followed once.  I wouldn’t categorize this as a problem, but you definitely need to be aware of this as well.  Otherwise, you will need to manually import and new blog posts or comments when you do the same thing.

There was one specific problem.  Unfortunately, the URL structure in Live Blog did not match that of my original URLs.  This is not an uncommon issue when switching module vendors or creating a new section on your website.  In this case, the original URLs used EntryId to denote the blog id number used to generate the blog post page dynamically in DNN.  Live Blog does this same thing, but uses PostId instead.  Unfortunately, there is no way to change this in Live Blog.  Along the same lines, the imported blog content did not respect the original ID numbers.  So a blog post that was previously 123 could be another value like 119 after import.  Finally, the URLs that are generated by Live Blog follow a different set of rules when created.  Basically, this could result in a scenario where your new URLs are essentially very different from their original URLs.

Initially, I looked to IFinity’s URL Master to fix this since I use this on my site, but without a bit of development by Mandeeps, a solution wasn’t available here.  However, if you do have a vendor ready and willing to do so, Ifinity has a module provider solution that allows you as a module vendor to map and generate URLs on sites that use URL Master.

Simple Redirect Module for DotNetNukeAt the end of the day, I couldn’t use a built-in or existing feature to re-map URLs to ensure that when search engines visited or visitors clicked on existing inbound links, the visitor would not only get the content they were looking for, but they would also get the SEO-friendly HTTP 301 redirect.  So, in order to fulfill this requirement, I ended up writing a slick little module called Simple Redirect.  It’s sole purpose in life was what you just read – and, to keep things simple in doing so.

What About the Future?

One of the things I am going to miss deeply is the ability to immediately support the latest and greatest features in DotNetNuke for the reasons mentioned above.  However, the convenience of being able to not need to maintain a separate code base right now is too great to ignore.  Mandeeps has been incredibly responsive to feature requests so far though. 

Summary

So that’s it.  I wanted to have a supported blogging solution that didn’t require me to have a forked and self-maintained version of the code base to achieve my blogging platform requirements.  I also wanted to see active releases that incorporated more and more features without the need for me to merge my codebase.  In looking for possible blog solution providers that could give my site what it needed and more, I found and moved forward with Live Blog.  It was able to meet all of my needs, has great support, actively releases, and is extremely reactive to feedback.  At this point, I couldn’t be any happier with my chosen path.

Plan Now for Day of DotNetNuke Charlotte 2012

Day of DotNetNuke Charlotte 2012

Man… What a year.  Really.  A lot of things have happened, and it’s already 1/4 of the way over.  The best part is that we have a brand spanking new release of DotNetNuke that features social features for all editions of DNN in the 6.2 release.  That release is right around the corner, and DNN Corp folks have been busy blogging about 6.2 features quite regularly.  But wait, there’s more!  That’s right… This is my elevator pitch, or boardwalk pitch.  You choose.  Just don’t call me Billy Mays or Vince Shlomi.  Go ahead, look them up.  One was great but passed away, and the other.  Well, let’s just not go there.

DNN 6.2 is Around the Corner

There are a ton of new capabilities coming in version 6.2 of DNN that include two huge areas:  social, and service framework.  The social topic is big enough at this point that we all understand it even if it’s only from a high level, but the service framework is the beginning of a much broader area that developers will simply love!

This release marks the long anticipated integration of the beloved Active Social suite of social capabilities.  You see, a little over a year ago, DNN Corp acquired Active Modules, and their most popular app offering was a suite of features that made up a product called “Active Social.”  If you desired, Active Social nearly gives you a Facebook experience within minutes on your own website.  However, the features are much more powerful than that.  They allow you to build, maintain, and grow communities on your website that center around your brand, cause, or products.  This is the most powerful way to market to and engage with your customer base.

The service framework is just the beginning of something bigger, but if you’re the techie type and look under the hood to see what it’s about, you can’t help but geek out over it!  The service framework lays the foundation of what will be centering DotNetNuke as your primary point of managing online content, and allowing content to broadcast from, or import to your website.  Integrate this feature into your website, and the possibilities are endless, regardless to the device or platform we’re talking about. 

Got a PHP web property?  So what. 
Have a cutting edge handheld device.  Check. 
Need to integrate with a Java app?  Easy.
Want to have two way communication with the next social website?  Done. 

This and more is what will be possible in the future using the service framework.

All of this is great and all… But how in the world do you learn about how to use any of these new features?  What can you do to ensure that you will be productive with these features from day 1?  This is where the Day of DotNetNuke Charlotte comes in!

Attend the Day of DotNetNuke

The Day of DotNetNuke has always been and always will be a free event to attend.  All you need to do is find a way to get there.  Once you do, you will be able to enjoy DotNetNuke swag, sponsored giveaways, numerous DNN sessions, and more.  You will also get to meet and chat with some of the very same engineers that built these features.  There’s nothing more geeky in the DNN world right now than that!  Oh, and don’t forget the always fun DNN After Dark party.  If you haven’t found out yet, attend and you will soon find out that the DNN community knows how to have a great time!

Be a Speaker

There are already a variety of speakers for the event, but anyone could potentially be chosen as a speaker.  Just create a compelling session abstract about DNN 6.2, or social on DNN, and submit it.  This is easily one of the most rewarding ways to give back to the community, and make a name for yourself at the same time.

Be a Sponsor

Sponsors are what make this event great.  I’ve said it time and time again.  Without the generosity of sponsors, the event wouldn’t be free, and there wouldn’t be all of the great events and freebies that we’ve enjoyed in previous events.  If you are interested in sponsoring, just fill out the sponsor form on the website.  The DNN community never forgets about the great companies that help support it.  This is easily one of the best ways to build and maintain your brand in the DNN ecosystem. 

This is all well and good, but what can you expect?  Check out this video montage from the Chicago event!

Public Speaking Videos Including DotNetNuke Demonstrations

DotNetNuke Presentation

It’s always been a topic, but even more so recently…  People are asking more and more about various things that relate to public speaking.  Whether it’s for user group meetings, code camps, DotNetNuke World, meetings with colleagues, or strategic business meetings with partners and prospective customers – public speaking is a critical tool to have honed and in your professional toolbox for your career.  Honestly, many of us believe that we are good at speaking in front of an audience, or at least good enough.  This first part of the year, I took it upon myself to build some presentation-style videos to explore and teach some of the most important components for public speakers.

I joined DotNetNuke Corporation in June of 2010.  I was already speaking at many events before accepting the position.  I had countless public events as well as business-centric presentations under my belt.  While I knew I wasn’t an expert at public speaking, I knew that I could hold my own and get things done.  The position I took was to not only do some of the very things I was already doing, but it also entailed representing a brand and company that I was pretty much obsessing over.  The last thing in the world I wanted to do was misrepresent the brand in any way through my presentations.

As a result, I quickly did some research to find out who the “experts” on public speaking were.  I found a small handful of people that specialize in the topic and not only authored books, but also had businesses based on the subject.  Some of my favorite include Garr Reynolds and Nancy Duarte.  I literally spent many hours reading their books, attending live webinars, reading their blogs, and more learning what they had through real world experience.  I had already blogged on their books in the past, and I invite you to read them as well.

What I put together over the past couple of months is the beginning of a larger amount of resources that are intended to help everyone, and especially the DotNetNuke community, become better at public speaking as well.  Introducing, the public speaking series of videos on the DNN YouTube playlist…  The channel is also embedded below.

As of today, there are nearly 2 hours of videos that introduce ideas, experience, tips, best practices, and more that all help you to ensure that you always have the best presentation possible, regardless of your audience.  The videos start from the very beginning, and continue through to DotNetNuke demonstrations.

There are of course plans to add more resources just like this.  Hopefully, you enjoy this as well.

Meet DotNetNuke Community Member Adam Humphrey

Adam Humphrey: Pushing Pixels in the DotNetNuke Ecosystem

If you have not heard of Adam Humphrey, I wouldn’t be surprised.  While he is an excellent DotNetNuke community member, much of his participation is under the radar.  However, he is in my opinion one of the better designers that our community and ecosystem have.  He is most importantly, the owner of Adammer.com, which is the flagship company that he does most of his work out of.

Adam HumphreyChances are, you’ve used one of Adam’s skins for DotNetNuke.  Chances are even better that you’ve even used a DNN site that has one of his skins or a derivative of it applied to the site.  The skin design I am talking about is much better known as Greytness.  As far as free designs for DNN go, this seemingly one of the most popular and widely used free designs for DotNetNuke.  There are many reasons that I could guess as to why…  It’s more complete than most free skins, has built-in WAI compliance, fully commented CSS, and more.  Anyhow, I will let you put your own eyes on it.

Greytness - A DotNetNuke skin by Adammer.com

Adam has also been a speaker at the Bay Area DotNetNuke User Group, or BayDUG (@BayDUG).  A presentation he gave recently was called “Pushing Pixels in the DotNetNuke Ecosystem: Principles of DotNetNuke Skin Design.”  Having been in the DNN community for as long as I have, I have seen countless presentations about skin design, many of which were given by people I would call friends and experts.  However, this is by far one of the most useful presentations about skin design that I’ve ever seen.

Pushing Pixels

Adam Humphrey did an excellent job presenting his ideas and experiences with the fellow members of BayDUG.  We enjoyed a similar presentation that he did last year so much, that we invited him back to do it again since DNN 6.x has changed a few things.  He did not disappoint.  I know most of you have no opportunity to join us at BayDUG, so we recorded this amazing presentation!

Interview with Adam Humphrey

Since I know that most of you are not familiar with Adam, I also asked him to do a quick interview so that he could be properly introduced to the DNN community overall.  The resulting interview was great, and you can view both parts below.

DNN User Groups

There are many reasons to join, attend, and speak at DotNetNuke user groups.  Hopefully, some of this information has inspired you to join or lead a user group yourself.  But user groups are always looking for people to show up too.  Participate in any way that you feel comfortable with – but PARTICIPATE!

Simple Redirect Module for DotNetNuke Released

Simple Redirect Module for DotNetNuke

Search engine optimization (SEO) has been on the top of most minds in the website design and development for many years now, so I won’t bore you with details about what it is and why it’s important.  At this point, that should be obvious.  However, maintaining your SEO is a never-ending challenge.  This is never more apparent than when you switch platforms on the web, no matter how big or small that platform may be.  I have recently run into such a challenge.

In case you haven’t noticed, I have switched blog modules.  This post not only introduces my newest open source module, but it also clearly outlines the use case for why I built it, and why it might be of use to you as well.  While my use case involves blog modules, this could very well relate to other types of modules like announcements, forums, and any other module that creates dynamic pages based upon content you are creating.

As of Sunday, March 25, I am now using Live Blog by Mandeeps instead of the “core” blog module.  Don’t get me wrong, the core blog module is great.  I’ve used it for many years now.  It definitely fits the needs of most bloggers and blogging websites, but I really needed more, and Live Blog offers it to me right now.  Also, the difficulties I outline are not to pick on Live Blog or Mandeeps.  Both are truly great!  What I speak about here would most likely be experienced with any software, platform, or module when making a switch that affects URLs.

URLs Changing

Anyhow, this switch of modules was really the motivating factor behind building the Simple Redirect Module for DotNetNuke.  When migrating from one module to the next, the URL structure has changed.  The change was minimal on the surface, but it certainly has the potential to have a pretty significant impact on SEO one way or the other.  It really depends on how the URLs are handled now. 

This is an example of a core blog module URL for a blog post, assuming the blog module is on a page named “Blog”: 

  • http://domain.com/Blog/EntryId/123/This-is-Your-Blog-Title-in-the-URL.aspx

The Live Blog URL is very similar, and with very few differences in creating the page name – and sometimes no differences at all:

  • http://domain.com/Blog/PostId/123/This-is-Your-Blog-Title-in-the-URL.aspx

On a site like mine, you can also pretend the page extension isn’t there as well, since I am using URL Master.

Luckily, Live Blog does an incredibly great job of importing blog posts and comments from many places, including the “core” blog module.  That feature is a life-saver!

Once again, on the surface such a transition appears to be simple.  After all, the blog posts are imported, so the URLs should match up pretty nicely.  However, on an installation of DNN where there have been multiple blogs on multiple sites and multiple test posts from applications like Windows Live Writer, there are some subtle differences.

First, some posts would not have the same “page name.”  Let’s take a title like “Simple Redirect Module 01.01.01 Released.”  The resulting page names would be slightly different for each blog module, shown below.  Also shown is an example of the blog entry ID’s being slightly off since the new entries in the database no longer have the history of having had previous blog entries that are now deleted.  Both issues are bolded to make it easier to see.

  • Core Blog:  http://domain.com/Blog/EntryId/123/Simple-Redirect-Module-for-DotNetNuke-01-01-01-Released.aspx
  • Live Blog:  http://domain.com/Blog/PostId/118/Simple-Redirect-Module-for-DotNetNuke-010101-Released.aspx

And worse… Sometimes (and this will likely be fixed by the time you use the module), you might have a URL that is truncated like seen here:

  • http://domain.com/Blog/PostId/118/Simple-Redirect-Module-for-DotNetNuke-010101-Rele.aspx

As you can see, it is not very straightforward to perform any specific rewrite rules in this scenario.  At least, not easily and not without having some more information to more easily map blog entries between the two modules.

The Solution

I tried several things before finally resorting to writing a module.  I tried to find a rewrite method in URL Master, but nothing existed without writing a provider for URL Master.  I also tried using rewrite rules in SiteUrls.config, but not being able to predict the URL pattern changes consistently meant that there would need to be a direct 1-to-1 relationship in the configuration ��� and such a thing would adversely impact performance on every page load on the entire site and installation of DotNetNuke.

Finally, I warmed up to the idea of building a module for this.  Enter the Simple Redirect Module for DNN. 

This module allows you to simply enter a URL that no longer exists, and map that to a URL that does exist.  Easy stuff!  In the background, the module is not only pointing visitors to the right place, but it is also performing something known as a HTTP 301 Redirect, which also notifies search engines that the new page is the right one.  This instruction results in the search engine wiping out the original URL and replacing it with the new one.

This blog actually comes to you after 3 releases of the module.  While the first version worked fine, I found some performance issues when a certain number of redirects were loaded into the module.  That was release 2.  A significant amount of caching was added to address the performance issues.  Unfortunately, I had made a mistake in the packaging of the second release, so today’s release is the recommended download.

How Did I Map The URLs?

With over 700 blog posts, it wasn’t realistic to add a redirect record for every single blog post that I have.  Instead, I used Google Webmaster Tools to identify the most popular pages on my site that were impacted by the blog module change.  I mapped a redirect entry for every page that had 10 or more direct inbound links to it from another website.  Yes, that was quite a few pages.  I could have set a different benchmark to use, but that one seemed good to me.  For the rest, I am able to submit an XML Site Map to Google Webmaster Tools for indexing.  An XML Site Map is automatically generated for you by Live Blog.

In total, I’ve spent 4-5 hours working on the module, and another ~2 hours mapping URLs.  Of course planning, testing, and implementing the blog module itself took time too.  At the end of the day, that was all time well spent to retain traffic on my site, and put my best foot forward to minimize the impact to visitors that are visiting my site.

I invite you to play with the module.  There are many different types of redirect modules out there.  This one was meant to handle a very specific use case, hence the name.  I hope you like it!

Download the Simple Redirect Module

Logistics of Your DotNetNuke User Group Meeting

DotNetNuke User Group Meeting Logistics

Some of you may be already running your DotNetNuke user group meetings.  If that is the case, let this be a refresher or a guide.  For the rest of us, this is meant as a reference to help you plan out your first meeting, or the ongoing logistics of future meetings.  If you’re doing the right things, holding the meeting should be the least amount of work for a user group leader every month.  It should begin to run itself…

Know the Venue Layout

Knowing your venue is important.  Every meeting place will have attributes that you will have to describe and know before announcing and holding your meetings.  For example, there may be multiple entrances that your members could enter.  There might be multiple hallways, stairs, or elevators for them to take.  There might be multiple meeting rooms with similar or same naming conventions.  The worst is when more than one group of people are meeting at the same time.  You need to expect and plan for these things.

Probably the easiest way to plan for these things is to have pre-made and re-usable signage to help point people in the right direct.  The signage should have arrows on it to guide your attendees all the way up to the right door. 

If you are meeting in a secure location that doesn’t allow anonymous people to enter on their own, make sure that you do one of the following:

  • Have a Greeter – Place an attendee or volunteer at the door(s) to let people in.  They should be there through any opening announcements to allow for stragglers to be let in.
  • Give Out a Phone Number – Have a phone number for people to be able to text and/or call you to be let in.  Most of us don’t want to have our private numbers displayed publicly, so services like Skype and Google Voice make this easy without costing money or compromising your privacy.
  • Attach a Wireless Doorbell – I’ve see a wireless doorbell work quite well. They are battery-powered, low cost, and allow you to temporarily have a way for people to let you know when they’ve arrived without permanently altering the door way or giving away your personal information.

The last thing to remember in this area is to keep an eye open.  You cannot expect your volunteers to stay at the front door for the entire meeting.  Instead, it will normally fall on your shoulders as a leader of the user group to keep an eye out on the phone and doorway to help stragglers gain entry to the meeting after it has begun.

Assign Common Tasks

There are a great number of things that you could possibly do at one or more meetings.  You should find a dependable volunteer to assign responsibility for any tasks that repeat from meeting to meeting.  This is a great way to make someone feel like they are part of the group, they have ownership in the group, and ensure that they will continue to show up at as many meetings as possible.  Informal leadership positions can change the dynamic in so many ways – and almost always for the better.

Here is a list of the most common things that you might need to consider assigning tasks to people:

  • Greeter – As mentioned above, this person would let attendees into the building where the meeting is being held.
  • Registration – If you keep track of who attended, this person would make sure that everyone signs in.  If you’re doing any kind of raffle, they would likely hand out raffle tickets as well.
  • Raffle – This person would do any of the following: call winning numbers, hand out prizes, record any required information for/from winners, report winners to sponsors as required.
  • Announcements – Announce any news about DotNetNuke that had occurred over the past month, as well as any member-related announcements.
  • Newsletters – Draft and send newsletters to known members of news and upcoming events.
  • Manage Events – Depending on where and how many places you post your events, it might be great to have a person who posts your events in the various places for you.
  • Post Session Information – Speakers usually have links, sites, slide decks, example code, and more that attendees would be interested in later.  This person could coordinate with the presenter and post it to your website for you.
  • Recruiter(s) – There are two different types of recruiters that you will want to have, and you can name them anything that you want.  You need someone to continually recruit new speakers, and someone to recruit and communicate with sponsors.

There could be any number of other duties that might need to get done.  These should just give you an idea.  Don’t be afraid to ask someone to do something either.  You’d be surprised at how many people really are willing to help if you ask them.

As a leader of the user group, it probably isn’t a good idea to do everything yourself. If for some reason you are no longer able to lead the user group as thoroughly as you were for any length of time, the people that were helping would generally be able to step up for you to make sure the meeting still took place.

The most important thing that you can do as a leader of a user group is to identify the various things that need to take place over the month, and assign those tasks to people as much as possible. 

What to Bring

Along with hopefully bringing some attendees to your meeting, there are some must have items that you should consider, as well as some optional things depending on how your meeting is formatted and what kind of support you have.

  • Pens & Paper – Sometimes you can get this donated as swag.  People won’t always remember to bring their own materials to take notes.  Sometimes accidentally, and other times they didn’t think that they would want to take notes.
  • Technical Equipment – This could include projectors, power cords, a wireless router, LAN cables, web cam, and more.  I am the type that likes the have a spare, just in case a piece of equipment goes bad.  Of course all of these items depend on the format of your meeting, what your venue is able to support, and what resources you have.  Many of these things could be purchased by a sponsor.
  • Cameras – It really is a best practice to take some pictures and post them online.  If you have the resources, recording the meeting is great too.  These two things can really add some interaction and exposure to your user group before and after a meeting.  It can even help during the meeting too if you’re updating Twitter and Facebook.
  • Sign-In Sheet – It would be great if you could do this online using a laptop or tablet, but you will usually see a standard paper sign-in being used.
  • Signs – This of course could be tasked out above, but know the number of signs you need to have and bring them.  Ideally, they should be laminated or in sheet protectors to make them re-usable.
  • Door Prizes – This of course depends on if you have sponsors or not.  But bring the prizes if you’re going to give them away.
  • Raffle Tickets – Raffle tickets are usually pretty cheap, but you only need them if you have something to give away.  You can get an entire roll for about $3-5.
  • Drinks – Ideally, you would have a sponsor bring the drinks, but otherwise, it’s a good idea to have some soda and water on-hand.  I’ve always bought a small case of water for a meeting anyway.  Lot of people prefer water, and most food that is delivered to a user group meeting doesn’t have the choice of water.
  • Food – I wouldn’t suggest that you purchase food on your own.  This could very quickly burn a hole in your budget in a way that you wouldn’t be happy about.  Get this sponsored or don’t provide food.  Though, if you have a disposable budget, feel free to donate some food.  In the past, I’ve even gotten restaurants to sponsor food.  All you have to do is ask. 

If you end up being as thorough in your meeting format as possible, you might end up with too many things to carry into a meeting.  This was certainly the case at the last user group I ran.  In the event that this happens, a large plastic bin, a cooler with ice, and some bungee cables will become your best friends. 

Hopefully, this blog post was able to identify some of the things you need to remember and do for your meetings – and maybe even give you a couple of new ideas!

My First 20 Mile Bike Ride

Our bikes on the Bay Trail, behind Facebook

I for the first time in my life since I was a teenager am the proud owner of a bicycle.  Purchasing the bicycle was a conscious decision in an effort to have an easier barrier of entry to working out, and less of an excuse not to.  A bicycle is the perfect answer for me to burn time and energy on the way to and from work.  I can commute since I am only about 7 miles away.  For the times when it’s not so convenient, I can simply jump on the train with my bike.

For those of you that are readers of my blog, please rest easy knowing that while Chris Hammond was quite pushy in influencing me to get a bike, I didn’t get it for or because of him!  :D

I am not a bike rider.  Even though I have ridden nearly 150 miles within the last month (since I’ve owned my bike) as of the writing of this post, for me the bicycle is my gateway to putting my feet to the pavement again.  I suspect that I won’t stop riding the bike, but I really can’t wait until I am once again running 3+ miles as a regular workout – like the good ol’ days!

Back to the topic of the post though…

From the first day that I tried riding, I found that riding longer distances wasn’t difficult when you have the right conditions and bicycle.  My first ride was with my son.  We were just fooling around on a Saturday and decided to see where we could explore.  We rode 12.5 miles before we realized how much time and how many miles had transpired!

This is an area where I will give Chris Hammond full credit.  The Strava website and app are incredibly great!  You can track and compete on all of your bike rides and runs.  I highly recommend using this app and service if you run or bike (or both).

Immediately, I set some goals for myself…  The most prominent one was to ride at least 20 miles in a single ride.  Heck, if I could ride 12.5 miles, what’s another 8 miles?

Luckily, there are great websites like TrailLink that help you find great places and trails to ride your bike, and do other outdoor activities.  That’s my primary place that I go to in order to find a new route to ride on the weekends.  However, the site isn’t perfect, so it’s a great starting point.  I usually end up on Google Maps before I actually leave the house.  Another great site if you’re in the San Francisco Bay area is BayTrail.org.

Using both sites, I had intended to have a 20 mile ride under my belt 2 weeks ago.  Unfortunately, the maps and sites have no way to let you know if a reserve is closed off due to construction or conservation, preventing access to part of the trail.  Those rides were 14.3 and 12.9 miles, respectively.

Finally, I was able to accomplish this on Sunday!  I went on a trail that starts in East Palo Alto (almost next to the Facebook headquarters), and ends in San Jose, CA.  This is part of the greater Bay Trail, called San Francisco Bay Trail (East Palo Alto to San Jose)

The main portion of this trail is 22.5 miles all on it’s own, but there are other trails connected to it, including loops, making the actual possible distance many more miles longer.  I rode from the northern most possible point in the East Palo Alto portion, down to Mountain View (right next to the Google campus).  That was just over 11 miles and was the first moment that I remembered to look at my distance traveled.  There was so much scenery that I was completely distracted up to that point.

Above all, my proudest realization of this ride is the fact that I didn’t rest for any longer than the amount of time it took to drink a bit of water or take a picture!

Those of you that are bike enthusiasts, you might notice that I don’t have much elevation in my rides.  I am not very interested in elevation.  My highest elevation so far has been just over 300 feet.  I wouldn’t have gone that high if it weren’t me trying to get home.  Hehehe…

I wrote all of this for a purpose…  I have neglected my health for far too long, giving way too many excuses.  Once I put my mind back to it and I stopped accepting my own excuses, I have found that I can put myself on the right road to being fit once again.  If I can do it, so can you!  :)

The coolest thing is that you can get the whole family out, and you can see some cool things like I’ve been taking pictures of and posting to my Flickr like you see below.

How to Gauge User Group Interest in Your Area

ODUG Hackathon  2010

Yesterday I wrote a blog that introduced you to 4 new user groups that are having their first meetings very soon.  At the end of the blog there was also a question, “Do you want to start your own user group?”  As a result, I got a very good question that is very common.  “What’s the best way to find out if there is any interest for a user group in our area?”

I love this question, not for the answer, but because of the thought process and activity around it.  It’s also the tipping point of someone actually embarking on the rewarding journey of running a DotNetNuke user group.  This is the part that excites me the most.  Community is what we are all about, and user groups help our DNN family grow.

There are many ways to gauge interest in your area.  The exact methods you choose will depend on your level of effort and availability of these methods in your region.

Attend Other User Groups

Go to the other user groups in the area.  Microsoft .Net user groups, developer guilds, and SQL Server user groups are often the best ones to go to first, as there will likely be several people there that already use or know about DotNetNuke.  You can find these user groups quite easily by either contacting or looking up the website for the local Microsoft Developer Evangelist, or simple searches on your favorite search engine.

If you are looking for user groups in your area, here are a couple of example queries.  They assume you are in Dallas, Texas.

  • .net user group in dallas, tx
  • sql server user group in dallas, tx

When you attend, ask the user group leader if you can speak to the group for a couple minutes and poll the members about DNN.  You can even get into their opening announcement slide deck, newsletter, and more.  You’d be surprised at how helpful the area user group leaders will be.  The typical user group leader would jump a the chance to help someone else create a new user group.

Try to have an easy to remember website or email address to point everyone to.  A business card for the user group or yourself will work just fine.  If you don’t have any, services like Vista Print work quite well to allow you to create business cards online and sometimes for free.

It would be best to have a date set for the first meeting about a month in advance, even if you’re not sure if anyone would show.  If people express interest, then you have a meeting to set-up.  If not, then no harm – just don’t hold a meeting.

Forum & Social Networks

Use the DNN user group forum, Twitter, and the DNN Facebook Page to ask if there are any people in your same area looking to attend user group meetings.  Be sure to cross-promote your inquiry as well.  If you post in the forums, post a link to the forum thread on Twitter and Facebook.

Think outside of the box as well…  There are other social sites that can help advertise the existence of an existing or future user group leader and meetings.  Post your inquiry on places like Craigslist, and local bulletin boards at local newspapers.

Become the Leader on DNN

If available, make sure you become the leader of the user group on the DNN website.  This will allow you to point potential user group members to something and allow them to register for the user group.  This enables you to have a count of potential attendees, as well as a way to send a newsletter to everyone that has expressed interest so far.

If you have enough people registered, send newsletters at least once a month to find out how many people are willing to meet and what their preference is for a date, time, and area of town.

Real Life Venues

Go to your local community colleges, technical colleges, and universities.  Place your card or a flyer on the area bulletin boards (yes, and actual bulletin board), and ask the staff to include your user group in their own newsletters.  Sometimes you can even leave flyers in the libraries, labs, and more.

Like before, make sure you have a website or e-mail address to point people to.  This allows you to efficiently collect and archive their information for when you finally hold a meeting.

Website or E-Mail

I have said a few times to point people to a website or e-mail address.  The average person is more likely to register on a website than send you an e-mail expressing their interest.  E-mail is often perceived as being much too personal – so you will likely not get as many people contacting you.

Instead set-up a website if you have the resources.  With DotNetNuke, it doesn’t take much effort to do so.  Just have people register on the site.  That’s easy enough for most people and it gives you their contact information and the ability to build up a contact list for newsletters.

If you don’t have the resources to build a website, then simply point these people to the user group profile page on the DotNetNuke site.  The URL isn’t very easy to remember, so I would suggest using a service like bit.ly to create a shorter URL, and maybe even a short URL that is easy to remember.  Bit.ly allows you to specify the end portion of the URL. 

Whatever you do… Have a SINGLE ENDPOINT to collect potential user group member information.  Point everyone there on your cards, flyers, forums, social networks, and elsewhere.  This will make your life easier by leaps and bounds.

Do this even if you are not the current leader of the user group.  This will show interest and you can still end up being the leader later, or assist the existing leader now that enough members have been recruited.   There are many options from this point.

The Biggest Mistake You Can Make

Nearly everyone that I have met that ended up running a user group has made the same mistake. They continually go through their process of gauging interest, and if they don’t like the number of responses, they put off plans until the next round of communications. DO NOT do this!

There isn’t a magic number. There isn’t a minimum number of responses. There isn’t a better time to start your first meeting than now. A large number of people will not respond to your for any number of reasons. However, if they know a meeting is scheduled, quite a few more will show up than respond.

Schedule your first meeting. Invite the entire list of people you’ve gathered up to this point. People will show. And if you’re consistent, more people will show at each meeting.

Summary

You have nearly an unlimited number of options available to you when trying to recruit user group members and interest.  Even if you’re in a rural area that has few if any other technology-minded people, there’s nothing stopping you from creating a virtual user group.

Use as many of the available options that you can without expending all of your energy.  The more feelers you have out there, and the more exposure you create, the more real your prospective user group seems.  People will respond to that.  People gravitate to others that project that kind of positive energy.  That’s the core of what makes user groups great to begin with.

Here are is a summary of the steps I’ve outlined:

  1. Create or join a user group on the DNN site
  2. Create short or memorable URLs to your user group
  3. Create a business card and flyers for the user group
  4. Post and leave the user group information in as many places as you can
  5. ENSURE that all flyers, cards, and verbal recruitment points to a single place

I hope this gives you a greater insight into how to get started.  There’s no magic formula to get started.  You just start.

New DotNetNuke User Groups For You to Join

Chris Hammond visits the ODUG in 2009

User groups in general are great.  They do for the average person what few other venues and mediums can…  They connect people in meaningful ways.  Sure, you can log onto your favorite social network and find people with similar interests, but you have to build a relationship first.  That takes time.  At a user group, everyone is there for the same reason.  They all want to learn more about the overall topic.  Once you share a slice of pizza or a drink with your fellow user group members, you have quite possibly built a meaningful relationship for life.

You may or may not know, but I assist in managing the user group program for DotNetNuke.  Over the past month or two, there have been a greater number of requests for helping people find user groups, but also people wanting to run a user group in their area.  This is very exciting!  There are numerous reasons that we could point to as possible reasons for this increase in activity.  Regardless to the reason, I just wanted to highlight some of the new user groups that are forming.

Queensland, Australia

The SE Queensland DotNetNuke User Group is being run by Ian Sampson (@glantonian), Director of Glanton Solutions.  He is a long time DNN user and supports some very impressive DNN websites for some of the higher profile customers any of us can hope for.  They have landed a heck of a first speaker too…  Bruce Chapman (@brucerchapman) of iFinity Software.  If that doesn’t ring a bell, iFinity’s flagship product is URL Master.

Their first meeting is on March 22, and their topic is “What’s New in DotNetNuke 6.2?”  This is certainly a must-see topic and presenter!

Portland, Oregon

The west coast of the US in general doesn’t have as much user group activity as I would like. I am not sure of the exact reasons why, but Greg Griffin hopes to be the catalyst to change that. He and the previous leader spoke and chose to handoff the responsibility. I don’t have quite as much information about the plans for this group, but if Greg’s emails are any indicator, Portland should have some great meetings very soon, beginning March 13.

Tampa Bay, Florida

Tampa Bay had a user group in the past that began to catch some momentum.  It had several great meetings and included Joe Brinkman and myself as speakers.  However, it ended up having to cease having meetings.

Bernadette McCarthy has eagerly asked to take over this user group, and I am extremely glad that she has.  She brings a very high level of excitement to the group, and they haven’t even met yet!  This user group has great potential, considering that it is so close to the ODUG, and Tampa is a hot bed of Microsoft-related user groups.  I hope to see them grow quite quickly.

Their first meeting is a meet & greet on April 2

Central Ohio

The Central Ohio DotNetNuke User Group has an extremely motivated individual taking the reins. He is quite simply the most excited person that I’ve spoken to about user groups in the recent past, and he cannot wait to meet all of the people in his area. Dustin Eastman is the new leader of this user group and has scheduled their kick-off meeting on March 15.

Do YOU Want to Run a DNN User Group?

With all of this renewed interest in user groups, I have to ask… Are you interested in running a user group? If you are, please let me know.  I’d love to talk to you about the user group in your area.

Discuss Running Your Own User Group

Content Slider 01.02.00 for DotNetNuke Released

Content Slider Module for DotNetNuke

It’s always kind of difficult to tell what modules will become popular when you create them.  For the most part, I really don’t care because usually the modules I release to you and the rest of the DotNetNuke community are those that I built specifically for a specific need I had anyway.  However, Content Slider module was meant to fulfill a need.  There was a gap in the Forge.  As a result, this module has had over 3,500 downloads in about 6 months.  THANK YOU for enjoying this module so much!

Well, no one can ignore that kind of interest, so I spent quite a bit of time working on a new release this week.  I was able to close all of the reported bugs and suggestions, and I even added a couple of my own.  The highlights are below.

  • Feature:  One-Click Enabling of Pager Setting
  • Feature:  Cache Sliders for Performance
  • Feature:  Configurable Cache Setting
  • Enhancement:  Transitions can be Selected
  • Bug:  Secure Folder Images not Viewable
  • Bug:  Sliders Disappear on Postback
  • Bug:  Remote Images Cause Errors
  • Bug:  Deleted Images Case Errors

These updates have helped to solidify this module to be higher performing, easier to use, and more stable than it ever has before.  In my opinion, its simplicity makes it competitive to most of the commercial options you have today.

Pager Setting

This is probably the most exciting update to this module.  Prior to this release, implementing the pager setting was quite difficult to do and required some general technical understanding of how the module and the jQuery cycle plugin worked.  This was obviously not a good thing for any module. 

As a background, the “pager” I am speaking of is simply the navigation element that can go with a banner slider.  See the example below.

Content Slider: Pager

Now, you can enable that functionality within a click!  All you have to do is make it look pretty, or at least make it look like it belongs in your site.  A little bit of CSS magic is all you need. 

Caching Enhancements

While tracking down some other bugs and issues, I stumbled across the need to cache a bit more for performance and stability.  If you’re not familiar with the term “cache,” it is simply a technical term used to describe the ability to save program information into memory for quicker retrieval.  Done right, caching can make even the most sluggish applications look speedy-quick. 

Bruce Chapman of iFinity SoftwareThis release not only explicitly caches the slider information above and beyond what the module will do, but it also allows you to custom define the amount of time that your cache will remain relevant.  However, it is also smart enough to override the cache when you add new sliders and save the settings.

Before moving on, I do want to give a little blog love to Bruce Chapman of iFinity – the maker of the favorite URL provider for many of us.  During my testing for this feature, I stumbled upon his free Cache Master module.  This module is incredibly useful for any developer that is performing explicit caching in DotNetNuke.

Selectable Transitions

The last update I want to specifically dive into is the ability for end-users to now be able to select their own transition.  This was a huge usability snafu by myself.  Until this release, you had to know the exact words to use for the transitions you wanted.  This is a lot easier said than done for nearly all users.  You don’t have to worry about that anymore…  Now, simply select an available transition, and save your settings to see how it looks!  Easy as pie.

That’s about it.  I hope you enjoy the Content Slider Module for DotNetNuke.  It’s certainly an honor to maintain this module for you all.

Download the Content Slider Module now!

My Twitter Updates

    The opinions expressed here are the personal opinions of Will Strohl and do not necessarily represent the views and opinions of the DotNetNuke Corporation.
    © Copyright 2004-2012 by Will Strohl. All rights reserved. Website Skinned By: Ralph Williams  Website Hosted By: Applied Innovations