Install Subversion in Yosemite

SubversionI had some problem with Subversion repository because the repo is using version 1.8 but the SVN version that ships with xCode is version 1.7.

To update SVN on MacOS 10.10 you need to first uninstall old version. You can do that just by deleting the binary.

Type in console:

which svn

Then remove it

sudo rm /usr/bin/svn

Use then Homebrew to install new version.

brew install svn

It takes few minutes to install.

I also had to link SVN again on homebrew (maybe i had some old references)

brew link --overwrite subversion

… and it’s done.

Screen Shot 2014-11-01 at 16.02.17

 

Rethinking cloud-based ECM

I work these days with Adobe Experience Manager which is part of the integrated suite of products known as the Adobe Marketing Cloud, the Adobe Experience Manager connects with Adobe’s analytics, social media, targeting and optimization modules to create a holistic solution and Sitecore Experience Platform that connects the Web Content Management system with the Digital Marketing System to link together channels, engagement automation and analytics with third party tools. Both of these Experience platforms turns my focus on “CMS as platform“. CMS as platform has born due the lack of CRM solutions that integrates and understands web and social media. This hole has left room for CMS to fill this problem. Although, Adobe and Sitecore are both have been built on top of traditional CM to support cloud and therefore I am not sure if these platforms will solve Cloud -part on real Enterprise Content Management Systems.

So what would be the real Cloud CMS?

cloud

If we forget current CMS’s and think from the technology perspective Cloud and Enterprise Content Management one rather interesting concept is to rethinking use of data and presentation to completely different level. Since the Internet is big API of data. I have been playing with the thought where data does not need to be centrally stored but instead it can be loaded from many sources using open API’s or simply scrapped using crawlers. Then on CM side using advanced caching mechanism to stored into central package that can be handled with workflows. Just image a web page where the server that is serving a page is only having information about the presentation, cached content but the data can come from anywhere from the Internet. I could use SkyDrive over Office365 as data storage or Google Drive for generic content. I can host comments from Facebook and video’s from Youtube. If I were having social content I could stream content from a site like Wikipedia. All in the same stream. The CMS on this case would be playing role of brand manager with simple CM functionality that backtracks the changes and workflows and provides editors very easy mashups for social media  Internet snippets and content. The role of the CM editor would be more of an Author who through workflows controls the content produced in any media and social media site. Regular editors could use already familiar tools on the Internet to produce content and use CMS just to low level editing,  construct and page design from the Internet media. This would optimise management of web and social content in the same stream without loosing control of the processes.

OK, I admit this would be rather brave change for some that require full control but nothing that cannot be solved with today’s technology. I also think rethinking data out of “CMS” would free CMS more to evolution of marketing and experience control.

Multi-factor authentication for Sitecore

Untitled Document - New Page-We have worked a lot on secure login in recent months including integration with NemLoginPingFederate and AD FS and after having headaches with SAML assertions. We decided to create a simple module that hardens default Sitecore login with SMS token. It extends normal Sitecore login with extra step that asks you to give random code that is sent to your mobile phone. Mobile phone number is stored to your user profile. When you give right username and password the server will send unique key in SMS to your phone. This increases security on logins because no longer bad guys can guess your username+password and this way access to Sitecore. If you are using AD integration on your Sitecore instance you still can use this module (taken we can read your phone number).

Authentication workflow in Sitecore login

Step 1: Write your username and password

step1

Step 2: Read SMS token from your phone

Step 3: Write SMS Code to Login Screen

step2

Step 4: Login Notice that since I already know who user is after step 2 I can extend this very easily by choosing to scope User Interfaces, for example normally regular editors only use Page Editor and IMHO it is just confusing even show them anything else.

Costs

There will be a fee on the module and you will also need to have access to SMS gateway since SMS’s are not free. If you are not a developer we can install this for your Sitecore as long as you are running any version of Sitecore 7 or 6.  For the SMS gateway we are right now supporting Twilio (REST) and generic SMS gateways (GET). If you like to get hint on the pricing take a look Twilio pricing. So far I have noticed that Twilio is slightly more expensive that others that I have seen but their API and Support (SLA) is good so you know what you are paying for. For more info on licensing contact me at @jpkeisala or call Addition +45 33 69 04 02.

Road map

Custom Login Page
If you have even looked login screen of Sitecore you may have noticed it is not very customizable but fortunately we can replace it. We are changing login screen of Sitecore to “normal web page”, default look looks like Sitecore normal login screen. However, UI is customizable and uses Twitter Bootstrap.

 

What is Multi-factor authentication?

Multi-factor authentication (also MFA, two-factor authenticationtwo-step verification, TFA, T-FA or 2FA) is an approach to authentication which requires the presentation of two or more of the three authentication factors: aknowledge factor (“something only the user knows“), a possession factor (“something only the user has“), and an inherence factor (“something only the user is”). After presentation, each factor must be validated by the other party for authentication to occur. More about the concept in wikipedia.

 

Customising Rich Text Editor on Sitecore

Pasting from Word

StripFormattingOnPaste Property

Gets or sets the value indicating how the editor should clear the HTML formatting when the user pastes data into the content area.

Member Description
None Doesn’t strip anything, asks a question when MS Word formatting was detected.
NoneSupressCleanMessage Doesn’t strip anything and does not ask a question.
MSWord Strips only MSWord related attributes and tags.
MSWordNoFonts Strips the MSWord related attributes and tags and font tags.
MSWordRemoveAll Strips MSWord related attributes and tags, font tags and font size attributes.
Css Removes style attributes.
Font Removes Font tags.
Span Clears Span tags.
All Remove all HTML formatting.

 

Note: In Gecko-based browsers you will see the mandatory dialog box where you need to paste the content.

 

HTML Forms Autocomplete Naming Convension

When designing forms I have found out that it is good strategy to embrace autocomplete instead of disable it (autocomplete=off). This is especially relevant in order to give nice user experience for non-keyboard devices. However, I have not really find out any good documentation on what are the best practices to use Auto Complete on forms.

AutoComplete is enabled by default in all browsers and provides the following advantages:

  • Information is stored on the user’s computer.
  • User experience is simplified by helping the user fill out forms.
  • User information remains secure. While users can see their private information on a Web site, a Web site cannot see the list of personal information until one of the stored values is selected and the field is filled in.

How to name forms to have working autocomplete
Browser seems to collect information from the forms based on how they are named. Some developers use internal naming which makes it difficult but it seems to me that the most common format is vCard format. By looking vCard-naming conventions this patterns should be working on most of the cases.

Cellular
Company
Department

DisplayName
Email
FirstName

Gender
Home.City
Home.Country

Home.Fax
Home.Phone
Home.State

Home.StreetAddress
Home.Zipcode
Homepage

JobTitle
LastName
MiddleName

Notes
Office
Pager

Business.City
Business.Country
Business.Fax

Business.Phone
Business.State
Business.StreetAddress

Business.URL
Business.Zipcode

 

Please, let me know if you have more info on this topic.

Solr on EC2 Ubuntu

Here is a quick quide to configure Solr on Ubuntu on Amazon EC2. Notice this guide is for Ubuntu 13.04 (Raring Ringtail).

solr_logo_rgb_0

Once you are on SSH on the linux box start by updating packages.

You may want to first update and upgrade system:

Update and upgrade system

apt-get update 
apt-get upgrade

Install Java

sudo apt-get install openjdk-7-jdk

Install Tomcat & Solr

There is an unique package to install, it will take care of installing both Tomcat & Solr, plus the integration of Solr in Tomcat.

sudo apt-get install solr-tomcat

Open port 8080 in AWS

In https://console.aws.amazon.com/ec2/ open Security Groups in Network and Security , select Inbound -tab and Add rule 8080 port to the list and save changes.

Start the server

sudo service tomcat6 start
  • Open your web browser : http://domain:8080/ Tomcat should say : It works !
  • Solr should be accessible at : http://domain:8080/solr
  • If you installed the management package, take a look at : http://domain:8080/manager/html and http://domain:8080/host-manager/html
  • The config & index will be stored at : /usr/share/solr/ 

More infos on the general installation at :http://wiki.apache.org/solr/SolrTomcat 

Subway IRC on Amazon EC2 Ubuntu

subwayI am big fan of IRC but I have not been using it for a while basically because I cannot use “screen” on any of my servers. Some time ago I saw IRCCloud.com and I subscribed to beta testing but I never got any invite but it opened my intrest for browser based IRC. That would be exactly what I need especially when I am jumping from PC to PC and often I am on Windows where terminal is a hassle. Finally I found something that covers my needs. It’s called Subway and you can find it from Github

Subway is built with node.jsnode-irc and MongoDB on the backend, and Backbone.js and jQuery on the frontend.

Installing on Amazon EC2 Ubuntu 12.10 (Quantal Quetzal)

Once you have Ubuntu running open terminal on your server ssh -i YourCertificate.pem ubuntu@YourPublicIP

Upgrade the ubuntu image and install all dependecies for running Node, notice that Ubuntu default repos includes old useless version of Node and therefore you need extra repo. More info here. You will also need Git to clone Subway from Github .

sudo apt-get upgrade
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs npm
sudo apt-get install mongodb
sudo apt-get install git

 

Now you should have all you need. Next step is to clone and install Subway. For that just follow standard installation guide https://github.com/thedjpetersen/subway#installation

Once installed run “node subway” and head your browser to your http://PublicIP:3000. Remember to open port 3000 in AWS.

 

Sitecore and Responsive Design

Someone asked me about Sitecore Devices and Responsive Design, so  I decided to write short post about my experience on it.

Sitecore has a concept of Devices where different piece of content can be shown in different UI.

Sitecore backend screenshot of an item (a page) and designs attached to the page.

It is very powerful of Sitecore and one of the core features that gave me huge impression back in a day when I started to work on the Sitecore CMS.

Devices are easy to explains and therefore they are usually as a first concept for customer to serve website in Mobile and Browser layout but reality at least on my case is different. In in the end,  I have not done many sites where I used dedicated and separate Mobile design as it usually comes as a feature request and by over the project project scope changes and stuff tends to come in and other less important features goes out. And yes… Mobile layout is something “let’s do it later after going live with main site…”  So, I end up to build the site to desktop browser only.

I am only using devices for RSS feed, Print layout and couple of times JSON for some AJAX love (talking about that,  take a detailed look in our own site how we load page when you click around in navigation, no page reload… cool eh? This is done in hashbang concept where I load only content and change url as it looks like I navigate site but I am not loading whole page ever.). In last year we have done all our sites in Responsive Design which means there is even less need for using separate device for mobile since HTML5/CSS3 does all the work for us. :) Also, I don’t really like separate print layouts either since we can simply do the same in CSS nowadays.
We made recently toolkit for trying to find Responsive Design for Sitecore. it is of course generic so it works for any site but it was a first toolkit for us to test sites with different window size to give an idea how page looks like on different resolution.

 

Next Generation Analytics

I was reading Wired, Beyond the Beyond blog post about Gartner’s Top Ten Strategic Technologies for 2011  and same topic in Gartner’s site for 2012. The list is quite obvious like Bruce Sterling puts it in his post. Topics like Cloud Computing, Mobile Apps,Social Commication/Collaboration, Video,  AI… But there was one topic that looks really interesting: Next Generation Analytics.

Next Generation Analytics. Increasing compute capabilities of computers including mobile devices along with improving connectivity are enabling a shift in how businesses support operational decisions. It is becoming possible to run simulations or models to predict the future outcome, rather than to simply provide backward looking data about past interactions, and to do these predictions in real-time to support each individual business action. While this may require significant changes to existing operational and business intelligence infrastructure, the potential exists to unlock significant improvements in business results and other success rates.

It would be interesting to see a software in real-life that can predict business infrastructure, basically predict anything that mattered… I think we are quite far from computers able to predict future. But perhaps by next generation analytics is just Business Analytics like Sitecore DMS? How does companies like IBM who is in deep on Business Analytics are going to implement something that pretectects something valuable. Is this something simple like behavior what should a webshop offer to a user or could we pretect something bigger like following quarter sales numbers based on customer patterns. I am looking forward to see how this can be built

Anyway, whole idea with predictive analytics is quite fascinating.

My Experience in TechEd Europe 2001 and 2012

I participated again to Microsoft TechEd after 11 years. Last time I was at TechEd it was in Barcelona back in 2001 where Microsoft presented .NET platform, SharePoint, XML/WebServices strategy and a lot of technologies that routed my path as web technologist working on Enterprise web solutions in Microsoft world. “This is the XML era,” like Gates boldly proclaimed back in the day.

I remember being very impressed about XML, C# and XSLT back in 2001.  There were also things that I did not like. Such as SharePoint which I thought it was useless and against “Web” and therefore wrong (I still think that way about SharePoint). I also did not like ASP.NET WebForms, I loved it concept of controls and code behind but it felt very limited when looking as frontend developer. That thing was generating HTML for me!  But I understand why it was designed that way. Back in the day as there was many Windows developers ready to build web sites. But for me and other web developers moving to .NET it felt really a limitation. Though, pretty much everything else on 2001 conference was fantastic! But no more old memories, let me tell you about TechEd 2012.

So what had changed in 11 years. For one is that there was a lot less “coding” and much more architecture and platform sessions. I think they have moved development more to MiX and other events which unfortunally is not in Europe.

Overall, TechEd was nice experience but I wont go there next year. I might go there again in some time in future but as a web developer TechEd was too much about infrastructure, cloud and servers (which is important too) and too little about the coding. But when there will be new Windows Server 2015 or Azure 2.0 I probably subscribe in again.

Azure

Azure was everywhere, it is the biggest effort that Microsoft is doing since .NET 1.0 to get developers in their platform on cloud and I think it might work out for them. New Azure is very nice, even company I am working at have everything already in cloud I still could see I might as well try out Azure on some point. The user interface of Azure is nice a simple, much more appealing than EC2 and others that I have been playing with. But I think Azure needs to come down in price quite a lot before I will move there. However, if you are just starting to move cloud Azure might be more appealing than Amazon. I believe Azure, Amazon and Google will have interesting battle on this field. I am really looking forward coming years on cloud computing. In Cloud winners are developers and losers are hosting companies.

SignalR

I joined to couple of sessions of SignalR and it is fantastic. I really love it. It is something I will definitely going to use in somewhere in the future.

Visual Studio 2012 CSS and JavaScript Engine

The new Visual Studio incorporates the JavaScript engine used in IE 10. This parser significantly improves the accuracy of JavaScript parsing resulting in improved design time JavaScript feedback. It supports Go To Definition, Function overloads, Bracket matching, Outlining, Smart indenting, XML documentation comments. Now writing JavaScript in VS is almost as writing C# :)

CSS engine on the editor is great as well. It supports now vendor specifc attributes and small snippets like color picker. If you are working with VS this video is worth  of checking out: http://channel9.msdn.com/Events/TechEd/Europe/2012/DEV302

Also, now VS has updates to definitions so every now and then you get automated updates for new vendor CSS attributes etc.

Windows 8

Even working closely in Microsoft world, I am going to stick with MacBook Air but I hear and hope Windows 9 will be great. :)

Other notes

Microsoft guys seems to like GIT, I did not see single demo with any other source control, not even TFS. Cool!