Friday, September 12, 2014

Working with Sitecore: Looking Back and Moving Ahead

Wow, time can really does change your perspective on things!

Looking back on some of my posts has me cracking me up! A lot has changed in how I approach Sitecore both from the Solution Architecture side and the Information Architecture sides.

Solution Architecture wise my intentions are the same as ever. To provide a flexible, adaptable, expandable, testable, and well organized code base. I've been learning, adopting and applying more #DDDesign fundamentals to my skill set and to my projects since I published the original series.

We are now using MVC when we can and have switched our Web Forms projects to MVVM where I can't (thanks to Glass.Mapper.Sc.Razor). Doing so means components are generally interchangeable between the MVC and Web Forms projects and that makes me feel warm and fuzzy.

Information Architecture wise as seen a seismic shift in my thought process. I was guilty of the Page Template Mistake as talked about here: Into the core - Independent Sitecore developer viewpoints by Mark Cassidy. Jon Upchurch (@jonupchurch) referred to as The Reign of the Page Template :-)

While I was already focusing on components; discreet, testable, deploy-able components I was still stuck on the Page Template bandwagon!

One of my fellow developers at #paragonconsulting @jonupchurch just gave a talk at the 2014 Sitecore Symposium on this same subject. He's been advocating for it and pushing it as a standard internally for the past year or so. We've adopted the implementation and have successfully used it on a number sites. While I am sure the details of Mark and Jon's processes are different the spirit seems to be the same.

I suggest you all hit up @jonupchurch on twitter and harass him until he publishes that white paper he's been promising!

I still use distributed SCM but Git being the flavor or the month that it is, is what we decided to use internally.

I still use Jenkins CI, though other projects have tried with varying degrees of success other CI servers. I've hear mixed reviews so until I have a compelling reason to switch I'm sticking with Jenkins.

I still use Glass, I have seen and tested out other ORM releases like Synthesis, CIG, Domain Objects, and Diamond. Glass wins for me hands down, nothing wrong with any of the others (well except Diamond, have you heard of a unit test?), Glass is just my favorite.

HedgeHog TDS, what can I say? I love it! I wouldn't work on a  project without it. I'm serious too :-)

As far as IoC containers go you get a mixed bag with SC implementations right? Some module developers prefer different ones and you can easily end up with a few in your solution.
Because of that I had been using Castle Windsor since Glass was already using it and provides a nice hook for us. However I came across an article Agnostic IoC – Introducing Container Agnostic Dependency Injection just recently and will likely be implementing Simple Injector from now on :-)

I think that about sums it up for now!

Sunday, March 2, 2014

Working with Sitecore, Part Thirteen: Deployment Process

So now we have a working Sitecore site. We need to get it out for others to see. For me there are usually a few stops in between.

A new version is ready to be rolled out
For me this typically means I am ready to push to one or more QA environments.

To help me with this I have a Jenkins CI server running a job, that when kicked off:
  • Pulls changes from my designated branch
  • Runs any automated and unit tests
  • Builds and packages my project
  • Pushes the build artifacts out to a central store

Monday, March 18, 2013

Working with Sitecore, Part Twelve: Source Control Workflow

OK, so this doesn't really directly relate to Sitecore but it's part of my process and I feel it's worth mentioning. This post is about Mercurial!

A lot has been written about Mercurial, so much in fact that I'm going to just touch on the basics.

For those of you who don't know know Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface.

Monday, February 25, 2013

Working with Sitecore, Part Eleven: Working with Components

Part Two: Component Based Architecture goes over the all details of how I think of components and how I structure it both logically and physically in Sitecore and Visual Studio. 

To help illustrate that I created a quick video showing how I work with components in Sitecore.

Working with Sitecore, Part Ten: Glass Sitecore Mapper

Glass Sitecore Mapper is an object mapping framework for mapping Sitecore items directly onto an object model, this allows you to model your entire Sitecore solution in code. The framework handles reading and writing to fields, creating relationships (parent, child, etc) and much more. The second aim of the project is to make your Sitecore code unit testable by letting you deal with simple .NET classes that you create and an interface to call data from Sitecore which can be mocked.
Glass allows you to easily create an object model representing your Sitecore templates. If you check out the features page it goes over some of the things we can do with Glass.

Working with Sitecore, Part Nine: TDS

I use Team Development for Sitecore from HedgeHog Development. (Hi Mike!) TDS is primarily a productivity tool for working with Sitecore.

HedgeHog put out a lot of good videos covering how to do things with TDS and you can find those on their site: Team Development for Sitecore - Videos. I'll be hitting a few of those topics here just as a refresher and to show how I've integrated it into my process.

I went ahead and recorded a video, Working With HedgeHog TDS. It follows along with this blog and the sample application we've been using so far. It's a long one so bear with me!

Working with Sitecore, Part Eight: A different way to think about Sitecore

You've probably read the tagline for my blog, "It is the mark of the mind untrained to take its own processes as valid for all men, and its own judgments for absolute truth." It's a quote from Aleister Crowley about hubris — exaggerated pride or self-confidence.

I am not telling you how to do something here, I'm just telling you how I do it. (Though I've been known to change my mind a lot...)