Tue, 27 Sep 2016 11:01:15 GMT
Here’s the situation: At Threat Stack, we consume a torrent of security event data every day, and as many new customers come on board, the amount of data we need to ingest, transform, store, and retrieve just keeps growing. About a year ago, we implemented a caching layer to allow us to display more aggregated information to customers on our Dashboard, which was powered by ElasticSearch Aggregates.
Fortunately, our Ops team has given us the ability to metric almost anything, which enables us to predict and see the pressure we are putting on our cluster. With the aggregates from ElasticSearch, we are essentially trying to solve a counting problem, and therefore, we turned to another service we use internally: Apache Spark.
Tue, 27 Sep 2016 09:31:07 GMT
Our continuing make-believe story: You work in a team of developers, and some time ago, you took some code that was very useful to you (albeit somewhat simple), and you realized it might be resuable. You made it into a separate project, and later, you wrapped it in a simple command-line application. Some of your teammates saw it and suggested you should have it persist the data, which you did, also delivering round two of the improved command-line application.
Later on, other people either in your department, or elsewhere, asked if you could web-enable it, as they weren't "command-line savvy."
Tue, 27 Sep 2016 08:01:00 GMT
Our journey with Gradle started one and half years ago with this presentation. Everybody in the company just loved its expressive and easy-to-understand structure and realized that a plugin model was the wrong level of abstraction. Instead, language-based approaches were the right one in terms of their flexibility for the long term.
So it didn't take long for almost 50 members of the development team to change the whole build infrastructure with Gradle. Gradle doesn’t just throw away the foundation that other build tools brought. Instead, it builds up easily and more powerfully on top of others while remaining 100% compatible with them. Therefore, this made Gradle not an alternative but an upgrade for us.
Tue, 27 Sep 2016 07:00:01 GMT
Most of our day-to-day job is learned through mentorship and experience and not based upon scientific research. Once a dogma has permeated a significant minority of practitioners, it becomes very hard to challenge it.
Yet, in this post, I’ll attempt to not only argue that sometimes tests must be ordered, but I'll prove that in different use-cases.
Tue, 27 Sep 2016 05:31:00 GMT
Tue, 27 Sep 2016 04:31:00 GMT
As mentioned in Aggressive Road Map for Java EE 8, MVC 1.0 has been left out of the plans for Java EE 8.
The way I see it, and also have indications from several people I have talked with during JavaOne, the possible outcomes of this are:
Mon, 26 Sep 2016 08:01:00 GMT
Spring Boot is a technology from Pivotal, known for giving us the powerful Spring framework. With Spring Boot, they offer an easy way to set up a project and get it running in no time. They took the approach of valuing convention over configuration, meaning that you will spend a lot less time struggling with the setup and more time focusing on what is unique about your project. Along with having an embedded Tomcat, Jetty, or Undertow, a large number of possible the deployment issues have been eliminated, causing most applications to 'just run.'
Above all, Spring Boot is meant to make it easy to get a project running, starting all the way at the beginning by providing multiple ways to set up a Spring Boot project. Let's jump right into setting up our project and getting our 'Hello World'!
Mon, 26 Sep 2016 07:01:01 GMT
Global business, global software. The people who designed Java were forward-looking. They oriented this programming language towards international use from the beginning. Eminently portable, Java lends itself well to internationalization and the adaptation of texts, numbers, dates, currencies, and any other culturally dependent dimension. With better overall java internationalization comes easier localization for each particular language or country.
Internationalization (like usability, testing, security, and more) is best tackled at the beginning of the application design and development process. The later you leave it, the more expensive it becomes to engineer it in afterwards. But with everything that Java has to offer to help developers go global from the start, internationalization should be a snap, right?
Mon, 26 Sep 2016 06:01:00 GMT
In Java, whenever we assign an object reference to another, it is just a bit by bit copy of the memory address, so any changes made using first object reference will be reflected in others and vice versa.
Mon, 26 Sep 2016 05:01:00 GMT
No, this isn’t the word of God.
It isn’t the word of Jon Skeet/Martin Fowler/Jeff Atwood/Joel Spolsky (replace it with your favorite technologist) either.
Mon, 26 Sep 2016 00:49:34 GMT
Code smells are similar in concept to development-level anti-patterns. Sometimes, in our code, we unintentionally introduce code smells and make our design fragile.
Code smells, also known as a bad smell, in computer programming refer to any symptom in the source code of a program that possibly indicates a deeper problem.
Sun, 25 Sep 2016 05:01:00 GMT
Today we will finish (for now) our most recent iteration of our Shape Calculator component (or service, if you will). We have been on a long journey to this point. Once we are done, we will move onto:
Sat, 24 Sep 2016 07:01:04 GMT
I have been reading two great books, Object Thinking by David West and Clean Code by Robert C. Martin. In these two great books, the authors mention the phrase: “Everything is an object.” What caught my attention was that both express very different thoughts about this phrase. In his book, David West affirms that everything is an object and is a prerequisite if you want to be part of the object thinking culture. On the other hand, in his book, Robert C. Martin, says: “Mature programmers knows that the idea that everything is an object is a myth. Sometimes you really do want simple data structures with procedures operating on them”.
A bit of background of these two gentlemen. Robert C. Martin has written many books on software development, agile methodologies, and object oriented design and has founded Object Mentor, which is a company for mentoring and consulting on object oriented technologies. David West, Ph.D., is a consultant, educator and trainer in object oriented technologies. He founded and directed the Object Lab at the University of St. Thomas and cofounded the original Object Technology User Group.
Sat, 24 Sep 2016 05:01:04 GMT
Hopefully, you have been following along in this series of articles, and we are in the final stages of this iteration of a web-enabled Shape Calculator app. We have been pretending to enhance some in-house code that started out in your development team. I chose the Shape Calculator, but it could be anything.
Our first two rounds of the application were both command-line-interface and menu-driven.
Fri, 23 Sep 2016 11:01:14 GMT
As mentioned yesterday in Juergen’s blog post, the second milestone of Spring 5.0 introduced a new functional web framework. In this post, I will give more information about this framework.
We start with some excerpts from our sample application. Below is a reactive repository that exposes
Person objects. It is quite similar to a traditional, non-reactive repository, except that it returns
Flux where you would return a
List traditionally, and
Mono where you would return a
Mono is used as a completion signal: to indicate when the save has been completed. For more information on these Reactor types, refer to this blog post.
Fri, 23 Sep 2016 10:01:01 GMT
This blog presents instructions on how to quickly get started with Spring Boot Hello World with just one Java file and a Pom.xml.
Before getting to the files, make sure you have installed and configured the following:
Fri, 23 Sep 2016 09:01:01 GMT
In Part 1, we discussed the issue of resources not being cleaned up during shutdown and how to do this while dealing with the Root context and the Servlet context. If you want to actually try all this, check out the other article, as it has all the code.
We have our ShapeCalcServletContextListener that implements ServletContextListener, and we know that it has references to the two resources we are concerned about at shutdown:
Fri, 23 Sep 2016 07:31:01 GMT
One of the “pleasures” of having your own business is dealing with accounting.
Now, to survive, I tried a few things like:
Fri, 23 Sep 2016 06:31:01 GMT
First of all, I’d like to thank everyone who created issues, raised Pull Requests, provided feedback or just asked questions on StackOverflow. Especial thanks for early adopters since the previous Milestone 1. With their help, we have improved and fixed some issues with runtime flow registration.
Fri, 23 Sep 2016 05:01:15 GMT
While programming in Scala, we often come across a term called a functor. A functor is an extremely simple, but powerful concept. In this blog, we'll discuss that in more detail.
Theoretically, a functor is a type of mapping between categories. Given two categories, A and B, a functor, F, maps the objects or entities of A to the objects or entities of B. We can simply call it a function of objects or entities.