How I Blog

<Updated 2018-07-10> See the updated version of this post: How I Blog – Updated 2018</Updated>

After my last post about goals for 2010 when I realized it has been over 6 months since I started blogging, I began to think about my blogging process and how it has changed over that time.  I’ve made quite a few changes and upgrades to various portions of my blogging process over that time.  Here’s a quick overview of where I’m at now as well as some tips for those of you thinking about starting up a blog but not knowing where to start.

Tools

  • Live Writer – Based on various buzz from other bloggers I gave Live Writer a shot when I began and haven’t needed anything else ever since.  Live Writer allows me to write up drafts, insert pictures, markup code (via numerous plug-ins), preview my post using my blog’s theme, publish finished posts, and pull up old posts quickly and easily.  All in all it’s a solid tool and has served my needs quite fine.
  • Twitter Notify – Live Writer has a nice plug-in called Twitter Notify that allows you to link your Twitter account to Live Writer.  Every time you publish a post it will give you the option of sending out a tweet with the title of your post and a link to the post.  I use this as my primary method to notify (aside from automated RSS feeds) others when I have new content posted.
  • Live Mesh – Live Mesh is a Microsoft tool that allows you to sync the content of folders across multiple computers and have 5 GBs worth of backups online.  I really can’t say enough about how much time Live Mesh saves me when it comes to blogging.  I use this to sync screenshots, Live Writer files (drafts and posts), and code snippets between my work laptop and my home desktop.  As an added bonus I also get all these files backed up into the glorious “interwebs cloud” should I ever have an issue with my personal backups.
  • Paint.Net – Paint.Net is a free tool that gives you basic PhotoShop-like image editing.  I use this for cropping screenshots, pixelating images with sensitive information, and many other minor tasks.  I find the software very easy to use and it’s hard to beat free.  Please support the tool providers with a donation if you end up using and liking it.

Hosting/Online Services

  • Geeks With Blogs – As this if my first blog, I took a recommendation from my coworker Kelly Jones and I signed up for a free account with Geeks With Blogs when I started out.  In the future I may look to get a most advanced solution offering, but so far this has been a great hosting site and suited my needs just fine.  There are dozens, probably hundreds of different sites that will host your blog.  If you are looking for specific features and capabilities take the time to research what they have to offer before choosing.
  • Google Analytics – What good is blogging if you can’t track statistics like number of visitors or which of your posts are the most popular?  With a simple sign up and just a small snippet of javascript on a layout page within your blog you can track page views and visitors, see who is linking to your content or where visitors came from, and get some nice charts and graphs trending usage over time.  This has helped me get a glimpse into what type of content and posts are the most popular for my audience.  For example the top 3 posts all time for me are:
  1. Alternative Modal Popup in SharePoint 2007
  2. Deploying Files to SharePoint Web App Directories
  3. The Power Of PowerShell and SharePoint: Enumerating SharePoint Permissions
  • FeedBurner – I have to admit, FeedBurner is one of the only blogging tools that I use but don’t fully understand.  The basic premise as I understand it is that it allows you to customize your RSS feeder by taking the current output and redirecting it through their services.  You can add functionality to your RSS feed, cross promote your feeds amongst multiple sites, track subscribers who are reading your posts through RSS vs. actually hitting your site, and do a host of other things.  The piece about tracking RSS subscribers is the main thing that attracted me to FeedBurner.  If anyone has feedback on what else FeedBurner is or how to better use it please let me know in the comments below.
  • GoDaddy – A few months ago I attended one of Jeff Blankenburg’s presentations called “Making A Name For Yourself” in which he talked about a number of ways to create a solid identity of who you are and promoting that identity in various forms.  One of those ways is reserving a domain name for your site that helps customize and personify your site.  I chose to go with GoDaddy.com because they are one of the cheapest and easiest to get started with.  My current primary domain is BrianTJackett.com which happens to coincide with my Twitter handle, username on various social sites, and if you couldn’t tell contains most of my full name to make it fairly easy for others to remember.

Tips for Starting Out

So, if you’ve read this far and you yourself don’t have a blog but are interested in starting one here are a few tips.

  • Know your content – What is it that you want to blog about?  Will your blog contains posts about cool robotics work that you are doing, video game reviews, or perhaps your super cute cat Mr. Mittens?  Decide on an area or related group of topics (such as SharePoint and general .Net like I have) and focus on those.
  • Know your audience – Relating to the above, who are you writing your content for?  Are you writing posts for personal reference in the future (I know some people who do this), for internal company coworkers, or for the community at large.  This will shape what, how, and why you write.
  • Set goals – Define some goals for yourself about how often you plan to publish content, how many visitors/subscribers you are aiming for, or some other means of measuring how you are doing with your blogging.  As stated in my previous post I’ve set some blogging goals for myself and have done fairly well sticking to them. This not only helps motivate you to keep writing but also offers some level of consistency for your audience.  Nothing is worse than starting out great publishing 10 posts in one month and then going silent for a year, don’t be that guy/gal.
  • Write when it’s right – You like that play on words?  I bet you chuckled for brief second before shaking your head.  I have never been great at writing, literature, and all those book type things.  For me it’s very rare that I can sit down and just let my thoughts flow onto paper (or monitor/screen as it were.)  When I do get those moments of clarity I shut out distractions, turn on some music, and capitalize on the moment.  Don’t force your writing, but when a good idea comes to mind start to write it out or at least jot it down for future use.
  • Read other blogs – Seems obvious, but really go out there and start reading some blogs that interest you.  Perhaps they are written by coworkers, people you’ve met at user groups, or some super awesome person in your field of work that everyone talks about.  This can help you find your footing for style, content, and many other things.
  • Get feedback – This one is huge.  Find some trusted friends, coworkers, or even your family to read over your posts and give you feedback on what they like/dislike about your posts.  Just like giving a presentation to a practice audience, having others review and comment on your writing can be very helpful to making you a stronger writer.

Conclusion

So there you have it, my current blogging tools, a little about my process, and some tips for starting out.  If you’d like to share anything about your own blogging experience or have some feedback of your own feel free to comment below.  Thanks to everyone who has been reading my blog over the past almost 7 months now and giving me encouragement to keep writing.  I find it very fulfilling and hopefully you do as well.

-Frog Out

Organize Your Desktop With Fences™ From Stardock

Are you a presenter having to deal with your desktop getting jumbled while switching resolutions for a projector?  Are you an end user who has too many unorganized desktop icons?  I feel like Ron Popeil with lead ins like these, but really I just wanted to pass along a great FREE product I’ve been using the past few months to help me organize my desktop for multiple needs.

Stardock released their desktop management tool called Fences which a coworker referred me to a few months ago.  Essentially you can create groupings (fences) on your desktop and place your icons inside these groupings.  If you resize your desktop or adjust the individual fences, the tool will automatically adjust accordingly.

Fences1     Another nice feature is the ability to hide portions of your desktop to remove the clutter.  I really like this feature so that only the fences and icons that I’m currently using the most are displayed.  Other icons like a DVD burning program or rarely used shortcuts and applications can be hidden.  Just configure the fences or icons that will always display, then double click anywhere on the desktop to hide the rest.

Fences2

One last feature I like is taking snapshots of your desktop layout.  This allows you to create multiple configurations (home, work, just a backup, etc.) that can be restored at any time.  So check out this great tool and let me know how you like it.  I’ve seen a few minor updates over the past months I’ve used it.  At the time of this writing it’s just made it to a release candidate recently.  Hopefully it’ll remain a free product once it becomes a full product.  Enjoy.

And finally a video a Ron Popeil for those of you who know you know him but can’t quite put a face to the name.

 

-Frog Out

Windows 7, SharePoint 2010, and Events I’m Speaking At Coming Up

As most of the technology world knows (and even the general public thanks to commercials like the one below… who doesn’t love unicorns, kittens and rainbows) Windows 7 is releasing to the public on Oct 22, 2009.  Normally this would get me very excited except that I’ve been running Windows 7 RTM as the primary boot on my home desktop and as the secondary boot on my work laptop for a few months now.  I didn’t get much chance to use Vista over the past few years (client workstations with XP, working more with servers, etc) so I’m taking a more concerted effort to jump into Windows 7 early on.  So far the experience has been great with only one major issue I had with IE8 (crashing due to plug-ins) which I’m writing another post about.

Despite the Windows 7 release this week, what really has me excited is the start of the SharePoint Conference 2009 today.  Sadly I am unable to attend the conference this year so I’ve been trying to follow news coming out of the conference through live blogging from EndUserSharePoint.com and Twitter tweeps.  One of the best pieces of news I heard confirmed one of my long held beliefs: STSADM is essentially being replaced by PowerShell (reference).  Now this isn’t to say that you can’t use STSADM going forward with SharePoint 2010.  STSADM will still be around for backwards compatibility, but you really do want to learn PowerShell if you’ll be working in any sort of developer or administrative role with SharePoint.

Speaking of SharePoint and PowerShell, I just received word today that I was accepted to speak at SharePoint Saturday Cleveland coming up on Nov. 14th, 2009.  My presentation is titled “The Power of PowerShell + SharePoint” and it will be half introduction to PowerShell and half overview of how admins/developers can use PowerShell to maintain and develop against their farm.  I’ve been using PowerShell to help me with SharePoint for over a year now and I’m very happy to see that PowerShell is taking such a prominent place amongst tools for SharePoint.  So if you’re free on the Sat Nov 14th and can make it to the Cleveland area come see me talk, the event is free.  Registration and schedules should be posted shortly to the link above.  I’ll post my slides and code samples to my blog for those unable to attend or wishing to try out samples as well.

 

-Frog Out

Lessons Learned from Automating a SharePoint Deployment

Now this is a topic that really excites me.  It combines two things I love: automation and SharePoint.  At my current client we are in the process of moving our custom SharePoint applications to the production environment.  As we are moving to production, that means that we develops have less handle on the implementations be they databases, code migration, etc.  To ease the load on the infrastructure team who is implementing our custom application I took the liberty of automating as much of the process as possible.  The goal I set for myself was to take a base SharePoint farm (bits installed and Central Administration site running) all the way to a fully functioning production farm in less than 1 hour.  Here are a few numbers to give you an idea of the scope of this endeavor.

  • 5 distinct custom applications
  • 1 web application with additional extension for forms based authentication
  • 15+ custom and 3rd party WSPs
  • 1 root site collection
  • 4 subsites (all with unique security settings)

Additionally we have some custom databases, stored procedures, and database related pieces that are also deployed, but since that is technically outside of the standard SharePoint realm I won’t be touching on that.  Ok, now that you have any idea of the scope of this implementation let’s get down to what all this entails, why you would consider automating your deployment, and some of the lessons learned from my experience.

First, what can you use to automate your deployment?  There are a number of tools available each having their own pros and cons.  Here are a few options and brief analysis.

  1. STSADM.exe – this is an out of the box provided command line tool for performing certain administrative tasks.  STSADM can perform a number of operations that aren’t available through the SharePoint UI, but additionally since it is a command line tool can be put into batch scripts for running multiple commands consistently.  I typically script commands into either a .bat file or a PowerShell script (our next focus.)
  2. PowerShell – I’ll say this now and I’ll say it again as many times as needed: If you are a Windows/SharePoint admin/developer/power user and haven’t begun to learn to use PowerShell, make this a high priority.  In a previous post I talked about how important PowerShell is going to be going forward with any Microsoft technology.  Just look at the fact that it is built-in (re: can’t be uninstalled) from Windows 7 and Server 2008 R2.  That aside, PowerShell let’s you run STSADM commands, SharePoint API calls, or even SharePoint web service calls.  In v2 you’ll be able to run remote commands, debug scripts, and have access to a host of other new functionality bits.
  3. Team Foundation Server – I have not personally had much of a chance to look into this process aside from reading a few articles.  Essentially what you can do is have automated builds run from your Team Foundation Server and be able to track and analyze deployments in one integrated environment.  For very large or well disciplined organizations this seems like a good progression step.
  4. 3rd party product – this could range anywhere from a workflow product able to run command line calls to a task scheduler product able to schedule batch scripts.  Again these would most likely rely on STSADM or one of the SharePoint APIs.  The ability to schedule scripts or have them fire according to workflow logic may be something useful in your organization depending on size and needs.

Second, why automate deployments?  Won’t you spend as much time developing the deployment scripts as manually clicking the buttons or typing the commands?  This is a conversation best discussed with the team doing the development and the team doing the deployment.  If both happen to be the same team or your organization is very small perhaps the benefit of automation won’t be worthwhile (in the short term.)  For larger organizations (and in the long term) I would always recommend automated deployments.  There are a number of reasons including having a repeatable process, reducing “fat fingered” commands, reducing deployment time per environment, and reducing need for developer to be on hand during implementation among others.  On the flipside there is the added time for developing the scripts and added difficulty debugging scripts.  Taken together your organization should decide what works best for you.

Third, what’s the catch?  No one gets a free lunch (unless you somehow do get free lunches regularly, then give me a call and share your secret) so there must be something that manual has an advantage over automated.  Due to the very complex nature of our current deployment there are a few items that automation actually produces unintended results.  Here are a few to note.

  • Deploying site definition as a subsite does not inherit top link bar properly.  See the pictures below.  Essentially we are seeing the top link bar fill with links to the subsite home page (first picture) instead of using the parent site’s top link bar (second picture.)  As a result we are forced to manually create our subsites.  Luckily using custom site definitions handles the heavy lifting of this process.2 3
  • In a farm that has multiple web front ends, activating features that have multiple updates to the web.config (read this article, excellent background) can cause issues.  The requests to update the web.config on each web front end will be sent out, but only one request can be fulfilled at a time.  As we have about 5+ features that fall into this category they back up and do not complete.  We have not found a good mechanism for delaying sending requests until the previous has completed.  In time with more practice we may find a way to fine tune this so that is no longer an issue.
  • When deploying sites/subsites from a site definition, any web part connections (one web part sending data to another web part) must be manually configured.  So far that I have seen web part connections cannot be contained in the onet.xml site definition (instantiation vs. declaration assuming) but I have a hunch that you could create a simple feature that’s sole purpose is to contact the web part manager and create web part connections.  I have not had the time to test this out, but it sounds plausible.  If anyone has thoughts or suggestions on this topic please leave feedback below.
  • Also when deploying sites/subsites from a site definition, some features cannot be properly activated during site creation time.  A good example is a custom feature that creates additional SharePoint groups on your site.  This is a tough one to describe, but visualize a chicken and an egg (yes, chosen for comedic sake.)  The chicken is your new site and the egg is a SharePoint group created by a feature activated on (born from) your site (your chicken).  When you create your new site (chicken) you are calling for features to also be activated (group created/egg born).  Since the egg comes from the chicken, it can’t possibly be called while the chicken itself is being born.  This leads to an error and the egg never gets born then.  Instead you must manually (or in a later script step) activate the feature that creates this group.  I hope this one didn’t thoroughly confuse you.  Just know that some features might not be able to be activated at site creation time.

If you were paying attention at the beginning you may be asking yourself “great overview on automating your install Brian, but how close did you get to your goal of a 1 hour deployment?”  We don’t have accurate measurements of the deployment time previously as our development environments grew organically at first and were slowly added to.  I would estimate that rebuilding from scratch by hand would take at least 3+ hours and constant babysitting by the implementer.  With the new process we are able to deploy the entire base farm as described above in roughly 30-45 mins.  On top of that, about 70% of that time is spent just waiting for the WSP files to be deployed to the farm.  As an added bonus, the number of clicks and lines typed is drastically reduced (I would rough estimate by 70% and 90% respectively.)

So there you have it, a quick intro/lessons learned for automating a SharePoint deployment.  For a much more example-based and in depth article please read this Automate Web App Deployment with SharePoint API.  I have referenced it many times when doing deployments and it covers just about everything from deploying lists to updating web.config to installing SharePoint.  If you have any questions, comments, or suggestions please feel free to leave them.  If there are any requests I can give a basic outline of what goes into my deployment scripts or how to architect them.  Thanks for reading.

-Frog Out

Exporting A SharePoint Site Into A Feature: Part 1 – The Tools

  • Part 1 – The Tools
  • Part 2  – Exporting the Site
  • Part 3 – Exporting the Lists
  • Part 4 – Exporting the Site Columns and Content Types
  • Part 5 – Wrap Up    <Update>Please read the intro paragraph of part 5 for a correction relating to the title of this series.  It should more appropriately be called something along the lines of “Exporting A SharePoint Site Definition and Features” but I’ll keep the original titling for now</Update>As I promised a blog post or two ago, I’ve been wanting to write up how to export a SharePoint site into a site template defined as a feature, so here is part 1 of the multi-part series.. Not only is exporting a SharePoint site into a feature good for repeatability (disaster recovery anyone), but I’ve actually used it in my last two clients when migrating a site (and subsequent upgrades) through various development environments.  First and foremost I have to thank my good friend and coworker Kelly Jones for his help in guiding me down a path of standards and best practices in this area of SharePoint.  He introduced me to a couple of tools and blog posts that really helped.

    As noted in a previous post I enjoy checking out new technologies that help me do my job (or hobbies) more easily and efficiently.  For this given topic I use a mix of tools that each have a set of advantages in certain areas.  So what better way to get started then introduce you to a few of the tools that I’ve been using to get going on exporting a SharePoint site into a feature.

    1. WSPBuilder – This tool is a great choice for creating a SharePoint solution in Visual Studio that contains projects for SharePoint features, site templates, web parts, and many other entities.  Note that the VB.net support was just recently added 2 builds ago and last I checked needed a little work still.  Aside from that this tool let’s you do 1-click each for builds of your WSPs, deploy WSPs to farm, deploy files to 12 Hive, recycle app pools, attach to W3WP.exe process, and many other commonly needed functions.  I also like the fact that the tool developer releases updated builds fairly regularly.
    2. SharePoint Solution Generator 2008 (included in the Visual Studio extensions for WSS 1.2 download) – Once you have a rough layout of how you would like your SharePoint site to look (pages, lists/libraries, web parts, etc) you’ll want to use this tool to create a starter site template.  The output solution will contain a site template as well as list templates for any lists you chose to export.  I will go into detail on how to integrate this output into your SharePoint solution in part 2.
    3. MOSS Feature Generator (previously called CT Feature Creator among other names) – A beauty in its own right, this tool let’s you export some of the pieces not captured by the site template such as site column and content type.  I typically use this to capture the basis for a content type then fill in the remaining pieces with the next tool below.
    4. Imtech Fields Explorer (part of the Imtech ICT Velocity CodePlex project) – Honestly I am surprised that I don’t hear more buzz about this tool more often.  Some initial suggestions for exporting site columns or content types come from Gary LaPointe’s blog post and another from Andrew Connell’s blog post.  This tool fits nicely into a process for me.  As such this is one of those diamond in the rough type of finds.  As noted above, I use this tool to fill in the gaps of the MOSS Feature Generator which only lets you export one site column or content type at a time.  The Imtech Fields Explorer on the other hand lets you export multiple site columns or content types at a time (but not both at the same time).  With this tool you can integrate your output into a SharePoint feature (using the MOSS Feature Generator above) to deploy all of your site columns and content types to a site collection.  When you are exporting half a dozen site content types with 40+ site columns this will save you lots of time.

    So now you have a list of some tools to check out (or become more familiar with if you’re already using them.)  The next part in the series will be focused on taking a site that you have already modified a bit and exporting it into a basis site template.  Depending on how much ground I cover this may turn into a 3 or 4 part series.  Until then, shoot me any feedback if you have problems getting these tools up and running or suggestions for other tools you’re using to export site templates into a feature.  Enjoy and have a safe and fun July 4th.

    – Frog Out

Technologies I’m Using and/or Watching

    As this week has been very busy I haven’t had time to write up a full blog post about some of the fun things I’m working on, but instead I thought I’d throw out a listing of some technologies I’m currently working on or watching.

  • Windows 7 Beta (build 7000) – I have this installed as my primary OS on my home desktop.  Loving the slick interface and list of new features that keep getting announced.  My only gripes so far are that the included build of IE8 is beta and can’t be upgraded to RTM, and that I need to get used to doing certain things under “Run as Administrator”.  Looking forward to the RC being released next week to the public, at least so I hear.
  • PowerShell 2.0 CTP 1.3 – I’ve been following PowerShell for awhile now and it is a tool that really intrigues me.  A few years ago I was writing shell scripts in Unix land to support some Oracle systems at my then employer.  I then moved onto AutoIt which is an excellent Windows automation tool.  Now though I am very excited about PowerShell.  Not only does it allow scripting of normally mundane tasks, but it also is able to process .Net objects such as elements available through the SharePoint API.  As you can see from my previous post I like to push tools to see what they are capable of.  PowerShell 2.0 RTM is schedule to launch with Windows 7 and it’s my personal opinion that we’ll be seeing a greater emphasis on PowerShell in the coming product releases.
  • SharePoint 2010 – Until recently SharePoint 14.  This is a no-brainer for anyone who working with SharePoint currently.  I hear that this will be a prominent discussion piece at SharePoint Conference 2009.  Here’s hoping I can get time off and make it to this conference.
  • Visual Studio Extensions for Windows SharePoint Services 1.2 – OK, Microsoft could really use to shorten this title up, and they have by renaming it Visual Studio 2010.  In case you haven’t seen, Visual Studio 2010 is meant to include the proper SharePoint development tools that should’ve existed back when SharePoint 2007 was released.  For now though my personal choices are between VSeWSS 1.2 and WSPBuilder, but I’ve had more use with the former so I tend to know it a little better.
  • Sysinternals Suite – Hopefully I don’t need to be the first to let many people know about this set of tools, but if this is your first hearing about Sysinternals you owe yourself as a technology person to check them out.  I use Process Explorer, AutoRuns, and a few other tools almost daily.
  • Windows Live Programs – I was apprehensive about downloading these programs for some reason, but I’m quickly starting to love some of the offerings.  I’m using Live Writer for my blog and Sky Drive (no download required) for sharing documents and other files.  I’ll start exploring the other programs as I have time.
  • TweetDeck – I’m using Twitter more and more lately and beginning to experiment with different clients.  Digsby was my favorite until I started getting overwhelmed by followers/followees.  TweetDeck is suiting me well currently, but I’ve heard good things about Blu as well.
  • Digsby – Best IM / social networking client I’ve ever used.  It combines my Facebook, LinkedIn, Gmail, GChat, AIM, and until recently Twitter accounts.  Can’t even imagine going back to having 6 separate applications or windows open to manage them all.

Well that turned into a much longer post than expected.  Feel free to leave feedback about any new tools, products, or applications you are using that you think should be shared.  I love to check out new technology as much as I can and share the word.