The month of July was a whole lot of traveling– buses, trains, planes and even a few ferries! Now that I’m back to reality I want to share an important event in the life of RebelLabs.
Last week on the vJUG, our very own Oleg Shelajev, head of RebelLabs gave a session called Flavors of Concurrency. It’s an extremely good session which Oleg has given at various conferences and it was time to make it virtual! In this session, Oleg looked at what it means to run in a concurrent fashion, looking at depth into the different models of achieving concurrent code in Java. The session actually came from a blog post which Oleg wrote for RebelLabs back in December 2014 called Flavors of Concurrency in Java: Threads, Executors, ForkJoin and Actors, which is still very relevant today, so make sure you check it out.
Last week the Virtual JUG viewers were lucky enough to be treated to a session about software resilience by one of the most accomplished speakers on the topic. Jonas Boner, the founder and CTO of Typesafe, the original author of the Akka framework, and Java Champion has presented his first vJUG session, titled “Resilience is by Design”. The main focus of the session was the inevitability of failures in large and complex software systems. The natural conclusion is that we, as software developers, have to embrace failure and understand how to design systems that bounce back from failure so not to suffer from them.
Android & Java both have quite similar APIs. Naturally, the benefit of Android & Java’s APIs being similar is that it makes it possible to develop frameworks and libraries that work on both platforms. This blogpost takes a look at seven Android libraries which Java developers should at least know about. Also, it’s a good post for Android developers to be aware of too, just in case there are some libraries you may not be aware of.
One topic that fascinates most software engineers throughout their careers is understanding which is the best programming language. But how should we comparing two different languages? We did try previously in the Developer’s Adventurous Guide to JVM languages, where we looked at and compared a fleet of JVM languages including Scala, Groovy, Clojure. However, this post will be quite different from that kind of comparison. We’ll look at the Erlang VM and the Java VM and take note of similarities and differences without trying to perform an apples to apples comparison and say which is best or which we prefer.
So why Erlang? Well, ever since I saw the following comic strip about writing distributed map-reduce queries in Erlang, I’ve been fascinated by the language.
Quoting the language authors: “Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability”. Since its inception it has had a solid understanding of the problems it has intended to solve. Any design trade-offs could have been solved by focusing on a single goal. This simplicity makes the language incredibly purposeful.
The question we ask now is whether we can take something we have written in a very opinionated language like Erlang and see how easy it is to write in a very mainstream, general purpose language like Java.
I do firmly believe every developer who’s worth their salt should have at least some notion of how to work with the command line, if only because some tools only exist in CLI variants.
So my advice would be that you should learn how to use tools at the command line, as it will have a positive impact on your happiness and productivity at least for half a century!
Anyway, in this post I want to share with you four-five lesser-known yet pretty awesome command line gems. As an added bonus I will also advise the proper way to use shell under Windows, which is a pretty valuable bit of knowledge in itself.
The second VirtualJUG session in August saw Gleb Smirnov give his first session on the vJUG with a hardcore technical look at concurrency with “Java Concurrency Under the Covers”. And yeh, we went deep under the covers! In the session Gleb looks at concurrency issues and why we need a Java Memory Model.
Continue reading to see what we learned from the session.
The vJUG ran a special session on Minecraft Modding on Saturday 15th August. Why is it special? Well it’s the first session that’s been run on a Saturday, it’s the first session that’s being aimed at getting kids interested in technology, and it’s the first session that’s been given by a 12 year old! The Minecraft Modding session, heavily influenced by the great work Devoxx4Kids do, was delivered by Aditya Gupta and Arun Gupta. Yep, you guessed it, Aditya is Arun’s son!
We often dream that things will run faster, or happen sooner than they do so they’re not as annoying. It’s particularly painful, when you have little or no control over the thing you’re waiting for. Time seems to stop and every second feels like an eternity. Multiply that by 10 add 5, divide by 2 and square it. You now have a measure of how annoying this can feel. An example of such an annoyance might be the build time of your project. Perhaps you use Maven as your a build tool of choice? Then you most probably know this feeling.
Well, the good thing is that you’re reading this post! In this, I’ll try to explain some of the most common reasons as to why Maven build is taking longer than it should and figure out how it can be improved. So, if you’re one of those people who counts the seconds in a slow Maven build, keep reading, this should help you. Or at least will it will line up your thoughts to help figure out how to improve it.
So here are some the solutions to the common reasons why your Maven build is slow.
We’re in luck again, the last VirtualJUG session in July was an excellent presentation “Value in Relationships – How Graphs Make Databases Fun Again” by Michael Hunger.