Trifork Blog

Latest news from Trifork Amsterdam

No Comments

Just 1 day to go until #3 GOTO Amsterdam

The team behind GOTO Amsterdam are raring to go and this time it's already set to be the best year to date. Not only in terms of an impressive speaker line up and record number of delegates, but also the sponsors this year have pulled the stops out.

es logoWe at Trifork Amsterdam & Elasticsearch will be partners in crime this year and have a host of FREE fantastic giveaways including trainings seats & conference tickets to be redeemed across the globe. There's also a chance to hear about the customers using Elasticsearch and get insights as to how best to implement Elasticsearch in a production environment. So if you're at the event come and visit us (hint: if want to locate us, follow the scent of delicious warm waffles!).

Axon Framework Support offering

axon logoAs most of you know the Axon Framework is developed by Trifork and the founder Allard Buijze offers training & consultancy on a regular basis. On popular demand we have also developed a support offering around the product which is now available to all those that are running Axon Framewok in a production environment.

For more information contact us now to discuss your specific support needs further.

 

Dutch Digital Exams go live!

qti logoIn the period of May 30th until June 5th several schools in The Netherlands went live with the new digital examination system. The new system is based on the QTI (Question and Test Interoperability specification) standard from the IMS Global Learning consortium. The system uses advanced text-2-speech software from Acapela combined with a specific Client Lockdown software developed for a variety of platforms prohibiting the student to switch screens whilst the examination is in progress. Furthermore the system was built to be linear scalable to support large numbers of students. Trifork has built this new system in close cooperation with Cito, Dienst Uitvoering Onderwijs (DUO) and offcourse the College voor Examens.

Want to know more about the QTI player or this project? Contact Peter Meijer or visit our website.

Dutch National Police select Trifork/Inter Access for new intranet

pol logoThe Dutch National Police based in Driebergen, The Netherlands has selected Trifork & Inter- Access to develop their new intranet based on the open source content management system Hippo. The team was been selected for its expertise on open source technologies, Scrum experience and Hippo implementation track record.

For more information contact Henk Nijenhuis.

Expanding our reach

We've had a host of new starters in Amsterdam recently. Now, that we are pretty well-established in the Amsterdam area, we are also looking to reach out towards the south of the Netherlands. So recently we have posted a vacancy for a Dutch speaking Sales Manager with a considerable track record and a network in this specific geographical area. If you're interested take a look at the vacancy on our website.

However the team in Amsterdam is not quite complete and we could still use a:

To find out more about Trifork & our projects then email us at jobs@trifork.nl

Blogtastic

And if you're not done reading, we've published some great blogs some of them include:

Apple WWDC Keynote 2013 - my opinion by Tom van Zummeren

Twitter bootstrap why you should "not" use it by Kwint Slager

Eventual Consistency by Rune Skou Larsen

Ansible simple module by Mohamed El Moussaoui

Posted in: Business | Knowledge | Newsletter

Apple WWDC Keynote 2013 - My opinion

No Comments

AppleIf you haven't already you should all watch Apple’s WWDC keynote that was streamed live from San Francisco earlier this week; some really interesting things were announced. At least that’s how I see it and in this blog entry I'll give you my thoughts on some of my highlights, but there were so many small things they covered which you really have to see (or experience) instead of reading about it. Anyway, if you don't want to watch the 2-hour keynote, then this blog entry provides you with a good alternative...

Read the rest of this entry »

Posted in: iPad | iPhone

Adding user info to log entries in a multi-user app using Mapped Diagnostic Context

No Comments

Have you ever been in the situation where you were looking at one of your production log files and had a hard time seeing what log entries belonged to what requests? In a multi-user web application many requests are handled in parallel, so without additional context it becomes almost impossible to see how a single user is interacting with your application.

Similarly, when someone reports a problem with the application you can’t really tell what to look for: how do you know that some error in the log was actually caused by the user reporting the issue?

The good news is that there’s an easy solution to this problem, that has been around for a long time already and is very easy to add to your existing applications: use a Mapped Diagnostic Context

MDC explained

By now, you’re either saying “duh, I’ve been doing that for ages” or “what the hell is an MDC?”. In my experience as a consultant, a surprising number of people fall in the latter category; if you do as well, then this new "from the trenches" blog is for you.

Read the rest of this entry »

Posted in: Custom Development | From The Trenches

Twitter Bootstrap, why you should *not* use it

No Comments

We all know Twitter Bootstrap, a great tool for quickly building "sleek and intuitive" web applications. But why are people actually choosing to use Twitter Bootstrap and why? And more importantly, why I think you should *not* use it (in most cases)!

Disclaimer: I am a frontend developer and wrote this blog entry from my point of view, so if you are a backend developer, take this with a pinch of salt and don't be offended ;-)

You hear it all the time: "You should really use Twitter Bootstrap! It's really good and easy to use". Also, I notice that bootstrap enables backend developers to quickly set up a frontend using twitter bootstrap. And suddenly they have to admit that a little frontend development can actually be a lot of fun. However, typically things turn bad once the project progresses...

So what can bootstrap do for you and what makes that people find it useful:

  • Quickly create a layout (fixed, fluid and responsive)
  • Quickly create a form
  • Everything imediatly in the same style
  • Reasonable grid system
  • Tables
  • Buttons

And there are many other useful things that bootstrap offers and allows you to add in no time. Just dive into it, it's more than worth it...

When and what for should you use bootstrap?

  • A backend system without too much commercial purpose
  • A website without fancy design
  • Show (preliminary) functionality to a product owner during a project

So what remains and why should you *not* use bootstrap?

You have to consider that most frontend developers get their thrill from translating a spiffy design to HTML/CSS using client-side scripting when needed. They are typically good at just that thing using their own preferred tools and frameworks and typically less good at modifying existing code bases that they didn't create from scratch.

So when better not?

  • When you are just interested in the grid layout, then there are better and more resource-friendly alternatives
  • If you are only using one or two features, why not build them yourself? (why not reuse?)
  • When dealing with a design of your own, you might end up removing bootstrap specifics or trying desperately to override them

To conclude, there are defintely reasons and scenarios where Twitter Bootstrap can be handy, but make sure that you don't shoot yourself in the foot, because it might cause you more work in the long run. Especially when using bootstrap in a larger project, it might save you time in the beginning, but it might start to bother you and cost you greatly a little further down the road. In those cases, setting up your project correctly yourself from the beginning, is a more recommendable approach.

Posted in: Custom Development | Frontend

From the trenches: Rendering Twitter Bootstrap form inputs for Spring-MVC with FreeMarker macros

No Comments

This is the first entry in a new series of what we hope will become a regular appearance on our Trifork blog: “from the trenches”, with blogs that explain in a no-nonsense just-the-tech fashion how we applied certain tools, technologies, libraries and frameworks in our own projects to solve real-world challenges that we faced while building solutions for our clients. We hope that by sharing the solutions we came up with, we can provide you with some examples and ideas that you can apply to your own projects -- with the confidence of knowing that these techniques have proven themselves in real production systems.

We are also open to your suggestions on what technologies you might want us to cover. So don't be shy and just drop us a note if you have any ideas.

In this first blog I’d like to cover how we used FreeMarker to build a small library of macros that make it very easy and effort-free to work with Twitter Bootstrap-based forms in a Spring-MVC application.

TL;DR: we've built a set of FreeMarker form macros for Spring-MVC apps with a Twitter Bootstrap-based frontend that allow one-liners in your form templates to render full Bootstrap-based HTML structures for various input types that include internationalized labels and rendering of binding and validation errors while allowing passing in custom attributes and nested contents. It’s awesome.

Read the rest of this entry »

Posted in: Custom Development | From The Trenches | Frontend | Java

Elasticsearch server book review

2 Comments

elasticsearch server

I recently read the ElasticSearch server book published by Packt Publishing. It was a pleasant reading, really interesting even though I was already familiar with the product. So here is a quick synopsis of the book & it's content. Not one of my usual blogs but nonetheless something I wanted to share.

Writing a book about Elasticsearch turns out not to be easy. There are in fact lots of features and gems that would need to be discussed, something that's really hard to do in a book with a reasonable number of pages. Also, the product is rapidly evolving, which makes it extremely hard to keep up with it and come up with up-to-date content.

I think this book brings something that was missing until now in the Elasticsearch ecosystem, since it goes from installing the product and setting it up to using it in real life, describing also potential issues and their solutions. Also, it doesn't neglect the needed technical details about the underlying Lucene library and search in general.

Read the rest of this entry »

Posted in: Elasticsearch

The Erlang User Conference 2013: Building Massively Scalable Fault-tolerant Systems

No Comments

ESLlogoAs Founder & Technical Director of Erlang Solutions I just wanted to share with you that between June 13th & 14th, the Erlang User Conference will open its doors to over 40 speakers and more than 300 delegates from all over the world in Stockholm. They will be discussing hot-topics such as Multi-core, Big Data, Cloud, Embedded, NoSQL and the future of the Web.

For those who aren't aware, the Erlang Programming language and middleware was designed to build massively parallel, scalable and fault tolerant systems uniquely suited for multi-core architectures and the Cloud. Due to the latest increase in the use and adoption of the Erlang programming language, this year the Programme Committee was pleasantly surprised by a record number of talk submissions.  In fact, a fourth track had to be added on both days and an additional talk to all tracks on the first day, making it the largest Erlang User Conference to date. The conference will feature 8 tracks: ‘Erlang and the Beam VM’, ‘Cool Tools and Gadgets 1’, ‘Big Data, Big Databases and Next Generation Analytics’, ‘Scalable Fault-Tolerant Architectures’, ‘Cool Tools and Gadgets 2’, ‘The Internet of Things’, ‘Agile and Test-Driven Development’, ‘Load regulation and Back Pressure’.

The Erlang User Conference is not only the biggest Erlang event in Europe, but also the oldest. It has been running each year since 1994, with one gap year in 1996, when the first version of OTP was created. In 2013, companies such as Campanja, Ericsson, Klarna, Basho, Erlang Solutions, Tail-f, Spil Games and prestigious research institutes such as the The Swedish Institute of Computing Science and Uppsala University will be represented at the event.

On the first day of the event the inventors of the Erlang programming language Mike Williams, Robert Virding and Joe Armstrong will be giving a joint keynote about the past, present and especially the future of Erlang. The keynote talks in the second day will be provided by Claes Wikström, author of Yaws and Mnesia and by Bruce Tate - author of 'Seven Languages in Seven Weeks'. Other well-known Erlang experts talking at the conference include Steve Vinoski, Eric Merritt, Ulf Wiger, Henning Diedrich, ErikStenman, Pavlo Baron, Mahesh Paolini- Subramanya, Zach Kessin, Patrick Nyblom, Kostis Sagonas and many more. A full list of our fantastic speakers is available on our conference website.

Among other topics, speakers will present, evaluate and illustrate with case studies tools and frameworks such as the ChicagoBoss web framework, the Disco MapReduce project, the distributed Riak database, the Elixir programming language running on top of the ErlangVM, the Erlang mode on the IntelliJ editor, and QuickCheck -the property based testing tool.

In short, the Erlang User Conference will be the best place in Europe to learn more about Erlang and its use cases and get to know everything about the latest projects and innovations in the world of Erlang from leading Erlang experts.

You can take advantage of a 25% discount when you register on the website using the discount code TRIFORK. I hope to see you there!

Posted in: Custom Development

Eventual Consistency

No Comments

Once in a while, an idea emerges that is contrary to the way we have grown accustomed to doing things. Eventual consistency is such an idea, and the way we used to build datastores was with SQL and ACID transactions.

So whats wrong with that?

Too many generals

Information always flows as messages using a medium - not transactions. Atomic transactions spanning multiple systems is an abstraction that doesn’t really exist in real life. It’s impossible to guarantee the atomicity of a distributed transaction as proved by the Two_Generals%27_Problem. The more generals - or partitions of a distributed system - the worse the problem. Not knowing the entire truth, is thus a fact of life that each partition must deal with, and therefore we need to ensure that the knowledge of all partitions converges when they send messages to eachother. This is eventual consistency.

Eventual Consistency in Real Life

Finance has always embraced eventual consistency. Money transfer is - contrary to popular belief - not done by transactions, but is an elaborate process where the money is first withdrawn from one account and after some time deposited at another account. Meanwhile the system is inconsistent for the outside observer, due to money being “in movement”. When the money arrives, eventually, the system will again be consistent.

If I send a cheque by mail when I have enough money on my account, but it turns out I have insufficient funds, when the receiver tries to cash it, a conflict arises due to balance information being slow and inconsistent. The entire system still manages because we have processes for resolving conflicts. In this case the cheque bounces.

It turns out, that in all cases of distributed updates to an object predating computerisation, eventual consistency is the norm, and conflict resolution processes exist. Medical records is another example where information from many sources about the same patient arrive out of order and is eventually reconciled.

Early computerisation changed this by building monolithic systems to model the truth about something - and when the system was not available, users had to wait or go back to the old and robust processes without computers.

Physical limitations

Consider the physics of sending information. Disregarding exotic theories involving multiple timelines, information cannot move faster than light. This would lead to a paradox, where you could make a phone call into the past with a so-called Tachyonic_antitelephone.

In the globally connected world, location and travel of information imposes very real limitations on the availability of up-to-date data. Connections drop, systems go down, sometimes entire data centers go offline for extended periods of times, and come back up using a restored, old version of data. When building highly distributed systems, these limitations cannot be sanely abstracted away in underlying distributed databases. The ugly head of reality will either cause distributed transactions to crumble write availability, or make cracks in the flawed illusion that all users always see up-to-date data.

Dealing with eventual consistency

It is the gut instinct of every programmer to avoid complexity by abstraction. Since the old abstractions of transactions and a perfectly up-to-date database don’t scale to distributed systems with high write availability, we need eventual consistency as theoretical basis and new abstractions and techniques for handling it. Luckily this has been the subject of academia for decades, and recently the NoSQL movement has pioneered numerous small and large-scale eventually consistency systems drawing many real-life experiences, which will be the topic of my next blog entry.

Rune Skou Larsen
NoSQL evangelist @Trifork

Posted in: Custom Development | NoSQL

Happy life with Legacy Systems

No Comments

I want to give you a little introduction to my latest InfoQ article on Technical Debt, which I wrote together with my former colleague Eberhard Wolff. We work with new, small and cool systems, but also with large and old systems (= these systems were really valuable over many many years!). Large means 50 to 500 men years resulting in several millions lines of code (LoC) using hundreds of database tables. Old means, that some of these systems have been started in the last century and still use technologies like Visual Basic 6, EJB 2.x, Struts 1.x, PL/SQL or XDoclet, and are connected to COBOL-based systems, just to name a few things which were cool 10-35 years ago, but are now seen as cruelties if you have to add features to such a system. 

These systems have also seen many developers come and go, developing good stuff and, especially under time pressure, bad stuff. All these systems have a reasonable amount of Technical Debt (which is unavoidable). While working on these systems, we found that the usual “Technical Debt is a disease” complaining strategy is neither helpful nor correct. Some architects deal very well with this problem, resulting in 10 year old systems, which are still in a really good shape. Other architects didn’t deal well with it, so the development of business-critical systems really slowed down, sometimes whole development organizations come to a stand-still. The problem is then, that you cannot throw away a 2 mio LoC business-critical system and develop it anew. That’s too expensive and too risky. You have to pay the interest of Technical Debt in terms of slow delivery of features. This shows, that not only developers suffer under Technical Debt, but also the business side, who waits for features a way too long. In fast paced environments, that can almost kill businesses! 

In our InfoQ article we give you a nice overview what Technical Debt is really about. We found a surprisingly long list of of stakeholders - a software developer is only one of many. After explaining various ways how to identify Technical Debt, we head to the most important part: how to effectively deal with it. We give practical advice by debating the pros and cons of various successful strategies. Finally, we show when it could be useful to just pay the interest, to do debt conversion or to pay back the debt. We think, if you deal with large and successful (=old) systems, you should have a look at the article and leave us and the community your thoughts for further discussion.

Posted in: Custom Development

10,9,8, the countdown to Mars has started...

No Comments

logo_marsoneA big congratulations to one of our customers Mars One who this afternoon announced the start of their astronaut selection program at a press conference in New York.

For those of you who have not heard heard of them, Mars One is a not-for-profit organization that will establish a permanent human settlement on Mars in 2023 through the integration of existing, readily available technologies from industry leaders world-wide. Unique in its approach, Mars One intends to fund this decade-long endeavor by involving the whole world as the audience of an interactive, televised broadcast of every aspect of this mission, from launch to landing to living on Mars.

Over the last few months Trifork has been working together with the team at Mars One to build a global platform that will support Astronaut Selection Program. A scalable site has been developed which expects applications from hundreds, perhaps thousands more likely even millions of applicants in the coming months from all across the world.

Using the services from SoftLayer, MongoDB, Bits on the Run and a lot of other cool technologies and services, we've been able to create a very robust website which will make everyone across the world  able to participate in this great journey.

You can watch the press conference on Youtube: http://www.youtube.com/watch?v=WJNGH4NZJ4U

Posted in: Big Data & Search | Custom Development | MongoDB