Canary Server

What are some considerations and things to think about if I want to get the most out of testing in my production environment?

Production environments are a different beast. No matter how much effort you put into staging environments, you’re only truly getting real life conditions, and therefore real life data, in production. Everyone does some degree of testing in production, but getting actual valuable data from testing in production requires intent and planning.

Continue Reading…

Java Staging

How come there are companies who skip staging and push new code straight to production? 

The classic model of developing software applications has several environments: development, integration, testing, QA, staging, and finally production. In practice, particularly today, several of these environments are streamlined or done away with altogether. As the software world has evolved, it’s worth revisiting some central assumptions about the development models we use. Today, we’re looking at one environment in particular: staging. Many developers are forgoing it anyway and taking on the risks of testing directly in production, so the question is: do we really need staging environments anymore?

To help ruminate on this question, we spoke with Avishai Ish-Shalom from Fewbytes (who also shared his insights with us on my earlier Docker post). What follows is drawn from that conversation.

Continue Reading…

Github Java Libraries

What are the top Java libraries used by some of the most popular projects on Github? Based on analyzing 60,678 dependencies

We like backing up everything we say with data, that’s why some people claim we’re not that fun at parties. Obviously, they’re going to the wrong parties. In this post we’ve looked into 60,678 import statements of 11,939 unique Java libraries that are used by the top 5,216 Java projects on Github – and extracted the top 100 to a list. Or how we like to call it, a fun way to spend a rainy weekend.

There’s a tension between new rising technologies and good ol’ tried and tested libraries that we all like to use. The new libraries and frameworks tend to generate more buzz up to a point where it seems everybody are using them and you’re left behind the curve – This is often NOT the case and this post brings the numbers to prove it.

Continue Reading…

Splunk vs. Logstash vs. Sumo Logic

What are the main trade-offs between the leading log management tools and how to choose the one that’s right for you?

I don’t know about you, but to me, it can feel like log files are the rabbits of production environments. You look away for a second, and all of a sudden they’ve bred and multiplied. Writing to logs files can take up GB of data per day, all of which is unstructured and coming from potentially several machines and sources. This is where log management tools come in. Of course, deciding to use a log management tool is just the first step. Next you actually have to decide which one you want to use. This can be a rather large decision. Depending on the tool you choose, you may have to weave it throughout your code or set up and install the whole thing yourself. Either way, the cost of changing these tools can be significant.

Continue Reading…

Java Garbage Collection

What are the biggest misconceptions about Java Garbage Collection and how’s it really like?

When I was a kid my parents used to tell me that if I’ll not study well I’m going to be a garbage collector. Little did they know, garbage collection is actually kind of awesome. Maybe that’s why even in the Java world many developers misunderstand GC algorithms: How they work, how GC affects their application and what you can do about it. That’s why we’ve turned to Haim Yadid, a Java performance tuning expert, and put the Java performance tuning guide on the Takipi blog.

Continue Reading…

Java Performance Tuning

 

What’s going on under the hood of the JVM and how Garbage Collection affects Java performance?

The performance tuning world is a dangerous place, one JVM flag out of balance and things can quickly get hairy. For this reason, we’ve decided to turn to Haim Yadid, a Java performance tuning expert and the creator of mjprof, the monadic JVM profiler. In this post we’ll share some of his battle-tested insights and get a feel of how the internals of the JVM behave under stress.

Continue Reading…

New Java 8 Features

What are some of the most interesting additions to Java 8 since it was launched?

Java 8 recently celebrated its first birthday, with the main release coming just over a year ago now. That’s certainly worthy of a celebratory cupcake.

Continue Reading…

Google Guava

What are some of the lesser known features of Google Guava that every developer could use?

It’s one of the most popular libraries out there, it’s open source, you probably know it already, and it comes from a place where people play Quidditch as a real sport (At least on The Internship). It’s not the Hogwarts library from Harry Potter but it does have lots of spells up its sleeve: Google Guava contains a range of core Java libraries that were born internally at Google, battle-tested in production and publicly released. And it also had Optional before it appeared on Java 8.

The main focus of Guava is improving the workflow around common tasks with utilities that help write better, cleaner code, and be more productive. Most famous for its collections and caching capabilities, it contains many more useful yet little known features. For collections and caching it introduced improvements on the JDKs collection API and filled in the void of the missing (yet long awaited) JCache that was finally released last year. In this post I’d like to share with you some of Google Guava’s feature we like to use here at Takipi and some more interesting discoveries that we just made.

Note: Guava supports Java 6 and above.

Continue Reading…

Java Mission Control

“We love following Mikhail Vorontsov’s blog and getting his point of view on Java Performance related issues. We’ve been asked a few times how Takipi’s Java error analysis differs from Java Mission Control and Java Flight Recorder. So while the differences between the tools are pretty big (Mainly, JMC is mostly a desktop application, while Takipi was specifically designed for large-scale production environments) we felt this would be a good opportunity to add a comprehensive overview of JMC. 

Apart from Java Mission Control being a desktop application, the main difference is that with Takipi, you’re getting an always-on error analysis down to the variable values and actual code that caused each error. So where JMC gives great value in profiling, but stops at the stack trace level, Takipi dives into the actual code to help you reproduce and solve production bugs.

Another difference is working with distributed systems, JMC works on single machines, while Takipi’s dashboard displays multiple JVMs across different machines. So if you’re looking to monitor large scale production systems, give Takipi a try. However, if you’re looking for a great desktop profiling tool, JMC just might be your best option.”

- Alex Zhitnitsky, Takipi

Continue Reading…

Scala Days

Highlights from Scala Days @ San Francisco

Continue Reading…