Feed aggregator

Cameron of Gartner talks DevOps – DevOps Days Austin

Javalobby Syndicated Feed - Thu, 25-Jun-15 22:30
Last month at DevOps Days Austin I did a series of interviews with a variety of speakers and attendees.  One of the attendees I chatted with was Cameron Haight of Gartner.  For the past five years Cameron has been writing about, and advising clients on, DevOps. Preview Text:  Last month at DevOps Days Austin I did a...
Categories: Java

From Design to Execution with JBoss BPM Suite & Signavio Process Editor

Javalobby Syndicated Feed - Thu, 25-Jun-15 22:00
Occasionally we are asked about JBoss BPM Suite integration with other products and layers in an enterprises architecture.We have published articles talking about how to achieve this with various aspects such as: Preview Text:  Occasionally we are asked about JBoss BPM Suite integration with other products and layers in an enterprises...
Categories: Java

The Definitive Guide to the Modern Database

Javalobby Syndicated Feed - Thu, 25-Jun-15 22:00
Editor's note: This list originally appeared as installments in a series posted by Dan Skatov. Read Part 1, 2 and 3. Preview Text:  No single DBMS excels in every single area; each is created based on compromises between different extremes. To gain a comprehensive view of the modern database environment, we propose several trade-offs to consider....
Categories: Java

OpenStack + Private Cloud = Ideal Habitat for Devops

Javalobby Syndicated Feed - Thu, 25-Jun-15 22:00
The use of OpenStack in the private cloud is invaluable for DevOps. It provides engineers the ability to innovate quickly and deal with uncertainty. It also maximizes existing infrastructure and provides a programmable, software-defined IaC. Openstack in the private cloud = agile development Preview Text:  The use of OpenStack in the private...
Categories: Java

Web Data Mining Services Give Business Intelligence to Your Start-up!

Javalobby Syndicated Feed - Thu, 25-Jun-15 22:00
Business sphere nowadays has become an extremely competitive arena. Dynamics change in a blink. Times have become highly unpredictable and hence; businesses today need to be agile while being equipped with reliable, accurate, relevant and actionable business intelligence. Preview Text:  Business sphere nowadays has become an extremely competitive...
Categories: Java

MongoDB University Alum Creates Start Up to Revitalize and Manage Indie-Movie Events

Javalobby Syndicated Feed - Thu, 25-Jun-15 22:00
Written by Daniel RiversMany of the largest and most sophisticated companies in the world rely on MongoDB, including over a third of the Fortune 100. In addition to established businesses, innovative start ups from around the world rely on the modern database, and put MongoDB at the heart of their data strategy. Preview Text:  This blog...
Categories: Java

The Agile Link Sheet (6/25 Edition)

Javalobby Syndicated Feed - Thu, 25-Jun-15 06:51
This is our first link sheet for the Agile Zone! This is meant to be a one-stop shop for introductions to several Agile methodlogies. Special thanks to Jori Lytter at polaroder.blogspot.fi for helping us find some top-quality links. The Basics Preview Text:  DZone's first edition of our bi-weekly edition of link sheets - All the...
Categories: Java

Extreme startup at codecentric

codecentric Blog - Thu, 25-Jun-15 06:00

Every developer has his own preferred language and software stack, and a lot of religious discussions are held about that topic. So a few weeks ago we decided to find out which is the best/most productive/most elegant stack to bootstrap an application. So Nils Wloka and I invited our fellow codecentric colleagues to play the extreme startup game. In this blog post we’d like to share our experiences with you.

The challenge

Extreme startup is a simple ruby application. After the game leader has started the server, the participants can register themselves by providing a URL (usually their local IP address). The game server then starts to send HTTP requests containing questions to the registered URLs. Players have to implement an application that is capable of answering the questions send by the game server. Every time no response or a wrong result is returned, players get minus points. Correct answers are rewarded by plus points. This is all visualized on a leader board, which we displayed via a beamer at the front of the conference room we were sitting in.

Extreme startup leader board

During the game more and more questions are added, so the players have to extend their application to gather more points. The nice thing about extreme startup is, that it only uses HTTP for interacting with the player, so every one can use the stack of their choice. We were pretty excited to find out which stack would perform best and there where some nice surprises. You can find all implementations on github.

…and the winner is: JavaScript

Ben Ripkens won the race for points with a setup consisting of ECMAScript6, node.js and express.js. He prepared a pretty sophisticated setup using nginx as reversed proxy with at least one instance of his application up and running all the time. Further more he used integration tests to make sure his changes would not introduce bugs into functionality he had already implemented. But in the end he concluded that all the setup has not been the reason for his win. Instead JavaScript’s eval() function made it relatively easy for him to process the questions send by the extreme startup server. You can review the details of his implementation in our github repository.

Closely followed by: Clojure

Ben Ripkens’ JavaScript based stack was closely followed by another dynamically typed language stack. Gerrit Hentschel used Clojure. Clojure’s REPL helped him to test drive new functionally very fast into his application. While being very productive he noticed some problems:

  • Tests executed in REPL are not persistent, which can lead to regressions later on
  • Testing only the handler function of a router can lead to errors in the routing logic itself

In the end he misinterpreted one of the questions, which cost him a lot of points. If it weren’t for that Clojure may even have beaten JavaScript. Gerrit’s implementation can be found in the github repository.

What about Java?

At codecentric we’re doing a lot of our projects with good ol’ Java. That was reflected by three players using a Java 8 + Spring Boot setup. What is to say about Java? Spring Boot really is a game changer when it comes to bootstraping applications. Aside from that it just works. It’s nothing special, not sky rocking but able to compete. The main problem for all Java programmers was Java’s clumsy RegEx and Pattern matching API which made it hard to evaluate equations from a string. Since this is the main challenge in the extreme startup game, languages like JavaScript and Clojure which can evaluate strings just like code have a big advantage here. The Spring Boot application implemented by Henning Treu can be found on github.

The exotic birds

Aside from the usual suspects, we had some really exotic and interesting stuff. Fabian Lange decided to use Java with OSGi and Apache Karaf. Remember OSGi? It’s the framework that promised to solve all our modularity and jar hell problems back in the early 2000’s. For some reason it never really had a breakthrough in business application development. Fabian’s setup included hot swapping new versions of his application after each successful maven build with almost zero downtime. In the end he had the same problems as the user Java guys: It’s hard to operate on strings in Java. Fabian’s setup can be found in our github repository.

Michael Lex decided to go all the way with the type system. His Scala and Akka setup, provided some nice goodies in the long run. Because of lacking experience with Akka, he lost a lot of points in the beginning and though could not compete for the first ranks. Further more very long compile and turn around times hindered him from developing really fast. The good parts of Scala are:

  • A very powerful pattern matching API
  • Testing, both unit tests and integration tests are easy to write
  • Scalas type system: if it compile, it works

Michael’s implementation can also be found on github.

Andreas Houben was the only one who decided for non-JVM stack. He used the extreme startup as an opportunity to learn an new language: Python + flask. Naturally he had to fiddle with a lot of beginners problems (like “how to respond to a GET request”). However, flask was extremely easy to setup and provided him with a fast turn around cycle. Like the Java programmers, Andreas had hard times getting the regular expressions right, which was a bit frustrating for him. So in the end his application wasn’t able to answer all the questions. To defend Python’s honor he replayed the game alone. So you can find his original and his later implementation on github.

What we learned

The extreme startup was great fun for all of us and there are a few take aways we’d like to share with you:

Developers always optimize – Since the extreme startup is all about gathering the most points, all players optimized towards this goal. For example Ben Ripkens used JavaScript’s eval() function, which is considered insecure and bad style. But in this particular situation it was the optimal way to get the most points. Gerrit Hentschel didn’t persist his tests but developed everything in Clojure’s REPL. This was a very good way to be successful in the extreme startup game, but we all know how persistent tests are for long term projects. Further more clean code practices became less important, for example…

Names don’t matter – Under the extreme stress, names don’t matter that much anymore. We hat a lot of test cases like “testFoo1″, “testFoo2″, “testFoo3″ and variable names like “bla”. This is because the extreme startup applications are like throw-away prototypes. Since we did not have to maintain the code for a longer than one evening, there was no need to find name that one could understand in a few weeks or even years.

Tests help (surprise!) – Tests helped the competitors on several levels. Since the game server decided when to send which question to which player, there was no easy was to do a manual test. Implementing unit tests helped to develop new functionality very fast, without the need to wait for the game server to send a question. Further more tests helped to make sure existing functionality did not break.

Integrationtests are important – A lot of trouble resulted from errors in the routing logic of the applications. In this regard it was very helpful to create integration tests for the whole application in contrast to unit tests that would only test the answering logic for single questions in separation.

Finally we can only repeat that the Extreme Startup game is really great fun. We can only recommend trying it out with your colleagues: https://github.com/rchatley/extreme_startup

The post Extreme startup at codecentric appeared first on codecentric Blog.

Categories: Agile, Java, TDD & BDD

Simplified API Monitoring for DevOps Teams

Javalobby Syndicated Feed - Wed, 24-Jun-15 23:00
 [This article was written by Laura Strassman] Preview Text:  AlertSite is now integrated with Ready! API. This means that developers, testers and operations teams can collaborate together onAPI qualityusing the same tests and metrics, simplifying configuration of monitoring assets and ultimately turning around performance problems in real...
Categories: Java

How to Debug Your Maven Build with Eclipse

Javalobby Syndicated Feed - Wed, 24-Jun-15 22:30
When running a Maven build with many plugins (e.g. the jOOQ or Flyway plugins), you may want to have a closer look under the hood to see what’s going on internally in those plugins, or in your extensions of those plugins. This may not appear obvious when you’re running Maven from the command line, e.g. via: Preview Text:  When running a...
Categories: Java

Quick tip: Exception Handling in Message Driven Beans

Javalobby Syndicated Feed - Wed, 24-Jun-15 22:30
Let’s do a quick review of exception handling with regards to Message Driven Beans.The entry point into a MDB is the overridden onMessage method. It does not provide any scope for throwing checked exceptions and as a result, you will need to propagate unchecked exceptions (subclass of java.lang.RuntimeException) from your code if you want to handle error scenarios. Preview...
Categories: Java

Spring Integration Kafka 1.2 is Available, With 0.8.2 Support and Performance Enhancements

Javalobby Syndicated Feed - Wed, 24-Jun-15 22:30
 [This article was written by Marius Bogoevici]We are pleased to announce the release of Spring Integration Kafka 1.2.This new release provides a couple of major improvements and upgrades over the previous versions: Preview Text:  We are pleased to announce the release of Spring Integration Kafka 1.2. Legacy ...
Categories: Java

What's Coming with JSF 2.3?

Javalobby Syndicated Feed - Wed, 24-Jun-15 22:00
There seems to be a good deal of excitement in the Java EE community around the new MVC specification. This is certainly great and most understandable. Some (perhaps more established) parts of the Java EE community has in the meanwhile been more quietly contributing to the continuing evolution of JSF 2.3. So what is in JSF 2.3? The real answer is that it depends on what the JSF community needs. ...
Categories: Java

Create a Maven archetype

Javalobby Syndicated Feed - Wed, 24-Jun-15 21:00
After creating our project structures from the basic maven archetypes since starting to use Maven I thought it was time to start automating the process. It wasn't too painful but not quite as straight forward as I hoped either so I thought it was worth writing an article about my experience. Preview Text:  This is my experience of creating a Maven...
Categories: Java

Why is Git better than Mercurial?

Javalobby Syndicated Feed - Wed, 24-Jun-15 21:00
  Preview Text:  We researched the topic if Git is better than Mercurial and if it, why? Legacy Sponsored:  unsponsored
Categories: Java

Investing in Your Infrastructure

Javalobby Syndicated Feed - Wed, 24-Jun-15 21:00
Having mentored and invested in startups I have come to learn what works and doesn’t websites. The reality of getting out of startup mode and scaling takes vision and the ability to anticipate how you may need to pivot. There are two main reasons why startups do not scale. The first is a lack of experience and mentorship. This is closely followed by a lack of a working capital.  An...
Categories: Java

How To Ensure Application Quality with Vendor Management Vigilance

Javalobby Syndicated Feed - Wed, 24-Jun-15 21:00
Hear Stephanie Moore, Vice President and Principal Analyst at Forrester, discuss a major challenge that 48% of IT executives say they face with existing outsourcing relationships -- poor quality. Preview Text:  Hear Stephanie Moore, Vice President and Principal Analyst at Forrester, discuss a major challenge that 48% of IT executives say they face...
Categories: Java

7 Things I Didn’t Expect to Hear at Gartner’s IT Ops Summit

Javalobby Syndicated Feed - Wed, 24-Jun-15 06:26
Last week’s Gartner IT Operations Strategies & Solutions Summit in Orlando, Fla., was exactly what you’d expect—a place to talk about the IT operations issues impacting some of the largest companies in the world. Even so, there were a few interesting surprises. Among them: Preview Text:  Last week’s Gartner IT Operations...
Categories: Java

Literate Programming and GitHub

Javalobby Syndicated Feed - Wed, 24-Jun-15 06:20
I remain captivated by the ideals of Literate Programming. Preview Text:  I remain captivated by the ideals of Literate Programming. My fork of PyLit (https://github.com/slott56/PyLit-3) coupled with Sphinx seems to handle LP programming in a very elegant way, and it works like this. Legacy Sponsored:  ...
Categories: Java

Writing a Download Server Part I: Always Stream, Never Keep Fully in Memory

Javalobby Syndicated Feed - Tue, 23-Jun-15 23:00
Downloading various files (either text or binary) is a bread and butter of every enterprise application. PDF documents, attachments, media, executables, CSV, very large files, etc. Almost every application, sooner or later, will have to provide some form of download. Downloading is implemented in terms of HTTP, so it's important to fully embrace this protocol and take full advantage of it....
Categories: Java

Thread Slivers eBook at Amazon

Syndicate content