Simple SEO metadata and Open Graph in Enonic XP

Here's a working example of an Enonic XP Page Template setting all the correct Open Graph data and other common SEO metadata (except keywords, since that has become more or less obsolete).

This week at Enonic (2015, week 16)

A new site went live on Enonic CMS this week, and we have started implementing the first customer project on Enonic XP. Looking forward to XP 5.1? It is just a few days away!

This week at Enonic (2015, week 12)

We have been working hard with the 5.0.1 release this week, and we are also getting prepared for next week's release event in Oslo. It is still possible to sign up!

This week at Enonic (2015, week 11)

This week has been all about San Francisco and our international launch of Enonic eXperience Platform. Read more about our release event and what we did at elastic{ON}.

This week at Enonic (2015, week 9)

Another customer went live with their Enonic powered website this week. Find out who, and read more about our upcoming events in this week at Enonic.


This week at Enonic (2015, week 8)

The last week has probably been the most important week in the history of Enonic. The long-awaited Enonic eXperience Platform is finally here!

This week at Enonic (2015, week 7)

We are less than four days away from our greatest release ever! It has been an extremely busy week, our development crew is hunting for software bugs as we speak, and the rest of the team is working hard on getting our new main website ready for launch.

This week at Enonic (2015, week 6)

RC4 is out, and the clock is ticking fast toward our greatest release ever. We have some fresh screenshots and some more info for your reading pleasure.

This week at Enonic (2015, week 5)

We have started the countdown to our greatest release ever, less than 3 weeks left now. Yet another release candidate was tagged earlier this week.

This week at Enonic (2015, week 3)

It is only a few weeks until the first release of Enonic eXperience Platform, we have a handful new screenshots for you, as well as some more information about our global expansion.

This week at Enonic (2014, week 50)

The training events for the next 6 months have been scheduled, is it time to increase your CMS knowledge? By the way, we are still looking for candidates for our vacant positions.

This week at Enonic (2014, week 41)

We are currently expanding our partner network, and are happy to announce a new partner this week. We are also very close to a new milestone release.

How to create your own jQuery

While jQuery is a fantastic library, I also think that front-end developers rely on it a little too much. This article will show you how to get started on your own library. Not because you should replace jQuery, but rather to improve your knowledge about Javascript and the DOM.

This week at Enonic (2014, week 40)

It has been a busy week in San Francisco as well as in Oslo, we have settled on a new office location, and the latest 4.7 fix release is out.

This week at Enonic (2014, week 38)

The new 4.7.7 release is just a few days away, and the milestone 6 of Enonic 5 is closing in. By the way, did we mention that we are finally operative in the US?

An example Regex for validating e-mail addresses

JavaZone 2014, Regex dissected

My relationship to Regex (or Regexp) has always been of the type "google it, copy and paste it, never change it, can't understand anything of it". But so, finally, after years of "copy paste" I went on this talk about Regex on JavaZone and actually began to understand it. And now I'll share this introduction with you.


JavaZone TL;DA

A short JavaZone TL;DA (Too Long; Didn't Attend) from the talks i attended.


JVM tools

Java ships a bundle of nice tools for getting to know what´s going on with you JVM. A lot of these are probably - despite their obvious usefulness - little used by most developers. Hardy Ferentschik from JBoss made an effort to bring some of these to light again with a talk called "Using the right tools to get back into the driver's seat of your JVM" at JavaZone 2014

This week at Enonic (2014, week 35)

Our weekly column is back after a long summer break. The next milestone of Enonic 5 is only a few weeks away, keep reading for some fresh screenshots.

OWASP logo

Experiences with OWASP-testing

The only 100% secure computer is turned off or disconnected from the internet. Unfortunately, this is not an option for a web-server or a CMS. In order to make sure Enonic CMS is at the forefront of the latest developments in this field, we hired an external white hat security expert to test Enonic CMS according to the OWASP testing methodology.

C-BASE Raumstation

Graph Hackathon at C-BASE Raumstation

At the center of Berlin in a back alley, through a space station entrance lies the premises of raumstation C-BASE. Among the relics of the mytholical space station Neo4j hosted a hackathon about graphs and their easy-to-use product Neo4J. A product which probably, with the right data, is able to map the fastest route to the origin of the C-BASE raumstation - somewhere in the universe.


Berlin Buzzwords 2014

The fifth edition of Berlin Buzzwords was held in Berlin from 25th to 28th of May. This conference is about storing, analysing and searching massive amounts of digital data. Enonic was of course present to take the pulse of the search, scale and store community of Europe. Here are some highlights from my point of view.

This week at Enonic (2014, week 21)

New fixpacks for the current versions of Enonic CMS are soon to be released. The training calendar for second half 2014 has been set, make sure you book a seat before it is too late.


Btrfs, the filesystem for the future

I've had btrfs on my radar for a long time, but never prioritized it because it was said to be unstable. Not quite what you want your filesystem to be. At Linuxcon Japan 2014, Marc Merlin from Google had a talk about how he's been using btrfs on his laptop and at home for a couple of years and why you should do it too.

Spinning 3D blue cylinder inside a spinning wireframe ball

Beginner 3D in WebGL using JavaScript and Three.js

In this article I will focus on the absolute basics of 3D in WebGL to get you started. You’ll learn about the main concepts of the world of 3D-development. With the emergence of 3D right in your browser the threshold to start learning just got lowered - a lot! Now is the chance for everyone that at least knows some Javascript to start playing with 3D. No installs. No downloads. Just Javascript and the library Three.js.

Two versions of a form in Chrome, one with prefilled background color indicator and one without.

Remove forced yellow input background in Chrome

If you allow your browser to remember what you write into forms it will pre-fill these forms when visiting again. That's very convenient. But Chrome forces a pale yellow background on all these input elements, likely messing up your design. And that background color cannot be overridden ... or can it?

Enonic 5 Milestone 4 - Content Manager

This week at Enonic (2014, week 17)

We just tagged Enonic 5 Milestone 4. Today we had an internal presentation. Next week we will start external demos and proceed with Milestone 5.


Universal design conference 2014

Enonic was present at Funka Accessibility days in Stockholm 2014 together with two students from the Master Program in Universal Design of ICT at Oslo and Akershus University College (HiOA). This blog post comments on some of the great presentations concerning universal design that was held at the conference. There will be some practical tips & tricks for both developers and publishers.

This week at Enonic (2014, week 15)

Easter is closing in and we are just one bug away from tagging Enonic 5M4 - a major milestone for our upcoming release. We wish you all a happy easter!

This week at Enonic (2014, week 13)

What an exciting week for all developers, Java 8 was launched this Tuesday. Also, a new responsive web site went live on Enonic CMS yesterday. Want to have a look?

Simulating slow connections with TCPMon

Lately there have been two issues in Enonic CMS that were impossible to recreate without a slow connection. In one situation, we needed to see what happened when a download of a large binary file was stopped by the user. In our office, even downloading a 16Gb file was so quick, we were not able to stop the download before it had completed. So, a tool to simulate a slow connection was needed. We found the Apache open source utility TCPMon.

This week at Enonic (2014, week 12)

The "milestone 4" development release is almost ready, we are eager to start implementing test sites for demonstration purposes. Have a look at a new screenshot from Enonic 5, as well as other news from last week.

Screenshot of the Twitter portlet on

Twitter API v1.1 OAuth for Enonic CMS

The new Twitter API v1.1 requires OAuth which complicates things for using Twitter features on websites. You can still use widgets to embed user timelines, favorites, lists and search, but custom styling options are minimal. The Enonic Twitter plugin takes care of the authentication so you can focus on the content and presentation of your website. This article explains what the plugin does, what is required to use it, and how to set it up on your site. Code examples are included for showing tweets by hashtag and a list of resource limits.

Bash shell

Bashegod - an introduction to bashscripting

Bash is the default shell for Mac OS X and Linux. The name is an acronym for Bourne-again Shell, and is the command processor you typically use when you fire up "Terminal". Join the OP on his travel in this ancient and confusing environment, as he unveils the mysteries of bash-scripting.

XML Viewer

Pimp your XML-tree

Get the help of browser extensions to make Enonic's XML output a bit prettier and easier to handle. The benefits include improved visuals, support for search with xpath, and the ability to export xpath from nodes.

This week at Enonic (2014, week 8)

It has been a rather slow Olympic week, but we still have some updates from the office. Have you remembered to signed up for next week's developer courses?

This week at Enonic (2014, week 6)

Keep reading to get a summary of what happened in the world of Enonic last week, including a sneak peek at the next version of Enonic CMS, the long awaited 5.0.


Workflow tip: Todos with Asana

As one of the maybe last cavemen alive I used to manage all of my web projects with Notepad. The ease and speed of just typing my tasks, separating them with a line break was what worked for me. No fancy online tool or fancy project management thingy worked for me, not even my own todo webapp. It looked like todo.txt would survive the apocalypse. But then I found Asana and started improving my workflow. Same ease of use as before, but with a lot of added power.

This week at Enonic (2014, week 5)

It is Friday again, and of course time for a new weekly update from Enonic. We have great news regarding templating in 5.0. Also make sure that you don't miss next week's training events.

This week at Enonic (2014, week 4)

The fourth week of 2014 is coming to an end, and it is time to summarise this week's happenings at Enonic. Have you downloaded 4.7.5 yet?

Progressive JPEGs and the STK, take 1

From version 4.7.5 of Enonic CMS, JPEGs can be served progressively encoded for smoother loading of images. There are, however, problems incorporating this into a responsive website.

This week at Enonic (2014, week 3)

The weekend is almost here, and it is time for a new update from our main office. Keep reading to get the latest news about the upcoming 4.7.5 and 5.0 releases.

This week at Enonic (2014, week 2)

Welcome to "This week at Enonic". As you might have guessed, this will be a weekly (hopefully) update from our main office, with the aim of giving you more information on product updates, features in development, new website launches and upcoming events.


Cleaning up datasets with the Datarefine plugin

Cleaning up datasets can be fustrating and time consuming, and mass editing of data in Enonic CMS directly is not supported. This plugin is a working starting point to make it possible to perform basic edit operations on multiple content in a single category folder. You can for example replace sub-strings, change casing to lowercase, uppercase, titlecase - or normalize whitespace. It is also open source and you are free to add your own operations.

Gzip in Enonic CMS

"Grade F on Compress components with gzip". If you have done some work on website optimisation, you probably have seen your optimisation tools complaining about compressing your static resources. Now Enonic CMS takes care of this for you.

Power socket covered by a web made by the Nephila Clavipes

Getting started with WebSockets using Play framework

In the beginning, there were only web pages. As usage of the web exploded, the need for web applications grew proportionally. But the early web applications had a restriction: Every action had to be initiated by the user - there was no way for the server to tell the user when there was new data available. During the last 10 years, some solutions have been found, but they had drawbacks. Until WebSockets came along.

"Accessibility Directory" by David Vignoni, licensed under LGPL

Common Accessibility Traps and Solutions

Web accessibility has gained momentum recently, both due to governmental policy and also recent additions to the HTML 5 specification. Yet, when web developers create websites, there are many misconceptions regarding how content is presented for users with disabilities. This article presents some of the most common mistakes that are made, and possible ways for web developers to spot them and then solve them.

Plastic Dart

Web Development in Dart with Enonic CMS

Traditional programming of Enonic web pages involves XML, XSLT, HTML, CSS, and JavaScript. But JavaScript is a language that, although turing complete, is more oriented towards smaller web development projects than larger applications. Trying to do proper object-oriented programming can be more difficult in JavaScript than in many other popular programming languages today. In order to rectify some shortcomings in JavaScript when it comes to app development, there have been many extensions and alternatives to JavaScript that have been put out on the market. Google's attempt at a web development programming language is Dart, so is it possible to use Dart in an Enonic project? The target was "Edna", Enonic's internal invoicing and hour registration system.

Entrance monitor

Website screenshots shown as an HTML presentation

Styling and animation on the web has matured a great deal lately. Since the beginning of the web in the early 90's, new technologies such as HTML5, CSS3, JavaScript, Flash, Silverlight, and so forth have all contributed to improving our visual web experience. How could the latest technology be used to showcase a number of screenshots taken from live websites?


Enonic CMS in the cloud

"Cloud" has become a very interesting word in the IT-business lately, but what does cloud really mean, and how can you use it to host your Enonic CMS installations?

A line of sheet music with a bluish sky background.

Tutorial: Creating a reg ex parser with Scala

“Any sufficiently advanced technology is indistinguishable from magic.” - Arthur C. Clarke Scala is a wonderfully complex and simple language that combines object oriented programming with functional programming in a way that is especially suited for dealing with strings in different ways. It is complex, because it has so many built-in features, many of which are implementations of concepts that takes years to understand. It is simple because the implementation is so elegantly and powerfully made, and fit so well together, that many problems are easily solved with one command, where other languages would require complex algorithms. One of the tasks specifically suited to be solved with Scala is parsing. In Enonic, we have a query language for use in our datasources, that used to have a 10 page Java CC grammar description. Java CC would transform these 10 pages into 7 Java classes that were partially obfuscated and impossible to debug. All this was transformed to a simple one page Scala class.

HTML5 Video

HTML5 video

In this blogpost I will show some simple examples of how easy it is to start using the HTML5 video standard. Some of the challenges surrounding this will also be adressed.


Microdata - semantic markup -

Semantic markup helps technologies such as search engines and web crawlers better understand what information is contained in a web page. Microdata is a specification used to nest semantics within existing content on web pages, used by major search engines Bing, Google, Yahoo! and Yandex to provide better search results.

Example of the old way and the new way to define a contenttype.

Creating a contenttype editor with Ext JS

A common task for Enonic consultants and site developers is to create contenttypes for storing content that will be displayed on a website. Almost every Enonic installation has contenttypes for articles, people, events, files, images and more. Contenttypes in Enonic CMS 4.x are defined with XML. This XML just looks like a bunch of code to non-IT people. Writing XML is error prone and time consuming, even for us tech-savvy web developers. We always have to check the documentation and copy/paste the parts we need and then make edits. For my labs project, I wanted to create a tool that would make my job easier by removing the need to write XML to define contenttypes. When this project is completed, anybody who can use a mouse will be able to define contenttypes for Enonic CMS without ever seeing any code.

Elastic Events

Real-time indexing of events with ElasticSearch

A common need in many applications, including Enonic CMS, is the possibility to store and retrieve events. What differentiates events from other types of content or data, is the requirement to be stored quickly and transparently. Often, there are hundreds or thousands of events produced per second. They might not be the main purpose of the application, but still it's important to be able to access and analyze the information later on. Events can be useful for tracing and debugging; they can also be mined to discover interesting trends and patterns.


Enonic Resource Tool: Building a custom gradle plugin

For some time, people working with Enonic CMS sites have asked for a easier way of handling resources (xslt, css, js etc) using a Version Control System, and across multiple installations. As an example, it would be nice to be able to check out resources from a VCS to my local file system, edit files, push changes to a server and then commit them back into the VCS. The ert-gradle-plugin is an attempt to ease this and other tasks.

Enonic Monitoring

HTML based digital signage

Digital signage has become a natural part of most people's lives in the last few decades. All around us we are surrounded by electronic displays that present all kinds of information; advertisements, weather forecasts and travel routes. In this article, we show how Enonic CMS can be used for this purpose.