This is part two of my roundup of  EuroClojure 2014. If you missed the first part, find it here.

Day two started with the keynote by David Nolen about Invention, Innovation & ClojureScript. After some interesting discussion on the difference between invention and innovation, he talked about the history of clojurescript, a clojure implementation that does not target the jvm but javascript as a runtime environment. It was released 3 years ago and since then undergoes constant innovation. To date, the innovations come from 81 different contributors. Examples for contributed innovations are persistent immutable datastructures and source maps, which are very useful for debugging clojurescript. David introduced the basics on react.js and then of om. Om is a clojurescript library on top of react.js. It adds a key ingredient to react: Immutability. By having an immutable global application state, communication between components becomes feasible without any of those crazy interactions, that make classical user interface development so hard. As an example David  showed Goya, a pixel editor for the browser. Due to clojurescript’s persistent datastructures it features undo/redo of a virtually unlimited number of steps with little to no performance impact at all. David finished with an outlook on clojurescript 1.0. Among the goals is better code sharing between clojure and clojurescript.

view from the conference center
The beautiful view from the conference centre.

Last week I attended the EuroClojure conference 2014. It was a truly fantastic conference in the beautiful city of Kraków. While the big conferences in the US attract thousands of participants, this one was rather cosy with some 300 participants. As a very good side effect of this, the conference was single tracked. So I missed none of the great talks.

If you do not know clojure by now, let me start with a very short primer: Clojure is a modern, functional programming language targeting the java virtual machine. It is a lisp dialect, designed for concurrency, performance and code that is easy to understand and thus easy to reason about. One of the most outstanding features of clojure is its immutable, persistent datastructures directly built into the language. With clojurescript there also exists a version of clojure targeting javascript rather than the jvm as a runtime.

Es hat bereits viele Diskussionen über die Vor- und Nachteile von Mobile Web und nativen Apps gegeben. OTTO selbst hat die iPad App hybrid entwickelt. In diesen Beitrag werden wir mehr auf die Vorteile beider Technologien eingehen und nennen Beispiele, wie man diese elegant kombinieren kann. Wir gehen weniger auf eine triviale Pro- und Contra Liste ein, welche bereits genügend im Netz zu finden sind. Wir werden erklären, warum wir uns für die hybride Lösung entschieden haben und weswegen wir keine Cross-Frameworks empfehlen.

Today, most online shop systems offer product recommendations. In addition to the page navigation and the onsite search, recommendations are another good possibility to lead customers to suitable products. If recommendations are based on click streams and purchases of customers, usually an external standard software is used for generating these recommendations. Otto.de uses the prudsys Realtime Decisioning Engine (prudsys RDE).

LHOTSE is the internal code name for our project to re-develop www.otto.de: in-house, based on open source software and using agile methodologies such as Scrum and XP. LHOTSE went live on 24th October 2013 – three months before schedule. Although it took us roughly two years to develop, with a team of more than 100 experts, getting LHOTSE live was practically a „non-event“. So, why did everything work out so well?

The term Commitment was removed from The Scrum Guide (pdf) and replaced by the term Forecast back in 2011. Here is my rant against the concept of commitment as it is still used by many otherwise agile teams. If you don’t do scrum, but any other development method that ties a fixed set of development tasks to an iteration, then this article is also for you. You must not mistake ceremonial commitment with the commitment of individuals and teams to deliver excellent work. We all agree the latter is a great and desirable thing. In this article I am only talking about the former.

Sprint commitment means, that a team of software developers have to commit to finishing a fixed number of stories in the next iteration. I guess the hope often is, that due to the pressure created by such a commitment more stories are developed per time unit. I also heard the reasoning commitment would improve planability of a development project or that it increases the motivation of developers. I think that is all wrong.

Beim Pair Programming sitzt man also mit einem Paar (gewöhnlich 2) Programmierern an einem Rechner und bearbeitet den gleichen Code. Und das soll sinnvoll sein? … Wir Programmierer im Shopoffice-Team finden: Jawohl! Wir schreiben besseren Code, produzieren weniger Bugs, sind konzentrierter bei der Arbeit und am allerwichtigsten: Wir haben mehr Spaß bei der Arbeit. Klar verwenden wir Pair Programming hier im Team schon sehr ausgiebig – aber es gibt immer etwas zu verbessern. Warum also nicht mal jemanden ins Team holen, der über mehr Praxis in diesem Bereich verfügt und Erfahrungen mit Pairing in verschiedenen Projekten gemacht hat? Wir haben uns für Thomas Much entschieden, der uns für einen Sprint lang bei der Arbeit begleiten sollte. Thomas war als Java- und Pair Programming-Coach schon in zahlreichen Projekten unterwegs und genau davon wollten wir profitieren.