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.


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

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.


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?


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.

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.

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.


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.

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.


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.