HomeSitemapContact usBlog

Company

May 2012 newsletter

| Reply

At Orange11 there has been a lot going on in April, and in May there is even more in store, this blog covers a few of the highlights.

Welcome onboard

Firstly, we would like to welcome Jeroen Speekenbrink.Jeroen Jeroen started this week as Director Delivery Operations. Jeroen has been active in the software industry for well over 15 years and joins us from Inter Access. Jeroen will be responsible for running our entire delivery operation and will be a key strategic level contact for our customers. Welcome to the team Jeroen.

Hello Tracy

tracy introletter

Although it may sound like it, this is not another new team member, but Orange11's successful new I-Pad app; Learn to write with Tracy. This iPad app has been developed to help children to learn to write letters & numbers.

Since its launch it hit the top 5 Educational apps in the Dutch apple store. It's available for download in English & Dutch, try it out for yourself.

If you want to read more about the application check out our blog or visit our website for the case study.

Tick Tock Amsterdam here we come

GOTO_amsterdam_2012_960x175.png 
In just a few weeks it's time for GOTO Amsterdam. We are very excited as we finalize the program. The Berurs van Berlage is going to rock with a host of top speakers and companies we have joining. If you have not signed up already, don't miss out on a chance to mingle with the top tier of the software development industry. Blog readers that sign up now can get a further 25% discount. Remember when registering use the  discount code: orange11vip.

Training session at Berlin Buzzwords

bbuzzwords_logo_social_witheardate(1).pngI guess most of you have already got your tickets for Berlin Buzzwords THE event on scalable search, data-analysis in the cloud and NoSQL-databases. On request we will offer training opportunities the two days following the event (6th & 7th June). Register now for the Lucene & Solr training in a location very close to Urania in Berlin.

For all Berlin Buzzwords delegates we offer a EUR 300 discount so for more information & registration check out our website now. Discount code berlinbuzzwordsvip.

Up & Coming Rotterdam

A group of developers from Rotterdam (one of whom works for Orange11) have started up 010DEV; a social techy evening for those who live or work in Rotterdam (or not!). They have their first official social-tech event in May. They have some cool speakers too namely Trisha Gee presenting Disruptor and Peter Hilton who is going to set off in search of the perfect programmer. In between the sessions there ample opportunity to socialize and to taste some of Locus Publicus' excellent beer. If you wanna go register here.

Another QTI success story

Building further on our expertise of the QTI assessment delivery engine, we have implemented this engine for yet another customer; ThiemeMeulenhoff. The Oefenmodule is part of a new portal where Educational content is connected to an assessment engine that has the ability to conduct tests. This new module has been developed based on ThiemeMeulenhoff's existing DigiTrainer. Orange11 optimized the code and introduced new question types and introduced a feedback system that could prompt the use of tips or help. In a dashboard environment teachers can track progress, performance and results for individuals & groups of students. If you are interested in finding out more or a demo, then please contact us.

MongoDB User Group comes to Amsterdam
mongodb logoOrange11 are proud to initiate together with 10gen the MongoDB User Group to the Netherlands. The first session will be hosted at our monthly tech meeting. We will welcome to this session a MongoDB specialist from 10gen. A tentative date for the meet up is Thursday 7th June. We're just mapping out logistics but sign up and we will send more information within the next week or so. Sign up for free and come and enjoy the usual pizza & beer too.

Caching for fun and profit

If you missed our last tech meeting the presentation is ready for download. It gives an overview of where & why caching matters in enterprise application architectures and then focuses on some practical applications and gotchas in Enterprise Java apps, like Hibernate's 2nd level cache and Spring 3.1's new caching abstraction. Here's the presentation.

Thanks for reading as always.

Liferay sdk development best practices

| Reply

Liferay logo
With liferay in action and Portlets in action out and the development guide online there is a fair amount of information on developing portlets and other types of Liferay plugins available.

However none of these resources offer much guidance on the subject of organizing a large project that consists of multiple plugins. In this post i'll try and document some (best ?) practices that I distilled from working on a Liferay project that uses the Liferay sdk.

Now before I start, let me first say that I definitely would not recommend using the Liferay sdk for all types of projects. In fact in many cases you will be better served by the liferay maven plugin

The liferay sdk has many deficiencies such as having no support for unit testing(!) and not supporting libraries that can be shared across different plugin modules. However currently the liferay sdk is more mature than the maven plugin is, has more functionality, and most if not all available documentation references the sdk.

As a rule of thumb : if your project integrates tightly with Liferay's built in services and your plugins are not very complex, then using the standard liferay stack : Liferay sdk / MVCPortlet / servicebuilder is a viable option. If your application is more complex then you'll be a lot happier with a more general purpose stack like maven / spring portlet mvc / jpa

But I digress. On with the best practices
Read the rest of this entry »

Creating a mobile version of your website with Spring Mobile and Sitemesh

| Reply

About a year ago I developed an Android app for my website, but as not everybody has an Android device I wanted to create a mobile version of my website. In the mobile version I want to present slightly different data to make it look more like the app. In this post I will show you how I have used Spring mobile to determine which version of the site the user wants to visit and how I used Sitemesh to select the correct decorator.

Read the rest of this entry »

Learn to write with Tracy

| Reply

I am very proud to announce Orange11's first iPad application: Learn to write with Tracy (dutch: Leren Schrijven met Tracy) which has just been released world wide in both Dutch and English. I personally developed this app from scratch with the help of my colleague Dennis de Graaf for the graphical design work. I thought this would be a great opportunity to tell you a little bit what the app is all about and a sneak behind the scenes as to how it was made.
Read the rest of this entry »

JMeter

| Reply

JMeter is a tool designed to load test functional behavior and measure performance. You can use JMeter to simulate a heavy load on an (web)applications.

In order to perform the tests you need test data. This test data can be different depending on the environment. It would be handy to load the data within the specific environment in order to use the data in the test suite. I make the data available via an HTTP call the url can be made specific for the different environments. The data will be presented as an XML to JMeter.

In this blogpost I am going to show you how to install and configure JMeter using the http call for test data.
Read the rest of this entry »

Basic Health check library for your application

| Reply

For a few years now I have been running multiple Hippo projects. All the projects use multiple servers and services. The biggest one has over 15 servers in production. A standard hippo solution consists of site servers and cms servers. We also had some other servers for things like rss and integration. The complete landscape consists of apache/tomcat combinations, proxy servers and load balancers. All the servers are monitored using a special tool. In the beginning we made the load balancer call the a webpage. Later on we created pingers. Calling the pinger was easy for a load balancer and the proxy servers. By using a generic interface for a pinger we could also implement pingers to check ftp connections or external systems. Using the generic interface made it easy to create a custom monitor that just showed all the results of the pingers.

For new projects we wanted to have a similar solution. Therefore I decided to make a library available to create and interact with these pingers. The library consists of a generic interface and some default implementations.

Another part of the library is a version servlet that reads a manifest file to show you information about the actual artifact that is deployed.

In this blogpost I am going to explain the library and show you how to use it.

Read the rest of this entry »

Refactoring in an event-sourced world - Upcasting in Axon 2

| Reply

This article explains how the concept of upcasting can be applied to an event-sourced model. Focusing on demultiplexing of events, a new feature in Axon 2.
Read the rest of this entry »

There's More Lucene in Solr than You Think!

| Reply

We’ve been providing Lucene & Solr consultancy and training services for quite a few years now and it’s always interesting to see how these two technologies are perceived by different companies and their technical people. More precisely, I find it interesting how little Solr users know about Lucene and more so, how unaware they are how important it is to to know about it. A quite reoccurring pattern we notice is that companies, looking for a cheap and good search solution, hear about Solr and decide to download and play around with it a bit. This is usually done within a context of a small PoC to eliminate initial investment risks. So one or two technical people are responsible for that, they download Solr distribution, and start following the Solr tutorial that is published on the Solr website. They realize that it’s quite easy to get things up and running using the examples Solr ships with and very quickly decide that this is the right way to go. So what the do next? They take their PoC codebase (including all Solr configurations) and slightly modify and extend them, just to support their real systems, and in no time, they get to the point were Solr can index all the data and then serve search requests. And that’s it... they roll out with it, and very often just put this in production. It is then often the case that after a couple of weeks we get a phone call from them asking for help. And why is that?

Examples are what they are - Just examples

I always argued that the examples that are bundled in the Solr distribution serve as a double edge sword. On one hand, they can be very useful just to showcase how Solr can work and provide good reference to the different setups it can have. On the other hand, it gives this false sense of security that if the examples configuration are good enough for the examples, they’ll be good enough for the other systems in production as well. In reality, this is of course far from being the case. The examples are just what they are - examples. It’s most likely that they are far from anything you’d need to support your search requirements. Take the Solr schema for example, this is one of the most important configuration files in Solr which contributes many of the factors that will influence the search quality. Sure, there are certain field types which you probably can always use (the primitive types), but when it comes to text fields and text analysis process - this is something you need to look closer at and in most cases customize to your needs. Beyond that, it’s also important to understand how different fields behave in respect to the different search functionality you need. What roles (if at all) can a field play in the context of these functionalities. For some functionalities (e.g. free text search) you need the fields to be analyzed, for other (e.g. faceting) you don’t. You need to have a very clear idea of these search functionalities you want to support, and based on that, define what normal/dynamic/copy fields should be configured. The examples configurations don’t provide you this insight as they are targeting the dummy data and the examples functionality they are aimed to showcase - not yours! And it’s not just about the schema, the solrconfig.xml in the examples is also much too verbose than you actually need/want it to be. Far too many companies just use these example configurations in their production environment and I just find it a pity. Personally, I like to view these configuration files also serving as some sort of documentation for your search solution - but by keeping them in a mess, full of useless information and redundant configuration, they obviously cannot.

It’s Lucene - not Solr

One of the greater misconceptions with Solr is that it’s a product on its own and that reading the user manual (which is an overstatement for a semi-structured and messy collection of wiki pages), one can just set it up and put it in production. What people fail to realize is that Solr is essentially just a service wrapper around Lucene, and that the quality of the search solution you’re building, largely depends on it. Yeah, sure... Solr provide important additions on top of Lucene like caching and few enhanced query features (e.g. function queries and dismax query parser), but the bottom line, the most influential factors of the search quality lays deep down in the schema definition which essentially determines how Lucene will work under the hood. This obviously requires proper understanding of Lucene... there’s just no way around it! But honestly, I can’t really “blame” users for getting this wrong. If you look at the public (open and commercial) resources that companies are selling to the users, they actually promote this ignorance by presenting Solr as a “stands on its own” product. Books, public trainings, open documentations, all hardly discuss Lucene in detail and instead focus more on “how you get Solr to do X, Y, Z”. I find it quite a shame and actually quite misleading. You know what? I truly believe that the users are smart enough to understand - on their own - what parameters they should send Solr to enable faceting on a specific field.... common... these are just request parameters so let them figure these things out. Instead, I find it much more informative and important to explain to them how faceting actually works under the hood. This way they understand the impact of their actions and configurations and are not left disoriented in the dark once things don’t work as they’d hoped. For this reason actually, we designed our Solr training to incorporate a relatively large portion of Lucene introduction in it. And take it from me... our feedback clearly indicate that the users really appreciate it!

So...

There you have it... let it sink in: when downloading Solr, you’re also downloading Lucene. When configuring Solr, you’re also configuring Lucene. And if there are issues with Solr, they are often related to Lucene as well. So to really know Solr, do yourself a favor, and start getting to know Lucene! And you don’t need to be a Java developer for that, it’s not the code itself that you need to master. How Lucene works internally, on a detailed yet conceptual level should be more than enough for most users.

Tutorials and training sessions at GOTO Amsterdam

| Reply

One of the best things about organizing an international conference is that it brings a pool of experts from around the world to Amsterdam. Next to getting them to speak at the conference and have them available for discussions, it also allows for a unique opportunity to offer training & tutorial sessions.

Following the 2 day GOTO Amsterdam conference, on Saturday May 26 there is the chance to take part in a wide range of different tutorial sessions. There is literally something for everyone. These tutorial sessions are unique to GOTO attendees and on offer for a small additional registration fee. All trainings are held at Saturday May 26, 9.00-16.00.

The trainings

Training"A Programmatic Introduction to the Neo4j Graph Database"
ByIan Robinson

Ian  RobinsonNeo4j is a JVM-based graph database. Its graph data model is intuitive and expressive, mapping closely to your whiteboard domain model. For highly connected data, Neo4j is thousands of times faster than relational databases, making it ideal for managing complex data across many domains, from finance to social, telecoms to geospatial.

This tutorial covers the core functionality of the Neo4j graph database. With a mixture of theory and entertaining hands-on coding sessions, you'll quickly learn how easy it is to develop a Neo4j-backed application.


Training"Starting Scrum"
ByZuzana Sochova

Zuzana  SochovaAgile methods become popular in all different segments of IT industry. As the business is changing faster, it expect from you to be flexible and adapt to the new conditions fast. Are you suffering from poor quality, low flexibility, inefficiency or lack of customer satisfaction? Are your projects failing or do you feel you can be better?

During the practical workshop "Starting Agile" you will understand the core principles of agile methods, learn how Scrum process works, and in the end be able to decide, if you like to consider changing your processes into agile and what do you expect from such change. During the day, you will be able to try some agile aspects at the training and directly compare the method with your current processes and create a list of initial steps for agile adoption in your company.

Agile is not just another process, it's a new way of thinking; it's a new culture, new philosophy.


Training"A user manual (how to build software that works the way your users think)"
ByChris Nodder

Chris  NodderLearn how to build software that works the way users' brains work. Based on psychological principles and the results of hundreds of hours of user testing, this class shows you why users behave the way they do, and what you can do to make sure your software supports their mental processes.

People are strange. The way they interact with our software is often unbelievable to us. Why can't they just click the damn button? In reality, much of users' "random" behavior is actually very predictable when we understand how people think. Once you are familiar with these thought processes, you can build software that appeals better to your users.


Training"Beautiful and Shiny - The iOS Graphics System"
ByBill Dudney

Bill  DudneyiOS Apps are known for their rich and beautiful user interfaces. A big part of the beauty and responsiveness is due to the underlying graphics system. In this tutorial you'll learn how to use Core Graphics and Core Animation to take your app to the next level.

Most of what ends up in an iOS UI is built with an image editor and part of the app at deploy time. But dynamic content can't be drawn before hand instead it must be drawn on the device at runtime. Core Graphics has a rich set of API's that can be used for just that purpose. The API is object-oriented but C based. That causes some devs to steer clear. In this tutorial we'll demystify the API so you can take advantage of Core Graphics in your app.

Once we've covered the basics we'll go into how the compositing model works on iOS. Every pixel that is displayed on a device goes through the Core Animation compositing engine. A through understanding of how the compositing engine works is vital to getting your app to look and perform great.


Title"Building Cross Platform Apps with PhoneGap & PhoneGap/Build"
byChristophe Coenraets

Christophe  CoenraetsLearn how to use PhoneGap to build platform neutral mobile apps with HTML, CSS and JavaScript. Now's your chance to find out if the PhoneGap open source framework is the right technology choice for your mobile development projects.

PhoneGap has been widely recognized as a game-changer for mobile app development. The open source code has been downloaded more than 500,000 times and thousands of apps built using PhoneGap are available in mobile app stores and directories. Now's your chance to find out what the buzz is all about. In this introductory session, Christophe will show you how to use PhoneGap to build platform neutral mobile applications with HTML, CSS and JavaScript that access device features like accelerometer, GPS, camera and contacts.

If you're a web developer, mobile developer, mobile designer or a project manager in charge of mobile development, this session will help you decide whether or not the PhoneGap open source framework is right for your mobile development projects.


Training"Scala in Spring Tutorial"
by: Jan Machacek

Jan  MachacekJan MachacekJan's tutorial will show how to start using Scala in Spring applications. You will build a traditional three-tiered application using Spring 3.1 DI, MVC, ORM, transactions with Hibernate 4 thrown in. We will construct the application entirely using Scala; starting with Java-like Scala code, then applying the functional and type safe features of Scala to the codebase. We will use BDD throughout the implementation.
You will learn how to write Spring-based code entirely in Scala. The code you will have at the end of the day will give you a good starting point for adding Scala to your Spring-based [Java] code.


If you are interested, sign up here!

April Newsletter

| Reply

Spring is here and hopefully the longer days mean we can pack them full of great things to do in work & play! This month's issue is a quick news flash on some things we have planned & on offer for the coming days, weeks & months and hopefully you can join us at some of these events.

2 days to go...

...until our monthly (free) Tech Meeting which is on Thursday 5th April 2012, served as always with ice cold beer & pizza. On the program this month are the following sessions:

- Apache HTTP: Even if this project doesn't need an introduction anymore; to celebrate its 17th birthday (and the recently released version 2.4), we would like to invite you to a presentation of the Apache HTTP server and some of the most used modules.

- Insight into Clojure, including syntax & data structures, a common interface to rule them all: sequences, code as data for a programmable programming language (macros) and much more.

Sign up here.

ElasticSearch at GOTO night

elastic search logoOn April 19th Orange11 & Trifork will host yet another GOTO night at Pakhuis de Zwijger. Our last event was a great success and attracted over 60 attendees and the feedback was very positive.

This time we hope for just as much interest especially seen as we are lucky to line up Shay Banon founder of ElasticSearch, who will host a full hands on session, no slides, driven by real life usage of ElasticSearch.

Our second speaker will be announced later this week. There are limited spaces so make sure you register your interest.

Sign up now!

Training session at Berlin Buzzwords

bbuzzwords_logo_social_witheardate(1).pngBerlin Buzzwords is the event that focuses on scalable search, data-analysis in the cloud and NoSQL-databases. With more than 30 talks and presentations of international speakers specific to the three tags "search", "store" and "scale" this year registrations are storming in.

Once again this year we will offer training opportunities the two days following the event (6th & 7th June). On popular demand we will host a special Lucene & Solr training in a location very close to Urania in Berlin.

For all Berlin Buzzwords delegates we offer a EUR 300 discount so for more information & registration check out our website now. Discount code berlinbuzzwordsvip.

GOTO discount for Orange11 blog readers

GOTO_amsterdam_2012_960x175.png

The GOTO event this year is promised to be even bigger & better, the new location of the Beurs van Berlage (Stock Exchange) is a highlight in itself. As for the top-notch speakers they include some well-known names in the industry including Simon Brown the founder of Coding the Architecture and Greg Young co-founder and CTO of IMIS, a stock market analytics firm in Vancouver BC.

Readers that sign up now can enjoy a further EUR 75 discount off the conference price. Use the discount code orange11vip when signing up.

Also don't forget the price goes up every day, but you can freeze the price the moment at which you show your interest.

Special training session prior to GOTO Amsterdam

The same Lucene & Solr training we offer above in Berlin will also be available in Amsterdam prior to GOTO Amsterdam. GOTO delegates can also enjoy a EUR 300 discount so for more information & registration check out our website now. Discount code gotovip.

This is a PUBLIC TRAINING so also open to non-GOTO attendees as well.

Click here for more information.

Don't miss out on our Spring special offer

springsale_banner_1.png

We mentioned last month that we have launched a special offer for onsite Solr & Lucene training. The Spring Sale offers 25% off a 2-day training offered by our own active and leading Lucene & Solr committers and contributors. The training covers firstly how the Apache Lucene engine operates and thereafter introduces Solr in detail. It also includes advance search functionalities, data indexing and last but not least performance tuning and scalability.

It's already proved to be very popular, but remember the offer is limited to the month of April so make sure you sign up now via our website.

Interesting reads...

So if you have any time left over after all the events, our earlier blogs here have also proved a popular read, they covered:

Using the spring-data project and the mongodb adapter specifically

Vaadin portlets with add-ons in Liferay

Spring Insight

So that 's all for now folks, more in the month of May.