Java 8 Functional Benchmark
How Java 8 lambdas and streams perform compared to longstanding implementations?

Lambda expressions and streams received an heartwarming welcome in Java 8. These are by far the most exciting features making their way to Java in a long long time. The new language features allow us to adopt a more functional style in our code and we had lots of fun playing around with them. So much fun that it should be illegal. Then we got suspicious, and decided to put them to the test.

We’ve taken a simple task of finding a max value in an ArrayList and tested longstanding implementations versus new methods that became available with Java 8. Honestly, the results were quite surprising.

Continue Reading…

Scala Puzzlers

Hunting for non-intuitive cases of exceptions and errors in Scala

For this post we got in touch with Nermin Serifovic and Andrew Phillips who you might know from Scala Puzzlers. Together, we’ve selected a few questions to explore errors and exceptions in Scala. Some of the questions might seem weird at first, but it all makes sense when you dig down to uncover what’s really going on under the hood. We hope this post will help make you better familiar with the ins and outs of Scala, and nonetheless important, that you’ll find it enjoyable. Let’s dig in.

The answers are at the bottom of the post. But hey, no peeking!

Continue Reading…

Slack Integrations

How to customize Slack to enhance your development workflow using integrations and bots

It certainly feels like Slack is gradually becoming the standard for modern office communication. While you may argue that technically Slack is no different than, say, IRC – the polished experience is what makes it stand out in the crowd of messaging services. Using less gentler words, Slack is killing email for office communications. And has built in support for code snippets with syntax highlighting. Boom.

In this post we’re highlighting some of the most useful new workflows that Slack is enabling. Apart from the messaging features, it has a huge number of integrations available that let you customize it for the tools you’re working with. Moreover, some more advanced triggers can also let you perform actions just like a terminal, and even automate them.

Let’s see what’s it all about.

Continue Reading…

Benchmarking Java
Benchmarking Java with the OpenJDK code tools: The Java Microbenchmarking Harness

To the naked eye, benchmarking might seem as a simple matter of just timing how long does it take for certain pieces of code to execute. But more often than not, that’s the naive approach. Providing a meaningful benchmark that has accurate and reproducible results is no simple task.

In this post we’d like to introduce you to the OpenJDK code tools project, and especially JMH. The Java Microbenchmarking Harness. We’ve been aware of it for some time now, but it grabbed our attention again when we saw that it will be used extensively during the development of Java 9.

Continue Reading…

Duke Java x-ray

Today more than ever, speed plays a larger role in the software development lifecycle. We see R&D teams who want to push code faster to production environments with rising complexity, and this amplifies a vulnerability that must be addressed.

Those few hours after a new deployment set the tone for its success. Every once in a while, things go wrong, no matter how strict your tests are. When your code is out in production and it meets the real-world architecture and scale of your system, with real data flowing through the application, things can go south pretty quickly. In order to be resilient and stay on top of things, a strategy needs to be implemented that allows you to:

  1. Identify when there’s an error happening
  2. Assess the error’s severity to prioritize it
  3. Draw out the state that caused the error
  4. Trace back and solve the root cause
  5. Deploy a hotfix

In this post we’ll cover some of the most useful practices to allow you to assemble a time-critical response and “weaponize” your application.

Continue Reading…


Make sure you have these JavaOne sessions in your conference schedule

JavaOne 2015 starts this Sunday and with the hundreds of sessions happening all at once it becomes hard to sift through all of them and choose which ones to attend. This is why we asked 5 of our favourite JavaOne speakers to let us know about their sessions and also choose the ones they’re looking forward to the most. Well, except for the main keynote of course 😉

If there’s one more thing that we could recommend it would be this: Don’t leave JavaOne without seeing Takipi in action. We’ve been told that it’s a bit like magic. Say hello to us on or mention @takipid on twitter and we’ll do our best to meet and show you how debugging without using log files looks like.

(The full list of sessions sorted by date is available at the bottom of this post)

Continue Reading…

Weird Java

Some of the weirdest Java puzzlers that we had a chance to get our hands on

Even the most experienced Java developers will find the questions in this post confusing. Or at the very least, amusing (And absolutely unfair). After our adventure with the Java Deathmatch we’ve decided to publish a different set of questions this time around, highlighting some of the unusual and quirky things you can do with Java. For the results of our previous quizzes, you can check out this post and see if you can solve the question that 4 out 5 of developers got wrong.

Do try this at home (or office). But please, please don’t use it in real life Java applications! Unless you’re trying to troll someone and in that case, everything goes. A huge huge thanks goes out to Peter Lawrey for sharing most of these questions with us. The solutions are available at the bottom of this post, but try giving them an honest try and see how many of them you manage to explain.

Continue Reading…

Aurora vs MySQL

Amazon Aurora: The next generation of hosted database services put to the test

In this post we’re taking a closer look at Amazon Aurora to see how it fares against MySQL and if it delivers on the promise of a 5x performance boost. Recently reaching general availability, Aurora is Amazon’s home grown MySQL compatible database. Currently available on three AWS regions (Virginia, Oregon and Ireland) on top of RDS, Amazon’s Relational Database Service.

Aurora is basically the next stage in the evolution of Amazon’s hosted services. If now we’re used to using EC2 for our servers, and RDS was introduced for optimized database instances, Aurora is the next step in this offering. Fully compatible with any operation you’d run through MySQL so no code changes are needed.

Continue Reading…

Java Performance Metrics

The Java performance metrics you need to follow for understanding how your application behaves in production

Unlike the days when software used to be shipped in boxes and there was no way of knowing how it will perform in production, today almost any metric you can think of can be tracked down and reported. The problems we’re now dealing with are coming from information overload and scale, rather than not having enough information. With tens or hundreds of servers at play, this becomes even harder to keep track of. One thing that remained from those boxed software days are logs, which stayed pretty much the same for over 20 years now. Most developers still depend on those for insights into their production systems, but now they’re gradually being replaced.

For this post we’ve decided to gather some of the most insightful metrics you can follow to understand how your application behaves in production, WITHOUT relying on log files in any way. Aside from external factors like user loads (or… AWS downtime), new deployments are probably the most common influence on how Java performance indicators behave. So following up on them becomes even more critical right at those sensitive times following new deployments.

Continue Reading…

Production Tools

Review: Alerting, Log Management, Visualization, APM, and Deployment Management Tools

We’re often asked about the differences and trade-offs between the tools in the Java production tooling ecosystem, so we’ve decided to release a tools guide and gather all our insights in one place. In this post you can see the topics that were covered in the guide, and additional research that we’ve done in each of these spaces. We hope you’ll find it useful.

Continue Reading…