Tridion Developer Summit 2014 – part 1

image Last week I attended TDS 2014. It’s the first time that it has been organized, most of it by Robert Curlette. Great job! There was a huge reply of the community. Some stats of TDS:

  • 85,753 miles travelled
  • 17 speakers
  • 12 countries
  • 45 companies

 

That’s pretty impressive for a 1st time conference, wouldn’t you think? Everybody had a good time and enjoyed in-depth sessions given by developers from the Tridion community. Below my impressions, notes and links.

Keynote

The day started with a welcome speech and after that SDL announced the new MVPs for 2014. Everybody was invited on stage to receive their MVP trophy. Some nice stats about that:

image

Nuno Linhares from SDL showed the latest Tridion developments and future plans: ‘10 things you did not know about SDL Tridion 2015’. Quick list:

  • #1 - You will be able to load AppData from multiple items in bulk
  • #2 - We will have a new item type (4096 - Business Process Type)
  • #3 - Content Delivery will be able to load configuration from a repository (rather than File System)
  • #4 - Content Delivery will expose a discovery endpoint to CM
  • #5 - SDL Tridion 2015 will trigger Events on lists
  • #6 - SDL Tridion 2015 will allow code to temporarily elevate a user's privilege
  • #7 - SDL Tridion will let you create "Site Types"
  • #8 - SDL Tridion 2015 will introduce a Topology Manager
  • #9 - SDL Tridion 2015 will have a default website and reference implementation
  • #10 - Publication Targets will be deprecated in SDL Tridion 2015

 

Great stuff to expect in the next edition! For more details see Nuno blogpost or slideshare deck. After keynote, there where two tracks with session. Below my selection of sessions I visited.

Sessions

The quest for Continuous Integration with SDL Tridion (Ryan Durkin and Rob Stevenson-Leggett)

Rob and Ryan from Building Blocks showed us how you can implement CI with Tridion. They used Team City as build server with Nant as task build runner. Nant is using XML for configuration. The basic outline of the CI setup:

  • Pre: Build gets triggered by a commit in a Version Control system. Can be anything, like SVN or GIT.
  • Build step 1: Build Web. Run unit test. Compile the .NET code that is used as CD application.
  • Build step 2: Deploy Web. Deploy the assemblies and related stuff to the Content Delivery server.
  • Build step 3: Build Tridion Items. Compile the C# TBBs.
  • Build step 4: Deploy Tridion Items. CSS/JS/etc are copied via WebDav. Compiled C# TBB’s are deployed via the TcmUploadAssembly.
  • Build step 5: Publish CSS/JS Structure Groups. This was done by a .NET console app that uses the CoreService (tcm-id’s, credentials and end-points where configurable via app.config). Alternative would be to use a powershell script to trigger the publish.

Besides unit tests they also showed some automatic security testing tool called NetSparker. See ttps://www.netsparker.com/communityedition/

Agile Tridion Development (Dominic Cronin)

Agile Tridion development could be anything. Former colleague Dominic Cronin had several topics which turned out to be lot about testing! In one of the first slides he pointed out that there is Tridion Practice hosted on Google Code which offers a collection of useful Tridion recipes. 

Dominic also demonstrated T-cubed which is a Tridion Template Testing Framework. The Framework itself can be downloaded as a Visual Studio solution. After downloading, you have to fix the references to the Tridion assemblies. The framework gives you a structured way to:

  • modify the content of a package
  • make assertions about the content of the package.

 

In more detail: what T-cubed basically does is that it connects to Tridion via the Core Service. Then get some ‘fixed’ Test component run it against a Component/Page template. After running the outcome is asserted in the unit test by verifying the variables on the package with the coded expected values. Very nice idea. The only downside –if i may say so- that it heavily relies on test components in Tridion, which can be changed and then your test breaks. Also those components ‘pollute’ Tridion in a way, although you can hide them via security. And you probably never content port them further in the DTAP delivery street.

Another demo was about using Selenium WebDriver for creating unit test for web pages. You could instruct the WebDriver to retrieve a webpage by url and then use CSS selectors to dig into the html to search for a certain element and test the value. A nice extra touch was his demo to have a local HTML validator installed and unit test if the webpage was still HTML5 compliant and did not contain TCDL tags in the generated output.

Lightning Talk Sessions - Will Price - Cook up a search with SI4T

The lightning sessions where fast, short & fun. The best example was the session from Will Price.

image 

As a masterchef he showed a nice recipe to ‘Cook up as search with SI4T’. When setting up search for SDL Tridion and Solr it’s a matter of doing things right and in the correct order, so that’s how he came up with the cooking and ingredients:

si4t-ingredients

He shared his complete recipe as a blog post on http://www.tridiondeveloper.com/cook-up-a-search-with-si4t. The SI4T can be found on github.

Other sessions

I will pick some session for the next blog post: TDS 2014 part deux…

DotNed meeting 22th may 2014: App Development with Xamarin

Yesterdays dotNed meeting was hosted at Macaw and was about App Development with Xamarin. There were two sessions that evening:

  • Session 1: QuickCross - MVVM for Xamarin Apps by Vincent Hoogendoorn
  • Session 2: Best Practices voor Xamarin Android App Development by Sander Egberink

Below are my notes.

Short intro to Xamarin

With Xamarin you can create native iOS, Andriod, Mac and Windows apps in C#. The benefit of it is that you can share code between the platforms so that you can create -for example- a iOS and a Android app based on the same code base. So write once and use on 2.5 billion devices (as the Xamarin marketeers would say). With C# you can use the latest .NET 4.5 features, e.g. sync/await and PCL’s. Coming soon: Universal Application support for VS2013 Update 2. The developer community is very active (about 500k+ developers worldwide), so new native mobile features are also quickly available for iOS and Android.

Development tools

For the IDE’s you have two choices. It’s possible to develop in Visual Studio with a special Xamarin extension. Alternatively you can develop in Xamarin Studio. For each platform it’s advisable / required to have physical appliances. Per platform:

  • Andriod: VS on Windows + Android device
  • iOS: Can use VS on windows for coding & debugging. Requires a MAC + Xamarin Studio for build, deploy and Xcode for UI Visual
  • Windows Phone: Just reuse the shared C# code – no Xamarin libraries or tools are involved.

 

The licensing model for Xamarin is per developer and platform: $999 on a yearly basis. So Visual Studio (Express will not work) + Xamarin + required hardware will add up to a pretty high pricetag to start with. But for organizations this will be a small investment and the ROI will be easy to calculate. Xamarin itself is available as a full functional 30 day trial version.

QuickCross framework

QuickCross is a framework developed by Macaw that works with Xamarin. It is a lightweight (no binaries) cross-platform MVVM (Model View ViewModel) pattern to quickly build native Xamarin.iOS, Xamarin.Android, Windows Phone and Windows Store Apps with shared C# code. The MVVM patterns enable the developer to keep code well structured and flexible for shareable use. QuickCross opens the C# databinding feature towards iOS and Android applications and adds scaffolding. QuickCross is available on GitHub and as a NuGet package.

QuickCross accelerates development with scaffolding by using code snippets. From the Visual Studio package manager console you can use QuickCross commands to generate code: New-ViewModel and New-View. To generate bindable properties, the have include some smart VS code snippets which is a real time server. About 90% of the code can be shared between platforms. Shared components are C# code, PCLs (portable class libraries), NuGet package, Images (using the Splat! library). Seperate per platform are: Views C#, Markup. Platform specific services written in C#. Visual overview of what is cross-platform and what’s platform specific:

QuickCross Pattern

All the QuickCross code is open source and actually used as source in your project. So it’s not a blackbox and you can debug, extend or modify it. Even the scaffolding templates are easily customizable. The team behind QuickCross did a good job about documenting the framework. Getting started, examples, migrating from MvvmCross: it’s all there.

Best practices session

Sander showed us some cases of the Apps that they developed with Xamarin. About online/offline capabilities. How to deal with offline Maps on Android. How to think about multi lingual apps (create bindable properties). How to make you design fluent for longer translated text. Nice to have some insights about the challenges that they encounter. Since it was a long day for me, I didn’t take any notes . At least I took a picture that sums it up :-)

image

Related links

Compare xplatform frameworks and patterns: http://propertycross.com/

QuickCross on GitHub: https://github.com/MacawNL/QuickCross#news

Vincent Hoogendoorn blog: http://vincenth.net/blog/

Using iBeacons with Xamarin: http://vincenth.net/blog/archive/2014/04/24/building-cross-platform-ibeacon-apps-for-ios-android-and-windows-with-c-and-xamarin.aspx

Bing Code Search Add-in for Visual Studio

Bing Code Search for Visual Studio 2013 helps developers find and reuse code samples on the web more easily by bringing the code search experience directly into Visual Studio. With this extension, a developer can search sites such as MSDN, StackOverflow, CSharp411 and Dotnetperls and find, copy and use C# code samples directly inside the IDE.

Download the Code Search Add-in from the Visual Studio gallery site for free.

Make software installation painless with Chocolatey

Problem

Everybody knows the pain of installing a complete new PC system. After installing windows and drivers the issue arrises to install all those useful tools like 7zip, VLC media player, Notepad++ and others. You have to download the installers from websites, wait for completion, unzip, run, install and next, next, next.

Solution

Linux never had this problem, because of apt-get feature. For Windows there now is a solution: Chocolatey! It offers you a seamless and quiet installation quickly from the command line via a central catalog of installation packages. All you need is the main Chocolatey program installed and the package names you want to install. From the command line, you can install Google Chrome, like this:

image

That’s it! It tells Chocolatey to download and install Google Chrome.

The real work behind Chocolatey is done by the NuGet program. The developers have created a set of PowerShell scripts around it. Most important: the installers are downloaded from the official sites. Chocolatey is not changing installers, making installers or hosting the installers. It's automating the boring parts of getting software, but it's still getting that software from the same location as always.

First step: install Chocolatey

To install, open a dos prompt and run:

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

After completion the Chocolatey is downloaded and installed in c:\Chocolatey.

Basic list of commands

All Chocolatey commands are run by the command prompt.

Full name Short name & examples Description
choco list clist Display a list of all available packages.
  clist pdf Displays only packages with ‘pdf’ in the title/description.
  clist GoogleChrome –all Displays all the versions of Google Chrome
choco install cinst Install a package silently. Example: ‘cinst GoogleChrome’.
  cinst –notSilent Install a package with the standard wizard. Then more control of where the package is installed & extra options.
choco update all cup all Update all package installed with Chocolatey
choco uninstall cuninst Uninstall a package. Example: ‘cuninst GoogleChrome’
     

Installation feedback

Example of how an installation looks like:

image

Advanced stuff – your own repository

It’s also possible to create/use your own private repository. It can be a local directory, a USB drive, network share with installers in it. Every installer should have a package install script with the extension .nupkg. You can find them in c:\Chocolatey\lib or you can download them from the Chocolatey website:

image 

You can install local packages by using the –source parameter. For a new computer you can use:

image

After installation of all the packages, run this to update all:

image

For the bonus points: Boxstarter offers extra Powershell commands for writing complex installationscripts. Not only for simple Chocolatey packages, but also for installers that require system reboots.

Advanced stuff – Install Windows features

You can also automate installations of Windows features which normally require you to navigate to ‘Add/Remove programs then click Install Windows Features’. To discover the features you can install: ‘clist –source windowsfeatures’.

image

To install the classic ‘Feature’ Telnet Client, just run: cinst –source windowsfeatures TelnetClient

It’s also possible to install WEBpi features (The Web Platform Installer) like this. Again for a full list: ‘clist -source webpi’. To install Umbraco: ‘cinst –source webpi umbraco’