YABR - Soft Skills: The software developer's Life Manual


If you have read any of my prior blog posts you'll know I only review books I like.  Why?  Because I feel good authors deserve the credit and bad books get enough bad reviews on websites like Amazon.


My newest review (and latest in a long time) is titled "Soft Skills: The software developer's Life Manual" by John Z. Sonmez.  My primary goal for buying this book was to develop/verify my current soft skills.  I'm a huge advocate for having strong soft skills.  I feel it further enhances a developer’s skillset and can significantly improve us as potential job candidates.  Furthermore, it makes us well-rounded for those face-to-face meetings with Project Managers, Business Analysts and Users of the systems we develop and maintain.  These skills are highly underrated by far too many folks in technology as we tend to focus a lot of time on the cool stuff like design and coding.  But enough about that, let's talk about the book.


When I stumbled upon a reference to this book I looked it up on Amazon and noted the near 5 star rating.  That's very rare considering it has over 125 reviews.  That was enough to make me take a chance on the book and I purchased it.


As always, the book arrived in less than 2 days (I really love Amazon Prime!) and I started reading it immediately.  I tend to page through a new book quickly to take in how it structured and then I go back and read it.


My first impression as I started paging through this book was the sheer number of chapters (71).  Considering the size of the book, normally I'd expect about 20-ish chapters.  71 chapters is a lot of chapters and I was curious how the author packed such a high number of chapters in a single book. 


After diving in I was soon pleasantly pleased with the content.  John covers a lot of topics but spends a lot of time on what I would consider some of the more important topics such as setting goals, people skills, interviewing skills and creating your own brand.  Additional topics are covered such as learning to blog and freelancing. 


I won't cover it in detail as I feel people should read it for themselves but I will say a few key points as to why this is a good book:


- The amount of topics covered is amazing.  Time is well spent on what I would consider more important topics but there's still plenty discussed in the book.

- John is in a rare group of my favorite authors that knows how to articulate their thoughts very well.  I've read a lot of books but I've found few authors that have a way to deliver their message in a clear and concise manner to all varying audiences.  This is the #1 quality I look for in an author. 

- It's personal.  Odd but I like this.  Good authors reach in to themselves to express how and why, the up's and down's.  John does this even if it's at a low level.  You feel as though he's doing more than just spouting what you should do and even included some the trials and tribulations from his own personal standpoint.

- The section on targeting a specific company to work for is great.

- Another great section is wasting time.  It couldn't be more spot on and offers free tips to reduce time wasting activities.


With all that said, the book isn't perfect.  As I stated earlier, I really dislike small chapters.  I much prefer that an author find a way to marry similarly related topics to reduce the number of chapters but I'm giving John a free pass on this because he explains why he does it.  Initially I thought he was just trying to increase the chapter count to make it seem like it had more content but that wasn't the case. 


The only other thing to note are the chapters about investing and health.  While I personally have no issue with these topics being covered, I could see where some readers made find them odd considering they may not be perceived as being directly related to our career.  It seems they are included in the book to cover things that are personal and should be addressed even though they aren't professionally related per-se.  Again, not a bad thing but some may find it odd.

In conclusion, I would agree with most of the reviews on Amazon.  This really is a great book and one I would consider a "must read" for all folks in IT.  Does this mean it's a perfect 5 start book?  That's very subjective but if it's not, I would say it's about as close as you can get without being perfect.  Pick up a copy and see for yourself and you won't regret it.



Installing DNN (Dotnetnuke)



This blog post is the first of many that’ll explore the use of the DNN DAL2 templates designed and provided by Chris Hammond ( 

We’ll start with a fresh install of DNN v7.04.00 as it’s the current stable version.  The install will be done locally but if you are working with a hosting account you can simply change your information to whatever is provided by your hosting company.


  1. Download the latest version here:
  2. Unzip the contents.  I prefer to put my sites under C:\Websites\<name of site>.  For this example, I made a folder under this directory called “DNN740”, so the final path is C:\Websites\DNN740.
  3. Create a new website in IIS and called it “DNN740”.  We’ll call everything “DNN740” for consistency.
  4. Open SSMS.
  5. Create a new database called "DNN740".
  6. After the database has been created, expand “Security”, right-click “Logins” and select “New Login” from the pop-up menu.
  7. Create a new user.  This user will be used to connect your website to the database.  Grant it ownership permission on the database and be sure to write down or memorize the password.  We’ll need it shortly.
  8. Flip back over to IIS, highlight the new website you created and click “Browse” in the right page and this will open the new website in a browser.  Be patient as it may take a few minutes to load.
  9. Change any of the top-most information and then supply the following info for the database connection
  10. If your information is correct, you will see the installation process screen.
  11. When installation is complete the “Visit Website” button will be enabled.  Click it to go to your freshly installed DNN website.
  12. Your new DNN website is now installed.

Upcoming DNN DAL2 Posts

I haven't done a good job keeping up with my blog but I hope to change that in the second part of 2014. 

To start it off, I'm going to cover the new DAL2 for DNN.  There's a lot of changes but I'd like to cover using Christocs Visual Studio 2012+ DNN module template.  I'm a big fan of the new one because it uses the DAL2 and has more of a turn key feel.  The template does a lot of the work for us with minimal tweaks. 

Anyhow, that's my plan.  Let's see if I can stick with it.


Adding custom fields to Dotnetnuke registration

A question I see often on the dnn forums is how to add custom registration fields to the registration process.  

In order to add custom fields to the registration process you must first add them to the system.  You do this by logging in as the host and going to admin ==> site settings ==> user account settings.  Scroll to the bottom and expand the section titled profile settings and click the button titled add new profile property.  Complete the form and submit.  Your new field has been added but you're not done.  

The next step is to tell DNN that you want to use custom rregistration.  While on the same page, scroll up to the section titled registration settings and select custom for the registration form type.  A new text box will appear underneath.  Type in the fields you want to use during registration and update.  Your registration page will niw include any of the fields you just specified including and new ones you created.


How do you speed up a Dotnetnuke web site?

I'm a huge advocate for DotNetNuke.  It's arguably the most CMS in use and has a great ecosystem with an abundance of modules for just about any situation.

As much as I love DotNetNuke, I find the speed a litle lacking.  Pages should load faster.  Slow loading pages will frustrate users and possibly force them to leave your site.

Normally I install DNN with the default settings but sometimes they need tweaking.  Mitchel Sellers has a good article on setting changes that help with this issue:

This is a good starting point but you may need to also review any custom code in your modules. 

I'd like to hear from others about what techniques they use to help with DNN performance.  


Dotnetnuke error: The file '/DesktopModules/DDRMenu/Menu.ascx' does not exist

Today I boot up my laptop, start developing a new DNN module and suddenly my local site is unavailable.  The entire web site is down.

After about an hour of research I found out the issue - somehow IIS created a virtual directory within DNN on the desktopmodules folder.  Fixing it was easy after I figured this out.  Simply remove it within IIS, recycle your app pool and all should be well.


So long 2013, hello 2014

It's been a while since I've posted.  2013 ended on a high note with me finding a new job in September and getting ready for the holidays.  With all that behind me I plan on getting back to showing my blog some love. 

This year looks to be great and we're not even 2 weeks in to it.  The new job is going great, I'm working on learning some new technologies and some I continue to work on updating web sites that I originally created.  That's always fun.

While 2013 was a good year in many ways, I fully expect 2014 to be even better and I look forward to more writing.


Welcoming a new member to the family

It's been a few years since we had to say good by to our one and only dog, Dallas, our 7 year old red min-pin mix:


Dallas got diabetes and his health went downhill within a matter of weeks and we couldn't help him.  With much regret we had him put down.

That was 2 years ago and a week ago my wife and I made the decision to bring a new puppy in to the family.  His name is Jake and he's a golden retriever/chihuahua mix:



A new puppy also means a lot of our time will be spent on puppy-sitting since we have to work on house breaking him.  That's always the fun part especially considering I'm not the most patient person in the world.

A special thanks goes out to the DE Humane Association for working with us to adopt our newest family member.


When a drop down list isn't a drop down list

A while back I had the need to render HTML in a drop down list (DDL).  It never occurred to me that you can't do this in a standard or .net DDL because I never tried.  You can use CSS to set the background color but I needed more than that.  I needed to be able to render <sup>, <sub> and <b> tags within the DDL options.  And not in all of the options in the DDL.  The HTML could be anything and mark-up any part the text within the option.

After much google-fu, I was running out of luck (and patience) trying to find a way to accomplish this without an expensive third party component.  That's when I stumbled upon a blog post about making a fake DDL that renders HTML. Here's the link since I have to give the author credit for his work:

Below is an example of what I needed.  Note the use of the <sub> tag used on the numbers within the DDL entry:


This is exactly what I needed.  The entries that populate the DDL are stored in the database with HTML mark-up and that's how it builds and displays the items.

So how did I accomplish this?  For starters, the DDL isn't a real DDL.  It's actually a UL made to look like a DDL using CSS and JQuery.

From a cosmetics stand point, it was exactly what I was looking for.  Unfortunately (isn't there always a catch?), I lost the selected value upon postback but that was easily solved using JQuery to put the selected value in to a hidden textbox and using server-side code to retrieve it.

Check out the article above if you need a similar solution.


Sitecore CMS

I've been playing around with Sitecore for a little while now and really like it.  The CMS is very advanced and comes with a slew of core modules that fill gaps that are missing in other competing products.

Now that I'm becoming familiar with CMS, I'll dive in and explore more, like templates/layouts and creating modules.  I've done this a million times in Dotnetnuke so I'm anxious to see how it's done in Sitecore and how it compares.

Stay tuned for more Sitecore articles in the future!