SUGCON Europe 2016: An Insider Look – Part 1

Date: April 25th, 2016 – Bella Center, Copenhagen.

This slideshow requires JavaScript.

Have you ever been high before?! looking in retrospective, these two days of SUGCON EU were one of the most amazing times I spent this year. First and foremost, I had finally the chance to meet lots of great people I met online and on twitter and never had the chance to meet in person before and second, for the amazing sessions and talks we had during these days amazingly presented by @TakeItEasyAlan! 😎

What is next for Sitecore?

Of course, a start never perfect without @sitecore for the opening keynote where @mssitecore and @ln_sitecore talked briefly about Sitecore vision for later releases like Sitecore 8.3 (Oooh, give us a break! clients didn’t grasp Sitecore 8 to start with yet but yeah.. whatever!) and the focus on enhancing the Content Management Experience along with Marketers experiences by enhancing:

  • Sitecore MVC implementation.
  • Better migration tools for content from previous versions to newer ones (mmmm… lets see about that!).
  • Sitecore publishing and caching.
  • Focusing on contextual experiences.
  • Stuff I couldn’t remember because I was too excited to concentrate o_O.

As Michael Seifert said “Sitecore aims at providing the right content to the right consumer in the right time through the right channel”, Sitecore aims at expanding its outreach and support for other channels and enhancing the overall xDB experience.

The highlight of the day was … and wait for it… the possible death of WFFM and replacing it with inline editing experiences along with ECM setup as part of forms creation 😥 (Well.. not really, kill all the things WFFM 😈).

Serialize all the things with Unicorn

I’ve gotta admit, my first real encounter with Unicorn was when I worked on Sitecore Habitat. I read about it before but never used it to serialize Sitecore items. Now, as Kam Figy puts it, this is a tool that was developed to serve one purpose only which is serializing Sitecore items which makes it unfair to compare it to other products and tools that do this and more and yup.. it is open source.

Unicorn provides you with an up-to-date experience of keeping your Sitecore items live on the disk meaning that it always works with the “Master Repo” and whenever you perform a pull request, you will immediately merge any conflicts with your local changes.

Also, it uses “Rainbow Engine” to enhance the merging experience. What I liked about the new changes provided (along with the easy code changes made to the codebase) was merging single-line field values. Let’s take the Delta XML value stored for the Layout in your item for example. The changes are stored as a single-line XML tags that changes as you add/remove sublayouts, now a change is made and a conflict is obviously there so how we are gonna take both changes into consideration! what Unicorn does is to split the values into separate lines allowing you to easily merge from both sides 🙂

Also, he discussed serializing and syncing users and roles using YAML and Nuget packages.

IMAG5442

It was nice meeting you @kamsar and wow! too much of you and @AndersLaub in one pic! 😮

Commerce Nerdvana for Sitecore with uCommerce

I have attended a uCommerce for Sitecore training earlier this year and having worked with it previously on some projects, it is a very powerful tool for creating products and creating a very easy and rich eCommerce experience while integrating it fully within Sitecore items and campaigns.

In this session, Soren Spelling Lund talked about the technical aspects of uCommerce development that leverages SOLID principles that allows developers to extend all the things >:D😎 and making it an easy experience to custom integrate uCommerce APIs within your current Sitecore implementation.

I liked the resemblance with LEGO in his implementation. I mean, as long as you break down your implementation to the smallest well-defined component (you can think atomic as well), you can create whatever shape you want, from small applications to large ones with plug-in style and it is easily overridable and I saw it first-hand while working with it.

And… meet my nice uCommerce Hoptimist ❤

IMAG5635

 

Starting now, you were obliged to pick and choose between different sessions that were held in the same time 😥 however, thanks for the great @kayeeNL for recording these sessions and making it available on youtube 😎

IMAG5445

Atomic design to the Max

This slideshow requires JavaScript.

I loved this session by @tbraga01 and it was a pleasure meeting him in person 🙂 you see, if you go back in time to when you have experienced working with clients who continuously changes content, images and even the whole page layout based on different user journeys and locations, the whole personalization implementation was a real pain in the arce! you would implement some workarounds where dynamic placeholders are used to hold different sublayouts and yada yada yada..

Now with Atomic design, similar to the Lego picture from the previous session, intends to further break down your component implementation to more smaller reusable atoms that allows for a full rich content editing experience to content editors and marketers giving them a whole ownership on how pages looks like and changes based on different campaigns and journeys.

This slideshow requires JavaScript.

Furthermore, I assume that you are familiar with Carousel implementation where you had to move even the text of the button along with all text and background images to Sitecore to be dynamically changeable while relying on CSS styles to control the location of the content and how it looked like (not to mention the pain of responsive design in this case). Now going atomic in this case allows you to break the carousel control into smaller pieces that can later be reused as a text banner, an image banner, a video banner, an image carousel, an image/video carousel without worrying how content editors will later on use these controls on your pages. (For me, this whole thing make it easier when you estimate development time for different controls and functionalists when bidding on projects specially those with tight schedules 😉).

Now, the question would be, do we go Atomic moving forward in our implementations? well Tim says No! you have to be smart when to use it based on your business needs and requirements. In addition, he illustrated the pros and cons of using Atomic design in your implementation.

IMAG5463

Thanks Tim for the AWESOME Poster, soon to be hanging in my office 😄

Cg5RmSMUoAEcBoy

 

Design Patterns on Sitecore: The Good, the Bad and the Ugly

This slideshow requires JavaScript.

I finally met the great @mike_i_reynolds in person! I have known Mike for my whole Sitecore development life and finally thanks to @SUGCONF and @TanasukTech for making this a reality 😀

Now, we developer, are very tempted to use design patterns in our implementations even if this is not the right thing to do sometimes o_O and as one would say:

all-the-processors

If you know Mike, he likes to give you a background history of places, countries and of course about design patterns!

IMAG5469

and then, he took us on a quick ride on how to implement three of the famous deign patterns within Sitecore along with how not to overkill your implementation with these design patterns:

Decorator Pattern: One of the most commonly used design pattern that is served as a wrapper to your objects within the same interface and hence you can apply changes to this single object without affecting the behavior of other objects in the same place. You can find more detailed implementation here.

Template Method Design Pattern: among all design patterns presented, I loved this the most! In this design pattern, you will implement a parent (general) abstract class that defines how inherited classes will behave once implemented. You will be able to override methods with whatever logic you fancy. However, you need to be careful as it is tightly coupled to the abstract class. More on implementing this pattern can be found here.

Strategy Design Pattern: similar to the previous one, it allows you to select the behavior of your classes at runtime. Meaning, this pattern captures the abstraction of your implementation in an interface and make it separate (independent) from clients using it by making the implementation details in the inherited classes. More can be found here.

Although Mike was jet lagged a bit, however, it was an interesting talk and nice to see these design patterns actually implemented in Sitecore 😉

Sitecore xDB personalization at the client

IMAG5485

Ok, let’s agree that this one yet another great presentation brought by Nick Hills and I learned a lot seeing xDB live for the first time in my life 😥

So when and how you decide to scale your personalization experience to client-side (building personalization rules in JavaScript) and what are the considerations and variables to take into account. First and foremost you have to understand your system! pretty much easy right! well… there is many factors that derives how you are planning to do so, the components of your system, variables, parameters that direct the way of how your clients will be experiencing your system and how you are going to personalize this experience for them.

Now, you can use a cookie and querystring to derive how a user in Copenhagen will see data presented on your site (lets say you are promoting SUGCON for developers to register and join) compared to those coming from outside the event location. You can extend their experience by leveraging xDB data to add more depth, scale and accuracy to their engagement. Now, the question would be:

IMAG5490

The answers could be one of these:

This slideshow requires JavaScript.

mmmm… however, it seems that..

IMAG5496

So how does it actually work:

IMAG5499

If you didn’t totally understand all of this, it is fine! this is what marketers actually do and this bla bla goal conversions, tracking users behaviors and provide custom personalization experiences.. meh! anyway, it was a great talk and I enjoyed it nevertheless :)

Introducing Coveo for Sitecore Pro Cloud Edition

IMAG5500

In a 10 minutes race, Laurent Simoneau presented the new changes @Coveo for Sitecore is bringing to intelligent search that leverage machine learning to stud and learn users search behaviors and helping them to search precisely for what they want.

For instance, sometimes, some users search for the label that is placed underneath a computer mouse! now, for many keyword search engines, this small little detail is hardly used or even recognized as a valid search term. However, Coveo are developing their search algorithm to enhance users search experience for tiny little details like these.

Also, they introduced taking Coveo to the cloud where you no longer bound to on-premise installation and you can leverage the cloud features to enhance Machine-Learning experience even more 💡

The MVP and Hackathon Awards Ceremony and quiz time!

IMAG5631

Hurray! I got my MVP Award as part of the Emerging Market region 😎😄 and if anyone of you guys has pictures for the awards handing, please tweet them to me 😀

It was really nice celebrating all these great developers as part of Sitecore active community members. I felt very proud to be among these and hopefully will continue this experience for the coming years as well.

This slideshow requires JavaScript.

As for the rest of the day, man! It was loads of fun, talking and talking and talking! I guess this is the most enjoyable part of the whole thing, being able to talk and have fun with fellow developers in person and enjoy it to the max 😄

Coming up next, SUGCON Europe 2016: An Insider Look – Part 2, stay tuned!

Sitecore MVC 101 Series

Hello

I have been giving Sitecore training to my team for almost three years now. Over the years, lots of Sitecore concepts, tricks and best (recommended) practices became so familiar that whenever I sat with a developer, I will confuse him with a bunch of different ways to do the same thing and let him eventually do whatever s/he wants 🙂

Now, finally, I’m putting my brains in my head and creating this blog series so they would find a centralized source/location of articles that helps them understand Sitecore 101 instead of being swamped with the old Sitecore training materials we had from Sitecore 6.2 times!

This time, however, I’m doing it on top of Sitecore Habitat as is, meaning, I will include all the difficulties and issues that might come in the way and provide a fix on the spot. Also, I will leverage more open source tools to get them up to speed on different tools our different partners use in their day-to-day development tasks.

As I’m learning myself a load of stuff along the way, I decided to do it proper using a bootstrapped theme and will continue building on it until.. who knows.. one day I quit Sitecoring O_o if only that is a possibility!

Github location for the solution is here.

Sitecore 101 series:

  • How to create a new project on top of Sitecore Habitat Solution.