The latest expert opinions, articles, and guides for the Java professional.

Microlibraries: the next small thing in software development!


In computing, microlibraries is a software architecture style in which complex applications are composed of small, independent libraries communicating with each other using language-specific APIs. These libraries are small building blocks, that are tightly coupled and focused on doing a small task well, facilitating a modular approach to system-building.

The world is becoming more and more modular every day. With the pressure of existing systems to be modularised under the hype of microservices, architects want to compose their system architecture of bite sized modules with well defined edges. The microservices architecture is the first software architecture style that has begun to make use of microlibraries.

Read more

A Small Open Source Library to Kill Processes

Some weeks ago we got questions on how to kill processes reliably from Java and instead of explaining this in detail we thought why not release the library that we use internally out into the interwebs.

Read more

Top 10 Must-Have Jenkins Plugins/Features

UPDATED July 28, 2014: Interested in downloading a full report on Jenkins? Since writing this incredibly popular post, we’ve published a full report called Jenkins CI – The Origins of Butlers, Build Masters and Bowties. You can download a beautiful PDF version and take it with you!

Read more

How to Get Jenkins Reports in HTML for Managing Multiple CI Branches


Previously I’ve written about the Top 10 Must-Have Jenkins Plugins/Features and later about how to conquer job hell and multiple app branches using Jenkins & Mercurial. I showed how to use Jenkins views and a couple of plugins to manage multiple branches with continuous integration.

Today I thought I’ll share some more tips with you. Internally we’ve been using a plugin of Jenkins called Publish HTML Reports and a tool we made and open-sourced called Jenkins Reporter. Combine these two handy plugins and you get easy-to-grasp test reports for your branches. What more could you want in life?

Read more

Using Jenkins Build Pipelines to Chain and Visualize Jobs

The Jenkins Build Pipeline feature allows you to visualize your pipeline and have an manual trigger entry point for continuous delivery purposes. Additionally, Job chaining in a Jenkins pipeline is the process of automatically starting other job(s) after the execution of a previous job. This approach lets you build multi-step automation pipelines or trigger the rebuild of a project if one of its dependencies is updated. In this how-to article, we will look at a couple of plugins for Jenkins job chaining and see how we can use them to build and visualize these pipelines.

Read more

Conquering Job Hell and Multiple App Branches Using Jenkins & Mercurial


In the past, I’ve written a lot about Jenkins, Mercurial (see all the cool links below) and other tools that we use at ZeroTurnaround. Today, I thought I’ll share with you how we manage multiple branches in Mercurial while still enabling a Continuous Integration experience for our development teams. I’ll concentrate on one of our products, LiveRebel (which, incidentally, we actually use to release over 30 applications of our own, twice a week, all without impacting our users. Dogfooding it baby!)

Our approach uses tools freely available on the market and some custom scripts. If you have multiple branches and struggling with CI, then this article might give you some ideas.

Read more

Nine awesome features and extensions for Mercurial (Hg)


Years and years ago, ZeroTurnaround’s small, geeky engineering team started looking into Git and Mercurial. We had been using Subversion for ages, and felt like it was time to look into other alternatives, namely to migrate to a decentralized version control system (DVCS) so that we could alienate our partners by committing code while on vacation with them. This was back when it wasn’t possible to use Git on our Windows workstations and recently-released Kiln was supporting only Mercurial. So, not wanting to wait for things to improve on their own, we chose to use Mercurial rather than Git.

Read more

The Past, Present and Future of the JVM: Memories from JavaOne 2013

During JavaONE 2013 I had the chance to visit a lot of different sessions (as this was my first year without any booth duties!) and one of them was Looking into the JVM Crystal Ball by Mikael Vidstedt, a JVM Architect from Oracle. It covered the past, present and the future of the JVM. I really enjoyed the talk and I think that the information from there might serve a larger audience.

Read more

Developer Productivity Report 2013 – How Engineering Tools & Practices Impact Software Quality & Delivery

For a long time, developers have known that the tools we use and the methodologies we practice have an effect on the quality of our software and our ability to delivery releases predictably. However, this is often a gut feeling based on anecdotal evidence with no numbers to support this theory. Wouldn’t be cool to see actual numbers on how doing Code Quality analysis, Pairing Up and using tools for VCS and Continuous Integration significantly improve our ability to delivery quality software? Then look no further. RebelLabs’ Developer Productivity Report 2013 has arrived–preview all 23 statistical graphics here:

Read more

Tom’s Dumb Hacks: How To Do Releases

After watching Atlassian’s video on The Wrong Way to do Agile: Standups, I realised that maybe I can give something back to the community and also to Chet. From one professional to another.

Read more