<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on paluch.biz</title><link>http://paluch.biz/post/</link><description>Recent content in Posts on paluch.biz</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 08 Nov 2025 19:03:24 +0000</lastBuildDate><atom:link href="http://paluch.biz/post/index.xml" rel="self" type="application/rss+xml"/><item><title>Music</title><link>http://paluch.biz/2025/01/03/music/</link><pubDate>Fri, 03 Jan 2025 21:51:20 +0000</pubDate><guid>http://paluch.biz/2025/01/03/music/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/about/#_arts_traits_hobbies_work"&gt;Music 🎹 has been entangled with my existence&lt;/a&gt; for as long as I can recall, though to say it has always been a harmonious relationship would be a lie. My earliest memory of it, a pivotal one, emerges from the fog of youth. A birthday, its precise date lost to me now, when my aunt gifted me an album - &lt;em&gt;&lt;a href="https://www.amazon.com/-/en/Expedicion-Dune/dp/B000006X6M"&gt;Dune: Expedicion&lt;/a&gt;&lt;/em&gt;. This gift, innocuous in appearance, became a harbinger of something larger. It seeded a journey whose direction I could not foresee, though it loomed over me ever since.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Introducing Code to reduce Code</title><link>http://paluch.biz/2021/01/26/introducing-code-to-reduce-code/</link><pubDate>Tue, 26 Jan 2021 10:30:27 +0000</pubDate><guid>http://paluch.biz/2021/01/26/introducing-code-to-reduce-code/</guid><description>&lt;div class="quoteblock"&gt;
&lt;blockquote&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;How adding a functional utility helps to avoid code duplications and leads to more readable code.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;In &lt;a href="https://github.com/spring-projects/spring-data-redis"&gt;Spring Data Redis&lt;/a&gt;, we support multiple Redis clients – Jedis and Lettuce.&lt;br/&gt;
Commands can be invoked either directly, in a transaction, or using pipelining.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Direct commands get invoked – as the name probably reveals – directly by calling a client method and returning the result. In some cases, results require post-processing because the Redis driver reports a &lt;code&gt;Long&lt;/code&gt; while Spring Data Redis would like to return &lt;code&gt;Boolean&lt;/code&gt; or the driver returns a driver-specific type that requires conversion in a Spring Data type.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Carrier Kernel Thread Pinning of Virtual Threads (Project Loom)</title><link>http://paluch.biz/2020/09/28/carrier-kernel-thread-pinning-of-virtual-threads-project-loom/</link><pubDate>Mon, 28 Sep 2020 14:27:16 +0000</pubDate><guid>http://paluch.biz/2020/09/28/carrier-kernel-thread-pinning-of-virtual-threads-project-loom/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In my &lt;a href="http://paluch.biz/2020/09/25/experimenting-with-project-loom-eap-and-spring-webmvc/"&gt;previous blog post&lt;/a&gt; I started an experiment with using Project Loom. The post outlined the first steps to make use of virtual Threads on a best-effort basis (i.e., without rewriting the entire libraries involved, instead fixing issue by issue until it works™).&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Experimenting with Project Loom EAP and Spring WebMVC</title><link>http://paluch.biz/2020/09/25/experimenting-with-project-loom-eap-and-spring-webmvc/</link><pubDate>Fri, 25 Sep 2020 13:14:22 +0000</pubDate><guid>http://paluch.biz/2020/09/25/experimenting-with-project-loom-eap-and-spring-webmvc/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;This article walks you through a experiment that uses a Spring Boot application with &lt;a href="https://wiki.openjdk.java.net/display/loom/Main"&gt;Virtual Threads&lt;/a&gt;. Having access to early access builds is the perfect opportunity to take a look what it takes to use virtual threads as worker threads. With all customizations in place, we issue a few request to verify that our application is running. Finally, we put a bit of load onto the application to see how memory consumption and the number of kernel threads develop over time.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;Follow-up post:&lt;/strong&gt; &lt;a href="http://paluch.biz/2020/09/28/carrier-kernel-thread-pinning-of-virtual-threads-project-loom/"&gt;Carrier Kernel Thread Pinning of Virtual Threads (Project Loom)&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Data Classes Considered Harmful</title><link>http://paluch.biz/2019/07/03/data-classes-considered-harmful/</link><pubDate>Wed, 03 Jul 2019 12:34:58 +0000</pubDate><guid>http://paluch.biz/2019/07/03/data-classes-considered-harmful/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;This blog post explains the motivation behind removing Project Lombok from one of the projects to which I contribute. It reflects my personal opinion and is not discouraging particular technologies.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;About three years ago, I got to know &lt;a href="https://projectlombok.org/"&gt;Project Lombok&lt;/a&gt;, a library that spices up Java code. I liked it from the beginning as it contributes so much useful functionality. I work a lot with entities (data classes) and value objects, so it does not come as a surprise that &lt;code&gt;@Data&lt;/code&gt; or Kotlins &lt;code&gt;data class&lt;/code&gt; are very convenient. You get more bang for the buck – literally.&lt;br/&gt;
I’m mentioning Kotlin here because it shares some of the properties that we also get from Lombok.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Reactive Relational Database Transactions</title><link>http://paluch.biz/2019/05/27/reactive-relational-database-transactions/</link><pubDate>Mon, 27 May 2019 14:30:31 +0000</pubDate><guid>http://paluch.biz/2019/05/27/reactive-relational-database-transactions/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Spring Framework announced recently to &lt;a href="https://spring.io/blog/2019/05/16/reactive-transactions-with-spring"&gt;ship with support for reactive transaction management&lt;/a&gt;.&lt;br/&gt;
Let’s take an in-depth look at how this works for R2DBC, the reactive specification for SQL database access.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>R2DBC Tour: Mid- and North-Germany</title><link>http://paluch.biz/2019/04/07/r2dbc-tour-mid-and-north-germany/</link><pubDate>Sun, 07 Apr 2019 16:47:23 +0000</pubDate><guid>http://paluch.biz/2019/04/07/r2dbc-tour-mid-and-north-germany/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/2018/11/04/r2dbc-java-user-group-tour/"&gt;R2DBC Tour&lt;/a&gt; took place in Mid- and North-parts of Germany. R2DBC standardizes reactive integrations with SQL databases as &lt;a href="https://github.com/r2dbc"&gt;Open Source initiative&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Reactive Relational Database Connectivity (R2DBC) started out as idea to see what’s possible when thinking about reactive programming and SQL databases. Since the last months, R2DBC grew beyond that idea. It inspired driver maintainers and client library authors as common language: A specification for drivers and an interface for library authors so they can build client libraries on top of a vendor-independent SPI. Client libraries are tools that we as application developers need to keep productivity high and not to solve problems that are solved already.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>R2DBC Tour has just begun</title><link>http://paluch.biz/2019/03/29/r2dbc-tour-has-just-begun/</link><pubDate>Fri, 29 Mar 2019 09:02:22 +0000</pubDate><guid>http://paluch.biz/2019/03/29/r2dbc-tour-has-just-begun/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/2018/11/04/r2dbc-java-user-group-tour/"&gt;Last year&lt;/a&gt; I announced the R2DBC Java User Group and recently I started the tour visiting various user groups and conferences. Reactive Relational Database Connectivity lifts a roadblock when integrating with SQL databases. It’s an Open Source standardized API across multiple database drivers and an ongoing specification effort hosted on &lt;a href="https://github.com/r2dbc"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Reactive Programming and Relational Databases</title><link>http://paluch.biz/2018/12/07/reactive-programming-and-relational-databases/</link><pubDate>Fri, 07 Dec 2018 15:42:45 +0000</pubDate><guid>http://paluch.biz/2018/12/07/reactive-programming-and-relational-databases/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Imperative code eats threads at the pace of incoming requests while &lt;a href="https://a16z.com/2016/08/20/why-software-is-eating-the-world/"&gt;Software is eating the world&lt;/a&gt;. This post discusses the assumptions for reactive programming on the JVM and what this means for integrations – in particular, relational databases.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The motivation to come up with a post is &lt;a href="https://trends.google.de/trends/explore?date=today%205-y&amp;amp;q=reactive%20java"&gt;the constant increase in reactive programming adoption&lt;/a&gt; while some major building blocks are not yet available – in particular, the question: What about relational databases?&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>R2DBC Java User Group Tour</title><link>http://paluch.biz/2018/11/04/r2dbc-java-user-group-tour/</link><pubDate>Sun, 04 Nov 2018 21:43:13 +0000</pubDate><guid>http://paluch.biz/2018/11/04/r2dbc-java-user-group-tour/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;R2DBC is an endeavor to bring a reactive programming API to relational data stores and stands for Reactive Relational Database Connectivity. It was first announced at SpringOne Platform 2018. I’m happy to announce my &lt;a href="http://r2dbc.io/"&gt;R2DBC&lt;/a&gt; tour across Java User Groups in Germany, Switzerland, and Austria. I will explain what R2DBC is, how it was founded and what to expect from a reactive relational database integration. We will speak about the SPI, various drivers, and about Spring.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>A first look at Redis Streams and how to use them with Java</title><link>http://paluch.biz/2018/05/23/a-first-look-at-redis-streams-and-how-to-use-them-with-java/</link><pubDate>Wed, 23 May 2018 17:20:43 +0000</pubDate><guid>http://paluch.biz/2018/05/23/a-first-look-at-redis-streams-and-how-to-use-them-with-java/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Redis Streams have made it into Redis’ &lt;code&gt;unstable&lt;/code&gt; branch since the beginning of this year, and the first clients start with the adoption of Redis Streams APIs. That makes it an excellent time to take a look what Redis Streams provide and how you can use them from a client perspective.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client Lettuce 5 GA released</title><link>http://paluch.biz/2017/09/28/redis-client-lettuce-5-ga-released/</link><pubDate>Thu, 28 Sep 2017 13:23:48 +0000</pubDate><guid>http://paluch.biz/2017/09/28/redis-client-lettuce-5-ga-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;After a 13 months development phase and 208 solved tickets, it is my pleasure to announce general availability of Lettuce 5.0. This is a major release coming with several breaking changes and new interesting features and Java 9 compatibility.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Get the release from Maven Central&lt;/p&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre class="rouge highlight"&gt;&lt;code data-lang="xml"&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;io.lettuce&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lettuce-core&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;5.0.0.RELEASE&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;or download the &lt;a href="https://github.com/lettuce-io/lettuce-core/releases/tag/5.0.0.RELEASE"&gt;release bundle from GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Conferences</title><link>http://paluch.biz/2017/08/22/conferences/</link><pubDate>Tue, 22 Aug 2017 11:43:07 +0000</pubDate><guid>http://paluch.biz/2017/08/22/conferences/</guid><description>&lt;div class="sect1"&gt;
&lt;h2 id="_my_upcoming_events"&gt;My upcoming events&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Oct 8th 2019&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;SpringOne Platform&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Building event-driven Java applications using Redis Streams&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_past_events"&gt;Past events&lt;/h3&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;June 24th 2019&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;Devoxx PL&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="https://cfp.devoxx.pl/talk/BTM-3733/Reactive_Relational_Database_Connectivity"&gt;Reactive Relational Database Connectivity&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;June 6th 2019&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;JUG Munich&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Reactive Relational Database Connectivity&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;May 23 2019&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;Spring Meetup Paris&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Reactive Relational Database Connectivity&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;May 14 2019&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;Java User Group Sevillia&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="https://www.meetup.com/de-DE/SVQJUG/events/256148846/"&gt;Reactive Relational Database Connectivity&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;May 8 2019&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;Devoxx UK&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="https://devoxxuk19.confinabox.com/talk/SNC-8613/Building_event-driven_Java_applications_using_Redis_Streams"&gt;Building event-driven Java applications using Redis Streams&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;April 25 2019&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.11.1 released</title><link>http://paluch.biz/2017/03/23/logstash-gelf-1-11-1-released/</link><pubDate>Thu, 23 Mar 2017 08:22:39 +0000</pubDate><guid>http://paluch.biz/2017/03/23/logstash-gelf-1-11-1-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released today logstash-gelf 1.11.1. This release fixes a bunch of bugs and brings minor enhancements.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Lettuce is now lettuce.io</title><link>http://paluch.biz/2017/03/22/lettuce-is-now-lettuce-io/</link><pubDate>Wed, 22 Mar 2017 20:34:00 +0000</pubDate><guid>http://paluch.biz/2017/03/22/lettuce-is-now-lettuce-io/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;The Lettuce driver project graduates after three years now to a top-level project.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="imageblock"&gt;
&lt;div class="content"&gt;
&lt;img src="http://paluch.biz/images/2017/03/lettuce-green-text%403x.png" alt="Lettuce"/&gt;
&lt;/div&gt;
&lt;div class="title"&gt;Figure 1. Lettuce&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;It has been three years now since I took over the Lettuce driver project whereas I wanted initially just fix a bug – so to say scratch my own itch I had in an other project. I published Lettuce under &lt;code&gt;biz.paluch.redis:lettuce&lt;/code&gt; in June 2014 for the first time, and so I became the maintainer of Lettuce. The original driver was used to be quite popular until its maintenance stopped in 2013 and adoption of my fork began slowly.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Heckenlights plays this season the last time</title><link>http://paluch.biz/2016/12/21/heckenlights-plays-this-season-the-last-time/</link><pubDate>Wed, 21 Dec 2016 08:51:01 +0000</pubDate><guid>http://paluch.biz/2016/12/21/heckenlights-plays-this-season-the-last-time/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Heckenlights is an interactive Christmas lights installation that can be controlled online by just visiting &lt;a href="http://heckenlights.org"&gt;heckenlights.org&lt;/a&gt;. Heckenlights consists of over 3000 LED lights that are controlled via MIDI in 12 tracks. Each MIDI note switches the lights on and off.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;It all started in 2012 with the idea to control a Relay with MIDI and lead to what it is today. Now, this season is the last one for Heckenlights. It’s been a great fun building Heckenlights and even more stepping outside, opening &lt;a href="http://heckenlights.org"&gt;heckenlights.org&lt;/a&gt; on a smartphone and triggering the lights to play.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Command Interfaces: Approaching Redis with dynamic APIs in Java</title><link>http://paluch.biz/2016/10/17/command-interfaces-approaching-redis-with-dynamic-apis-in-java/</link><pubDate>Mon, 17 Oct 2016 15:44:49 +0000</pubDate><guid>http://paluch.biz/2016/10/17/command-interfaces-approaching-redis-with-dynamic-apis-in-java/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Redis is a data store supporting over 190 documented commands and over 450 command permutations. The community supports actively Redis development; each major Redis release comes with new commands. This year Redis was opened up for 3rd party vendors to develop modules that extend Redis functionality. Command growth and keeping track with upcoming modules are challenging for client developers and Redis users.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 4.2.2.Final released</title><link>http://paluch.biz/2016/08/19/redis-client-lettuce-4-2-2-final-released/</link><pubDate>Fri, 19 Aug 2016 11:36:35 +0000</pubDate><guid>http://paluch.biz/2016/08/19/redis-client-lettuce-4-2-2-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I just released lettuce 4.2.2.Final.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This is a bugfix release that fixes several issues. Updating is recommended for&lt;br/&gt;
setups with frequent reconnects or frequent cluster topology changes during runtime.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Reusable GZIP Streams</title><link>http://paluch.biz/2016/08/14/reusable-gzip-streams/</link><pubDate>Sun, 14 Aug 2016 21:00:13 +0000</pubDate><guid>http://paluch.biz/2016/08/14/reusable-gzip-streams/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;This post explains the use of a pooled GZIP OutputStream. The initial motivation were performance measurements of the GZIP’ing inside of &lt;a href="https://github.com/mp911de/logstash-gelf"&gt;logstash-gelf&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Managing Secrets with Vault</title><link>http://paluch.biz/2016/06/30/managing-secrets-with-vault/</link><pubDate>Thu, 30 Jun 2016 19:46:44 +0000</pubDate><guid>http://paluch.biz/2016/06/30/managing-secrets-with-vault/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Passwords, API keys and confidential data fall into the category of secrets. Storing secrets the secure way is a challenge with limiting access and a true secure storage. Let’s take a look at &lt;a href="https://www.hashicorp.com/"&gt;Hashicorp&lt;/a&gt; &lt;a href="https://www.vaultproject.io/"&gt;Vault&lt;/a&gt; and how you can use it to store and access secrets.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Blue/Green Deployments to Pivotal Cloud Foundry using Gradle</title><link>http://paluch.biz/2016/05/21/blue-green-deployments-to-pivotal-cloud-foundry-using-gradle/</link><pubDate>Sat, 21 May 2016 03:51:46 +0000</pubDate><guid>http://paluch.biz/2016/05/21/blue-green-deployments-to-pivotal-cloud-foundry-using-gradle/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Blue/Green deployments are a method of deploying with zero downtime. This is possible on Pivotal’s CloudFoundry using either the CLI, &lt;a href="http://docs.run.pivotal.io/buildpacks/java/build-tool-int.html"&gt;Maven, or Gradle&lt;/a&gt;. Matt Stine &lt;a href="http://www.mattstine.com/2013/07/10/blue-green-deployments-on-cloudfoundry/"&gt;wrote earlier&lt;/a&gt; on this topic how to do blue/green deployments using the CLI.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>My JavaLand 2016 Summary</title><link>http://paluch.biz/2016/03/10/my-javaland-2016-summary/</link><pubDate>Thu, 10 Mar 2016 09:14:46 +0000</pubDate><guid>http://paluch.biz/2016/03/10/my-javaland-2016-summary/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;The last two days, 08.03 - 09.03.2016, I attended JavaLand 2016. I was lucky having a talk about „What’s New in CDI 2.0“ and it was great for me. This year JavaLand came up with a Newcomer track for speakers that didn’t speak at a larger conference before. We were 10 speakers, each having a 20-minute slot.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This year JavaLand Keynote was more of an overview of the conference announcing 109 talks with over 390 submissions and about 30 Newcomer submissions of which 10 were accepted. Over 800 people attended the keynote.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Iterate over all keys in a Redis Cluster</title><link>http://paluch.biz/2016/03/04/iterate-over-all-keys-in-a-redis-cluster/</link><pubDate>Fri, 04 Mar 2016 16:39:02 +0000</pubDate><guid>http://paluch.biz/2016/03/04/iterate-over-all-keys-in-a-redis-cluster/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Redis provides a neat command to iterate over all keys on a node. It’s the &lt;code&gt;SCAN&lt;/code&gt; command that is used to scan over keys and to return a cursor to resume then the scanning from the cursor position. Complexity comes in when using Redis Cluster. In the previous scenario, all keys are located on one Redis node. With Redis Cluster keys are spread over some nodes.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis transactions</title><link>http://paluch.biz/2016/02/16/redis-transactions/</link><pubDate>Tue, 16 Feb 2016 11:02:25 +0000</pubDate><guid>http://paluch.biz/2016/02/16/redis-transactions/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Redis transactions allow to group multiple commands and to execute them sequentially. The whole transactional state is isolated from other users and becomes visible once a transaction is committed.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;A Redis transaction is different from transactions in, let’s say, relational databases. A Redis transaction feels more like a queue/stack of commands because commands are queued and the execution is deferred. This is true for reads and writes. The real surprise is the read commands because any return value is returned only upon transaction execution.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Hello, Pivotal</title><link>http://paluch.biz/2016/02/01/hello-pivotal/</link><pubDate>Mon, 01 Feb 2016 06:06:07 +0000</pubDate><guid>http://paluch.biz/2016/02/01/hello-pivotal/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I consider myself very lucky for contributing to the open source space. Open source is one of the main building blocks of our digital world. For me, contributing is sharing, and sharing is giving back. I started contributing in early 2011. Transparency, quality, and purpose are my main reasons for my open source involvements. That is how I got in touch with the Spring Data team.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.4 and 4.1 Final released</title><link>http://paluch.biz/2016/01/29/redis-client-lettuce-3-4-and-4-1-final-released/</link><pubDate>Fri, 29 Jan 2016 20:42:38 +0000</pubDate><guid>http://paluch.biz/2016/01/29/redis-client-lettuce-3-4-and-4-1-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I just released lettuce 3.4.Final and lettuce 4.1.Final. You can find the full details about 3.4.Final and 4.1.Final on Github.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;These release contain numerous features and bugfixes. Lettuce introduces reusable client-resources, an EventBus, client metrics, and support for newly introduced commands. This versions work with Redis 3.2 RC3 but Redis expects a change in the format of CLUSTER NODES. So watch out for a new release of lettuce as soon as Redis 3.2 RC4 or a final is released.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Geometric Brownian motion with Java</title><link>http://paluch.biz/2015/12/22/geometric-brownian-motion-with-java/</link><pubDate>Tue, 22 Dec 2015 15:14:41 +0000</pubDate><guid>http://paluch.biz/2015/12/22/geometric-brownian-motion-with-java/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;The Wiener process is a continuous-time stochastic process named in honor of Norbert Wiener. It’s commonly used to represent noise or financial development with a random component.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The geometric brownian motion can be calculated to visualize certain bounds (in quantiles) to hint about the absolute range.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>MIDI and Live Video Streaming at Heckenlights</title><link>http://paluch.biz/2015/12/01/midi-and-live-video-streaming-at-heckenlights/</link><pubDate>Tue, 01 Dec 2015 06:45:40 +0000</pubDate><guid>http://paluch.biz/2015/12/01/midi-and-live-video-streaming-at-heckenlights/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;At its heart, Heckenlights relies on MIDI and Live Video Streaming technologies to bring the live experience to website visitors. Let me tell you today how MIDI and Live Video Streaming is done at Heckenlights.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Halloween on Arduino Aftermath</title><link>http://paluch.biz/2015/11/04/halloween-on-arduino-aftermath/</link><pubDate>Wed, 04 Nov 2015 05:47:56 +0000</pubDate><guid>http://paluch.biz/2015/11/04/halloween-on-arduino-aftermath/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/images/2015/11/IMG_1056.jpg"&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2015/11/IMG_1056.jpg" alt="/images/2015/11/IMG_1056"/&gt;&lt;/span&gt;&lt;/a&gt; The plan for this year’s Halloween: Built a scary thingy based on Arduino. Halloween is over now.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;I built an Arduino-backed jack-o&amp;#39;-lantern with LED matrix panel eyes, an ultrasonic ranging sensor for the nose and a sound module to play scary Halloweenish sounds. It is impressive to see the whole thing assembled. They eyes move around, the thing can go into sleep if no one is around and wake if someone comes close to the pumpkin.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.3.1 and 4.0 Final released</title><link>http://paluch.biz/2015/10/02/redis-client-lettuce-3-3-1-and-4-0-final-released/</link><pubDate>Fri, 02 Oct 2015 13:48:28 +0000</pubDate><guid>http://paluch.biz/2015/10/02/redis-client-lettuce-3-3-1-and-4-0-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I just released lettuce &lt;a href="https://github.com/mp911de/lettuce/releases/tag/3.3.1.Final"&gt;3.3.1.Final&lt;/a&gt; and lettuce 4.0.Final. I’m going to tell you in this post more about 4.0. You can find the full details about &lt;a href="https://github.com/mp911de/lettuce/releases/tag/3.3.1.Final"&gt;3.3.1.Final&lt;/a&gt; and &lt;a href="https://github.com/mp911de/lettuce/releases/tag/4.0.Final"&gt;4.0.Final&lt;/a&gt; on Github.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;lettuce 4.0 is a major release that introduces numerous changes like stateful connections, the reactive API and many more. Lettuce 4.0 includes all features from lettuce 3.3.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;Highlights of lettuce 4.0.Final&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Reactive API&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stateful connections&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cross-slot command execution&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node Selection API/Execution of commands on multiple cluster nodes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ReadFrom Settings/Redis Cluster slave reads&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Custom commands&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This release contains some breaking changes. You may want to consult the wiki at &lt;a href="https://github.com/mp911de/lettuce/wiki/Migration-from-3.x-to-4.x"&gt;Migration from 3.x to 4.x&lt;/a&gt; to check the migration guide.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Disque Client spinach 0.2 released</title><link>http://paluch.biz/2015/09/25/disque-client-spinach-0-2-released/</link><pubDate>Fri, 25 Sep 2015 08:22:43 +0000</pubDate><guid>http://paluch.biz/2015/09/25/disque-client-spinach-0-2-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released &lt;a href="https://github.com/mp911de/spinach"&gt;spinach&lt;/a&gt; 0.2 today. &lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/external/github-emoji/1f422.png" alt="/images/external/github-emoji/1f422"/&gt;&lt;/span&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/external/github-emoji/1f422.png" alt="/images/external/github-emoji/1f422"/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This release addresses minor issues and allows to use lettuce 3.3.Final. It adds support for more Disque commands and eases creation of a DisqueURI.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>The Full Stack Developer</title><link>http://paluch.biz/2015/09/11/the-full-stack-developer/</link><pubDate>Fri, 11 Sep 2015 09:15:24 +0000</pubDate><guid>http://paluch.biz/2015/09/11/the-full-stack-developer/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2015/09/4263328317_0025dbf23d_o-scaled.jpg" alt="/images/2015/09/4263328317_0025dbf23d_o-scaled"/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;I read &lt;a href="https://blog.growth.supply/the-full-stack-developer-is-a-myth-4e3fb9c25867"&gt;The full stack developer is a myth&lt;/a&gt; story written by &lt;a href="https://twitter.com/hadsie"&gt;Scott Hadfield&lt;/a&gt; the other day. Once I got through the post, I realized a couple of things. The first major point is, there’s no uniform understanding what full stack developer means. More issues are the views of the commenters to the article and the opinion of companies mentioned in the article. It shares my experience how companies deal with so-called full stack developers. This article will clarify that view. Let me give you some context before I come back to full stack developers.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>ScareOS: Arduino Halloween Pumpkin How-to</title><link>http://paluch.biz/2015/09/07/scareos-arduino-halloween-pumpkin-how-to/</link><pubDate>Mon, 07 Sep 2015 07:29:44 +0000</pubDate><guid>http://paluch.biz/2015/09/07/scareos-arduino-halloween-pumpkin-how-to/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2015/09/IMG_1327.jpg" alt="/images/2015/09/IMG_1327"/&gt;&lt;/span&gt; Muhahahaha! Aaaaargh! Trick or Treat. Be so sweet. Give me something good to eat.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;I wanted to build something cool and scary for Halloween. Here in Germany Helloween is just about to become a trend. Meet the ScareOS, a thingy to spice up Halloween.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Moving eyes (object tracking perhaps in version 2 - have to figure out how to integrate motion tracking)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Discovers if someone is around by using a ranging sensor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Plays Halloween sounds when it’s awake&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sleep state if no one is around for a while&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Whines when someone comes too close&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>Reading from master, slave or nearest Redis Cluster nodes</title><link>http://paluch.biz/2015/09/03/reading-from-masters-slaves-or-nearest-redis-cluster-nodes/</link><pubDate>Thu, 03 Sep 2015 09:14:46 +0000</pubDate><guid>http://paluch.biz/2015/09/03/reading-from-masters-slaves-or-nearest-redis-cluster-nodes/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;lettuce 4.0.Beta2 features ReadFrom Settings. ReadFrom affects how lettuce routes read operations to the members of a Redis Cluster.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;By default, lettuce routes its read operations to the master node. Reading from the master returns the most recent version of the data because write operations are issued to the single master node. Reading from masters guarantees strong consistency.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;You can reduce latency or improve read throughput by distributing reads to slave members of the Redis cluster for applications that do not require fully up-to-date data. &lt;code&gt;ReadFrom&lt;/code&gt; is set per connection, meaning you can use different connections with different &lt;code&gt;ReadFrom&lt;/code&gt; settings.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.3 Final released</title><link>http://paluch.biz/2015/08/27/redis-client-lettuce-3-3-final-released/</link><pubDate>Thu, 27 Aug 2015 15:14:05 +0000</pubDate><guid>http://paluch.biz/2015/08/27/redis-client-lettuce-3-3-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’m very excited to present you lettuce 3.3.Final. Read on for the details or jump to the end to find the summary and the download links.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Do not tear it apart!</title><link>http://paluch.biz/2015/08/26/do-not-tear-it-apart/</link><pubDate>Wed, 26 Aug 2015 20:25:41 +0000</pubDate><guid>http://paluch.biz/2015/08/26/do-not-tear-it-apart/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Implementing &lt;a href="https://github.com/mp911de/CleanArchitecture"&gt;clean architecture&lt;/a&gt; is amazing. A &lt;a href="https://github.com/RetroMocha/obvious"&gt;clean architecture&lt;/a&gt; fundamentally changes the way you create software and perform changes to existing code. The architectural style, also known as Jacobson architecture or &lt;a href="https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html"&gt;Onion architecture&lt;/a&gt;, is based on the business rules. Meaning the application model and use cases. These parts become the explicit core of such an application. The core is agnostic against the database, the web, and frameworks, which are then just plugins to the application.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Using lettuce 3.3.Beta1 with the Redis Geo-API</title><link>http://paluch.biz/2015/08/07/using-lettuce-3-3-beta1-with-the-redis-geo-api/</link><pubDate>Fri, 07 Aug 2015 20:40:16 +0000</pubDate><guid>http://paluch.biz/2015/08/07/using-lettuce-3-3-beta1-with-the-redis-geo-api/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;The Geo-API of the upcoming Redis 3.2 release allows to maintain a set (backed by a &lt;a href="http://redis.io/topics/data-types-intro#redis-sorted-sets"&gt;Redis sorted set&lt;/a&gt;) of Geo points described by WGS84 coordinates. You can add and query set members using the new Geo-API. Use &lt;code&gt;ZREM&lt;/code&gt; to remove members from the until &lt;a class="bare" href="https://github.com/antirez/redis/issues/2674"&gt;https://github.com/antirez/redis/issues/2674&lt;/a&gt; is resolved.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.3.Beta1 and 4.0.Beta1 released</title><link>http://paluch.biz/2015/08/06/redis-client-lettuce-3-3-beta1-and-4-0-beta1-released/</link><pubDate>Thu, 06 Aug 2015 13:31:18 +0000</pubDate><guid>http://paluch.biz/2015/08/06/redis-client-lettuce-3-3-beta1-and-4-0-beta1-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released today two betas of lettuce: 3.3.Beta1 and 4.0.Beta1. What is the difference between those versions? Both use netty and a very similar core to serve as Redis driver. The 4.0 branch introduces a Reactive API, stateful connections, improved API and command execution on multiple cluster nodes. 4.0 also introduces a set of breaking changes. The 3.x branch is supported for at least a year, new Redis commands will be supported in both branches. 4.0 is the next generation of lettuce.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>A look on CDI 2.0 EDR1</title><link>http://paluch.biz/2015/07/13/a-look-on-cdi-2-0-edr1/</link><pubDate>Mon, 13 Jul 2015 14:51:39 +0000</pubDate><guid>http://paluch.biz/2015/07/13/a-look-on-cdi-2-0-edr1/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;CDI is one of the best additions to Java EE of the recent. This opinion is widely shared amongst users and integrators. CDI 1.2, the current version, was released in April, 2014. Now in mid-2015, we face the early draft review of the CDI 2.0 spec. CDI 2.0 will run on Java 8 and higher.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>First release of spinach, a Java Disque client</title><link>http://paluch.biz/2015/07/01/first-release-of-spinach-a-java-disque-client/</link><pubDate>Wed, 01 Jul 2015 07:28:35 +0000</pubDate><guid>http://paluch.biz/2015/07/01/first-release-of-spinach-a-java-disque-client/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released the first version of &lt;a href="https://github.com/mp911de/spinach"&gt;spinach&lt;/a&gt;, a scalable Java &lt;a href="https://github.com/antirez/disque"&gt;Disque&lt;/a&gt; client based on &lt;a href="http://netty.io"&gt;netty&lt;/a&gt;. spinach is built on top of the &lt;a href="https://github.com/mp911de/lettuce"&gt;lettuce&lt;/a&gt; client which provides SSL and Unix domain connections in addition to plaintext connections.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_basic_usage"&gt;&lt;strong&gt;Basic&lt;/strong&gt; usage&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre class="rouge highlight"&gt;&lt;code data-lang="java"&gt;&lt;span class="nc"&gt;DisqueClient&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DisqueClient&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;host&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;DisqueConnection&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;connect&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;sync&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;DisqueCommands&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;sync&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sync&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;jobId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sync&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addjob&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;queue&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;body&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;TimeUnit&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;MINUTES&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;Job&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sync&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getjob&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;queue&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ackjob&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getId&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_features"&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Works with Java 6, 7 and 8&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/spinach/wiki/Basic-usage"&gt;synchronous&lt;/a&gt; and &lt;a href="https://github.com/mp911de/spinach/wiki/Asynchronous-Connections"&gt;asynchronous&lt;/a&gt; APIs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/spinach/wiki/SSL-Connections"&gt;SSL&lt;/a&gt; and &lt;a href="https://github.com/mp911de/spinach/wiki/Unix-Domain-Sockets"&gt;Unix Domain Socket&lt;/a&gt; connections&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/lettuce/wiki/Codecs"&gt;Codecs&lt;/a&gt; (for UTF8/bit/JSON etc. representation of your data)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;For complete information on spinach see the websites:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/spinach"&gt;http://github.com/mp911de/spinach&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class="bare" href="http://spinach.paluch.biz"&gt;http://spinach.paluch.biz&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>The future of lettuce</title><link>http://paluch.biz/2015/06/03/the-future-of-lettuce/</link><pubDate>Wed, 03 Jun 2015 20:27:18 +0000</pubDate><guid>http://paluch.biz/2015/06/03/the-future-of-lettuce/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In May 2014, I needed a Redis client. I had to collect log events within Redis (see &lt;a class="bare" href="https://github.com/mp911de/logcapture"&gt;https://github.com/mp911de/logcapture&lt;/a&gt;) during integration tests. The nature of integration tests and log events is, when tests are running, a lot is logged, but after the tests the connection is idle. Several clients caused connections to run into defective states, and I did not want remote log capturing kills my integration tests. So I took the best client amongst them all and started to fix the issues that were show stoppers.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.2 Final released</title><link>http://paluch.biz/2015/05/29/redis-client-lettuce-3-2-final-released/</link><pubDate>Fri, 29 May 2015 05:47:14 +0000</pubDate><guid>http://paluch.biz/2015/05/29/redis-client-lettuce-3-2-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;This release features Unix domain sockets on linux-x86_64 systems. Local connections to a Redis instance are now possible without the use of the network. A second feature with a huge impact is client options. Client options allow to control behavior on a fine-grained base. It is now possible to turn off auto-reconnect, validate the connection with a PING before activating the connection for client usage and many more.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.2 Beta1 released</title><link>http://paluch.biz/2015/05/16/redis-client-lettuce-3-2-beta1-released/</link><pubDate>Sat, 16 May 2015 14:45:57 +0000</pubDate><guid>http://paluch.biz/2015/05/16/redis-client-lettuce-3-2-beta1-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;This release features Unix domain sockets on linux-x86_64 systems. Local connections to a Redis instance are now possible without the use of the network. A second feature with a huge impact is client options. Client options allow to control behavior on a fine-grained base. It is now possible to turn off auto-reconnect, validate the connection with a PING before activating the connection for client usage and many more.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>On Crafting Software</title><link>http://paluch.biz/2015/05/15/on-crafting-software/</link><pubDate>Fri, 15 May 2015 14:09:29 +0000</pubDate><guid>http://paluch.biz/2015/05/15/on-crafting-software/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;It has been over a year ago the project started that I’m currently working on. This project had the goal to create an archiving service for grocery point of sales receipts. We ended up with creating an outstanding system that might become the new blueprint for software applications within the customers’ software development departments.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;I’m now on a Java/JBoss/AngularJS project, that is heading towards it end. A triumphal end, since we created an outstanding software system in many various ways. The most impressive, the application has the potential to be the blueprint for future applications. It will influence how applications will be developed and operated in this particular customers’ software development teams. Here is the story.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_tldr"&gt;TL;DR;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Focus on the important things. Choose your architecture style according to your needs. Functional requirements are by far not everything that make a successful software development venture. Postpone major decisions. Always be aware of the things you do, be lean, do TDD and automated integration/acceptance tests, use Continuous Delivery, make yourself a comfortable life with always delivering a bit more than required.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Approaching end of "It worked on my machine!"</title><link>http://paluch.biz/2015/04/27/approaching-end-of-it-worked-on-my-machine/</link><pubDate>Mon, 27 Apr 2015 19:38:23 +0000</pubDate><guid>http://paluch.biz/2015/04/27/approaching-end-of-it-worked-on-my-machine/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;You might have noticed it if you are a developer. In rare occasions, there might be the case a particular artifact runs on your machine. But not anywhere else. This issue is known as the &amp;#34;It works on my machine&amp;#34; problem. As soon as this happens, …​&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;There are several causes, why this might happen. Either a different build process is used, the build environment is different, the way how you deploy is slightly different, the runtime environment differs from the others, the config looks like different, …​ or a thousand more reasons might have caused that the artifact runs just on one machine.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.1 Final released</title><link>http://paluch.biz/2015/03/28/redis-client-lettuce-3-1-final-released/</link><pubDate>Sat, 28 Mar 2015 20:15:14 +0000</pubDate><guid>http://paluch.biz/2015/03/28/redis-client-lettuce-3-1-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;This release introduces support for SSL, enables lambda expressions on streaming channels and a lot of bugfixes and resilience changes.&lt;br/&gt;
lettuce extensibility is improved. You can override certain parts of the client to supply classes (connection classes) that behave the way you need by extending RedisClient or RedisClusterClient.&lt;br/&gt;
You can reset the internal connection state in case you run into broken connections (invalid connection state due to SSL tunneling or others) by calling the reset() method on your connection.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Book Review: Couchbase Essentials</title><link>http://paluch.biz/2015/03/16/book-review-couchbase-essentials/</link><pubDate>Mon, 16 Mar 2015 09:23:01 +0000</pubDate><guid>http://paluch.biz/2015/03/16/book-review-couchbase-essentials/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Couchbase Essentials is a book written by former Couchbase Inc. developer &lt;a href="http://about.me/johnzablocki"&gt;John Zablocki&lt;/a&gt;. The book claims to be for developers, but it is valuable to software architects as well. The book starts with a lot of marketing about Couchbase, explaining the history from CouchDB and memcached. This chapter will guide its readers through a very detailed installation procedure that reminds on a very detailed Couchbase manual. Nearly every click is explained.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>How to test a REST API with JUnit</title><link>http://paluch.biz/2015/03/12/how-to-test-a-rest-api-with-junit/</link><pubDate>Thu, 12 Mar 2015 09:03:14 +0000</pubDate><guid>http://paluch.biz/2015/03/12/how-to-test-a-rest-api-with-junit/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Do you want to test your REST API as soon as possible and without any hassle? The earliest point in the code where tests can occur is within the commit stage, where you can run unit tests. I want to present you an approach how to test REST API as soon as possible in an easy way. The example code is based on JUnit and RESTEasy. It does not require any external database or heavyweight application servers which means you can run it isolated and out of the box.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Capturing and visualizing sensor data using the ELK stack</title><link>http://paluch.biz/2015/03/09/capturing-and-visualizing-sensor-data-using-the-elk-stack/</link><pubDate>Mon, 09 Mar 2015 17:27:20 +0000</pubDate><guid>http://paluch.biz/2015/03/09/capturing-and-visualizing-sensor-data-using-the-elk-stack/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;One day a coworker came to me convincing me: Let’s do something cool with internet of things and sensors. Until now, I did not know anything about IoT sensors but my first idea was a sonic sensor that tells the distance.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Found a new Book: Couchbase Essentials</title><link>http://paluch.biz/2015/03/03/found-a-new-book-couchbase-essentials/</link><pubDate>Tue, 03 Mar 2015 07:22:47 +0000</pubDate><guid>http://paluch.biz/2015/03/03/found-a-new-book-couchbase-essentials/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I got in touch with Couchbase a year ago. I attended a presentation of the Couchbase guys and learned that Memcached became a part of Couchbase. Until now I never had a chance to use Couchbase for more than just a play around. Recently I stumbled upon a new Book about Couchbase: &lt;a href="https://bit.ly/1wtEbwl"&gt;Couchbase Essentials&lt;/a&gt; written by &lt;a href="https://about.me/johnzablocki"&gt;John Zablocki&lt;/a&gt;. I will let you know what I think about it and post my review here. Stay tuned.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Clean Architecture with Java and Maven</title><link>http://paluch.biz/2015/02/04/clean-architecture-with-java-and-maven/</link><pubDate>Wed, 04 Feb 2015 20:21:32 +0000</pubDate><guid>http://paluch.biz/2015/02/04/clean-architecture-with-java-and-maven/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I wrote about &lt;a href="blog/83-clean-architecture-code-examples-for-an-onion-architecture.html"&gt;2 years ago&lt;/a&gt; about Clean Architecture/Onion Architecture. Now it is time to revisit this topic.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Architecture is about purpose and not about tools.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This rule applies to architecture of buildings the same way as it applies to software. Software consists of several parts that make the software do something. Software architecture represents what code is located in what place.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.0.3 Final released</title><link>http://paluch.biz/2015/02/01/redis-client-lettuce-3-0-3-final-released/</link><pubDate>Sun, 01 Feb 2015 17:14:37 +0000</pubDate><guid>http://paluch.biz/2015/02/01/redis-client-lettuce-3-0-3-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released lettuce 3.0.3. This is a bugfix release fixing a memory leak in pubsub and adds stability when reconnecting.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>It's a joy to debug Selenium Tests with Selenide and JBehave</title><link>http://paluch.biz/2015/01/27/it-s-a-joy-to-debug-selenium-tests-with-selenide-and-jbehave/</link><pubDate>Tue, 27 Jan 2015 11:15:56 +0000</pubDate><guid>http://paluch.biz/2015/01/27/it-s-a-joy-to-debug-selenium-tests-with-selenide-and-jbehave/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Debugging tests is always tricky. Debugging Selenium Tests executed with JBehave is harder. The JBehave tests are executed and stack traces are written to logs. In many cases, you can’t reproduce the case or you need to fiddle around, where to set your breakpoint. This is not effective. This is annoying. I want to present you a slightly different and improved approach for debugging Selenium/Selenide tests. You will need either CDI, a Spring Context or Google Guice as prerequisite.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.0.2 Final released</title><link>http://paluch.biz/2015/01/15/redis-client-lettuce-3-0-2-final-released/</link><pubDate>Thu, 15 Jan 2015 10:05:04 +0000</pubDate><guid>http://paluch.biz/2015/01/15/redis-client-lettuce-3-0-2-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released lettuce 3.0.2. This is a bugfix release fixing a memory leak in pubsub.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This release contains:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_fixes"&gt;Fixes&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Memory leak &lt;a href="https://github.com/mp911de/lettuce/issues/21"&gt;#21&lt;/a&gt;, &lt;a href="https://github.com/mp911de/lettuce/pull/22"&gt;#22&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_other"&gt;Other&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Streamline build and release&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_links"&gt;Links&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/lettuce/releases/tag/3.0.2.Final"&gt;Release on Github&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22biz.paluch.Redis%22%20AND%20a%3A%22lettuce%22"&gt;Artifact overview on Maven Central&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://search.maven.org/remotecontent?filepath=biz/paluch/Redis/lettuce/3.0.2.Final/lettuce-3.0.2.Final.jar"&gt;Download lettuce 3.0.2.Final&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/lettuce/wiki"&gt;Wiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://redis.paluch.biz"&gt;Maven Site (Javadoc)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Maven coordinates:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre class="rouge highlight"&gt;&lt;code data-lang="xml"&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;biz.paluch.redis&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lettuce&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.0.2.Final&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;biz.paluch.redis&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lettuce&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.0.2.Final&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;classifier&amp;gt;&lt;/span&gt;shaded&lt;span class="nt"&gt;&amp;lt;/classifier&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Any feedback is appreciated or create &lt;a href="https://github.com/mp911de/lettuce/issues"&gt;issues on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.6.0 released</title><link>http://paluch.biz/2015/01/11/logstash-gelf-1-6-0-released/</link><pubDate>Sun, 11 Jan 2015 16:39:21 +0000</pubDate><guid>http://paluch.biz/2015/01/11/logstash-gelf-1-6-0-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released today logstash-gelf 1.6.0. This release contains support for GELF 1.1 spec, Redis Sentinel and the Datenpumpe.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Social Christmas: Heckenlights erwacht am 1. Dezember 2014 um 17 Uhr</title><link>http://paluch.biz/2014/12/01/social-christmas-heckenlights-erwacht-am-1-dezember-2014-um-17-uhr/</link><pubDate>Mon, 01 Dec 2014 08:44:29 +0000</pubDate><guid>http://paluch.biz/2014/12/01/social-christmas-heckenlights-erwacht-am-1-dezember-2014-um-17-uhr/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2014/12/heckenlights-logo.png" alt="heckenlights-logo"/&gt;&lt;/span&gt;Weihnachten ist das Fest der Liebe, Freude und des Lichts. Weihnachtsdekorationen rund um die Welt zieren Häuser, Straßen und Bäume.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Der Christmas Spirit Tree hat im Internet der Dinge den Start gemacht und das Online-Unvisersum (Tweets und Blogs) auf einen Weihnachtsbaum gebracht. Im Heckenpfad in Weinheim erwachen ab dem 1. Dezember die Lichter der interaktiven Weihnacht mit einer Show, deren Programm in der Hand des Zuschauers liegt.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Heckenlights, social christmas lights awake on Dec. 1st 5pm (CET)</title><link>http://paluch.biz/2014/12/01/heckenlights-social-christmas-lights/</link><pubDate>Mon, 01 Dec 2014 06:52:05 +0000</pubDate><guid>http://paluch.biz/2014/12/01/heckenlights-social-christmas-lights/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2014/12/heckenlights-logo.png" alt="heckenlights-logo"/&gt;&lt;/span&gt;Christmas means joy, love and light to us. Cities, houses and streets are decorated for christmas all around the world.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Christmas has reached the internet, too. The Christmas Spirit Tree was one of the first christmas-themed things of the internet. It showed movement in the social universe of tweets and blogs. And here, in Heckenpfad, Weinheim, Germany, the sparkle of Heckenlights will launch on December 1st. Lights will switch on for admiring and listening.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>What is Heckenlights</title><link>http://paluch.biz/2014/11/14/what-is-heckenlights/</link><pubDate>Fri, 14 Nov 2014 09:13:18 +0000</pubDate><guid>http://paluch.biz/2014/11/14/what-is-heckenlights/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Some years ago I moved into my own home. At that time I had the idea to setup christmas lights in our garden. Maybe not as large as Carson Williams setup, but at least something. And well, you know, it grew from year to year. Now I came to the point where I want give you control over the lights.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Finding the right NoSQL data store: Results for my use case and a surprise</title><link>http://paluch.biz/2014/10/29/finding-the-right-nosql-data-store-results-for-my-use-case-and-a-surprise/</link><pubDate>Wed, 29 Oct 2014 09:25:52 +0000</pubDate><guid>http://paluch.biz/2014/10/29/finding-the-right-nosql-data-store-results-for-my-use-case-and-a-surprise/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Some time ago, I wrote about &lt;a href="index.php?option=com_content&amp;amp;view=article&amp;amp;id=121;after-the-hype-finding-the-right-nosql-data-store&amp;amp;catid=8;blog&amp;amp;Itemid=108"&gt;finding the right NoSQL data store&lt;/a&gt;. It depends pretty much on what you want to do. After a series of tests I finally have some results I want to share. My goal: Find the most appropriate NoSQL data store for our project’s use case.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_requirements"&gt;Requirements&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The requirements is to parse XML files which are stored on a storage system and put relevant keys into a data store to be able to find the data again. It’s a sort of index. The data is hierarchical with two levels (master and detail). The data stream is continuous and there is a lot of data (not big data). 10’s of TB’s.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.5.4 released</title><link>http://paluch.biz/2014/10/24/logstash-gelf-1-5-4-released/</link><pubDate>Fri, 24 Oct 2014 06:05:10 +0000</pubDate><guid>http://paluch.biz/2014/10/24/logstash-gelf-1-5-4-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I released today logstash-gelf 1.5.4. This release carries some internal improvements if you plan to extend log appenders and GELF senders.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Submit Tomcat Access Logs using GELF to Logstash</title><link>http://paluch.biz/2014/10/21/submit-tomcat-access-logs-using-gelf-to-logstash/</link><pubDate>Tue, 21 Oct 2014 07:57:34 +0000</pubDate><guid>http://paluch.biz/2014/10/21/submit-tomcat-access-logs-using-gelf-to-logstash/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Elasticsearch, Logstash and Kibana are widely used for log management. I wrote in earlier posts about submitting application logs towards logstash. Let’s approach access logs today.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>After the hype: Finding the right NoSQL data store</title><link>http://paluch.biz/2014/10/13/after-the-hype-finding-the-right-nosql-data-store/</link><pubDate>Mon, 13 Oct 2014 05:47:22 +0000</pubDate><guid>http://paluch.biz/2014/10/13/after-the-hype-finding-the-right-nosql-data-store/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;A choice of decision for a NoSQL data store depends on several factors. It’s no longer a hot-or-not decision. The big hype is over, reality comes back now.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.0.1 Final released</title><link>http://paluch.biz/2014/09/19/redis-client-lettuce-3-0-1-final-released/</link><pubDate>Fri, 19 Sep 2014 06:04:00 +0000</pubDate><guid>http://paluch.biz/2014/09/19/redis-client-lettuce-3-0-1-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;lettuce 3.0.1 was released. This is a bugfix release fixing some major bugs.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This release contains:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_fixes"&gt;Fixes&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Test improvements for more stability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;URI for sentinel connections&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provide static syncHandler&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Handle premature channelInactive while ongoing close (avoid NPE)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fix signature of clusterSlaves &lt;a href="https://github.com/mp911de/lettuce/issues/18"&gt;#18&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fix SCAN command with scan args&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_enhancements"&gt;Enhancements&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Optimized CRC16 calculation (thanks to Jedis for co-working)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use fine grained exceptions for Timeout, CommandExecution and Connection&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_links"&gt;Links&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/lettuce/releases/tag/3.0.1.Final"&gt;Release on Github&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22biz.paluch.Redis%22%20AND%20a%3A%22lettuce%22"&gt;Artifact overview on Maven Central&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://search.maven.org/remotecontent?filepath=biz/paluch/Redis/lettuce/3.0.1.Final/lettuce-3.0.1.Final.jar"&gt;Download lettuce 3.0.1.Final&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mp911de/lettuce/wiki"&gt;Wiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://redis.paluch.biz"&gt;Maven Site (Javadoc)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.0 Final released</title><link>http://paluch.biz/2014/09/12/lettuce-3-0-final-released/</link><pubDate>Fri, 12 Sep 2014 08:24:49 +0000</pubDate><guid>http://paluch.biz/2014/09/12/lettuce-3-0-final-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;lettuce 3.0 was released. Lettuce is a scalable thread-safe Redis client providing both synchronous and asynchronous connections. Multiple threads may share one connection provided they avoid blocking and transactional operations such as BLPOP, and MULTI/EXEC. Multiple connections are efficiently managed by the excellent netty NIO framework. Support for advanced Redis features such as Sentinel, Cluster and Redis data models are included.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Some of the major changes are:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Support for the latest Redis commands&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redis Cluster support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redis Sentinel support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upgrade to netty 4.0.19 (from netty 3.x)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CDI and Spring support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Streaming API&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listenable Futures (using Guava) for true async operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tons of bugfixes, tests and documentation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.5.3 released</title><link>http://paluch.biz/2014/09/07/logstash-gelf-1-5-3-released/</link><pubDate>Sun, 07 Sep 2014 17:27:15 +0000</pubDate><guid>http://paluch.biz/2014/09/07/logstash-gelf-1-5-3-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’ve released today logstash-gelf 1.5.3. This is a bugfix release for Hadoop Hive users. I did not announce release 1.5.2 the last time. Apologies for that.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>RaspiBoy, Raspberry Pi Gameboy, SuperPiBoy: I created mine, here's how to create yourself one</title><link>http://paluch.biz/2014/09/02/raspiboy-raspberry-pi-gameboy-superpiboy-i-created-mine-here-s-how-to-create-yourself-one/</link><pubDate>Tue, 02 Sep 2014 08:59:53 +0000</pubDate><guid>http://paluch.biz/2014/09/02/raspiboy-raspberry-pi-gameboy-superpiboy-i-created-mine-here-s-how-to-create-yourself-one/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;A while ago I was inspired by the story of &lt;a href="http://superpiboy.wordpress.com"&gt;Gameboy to SuperPiBoy&lt;/a&gt;, a Raspberry Pi within a Gameboy case. This was reason enough to start my own project. I was owner and a fan of a Gameboy at the age of 10.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;My RaspiBoy features:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;3.5&amp;#34; TFT display&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;32GB solid state drive&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RasperryPi inside&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;three more buttons&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WiFi&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Logitech Unify receiver&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Original Gameboy controls&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;External Volume control with Speaker and stereo audio connector&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/images/2014/09/gameboy-before.jpg"&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2014/09/gameboy-before.jpg" alt="/images/2014/09/gameboy-before"/&gt;&lt;/span&gt;&lt;/a&gt; &lt;a href="http://paluch.biz/images/2014/09/assembled-tetris.jpg"&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2014/09/assembled-tetris.jpg" alt="/images/2014/09/assembled-tetris"/&gt;&lt;/span&gt;&lt;/a&gt; &lt;a href="http://paluch.biz/images/2014/09/assembled-front.jpg"&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2014/09/assembled-front.jpg" alt="/images/2014/09/assembled-front"/&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Retr0bright, how to make old computer cases nice and shiny again</title><link>http://paluch.biz/2014/09/01/retr0bright-how-to-make-old-computer-cases-nice-and-shiny-again/</link><pubDate>Mon, 01 Sep 2014 12:48:32 +0000</pubDate><guid>http://paluch.biz/2014/09/01/retr0bright-how-to-make-old-computer-cases-nice-and-shiny-again/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’m progressing on my RaspiBoy project. So I’m getting in touch with a couple of yellowish Gameboy cases and game cartridges.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Older game console cases, such as Gameboy, Nintendo NES, Commodore 64 and so on, start yellowing. The more sun they get the more yellow they become. There is finally a solution (beside sand paper and overpaint) to de-yellowize them. It’s called Retr0bright.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Caching made easy with CDI and Infinispan</title><link>http://paluch.biz/2014/08/26/caching-made-easy-with-cdi-and-infinispan/</link><pubDate>Tue, 26 Aug 2014 08:36:14 +0000</pubDate><guid>http://paluch.biz/2014/08/26/caching-made-easy-with-cdi-and-infinispan/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;When CDI and Inifispan meet you’ve got the chance to improve your code a lot. Let’s combine both to make all of your CDI beans @Cacheable.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Caching of values usually goes this way:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre class="rouge highlight"&gt;&lt;code data-lang="java"&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;getSomething&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
 &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;contains&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

 &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
 &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getValueFromDatabase&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
 &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
 &lt;span class="o"&gt;}&lt;/span&gt;

 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This pattern repeats for every value which is cached/retrieved. Methods like the one above contain repetitive conditionals and value retrievals. Using the caching interceptor pattern eliminates the need for repetition. Business methods will be reduced back to their essence and caching becomes an aspect.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre class="rouge highlight"&gt;&lt;code data-lang="java"&gt;&lt;span class="nd"&gt;@Cacheable&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;getSomething&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@CacheKey&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;getValueFromDatabase&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Announcement: lettuce 3.0.Final is coming mid-September 2014</title><link>http://paluch.biz/2014/08/15/announcement-lettuce-3-0-final-is-coming-mid-september-2014/</link><pubDate>Fri, 15 Aug 2014 18:49:27 +0000</pubDate><guid>http://paluch.biz/2014/08/15/announcement-lettuce-3-0-final-is-coming-mid-september-2014/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;When releasing lettuce 3.0-Beta3 I was sure this will be the last beta of lettuce 3.0. In the mean time lots of stuff came up: New redis features around clustering, new commands and data structures. On the dev side there was low test coverage and instabilities during the build. This were the reasons to release an third beta. The original plan was to head for final as soon as redis 3.0 is going to be releases.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.0.Beta3 released</title><link>http://paluch.biz/2014/08/15/redis-client-lettuce-3-0-beta3-released/</link><pubDate>Fri, 15 Aug 2014 18:10:19 +0000</pubDate><guid>http://paluch.biz/2014/08/15/redis-client-lettuce-3-0-beta3-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;lettuce 3.0.Beta 3 is out now. The new redis commands provide in addition to the basic support also data structures and parsers. This is to support common implementation tasks and to ease adoption.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The Beta 3t is a surprise, because I wanted to release the final after Beta 2. Meanwhile, redis added lots of features and in fact, lettuce was not ready for a final yet. I’ll state more about the details in a further, final announcement post. For now enjoy the Beta 3.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>The 95 percent</title><link>http://paluch.biz/2014/08/13/the-95-percent/</link><pubDate>Wed, 13 Aug 2014 18:03:17 +0000</pubDate><guid>http://paluch.biz/2014/08/13/the-95-percent/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Test-driven development is a life-assurance for several software projects.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;I’ve started about 10 years ago with test-driven development. Since then I fell into the mantra writing test code then production code run the test and start over. Sometimes even model and interface first then test code then production code and so on. This way less bugs had a chance to remain within production code. But unit testing is not everything. The next level is integration testing, which help to discover even more bugs. As soon as components play together, they start to behave slightly different than assumed in unit tests. Sometimes integration-tests are the only way to test a software (in a sensible way).&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>First look at Datenpumpe</title><link>http://paluch.biz/2014/08/04/first-look-at-datenpumpe/</link><pubDate>Mon, 04 Aug 2014 10:44:29 +0000</pubDate><guid>http://paluch.biz/2014/08/04/first-look-at-datenpumpe/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Logstash, Elastic Search and Kibana gave us power back over our logs. Now it’s time to expand our potential and use well known components to get even more out of the ELK stack.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.5.1 released</title><link>http://paluch.biz/2014/07/29/logstash-gelf-1-5-1-released/</link><pubDate>Tue, 29 Jul 2014 15:02:35 +0000</pubDate><guid>http://paluch.biz/2014/07/29/logstash-gelf-1-5-1-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’ve released today logstash-gelf 1.5.1. This is a bugfix release for JBoss AS7/Wildfly users who use the NDC/MDC.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.5.0 released</title><link>http://paluch.biz/2014/07/21/logstash-gelf-1-5-0-released/</link><pubDate>Mon, 21 Jul 2014 18:21:44 +0000</pubDate><guid>http://paluch.biz/2014/07/21/logstash-gelf-1-5-0-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’ve released today logstash-gelf 1.5.0. This is a major release. logstash-gelf 1.5.0 is the first GELF library which supports the final release of log4j 2.0. This release carries some library updates and internal refactorings to provide also a standalone usage of Gelf message submission.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Deployment automation: Showing the progress of your deployment</title><link>http://paluch.biz/2014/07/17/deployment-automation-showing-the-progress-of-your-deployment/</link><pubDate>Thu, 17 Jul 2014 14:27:32 +0000</pubDate><guid>http://paluch.biz/2014/07/17/deployment-automation-showing-the-progress-of-your-deployment/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Automated deployments are the state of the art. Incorporating with a deployment pipeline you get the maximum available for now. But what happens in your deployment? Do you know the progress when it’s running? I want to tell you, how I’ve used Capistrano, Bootstrap and MongoDB to visualize the deployment progress with the deployment dashboard.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Redis Client lettuce 3.0.Beta2 released</title><link>http://paluch.biz/2014/07/15/redis-client-lettuce-3-0-beta2-released/</link><pubDate>Tue, 15 Jul 2014 19:12:18 +0000</pubDate><guid>http://paluch.biz/2014/07/15/redis-client-lettuce-3-0-beta2-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;This release is intended to be the last beta release of lettuce. As soon as Redis 3.0 goes final, I’ll release the final of lettuce 3.0.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This release contains:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Documentation (Javadoc and Wiki)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved test stability for a stable and reproducible build&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Changed redis ports from 63xx to 64xx for testing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed clientKill because of changed clientList output&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Adjusted resource cleanup to prevent memory leaks&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prevent refCnt exceptions in case of parallel close &amp;amp; read&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed PubSub API&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed command leaking when client is not yet online/disconnected and commands are issued while the client is in the re-connect phase&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Code cleanup, fixing sonar violations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for SENTINEL MASTERS command&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for DEBUG SEGFAULT command&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for PUBSUB command&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for sorted set commands ZLEXCOUNT, ZRANGEBYLEX, ZREMRANGEBYLEX&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Minor fixes like typos, maven site on &lt;a class="bare" href="http://redis.paluch.biz"&gt;http://redis.paluch.biz&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>JUnit testing the InitialContext: Why is there no simple mocking for JEE contexts?</title><link>http://paluch.biz/2014/07/14/junit-testing-the-initialcontext-why-is-there-no-simple-mocking-for-jee-contexts/</link><pubDate>Mon, 14 Jul 2014 11:37:24 +0000</pubDate><guid>http://paluch.biz/2014/07/14/junit-testing-the-initialcontext-why-is-there-no-simple-mocking-for-jee-contexts/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Every then and when, a Java Enterprise project starts. JEE is great. Java Enterprise projects enforce in many cases the usage of the InitialContext and sometimes CDI with using the BeanManager interface. Both are hard to enable within tests.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Integrating Logstash with Tomcat 7</title><link>http://paluch.biz/2014/07/07/integrating-logstash-with-tomcat-7/</link><pubDate>Mon, 07 Jul 2014 07:05:00 +0000</pubDate><guid>http://paluch.biz/2014/07/07/integrating-logstash-with-tomcat-7/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Ever wondered, how to integrate logstash and Tomcat 7 the easy way? Here we go!&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.4.2 released</title><link>http://paluch.biz/2014/06/25/logstash-gelf-1-4-2-released/</link><pubDate>Wed, 25 Jun 2014 18:00:36 +0000</pubDate><guid>http://paluch.biz/2014/06/25/logstash-gelf-1-4-2-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’ve released today logstash-gelf 1.4.2, I’ll be available until this evening on Maven Central.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Increasing development velocity and application maintainability using a Microservice Bus</title><link>http://paluch.biz/2014/06/22/increasing-development-velocity-and-application-maintainability-using-a-microservice-bus/</link><pubDate>Sun, 22 Jun 2014 11:35:31 +0000</pubDate><guid>http://paluch.biz/2014/06/22/increasing-development-velocity-and-application-maintainability-using-a-microservice-bus/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Developing applications can be a fun. Developing applications can be also a big pain.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;It depends on a lot of factors. Let’s focus today on maintainability/extensibility and a framework concept called Microservice Bus.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>And yet another java redis client: Fork of lettuce</title><link>http://paluch.biz/2014/06/04/and-yet-another-java-redis-client-fork-of-lettuce/</link><pubDate>Wed, 04 Jun 2014 09:09:57 +0000</pubDate><guid>http://paluch.biz/2014/06/04/and-yet-another-java-redis-client-fork-of-lettuce/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;You might as yourself: Why is there another java redis client? Until now, there are tons available.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;True.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Let me tell you about my motivation.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Kontakt</title><link>http://paluch.biz/2014/05/25/kontakt/</link><pubDate>Sun, 25 May 2014 15:12:04 +0000</pubDate><guid>http://paluch.biz/2014/05/25/kontakt/</guid><description>&lt;div class="sect1"&gt;
&lt;h2 id="_mark_paluch"&gt;Mark Paluch&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Heckenpfad 14&lt;br/&gt;
69469 Weinheim&lt;br/&gt;
Germany&lt;/p&gt;
&lt;/div&gt;
&lt;table class="tableblock frame-all grid-all stretch"&gt;
&lt;colgroup&gt;
&lt;col style="width: 20%;"/&gt;
&lt;col style="width: 20%;"/&gt;
&lt;col style="width: 20%;"/&gt;
&lt;col style="width: 20%;"/&gt;
&lt;col style="width: 20%;"/&gt;
&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;E-Mail&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;a href="mailto:mpaluch@paluch.biz"&gt;mpaluch@paluch.biz&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Telefon&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;0 62 01/65 04 24-0&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Fax&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;0 62 01/65 04 24-9&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Github&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;a class="bare" href="http://github.com/mp911de"&gt;http://github.com/mp911de&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;JBoss Community&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;a class="bare" href="http://community.jboss.org/people/mp911de"&gt;http://community.jboss.org/people/mp911de&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Xing&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;a class="bare" href="http://community.jboss.org/people/mp911de"&gt;http://community.jboss.org/people/mp911de&lt;/a&gt;http://www.xing.com/profile/Mark_Paluch&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Twitter&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;a class="bare" href="http://community.jboss.org/people/mp911de"&gt;http://community.jboss.org/people/mp911de&lt;/a&gt;http://www.xing.com/profile/Mark_Paluch[]&lt;a class="bare" href="https://twitter.com/mp911de"&gt;https://twitter.com/mp911de&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.4.1 released</title><link>http://paluch.biz/2014/05/21/logstash-gelf-1-4-1-released/</link><pubDate>Wed, 21 May 2014 11:26:58 +0000</pubDate><guid>http://paluch.biz/2014/05/21/logstash-gelf-1-4-1-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’ve released today logstash-gelf 1.4.1, I’ll be available until this evening on Maven Central.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Integrating Logstash with JBoss</title><link>http://paluch.biz/2014/05/20/integrating-logstash-with-jboss/</link><pubDate>Tue, 20 May 2014 08:06:17 +0000</pubDate><guid>http://paluch.biz/2014/05/20/integrating-logstash-with-jboss/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Logstash is one of the hottest tools when it comes to log management. There are lots of integration possibilities in standalone or web applications. But what if you want to capture the whole log output of your JBoss server? Take a look at the snippets.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>visualizr - Show your data</title><link>http://paluch.biz/2014/04/24/visualizr-show-your-data/</link><pubDate>Thu, 24 Apr 2014 07:45:24 +0000</pubDate><guid>http://paluch.biz/2014/04/24/visualizr-show-your-data/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;visualizr - Show your data Once in a while I get in touch with lots of time based data, such as monitoring or profiling values.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Calls per minute, actions per time unit and so on. Having such data is a great value but having it visualized gives a different impression instead looking at numbers. I’ve created visualizr. It’s a small Single-Page-Application with a Java-based backend. Visualizr provides support for multiple data sources (a data source can contain multiple charts), auto-reloading and a great user experience.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Come back to projects</title><link>http://paluch.biz/2014/03/24/come-back-to-projects/</link><pubDate>Mon, 24 Mar 2014 19:35:44 +0000</pubDate><guid>http://paluch.biz/2014/03/24/come-back-to-projects/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;It happens currently all the time. I’m always coming back to projects I worked on. Over and over I’m meeting old coworkers and colleagues. Same faces, sometimes a bit older than I left them. This raises mixed feelings. It’s sort of coming home, thus it is different.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Increasing throughput performance using parallelism</title><link>http://paluch.biz/2014/03/17/increasing-throughput-performance-using-parallelism/</link><pubDate>Mon, 17 Mar 2014 10:13:16 +0000</pubDate><guid>http://paluch.biz/2014/03/17/increasing-throughput-performance-using-parallelism/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Traditional applications progress sequentially. This was ok for a certain time, multi-threading, concurrency and parallelism are hard to code right. With growing requirements to performance, large scale data and user base, application have to progress concurrently and even parallelize tasks. Using Akka for event distribution and processing enables applications to work on different tasks in parallel in a very simple and configurative way.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Logging Hadoop messages into Logstash using logstash-gelf</title><link>http://paluch.biz/2014/02/21/logging-hadoop-messages-into-logstash-using-logstash-gelf/</link><pubDate>Fri, 21 Feb 2014 07:45:24 +0000</pubDate><guid>http://paluch.biz/2014/02/21/logging-hadoop-messages-into-logstash-using-logstash-gelf/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Operating a Hadoop cluster means lots of daemons running on lots of machines. When it comes to the logs, and you’re searching for something, it can get nasty, since you do not know, where to search.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Distributed web sessions using MongoDB and a lightweight session facade</title><link>http://paluch.biz/2014/02/19/distributed-web-sessions-using-mongodb-and-a-lightweight-session-facade/</link><pubDate>Wed, 19 Feb 2014 12:59:07 +0000</pubDate><guid>http://paluch.biz/2014/02/19/distributed-web-sessions-using-mongodb-and-a-lightweight-session-facade/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Stateless services are the easiest to scale out. Just add more machines without worrying about maintaining a state. Stateful applications are harder to scale. So are web applications with user front ends and sessions.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.2.6 released</title><link>http://paluch.biz/2014/02/14/logstash-gelf-1-2-6-released/</link><pubDate>Fri, 14 Feb 2014 09:24:35 +0000</pubDate><guid>http://paluch.biz/2014/02/14/logstash-gelf-1-2-6-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Today I’ve released the patch 1.2.6 of logstash-gelf. This release contains a performance bugfix which caused an incident in the past.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The java.util.logging hoghandler’s publish method was synchronized. This caused stalling of different threads which ended up in a denial of service. Usually a restart of the application is sufficient to solve that problem, but that’s only a temporary solution. Other implementations of logstash-gelf (Log4j, Log4j2 and Logback) are not affected.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Every day is a new day aka. daily mind reset</title><link>http://paluch.biz/2014/01/31/every-day-is-a-new-day-aka-daily-mind-reset/</link><pubDate>Fri, 31 Jan 2014 20:38:20 +0000</pubDate><guid>http://paluch.biz/2014/01/31/every-day-is-a-new-day-aka-daily-mind-reset/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Imagine you’re talking about something today with your product owner or boss. It get’s the highest priority for today, because it’s cool or something. Tomorrow you’re not done with it but have again a cool feature idea. Or a collegue of you. And guess what, it gain’s again highest priority.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;And what about the first topic? Forgotten again. Not having a mid-term or long-term plan can get a horror. Not having a product vision or a strategy for your product is even harder. Every day things can change, old stuff gets obsolete and there is no red thread what your system is and what it’s not. How it behaves and how not. This causes uncertainty and the involved developers cannot be confident about their implementation. Always and ongoing discussions and changes of directions are the consequence. The whole product looks and works like a mixed litterbox which causes confused users and no one is happy with the application.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Tracking requests in a distributed environment</title><link>http://paluch.biz/2013/12/31/tracking-requests-in-a-distributed-environment/</link><pubDate>Tue, 31 Dec 2013 11:48:35 +0000</pubDate><guid>http://paluch.biz/2013/12/31/tracking-requests-in-a-distributed-environment/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Central logging using logstash or Graylog is one of the most interesting topics for now. Software applications get more distributed, are partitioned into different components and are running on multiple servers. This causes the need of central logging. Central logging itself is nice. You don’t have to collect log files from multiple servers anymore. But how do you correlate and track requests on different machines? How can you trace, which request in the frontend caused which error message in the backend?&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>logstash-gelf 1.2.0 released</title><link>http://paluch.biz/2013/12/04/logstash-gelf-1-2-0-released/</link><pubDate>Wed, 04 Dec 2013 09:17:07 +0000</pubDate><guid>http://paluch.biz/2013/12/04/logstash-gelf-1-2-0-released/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’ve released today logstash-gelf 1.2.0, I’ll be available until this evening on Maven Central.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Caching Apache Commons XML Configuration</title><link>http://paluch.biz/2013/11/22/caching-apache-commons-xml-configuration/</link><pubDate>Fri, 22 Nov 2013 14:21:40 +0000</pubDate><guid>http://paluch.biz/2013/11/22/caching-apache-commons-xml-configuration/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;One of my recent projects uses Apache’s XMLConfiguration in a very extensive way. Nearly everything is configured and stored as XML files. &lt;a href="http://commons.apache.org/proper/commons-configuration/"&gt;Commons Configuration&lt;/a&gt; is a very nice library, providing access to multiple configuration formats and automatic reloading. The other side of the library is, that it produces heavy CPU load.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Leveraging dynamic Queries- How to concatenate Query-Statements</title><link>http://paluch.biz/2013/11/12/leveraging-dynamic-queries-how-to-concatenate-query-statements/</link><pubDate>Tue, 12 Nov 2013 07:29:17 +0000</pubDate><guid>http://paluch.biz/2013/11/12/leveraging-dynamic-queries-how-to-concatenate-query-statements/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Applications querying datasources can run into it. And perhaps you’ve seen it already: Custom built queries:&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Using log4j2 with Logstash/GELF (update)</title><link>http://paluch.biz/2013/10/15/using-log4j-v2-with-logstash-gelf/</link><pubDate>Tue, 15 Oct 2013 11:31:46 +0000</pubDate><guid>http://paluch.biz/2013/10/15/using-log4j-v2-with-logstash-gelf/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Since today logstash-gelf supports &lt;a href="http://logging.apache.org/log4j/2.x/"&gt;log4j2&lt;/a&gt;. The experimental support allows dynamic field since log4j2 provides a very flexible configuration.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Central logging with Java using logstash</title><link>http://paluch.biz/2013/09/30/central-logging-with-java-using-logstash/</link><pubDate>Mon, 30 Sep 2013 07:09:38 +0000</pubDate><guid>http://paluch.biz/2013/09/30/central-logging-with-java-using-logstash/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Recently I gave logstash a try. logstash is a log management tool (processing, storing). It can push log messages also into elastic search. This setup is ideal for central logging. The easiest way to push log data into logstash seems to me to be gelf (Graylog Extended Log Format). It is a JSON-style format which can be GZIPed using UDP connections. There are a few implementations for GELF using Java (gelfj, gelf4j) which work nicely with Graylog itself. If you try to use them with logstash you’ll run into a few problems, which are caused mainly due the chunk size. gelfj has a fixed chunk size of 1420 bytes. Maven Central contains none of them (only some reassembled artifacts).&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Not developing enterprise software</title><link>http://paluch.biz/2013/09/06/not-developing-enterprise-software/</link><pubDate>Fri, 06 Sep 2013 07:21:19 +0000</pubDate><guid>http://paluch.biz/2013/09/06/not-developing-enterprise-software/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Lots of companies I know tend to work still in a plain old style. Top-down bosses, either water-fall, ad-hoc or chaos-driven development. Long term release cycles and inefficient, expensive style of development. Continuous Delivery: What’s that, do they ask, why do we need such fancy things?&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Many „something as a service“ companies are agile and deliver updates to their services seamless, without any down-time. As soon as they would go down for maintenance a lot of people would stop using it. Imagine Amazon or Google would go offline every day or week for a couple of hours.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;In contrast to that, the least other companies go for efficient development, Continuous Delivery and all that other „fancy“ stuff. Some sort of agile development is the most you can expect from german companies. If you’re lucky, they’re doing Test-Driven development or Clean Code, but that’s it. So I started to investigate why this is.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>SEMAT in action, to create structures</title><link>http://paluch.biz/2013/08/28/semat-in-action-to-create-structures/</link><pubDate>Wed, 28 Aug 2013 06:06:59 +0000</pubDate><guid>http://paluch.biz/2013/08/28/semat-in-action-to-create-structures/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Some weeks ago SEMAT hit me: Somewhere Uncle Bob said something about Ivar Jacobson’s book „http://www.amazon.com/The-Essence-Software-Engineering-Applying/dp/0321885953[The Essence of Software Engineering: Applying the SEMAT Kernel]“. This was reason enough to sneek peak and after a couple of minutes I bought that book.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Clean Architecture Example: Code for an Onion Architecture</title><link>http://paluch.biz/2013/08/02/clean-architecture-code-examples-for-an-onion-architecture/</link><pubDate>Fri, 02 Aug 2013 12:33:14 +0000</pubDate><guid>http://paluch.biz/2013/08/02/clean-architecture-code-examples-for-an-onion-architecture/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;A couple days ago I wrote about &lt;a href="index.php?option=com_content&amp;amp;view=article&amp;amp;id=80;clean-your-architecture-databases-the-web-and-service-interfaces-are-just-plugins&amp;amp;catid=8;blog&amp;amp;Itemid=108"&gt;Clean Architecture.&lt;/a&gt; I was also excited, how it will look like within code. How does it feel? How can I progress.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Branch by Abstraction, securing it with JUnit and Mockito</title><link>http://paluch.biz/2013/07/26/branch-by-abstraction-securing-it-with-junit-and-mockito/</link><pubDate>Fri, 26 Jul 2013 06:50:27 +0000</pubDate><guid>http://paluch.biz/2013/07/26/branch-by-abstraction-securing-it-with-junit-and-mockito/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Branching by Abstraction is a common approach now when trying to keep a software system functional though all the changes. Imagine, you would like to change your persistence framework, from iBatis to Hibernate to JPA back to something different. One approach is, just doing it. This will break your application immediately and you will need hours/days/weeks until it runs again. No matter whether you’re on a branch or within the development head (trunk/master). A no-go, especially when you’re into Continuous Delivery.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Exceptions are an aspect of modern software</title><link>http://paluch.biz/2013/07/17/exceptions-are-an-aspect-of-modern-software/</link><pubDate>Wed, 17 Jul 2013 09:46:27 +0000</pubDate><guid>http://paluch.biz/2013/07/17/exceptions-are-an-aspect-of-modern-software/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Java is currently the one and only language having checked exceptions. More and more frameworks switch to unchecked exceptions over time, moving them out of focus, making them invisible. Therefore exceptions become an aspect of modern software and should be treaded in an adequate way: Don’t let your code be exception driven.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Clean your Architecture: Databases, the Web and Service-Interfaces are just plugins</title><link>http://paluch.biz/2013/07/08/clean-your-architecture-databases-the-web-and-service-interfaces-are-just-plugins/</link><pubDate>Mon, 08 Jul 2013 11:35:48 +0000</pubDate><guid>http://paluch.biz/2013/07/08/clean-your-architecture-databases-the-web-and-service-interfaces-are-just-plugins/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;For quite a long time I was seeking for a reasonable explanation of software architecture. Nobody could provide a sufficient description. Developers and software architects would describe their architecture perhaps this way: We use Model-View-Controller for the Web, EJB as Controller, havin Hibernate as persistence framework.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Layering, multi-tier, Hibernate, Java Server-Faces aren’t an architecture. They are ideas for code organization, tools or somewhat, but for sure not an architecture.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Automating Integration tests</title><link>http://paluch.biz/2013/06/26/automating-integration-tests/</link><pubDate>Wed, 26 Jun 2013 06:32:27 +0000</pubDate><guid>http://paluch.biz/2013/06/26/automating-integration-tests/</guid><description>&lt;div class="sect1"&gt;
&lt;h2 id="_integration_testing_describes_every_test_which_integrates_more_than_one_component_that_is_tested"&gt;&lt;em&gt;Integration Testing describes every test, which integrates more than one component that is tested.&lt;/em&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Lots of developers are writing test using JUnit, PHPUnit, NUnit and so on. These tests invoke some piece of code, that do something. This „something“ can be a in-memory calculation, access to databases or even accessing remote services. Unit tests are tests which test a single unit, a method, a class. As soon as this method or class tries to access something, which is outside of your working memory, it’s most likely an integration test. Integration tests are very valuable, but in most cases you perform integration testing without knowing it. In most cases you’ll notice it, as soon as you run your tests without network or somebody kills the database. And then you might be screwed. This example gives some impression what the difficulties are: External systems, services you can’t contol (yet), shared databases. Because of these and sometimes because the benefit is not seen integration tests are not automated.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Amazing experiences with Puppet</title><link>http://paluch.biz/2013/06/24/amazing-experiences-with-puppet/</link><pubDate>Mon, 24 Jun 2013 08:22:01 +0000</pubDate><guid>http://paluch.biz/2013/06/24/amazing-experiences-with-puppet/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Do you know &lt;a href="https://puppetlabs.com"&gt;Puppet&lt;/a&gt;? Puppet is a system management/provisioning tooling. It’s intended to specify a set of resources (files, software packages and many more) to be in a certain state. This is very hand for all the cases, where you need for example Apache and PHP, you want to apply an own php.ini, have a customized logrotate.conf, some cron jobs…​ All this can be specified using Puppet. The first time your system boots, all the specifications are applied and you don’t have to copy config files anymore. Puppet runs also every 30mins (by default) to check for new/changed rules.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Fun with RESTEasy and Jersey: Replace your Servlets!</title><link>http://paluch.biz/2013/05/29/fun-with-resteasy-and-jersey-replace-your-servlets/</link><pubDate>Wed, 29 May 2013 08:51:10 +0000</pubDate><guid>http://paluch.biz/2013/05/29/fun-with-resteasy-and-jersey-replace-your-servlets/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Some time ago I got in touch with one of my 2006 written applications. I got flashed at the moment I looked into my code.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;My intention was to perform some improvements. 2006 had very few frameworks to deal with HTTP interfaces. The most common interface types were GUIs (JSP/JSF) and some SOAP Services. Writing HTTP interfaces for API use (calls from JavaScripts and so on) was still a hard way in Java applications. In most cases servlets were used. Those servlets received either Query- or Form-Params to perform the processing. Sometimes they even accepted/produced some XML. Let me show you some examples and how to solve them using current technology.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Testing SOAP WebServices using Axis2, JUnit and Mockito</title><link>http://paluch.biz/2013/05/06/testing-soap-webservices-using-axis2-junit-and-mockito/</link><pubDate>Mon, 06 May 2013 09:28:20 +0000</pubDate><guid>http://paluch.biz/2013/05/06/testing-soap-webservices-using-axis2-junit-and-mockito/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Prior to this article I wrote about &lt;a href="http://paluch.biz/blog/53-unit-testing-of-web-services-with-junit-soap-services.html"&gt;testing SOAP WebServices&lt;/a&gt; locally. This was accomplished using JAX-WS. Lots of projects still use Axis or Axis2. Therefore I created a simple Axis2 setup to demonstrate JUnit-Testing of WebServices.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Continuous Delivery: Providing multiple configuration versions in parallel</title><link>http://paluch.biz/2013/04/16/continuous-delivery-providing-multiple-configuration-versions-in-parallel/</link><pubDate>Tue, 16 Apr 2013 08:30:06 +0000</pubDate><guid>http://paluch.biz/2013/04/16/continuous-delivery-providing-multiple-configuration-versions-in-parallel/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In Continuous Delivery you deliver often and to different environments. When it comes to configuration files you have to maintain multiple instances at a time. You can’t just have one fits it all. The Configuration Server is built to support you in this scenario. Basic idea of the Configuration Server is: Serve configuration based on your host for multiple artifacts and versions.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Continuous Delivery: Inject configuration properties into EAR/WAR-Artifacts to keep them portable</title><link>http://paluch.biz/2013/04/12/continuous-delivery-inject-configuration-properties-into-ear-war-artifacts-to-keep-them-portable/</link><pubDate>Fri, 12 Apr 2013 06:29:59 +0000</pubDate><guid>http://paluch.biz/2013/04/12/continuous-delivery-inject-configuration-properties-into-ear-war-artifacts-to-keep-them-portable/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;As soon as you start Continuous Delivery you don’t want to build artifacts for a specific environment. Once you’ve built and packaged, you want to reuse it in Dev, UAT, Production and so on.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Continuous Delivery: Securing sensitive configuration data and passwords using a Configuration Server</title><link>http://paluch.biz/2013/04/05/continuous-delivery-securing-sensitive-configuration-data-and-passwords-using-a-configuration-server/</link><pubDate>Fri, 05 Apr 2013 07:23:16 +0000</pubDate><guid>http://paluch.biz/2013/04/05/continuous-delivery-securing-sensitive-configuration-data-and-passwords-using-a-configuration-server/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’d guess, nearly every developer, who assisted on releasing and go-live of his software ran into the same issue: How to deal with sensitive configuration data such as passwords, keys and tokens? Hard-coding of passwords it out since the late &amp;#39;90s. Writing passwords in plain-text into config-files is as well a security breach. Encrypted passwords within config files are much better but demand you to implement some kind of encryption. Still you have then the problem: Where to put the encryption key?&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Copy protection in Java-based software</title><link>http://paluch.biz/2013/03/31/copy-protection-in-java-based-software/</link><pubDate>Sun, 31 Mar 2013 19:58:46 +0000</pubDate><guid>http://paluch.biz/2013/03/31/copy-protection-in-java-based-software/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Once someone has written a software and he wants to sell it, ideas of licenses and copy protection arise. There are several ways, how software can deal with that: No license control at all, license keys, serial numbers, online activations, encrypted source code. Every type has its pros and cons.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Continuous Delivery Configuration: How do you deploy configuration data into your application (EAR/WAR)?</title><link>http://paluch.biz/2013/03/28/continuous-delivery-configuration-how-do-you-deploy-configuration-data-into-your-application-ear-war/</link><pubDate>Thu, 28 Mar 2013 13:11:09 +0000</pubDate><guid>http://paluch.biz/2013/03/28/continuous-delivery-configuration-how-do-you-deploy-configuration-data-into-your-application-ear-war/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;It’s a common problem almost which every application has: Where do I put my configuration? Lucky you, rich clients and standalone applications. For most rich client/standalone apps it’s somehow easy, because you have to have somewhere a starter, so you can deploy the config somewhere along the starter.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Testdriven integration: Remote mocking for integration tests</title><link>http://paluch.biz/2013/03/08/testdriven-integration-remote-mocking-for-integration-tests/</link><pubDate>Fri, 08 Mar 2013 13:23:57 +0000</pubDate><guid>http://paluch.biz/2013/03/08/testdriven-integration-remote-mocking-for-integration-tests/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In my last post about &lt;a href="index.php?option=com_content&amp;amp;view=article&amp;amp;id=70;testdriven-integration-remote-mocking-for-integration-tests&amp;amp;catid=8;blog&amp;amp;Itemid=108"&gt;Integrationtest-driven development/Test-driven integration&lt;/a&gt; I was talking how to get started with integration testing. Sometimes it comes to the point, where your integration tests need more than only a database and a running system: You have additional dependencies like EJB’s or Web-Services. What now? You can’t always rely on test-systems: Sometimes there aren’t any or only shared instances exist. Sometimes it’s even harder to simulate a specific scenario using real services because of data and logic dependencies.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Integrationtest-driven development/Testdriven integration</title><link>http://paluch.biz/2013/02/28/integrationtest-driven-development-testdriven-integration/</link><pubDate>Thu, 28 Feb 2013 20:23:07 +0000</pubDate><guid>http://paluch.biz/2013/02/28/integrationtest-driven-development-testdriven-integration/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;TDD (test-driven development) is a well known development process for now. You start with a idea of a solution and the test. Then you proceed within a cycle of writing production code, then test code again, start over.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Treat your code: Avoid code bloating in JUnit Tests when using Mocking</title><link>http://paluch.biz/2013/02/18/treat-your-code-avoid-code-bloating-in-junit-tests-when-using-mocking/</link><pubDate>Mon, 18 Feb 2013 15:05:45 +0000</pubDate><guid>http://paluch.biz/2013/02/18/treat-your-code-avoid-code-bloating-in-junit-tests-when-using-mocking/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;JUnit test are inherent to almost every professional Java project. Some utilize JUnit more than others, some use it for integration tests. But nearly all of them have similar issues. As soon as they reach the testing boundaries, they have either to take care of expensive test setups or rely on some infrastructure stuff such as databases or remote services. One way is truly keep going on with the known procedure. A different approach is the usage of test dummies. Either as stubs (i.e. sub classing to simulate the desired behavior) or mocking. Mocks are instances of your classes or interfaces which can be told how to behave in a certain scenario.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>It's evolution</title><link>http://paluch.biz/2013/01/29/its-evolution/</link><pubDate>Tue, 29 Jan 2013 08:22:24 +0000</pubDate><guid>http://paluch.biz/2013/01/29/its-evolution/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In the early days of development, where technical approaches and feasibilities were depending on &amp;#34;is there any solution available&amp;#34;, lots were happy connecting a database using a web front end. Decoupling and abstraction layers were built to hide the complex persistence API. Ugly web wrappers were also tried to decouple. In the end, you got lots of framework stuff, just because there wasn’t anything else.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Today it evolved. Spring hides and provides lots of functionality. Enterprise Java provides API’s for nearly everything that modern applications use: Persistence, Web control, Web-Services. But somehow, thinking did not change much since then. Today we see tons of mappings, abstractions and decoupling layers. Is it really necessary to build data access objects in case you use JPA? Do you need mappings and tons of layers for exposing database data using a REST API?&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>MongoDB Sharding and Replication</title><link>http://paluch.biz/2013/01/19/mongodb-sharding-and-replication/</link><pubDate>Sat, 19 Jan 2013 21:45:34 +0000</pubDate><guid>http://paluch.biz/2013/01/19/mongodb-sharding-and-replication/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;MongoDB is known for its easy and near zeroconf setup. But when it comes to the point, to setup a sharded cluster with replication, things can get complex. Therefore I’d like to provide a configuration tooling to setup such a cluster with only a couple of simple commands.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Controlling Christmas Lights using Midi</title><link>http://paluch.biz/2012/12/22/controlling-christmas-lights-using-midi/</link><pubDate>Sat, 22 Dec 2012 09:22:32 +0000</pubDate><guid>http://paluch.biz/2012/12/22/controlling-christmas-lights-using-midi/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Some time ago I’ve posted how to &lt;a href="index.php?option=com_content&amp;amp;view=article&amp;amp;id=64;controlling-a-relay-via-midi&amp;amp;catid=8;blog&amp;amp;Itemid=108"&gt;control a relay using Midi&lt;/a&gt;. This was a preparation to the christmas lights midi-control. Now let’s see, how it works.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Controlling a relay via Midi</title><link>http://paluch.biz/2012/11/18/controlling-a-relay-via-midi/</link><pubDate>Sun, 18 Nov 2012 19:08:41 +0000</pubDate><guid>http://paluch.biz/2012/11/18/controlling-a-relay-via-midi/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Some time ago, I’ve used an USB-based relay to control a XFD (extreme feedback device). Now, let’g go a step beyond that and let a relay dance.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Building a health check page</title><link>http://paluch.biz/2012/11/12/building-a-healthcheck-page/</link><pubDate>Mon, 12 Nov 2012 19:26:14 +0000</pubDate><guid>http://paluch.biz/2012/11/12/building-a-healthcheck-page/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a href="http://thoughtworks.fileburst.com/assets/technology-radar-october-2012.pdf"&gt;ThoughtWorks&lt;/a&gt; recommends it, Ops love it and even you won’t ever miss it: health check pages. Do you really know at one sight, what’s the state of your application? Do you know, where to find your monitoring? Can you find it just in time of an incident?&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>IT Security and SOA-Governance: The Service-Authority</title><link>http://paluch.biz/2012/10/22/service-authority/</link><pubDate>Mon, 22 Oct 2012 18:13:30 +0000</pubDate><guid>http://paluch.biz/2012/10/22/service-authority/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Do you SOA? In case you do, how do you manage IT Security within a massively distributed landscape? In one of my recent projects we met lots of services and the challenge of IT security: Authentication and Authorization.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>3 years agile: A look back</title><link>http://paluch.biz/2012/10/05/3-years-agile/</link><pubDate>Fri, 05 Oct 2012 19:47:15 +0000</pubDate><guid>http://paluch.biz/2012/10/05/3-years-agile/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’m working for 3 years now with an agile approach. Before that, it was either sort of waterfall or a complete mess. The first agile steps were as well sort of agile but not the real one.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;My experience is, that the way my current team is working, is real agile for about a year now. Before that, it was a try and error from which we learned a lot.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Beyond agile</title><link>http://paluch.biz/2012/08/07/beyond-agile/</link><pubDate>Tue, 07 Aug 2012 19:35:53 +0000</pubDate><guid>http://paluch.biz/2012/08/07/beyond-agile/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In every evolution step has a start and an end. Sometimes they’re blurry, so you can’t say for sure, where you are at. In every step, sooner or later, arises the question: What’s next? What comes after agile? What ist the future of agile? This is today exactly my point.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>The real value of integrated Tests (aka. Integration Tests)</title><link>http://paluch.biz/2012/07/18/the-real-value-of-integrated-tests-aka-integration-tests/</link><pubDate>Wed, 18 Jul 2012 17:35:08 +0000</pubDate><guid>http://paluch.biz/2012/07/18/the-real-value-of-integrated-tests-aka-integration-tests/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;A couple months ago, the team, I work on, introduced integration tests. Before that, we had only regular Unit tests, which ran in a very isolated environment. You do not have a control, how your modules behave when they interact in a real environment. You cannot test a lifecycle with persistence to be confident, because you need much more than mocks.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>The two faces of Clean Code Development</title><link>http://paluch.biz/2012/07/11/the-two-faces-of-clean-code-development/</link><pubDate>Wed, 11 Jul 2012 18:39:29 +0000</pubDate><guid>http://paluch.biz/2012/07/11/the-two-faces-of-clean-code-development/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Recently I reported about Clean Code Development. Everybody who’s visiting trainings, courses and sessions is amazed. It’s easy, most topics are obvious but not everyone is always aware of these topics. But when you look deeper constrained by the big picture there is as well a dark side.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Xtreme Feedback Device</title><link>http://paluch.biz/2012/06/28/xfd/</link><pubDate>Thu, 28 Jun 2012 06:08:54 +0000</pubDate><guid>http://paluch.biz/2012/06/28/xfd/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;All the developers I know, recieve a mass of Mail - JIRA updates, Commit-Mails, daily mails and sometimes a notification from your Build system about broken builds. This notification mails could easily be overseen. However overseeing or disregarding the notification about broken builds is very detrimental because the notification helps to prevent bugs and increase quality. And could you imagine, what happens, when a broken build has to be released? For sure, it will cause lots of effort.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Unit-Testing of Web-Services with JUnit - REST Services</title><link>http://paluch.biz/2012/06/22/unit-testing-of-web-services-with-junit-rest-services/</link><pubDate>Fri, 22 Jun 2012 08:49:27 +0000</pubDate><guid>http://paluch.biz/2012/06/22/unit-testing-of-web-services-with-junit-rest-services/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In my last post, Unit-Testing of Web-Services with JUnit - SOAP Services, I’ve demonstrated how you can test local SOAP Services with remoting in a local Unit-Test. But since SOAP service become more and more unpopular, there might be a different technique. Currently REST becomes the name of the game. So let’s take a look at JUnit testing RESTful services with remoting.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Clean Code Development: Code Examples</title><link>http://paluch.biz/2012/06/16/clean-code-development/</link><pubDate>Sat, 16 Jun 2012 19:04:55 +0000</pubDate><guid>http://paluch.biz/2012/06/16/clean-code-development/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I want to give you a better insight in Clean Code. Therefore i created a bunch of code lines with examples. These show you a set of good/bad (after/before) scenarios. You can find these at GitHub:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;a class="bare" href="https://github.com/mp911de/CCD"&gt;https://github.com/mp911de/CCD&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Reflections: 6 Years of Clean Code Development</title><link>http://paluch.biz/2012/06/15/reflections-6-years-of-clean-code-development/</link><pubDate>Fri, 15 Jun 2012 19:32:07 +0000</pubDate><guid>http://paluch.biz/2012/06/15/reflections-6-years-of-clean-code-development/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Now it’s 6 years ago, since I started to apply Clean Code Development (CCD). For me it’s today way more than &lt;a href="http://www.clean-code-developer.com/"&gt;clean-code-developer.com&lt;/a&gt;. It became a system of values, based on best practices, principles and a set of pragmatism.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>The moment where all of them are looking at you. Or: Epic Fail?</title><link>http://paluch.biz/2012/05/30/the-moment-where-all-of-them-are-looking-at-you-or-epic-fail/</link><pubDate>Wed, 30 May 2012 12:34:00 +0000</pubDate><guid>http://paluch.biz/2012/05/30/the-moment-where-all-of-them-are-looking-at-you-or-epic-fail/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;There are days or weeks, you feel, every day something is failing. Crashing systems, strange bugs, ghosts. For some reason you don’t know, why this happens, over and over. But you are the man in the middle. You’re the one, having all those dependencies. Then you have to fix it.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Unit-Testing of Web-Services with JUnit - SOAP Services</title><link>http://paluch.biz/2012/05/23/unit-testing-of-web-services-with-junit-soap-services/</link><pubDate>Wed, 23 May 2012 08:30:58 +0000</pubDate><guid>http://paluch.biz/2012/05/23/unit-testing-of-web-services-with-junit-soap-services/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;With modern Tooling it’s easy, to Mock a WebService - take your Service-Class, inject Mocks (for your dependencies) and tell the Mocks how to behave. The next usual Stage is Integration testing. That one can become hard, you have to rely on remote services. Once the remote service is down, you even can’t test the webService remoting. Does the stack behave in the right way? How about the WSDL? Is it right?&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>A pirate's riddle</title><link>http://paluch.biz/2012/03/10/a-pirates-riddle/</link><pubDate>Sat, 10 Mar 2012 19:02:16 +0000</pubDate><guid>http://paluch.biz/2012/03/10/a-pirates-riddle/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Can you tell me this pirate’s riddle solution? These pirates are used to live in the indian/pacific ocean. If you find the answer, post how long it took you, which tools you used and how many steps it were on &lt;a href="https://plus.google.com/111207231555898182335/posts/i7eokpbfS1m"&gt;Google plus&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>What's so special about REST</title><link>http://paluch.biz/2012/02/04/whats-so-special-about-restful-web-services/</link><pubDate>Sat, 04 Feb 2012 22:01:35 +0000</pubDate><guid>http://paluch.biz/2012/02/04/whats-so-special-about-restful-web-services/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Roy T. Fielding &lt;a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm"&gt;wrote and described&lt;/a&gt; REST in his dissertation in the 2000’s. He basically told about the an architectural pattern and mapped it to most common protocol: &lt;a href="http://tools.ietf.org/html/rfc2616"&gt;HTTP&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Since these days the IT community began to realize and to understand more and more what it means to deal with resources, what power and strength HTTP provides. But what’s so special about it? And why does everybody talk about it but the least understood it? Why is today everything called REST, but in fact it’s not REST? Let’s dig into it.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Exception Handling</title><link>http://paluch.biz/2011/10/26/exception-handling-de/</link><pubDate>Wed, 26 Oct 2011 15:10:54 +0000</pubDate><guid>http://paluch.biz/2011/10/26/exception-handling-de/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Exceptions, ja, was sind eigentlich Exceptions? Exceptions sind zu deutsch Ausnahmen. Und im Grunde genommen stellen Exceptions und der Umgang mit ihnen genau das gleiche dar, wie der Umgang mit Business Logik. Exceptions sind nur ein eleganterer Mechanismus. Dieser erlaubt es, in Ausnahmesituationen (unerwartete Parameter, Fehler bei Dateizugriffen) eine adäquate Reaktion zu ermöglichen.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Exception Handling</title><link>http://paluch.biz/2011/10/26/exception-handling/</link><pubDate>Wed, 26 Oct 2011 06:43:08 +0000</pubDate><guid>http://paluch.biz/2011/10/26/exception-handling/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Exceptions, yes, what are exceptions? Exceptions are situations, where the planned flow cannot be completed anymore. So they are exactly the same as dealing with business logic. Exceptions are only a more elegant mechanism. They allows us to provide in an emergency case (unexpected parameters, errors in file access) an adequate response.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Exception-Handling with RMI/EJB: Safety Facade Pattern</title><link>http://paluch.biz/2011/10/20/exception-handling-with-rmiejb-safety-facade-pattern/</link><pubDate>Thu, 20 Oct 2011 06:19:47 +0000</pubDate><guid>http://paluch.biz/2011/10/20/exception-handling-with-rmiejb-safety-facade-pattern/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In many software systems and use cases there are exceptions. Exceptions, that are triggered by conditions that do not allow the expected sequence (ideally). These exceptions and dealing with those are hiding behind the lapidary used &amp;#34;exception handling&amp;#34;. A fast-created try-catch is often not the solution. And in those cases in which exceptions are forwarded to the client, there are some pitfalls.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Exception Handling mit RMI/EJB: Safety Facade Pattern</title><link>http://paluch.biz/2011/10/14/exception-handling-mit-rmiejb-safety-facade/</link><pubDate>Fri, 14 Oct 2011 19:02:21 +0000</pubDate><guid>http://paluch.biz/2011/10/14/exception-handling-mit-rmiejb-safety-facade/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In vielen Software-Systemen und Use Cases gibt es Ausnahmen. Ausnahmen, die durch Zustände ausgelöst werden, die nicht den erwarteten Ablauf (Idealfall) ermöglichen. Diese Ausnahmen und der Umgang verbirgt sich hinter dem lapidar benutzten &amp;#34;Exception Handling&amp;#34;. Dabei ist ein schnell erstellter try-catch oftmals nicht die Lösung. Und in den Fällen, in denen Exceptions an den Client weitergeleitet werden, gibt es einige Fallstricke.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>JBoss Development Deployer auf GitHub</title><link>http://paluch.biz/2011/09/14/jboss-dev-deployer/</link><pubDate>Wed, 14 Sep 2011 06:22:39 +0000</pubDate><guid>http://paluch.biz/2011/09/14/jboss-dev-deployer/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Vor ca. einer Woche habe ich den Quellcode meines JBoss Development Deployers auf GitHub migriert. Das Repository ist unter &lt;a class="bare" href="https://github.com/mp911de/JBoss-Development-Deployer"&gt;https://github.com/mp911de/JBoss-Development-Deployer&lt;/a&gt; erreichbar. Happy social coding!&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Save early, save often: Die Geschichte des Backups</title><link>http://paluch.biz/2011/08/30/save-early-save-often-die-geschichte-des-backups/</link><pubDate>Tue, 30 Aug 2011 15:27:17 +0000</pubDate><guid>http://paluch.biz/2011/08/30/save-early-save-often-die-geschichte-des-backups/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Erst neulich habe ich meine Server konsolidiert und virtualisiert. Aus 3 Root-Servern habe ich zu einem größeren Root-Server mit virtualisierten Sub-Systemen zusammengeführt.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Long Running Task mit JSF/RichFaces</title><link>http://paluch.biz/2011/08/24/long-running-task-mit-jsfrichfaces/</link><pubDate>Wed, 24 Aug 2011 06:28:00 +0000</pubDate><guid>http://paluch.biz/2011/08/24/long-running-task-mit-jsfrichfaces/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Häufig wird die Anforderung gestellt, Aufgaben im Hintergrund zu verarbeiten. Durch den Trend der Webanwendungen trifft früher oder später diese Anforderung auch auf ein Web-Projekt zu. Erst kürzlich kam dieselbe Frage in der JBoss Community auf.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>WARNING: DETACHED PERSISTENT OBJECTS CAN CAUSE SERIOUS INJURY OR DEATH TO YOUR CLUSTER</title><link>http://paluch.biz/2011/08/05/warning-detached-persistent-objects-can-cause-serious-injury-or-death-to-your-cluster/</link><pubDate>Fri, 05 Aug 2011 15:31:00 +0000</pubDate><guid>http://paluch.biz/2011/08/05/warning-detached-persistent-objects-can-cause-serious-injury-or-death-to-your-cluster/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Vor nicht allzulanger Zeit, da gab es mal ein Projekt, in einem nicht weit entfernten Land. Und was jetzt folgt ist keine Gute-Nacht-Geschichte. In einem meiner Projekte gab es folgendes Setup: JBoss, Hibernate mit Cache und einen Cluster&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Ein regulärer Stack für Enterprise-Projekte. Das System funktionierte zuverlässig und führte in regelmäßigen Abständen zu unterschiedlichen Daten auf den verschiedenen Nodes (bei den selben Objekten)&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Performance Probleme und Optimierungen in Java/J2EE Umgebungen (Teil 2)</title><link>http://paluch.biz/2011/05/22/performance-probleme-und-optimierungen-in-javaj2ee-umgebungen-teil-2/</link><pubDate>Sun, 22 May 2011 18:25:21 +0000</pubDate><guid>http://paluch.biz/2011/05/22/performance-probleme-und-optimierungen-in-javaj2ee-umgebungen-teil-2/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Im &lt;a href="blog/37-performance-probleme-und-optimierungen-in-javaj2ee-umgebungen-teil-1.html"&gt;ersten Teil&lt;/a&gt; ging es um die Top 5 Ursachen für Performance-Probleme in Java und J2EE-Umgebungen. Nun will ich mich den anderen Ursachen widmen, die zu Lasten der Performance gehen.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Release JBoss Development Deployer 0.6</title><link>http://paluch.biz/2011/05/22/release-jboss-development-deployer-06/</link><pubDate>Sun, 22 May 2011 11:28:40 +0000</pubDate><guid>http://paluch.biz/2011/05/22/release-jboss-development-deployer-06/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Das Release 0.6 des JBoss Development Deployers ist nun da. Folgende Features sind nun enthalten:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;EAR Deployment mit flexiblem Class-Path und modulweiser Umleitung in Entwicklungsverzeichnisse&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WAR Deployment mit flexiblem Class-Path und Umleitung ins Entwicklungsverzeichnis&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Der JBoss Development Deployer ist unter &lt;a class="bare" href="http://jb-dev-deploy.sourceforge.net/"&gt;http://jb-dev-deploy.sourceforge.net/&lt;/a&gt; verfügbar.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>JBoss Development Deployer EAR Modul</title><link>http://paluch.biz/2011/05/08/jboss-development-deployer-ear-modul/</link><pubDate>Sun, 08 May 2011 13:27:23 +0000</pubDate><guid>http://paluch.biz/2011/05/08/jboss-development-deployer-ear-modul/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Demnächst ist es soweit. Das Release 0.6 des &lt;a href="http://jb-dev-deploy.sourceforge.net/"&gt;JBoss Development Deployers&lt;/a&gt; kommt im Mai. Das größte Feature ist das EAR-Deployment. In der EAR-Datei können die Pfad zur Entwicklungsumgebung angegeben werden und damit sind Redeployments oder schwierige JSP-Bearbeitungen im Temp-Verzeichniss des JBoss Vergangenheit. Derzeit befindet sich das Projekt noch in der Testphase, aber es hat zahlreiche Tests mit EJB, WAR (mit unteranderem JSF-Komponenten) und weiteren Modulen bestanden.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Der JBoss Development Deployer ist unter &lt;a class="bare" href="http://jb-dev-deploy.sourceforge.net/"&gt;http://jb-dev-deploy.sourceforge.net/&lt;/a&gt; verfügbar.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Performance Probleme und Optimierungen in Java/J2EE Umgebungen (Teil 1)</title><link>http://paluch.biz/2011/05/07/performance-probleme-und-optimierungen-in-javaj2ee-umgebungen-teil-1/</link><pubDate>Sat, 07 May 2011 11:19:22 +0000</pubDate><guid>http://paluch.biz/2011/05/07/performance-probleme-und-optimierungen-in-javaj2ee-umgebungen-teil-1/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Eine häufige Aussage von Anwendern ist: Schon wieder ist alles langsamer geworden. Oftmals nach neuen Releases, bei denen viele neue Features hinzugefügt und bestehende Funktionen erweitert wurden.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Model based development mit EMF</title><link>http://paluch.biz/2011/05/06/model-based-development-mit-emf/</link><pubDate>Fri, 06 May 2011 23:00:00 +0000</pubDate><guid>http://paluch.biz/2011/05/06/model-based-development-mit-emf/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;EMF kann aus einem Modell Java-Code erzeugen. Das so erzeugte Java-Programm kann Instanzen dieses Modells erstellen, abfragen, manipulieren, serialisieren (eingebaut als XMI oder anderes XML, mit Plugin auch in einer relationalen DB), validieren und auf Änderungen überwachen (für MVC). Darüber hinaus wird JUnit-Code erzeugt, der den generierten Code testet.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Von erfolgreichen Projekten und verpufften Illusionen</title><link>http://paluch.biz/2011/04/12/von-erfolgreichen-projekten-und-verpufften-illusionen/</link><pubDate>Tue, 12 Apr 2011 23:00:00 +0000</pubDate><guid>http://paluch.biz/2011/04/12/von-erfolgreichen-projekten-und-verpufften-illusionen/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Wenn ich heute jemanden Frage, was er in der letzten Zeit so gemacht hat, so antworten über 90 % &amp;#34;Ein Projekt im Bereich …​&amp;#34;. Dabei sind dies bei weitem nicht alles Projekte im IT Bereich. Ja die Projektarbeit dringt in immer weitere Bereiche von Unternehmen vor. So stellt sich mir immer wieder die Frage: Wann ist ein Projekt erfolgreich, wann ist es fehlgeschlagen?&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Developer's Dream-Team</title><link>http://paluch.biz/2011/02/20/developers-dream-team/</link><pubDate>Sun, 20 Feb 2011 14:54:32 +0000</pubDate><guid>http://paluch.biz/2011/02/20/developers-dream-team/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Viele Entwickler, denen ihre Software wichtig ist, haben eine Idealvorstellung vom Prozess der Entwicklung.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>JBoss Development Deployer</title><link>http://paluch.biz/2011/02/06/jboss-development-deployer/</link><pubDate>Sun, 06 Feb 2011 13:36:32 +0000</pubDate><guid>http://paluch.biz/2011/02/06/jboss-development-deployer/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Entwickler in Multi-Modul-Projekten haben viele Aufgaben. Während der Entwicklung wirkt sich besonders das Deployment/Re-Deployment einer Anwendung negativ auf die Effizienz aus. Es gibt zwar kostenpflichtige Tools (z. B. &lt;a href="http://www.zeroturnaround.com/jrebel/"&gt;JRebel&lt;/a&gt;), die Abhilfe schaffen, jedoch noch kein Open Source Tool.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Dies habe ich zum Anlass genommen und einen &lt;a href="http://jb-dev-deploy.sourceforge.net/"&gt;Development Deployer&lt;/a&gt; für JBoss AS entwickelt. Mit diesem Deployer können J2EE Multi-Modul-Projekte während der Entwicklung in der IDE bleiben, das lästige JAR’s bauen/deployen entfällt. So können beispielsweise in einer Web-Anwendung (WAR-Deployment) mehrere Klassenpfade (z. B. classes- und/oder lib-Verzeichnisse) konfiguriert werden.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Best Practice: Externalisierung von Queries in Enterprise-Projekten</title><link>http://paluch.biz/2010/10/20/best-practice-externalisierung-von-queries-in-enterprise-projekten/</link><pubDate>Wed, 20 Oct 2010 10:29:55 +0000</pubDate><guid>http://paluch.biz/2010/10/20/best-practice-externalisierung-von-queries-in-enterprise-projekten/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;In nahezu allen Enterprise-Projekten sind Zugriffe auf Datenbestände in Datenbanken erforderlich. Manchmal direkt über JDBC oder, in den besser organisierten Projekten, über objektrelationale Mapper wie JPA, Hibernate oder ähnliche.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>OBJEKTspektrum: Refactoring</title><link>http://paluch.biz/2010/06/24/objektspektrum-refactoring/</link><pubDate>Thu, 24 Jun 2010 06:08:44 +0000</pubDate><guid>http://paluch.biz/2010/06/24/objektspektrum-refactoring/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Seit dem 25.06.2010 ist es soweit: Mein Artikel &lt;a href="http://www.sigs-datacom.de/fachzeitschriften/objektspektrum/archiv/artikelansicht.html?tx_mwjournals_pi1%5Bpointer%5D=0&amp;amp;tx_mwjournals_pi1%5Bmode%5D=1&amp;amp;tx_mwjournals_pi1%5BshowUid%5D=6635"&gt;Code-Recycling: Refaktorisierung einer Alt-Anwendung in der Praxis&lt;/a&gt; (&lt;a href="http://de.wikipedia.org/wiki/Refactoring"&gt;Refactoring&lt;/a&gt;) wurde in der &lt;a href="http://www.sigs-datacom.de/fachzeitschriften/objektspektrum.html"&gt;OBJEKTSpektrum&lt;/a&gt; veröffentlicht. Ich bin auf Feedback gespannt und freue mich über andere Erfahrungsberichte mit Refactoring.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Alles eine Frage des Service</title><link>http://paluch.biz/2008/12/18/alles-eine-frage-des-service/</link><pubDate>Thu, 18 Dec 2008 21:09:07 +0000</pubDate><guid>http://paluch.biz/2008/12/18/alles-eine-frage-des-service/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Bei SOA stellt sich nur noch diese Frage. Aber eine Service-Architektur erfordert nicht gleich ein Enterprise Backend.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Es gibt viele Ansätze und Möglichkeiten, einzelne Dienste zu veröffentlichen, zu benutzen und diese auch zu realisieren. Ich möchte einen kurzen Überblick darüber schaffen, welche Erfahrungen ich gemacht habe - Eine Enterprise Anwendung mit JEE Bordmitteln jenseits von OSGi.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Impressum</title><link>http://paluch.biz/2008/11/22/impressum/</link><pubDate>Sat, 22 Nov 2008 13:00:56 +0000</pubDate><guid>http://paluch.biz/2008/11/22/impressum/</guid><description>&lt;div class="sect1"&gt;
&lt;h2 id="_mark_paluch"&gt;Mark Paluch&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Heckenpfad 14&lt;br/&gt;
69469 Weinheim&lt;br/&gt;
Germany&lt;/p&gt;
&lt;/div&gt;
&lt;table class="tableblock frame-all grid-all stretch"&gt;
&lt;colgroup&gt;
&lt;col style="width: 25%;"/&gt;
&lt;col style="width: 25%;"/&gt;
&lt;col style="width: 25%;"/&gt;
&lt;col style="width: 25%;"/&gt;
&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;E-Mail&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;a href="mailto:mpaluch@paluch.biz"&gt;mpaluch@paluch.biz&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_haftung_für_inhalte"&gt;Haftung für Inhalte&lt;/h3&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei bekannt werden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>EMF-Modelle in Datenbanken (Teneo/Hibernate &amp; EMF)</title><link>http://paluch.biz/2008/08/02/emf-modelle-in-datenbanken-teneohibernate-a-emf/</link><pubDate>Sat, 02 Aug 2008 19:35:15 +0000</pubDate><guid>http://paluch.biz/2008/08/02/emf-modelle-in-datenbanken-teneohibernate-a-emf/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Was kann man mit dem Eclipse Modeling Framework so anstellen?. Nun, zum Beispiel statt das Modell in XML zu serialisieren, können die Daten auch in einer Datenbank abgespeichert werden.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Das Geheimnis der Zauberschwämme und Schmutzradierer: Gelüftet</title><link>http://paluch.biz/2008/07/15/das-geheimnis-der-zauberschwaemme-und-schmutzradierer-gelueftet/</link><pubDate>Tue, 15 Jul 2008 11:33:14 +0000</pubDate><guid>http://paluch.biz/2008/07/15/das-geheimnis-der-zauberschwaemme-und-schmutzradierer-gelueftet/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Wer kennt Sie noch nicht? Alle namhaften Reinigungsmittelhersteller bewerben ihre Zauberschwämme und Schmutzradierer. &amp;#34;Ein neuartiger Schwamm, der alle Verunreinigungen beseitigt!&amp;#34; So oder ähnlich lauten die Versprechen. Und das schlimme daran ist: Es stimmt!&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Wiki auf dem Vormarsch</title><link>http://paluch.biz/2008/04/06/wiki-auf-dem-vormarsch/</link><pubDate>Sun, 06 Apr 2008 19:40:25 +0000</pubDate><guid>http://paluch.biz/2008/04/06/wiki-auf-dem-vormarsch/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Lange Zeit stand die heilige Kuh von KM am Firmament und keiner konnte so richtig was damit anfangen. Dabei ist KM nur ein Modebegriff für Wissensmanagement&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>AdAccount</title><link>http://paluch.biz/2008/01/12/adaccount/</link><pubDate>Sat, 12 Jan 2008 00:00:00 +0000</pubDate><guid>http://paluch.biz/2008/01/12/adaccount/</guid><description>&lt;div class="sect1"&gt;
&lt;h2 id=""&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2008/01/adaccount.png" alt="AdAccount Button"/&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;CRM Easywhere! Verwaltung mit System. Für alle. Von überall aus.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>About me</title><link>http://paluch.biz/2008/01/10/about-me/</link><pubDate>Thu, 10 Jan 2008 08:00:00 +0000</pubDate><guid>http://paluch.biz/2008/01/10/about-me/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I’m a &lt;a href="http://manifesto.softwarecraftsmanship.org"&gt;Software Craftsman&lt;/a&gt;. I strongly believe in continous improvement and change, lean methods and a sharp focus on the things I do. My main area of work is:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_software_engineering"&gt;Software Engineering&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Architecture design&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Working in software projects&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Development of frameworks&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Software development of business applications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Centralized log management and integration of Logstash&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integration of Redis&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build management/Continuous Integration/Continuous Delivery&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Training in the fields of agile methods (Scrum, Kanban)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Testautomation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Performance analysis and optimization&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>Profil</title><link>http://paluch.biz/2008/01/10/leistungenprofil/</link><pubDate>Thu, 10 Jan 2008 08:00:00 +0000</pubDate><guid>http://paluch.biz/2008/01/10/leistungenprofil/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;Ich bin &lt;a href="http://manifesto.softwarecraftsmanship.org"&gt;Software Craftsman&lt;/a&gt;, seit 2001. Kontinuierliche Verbesserung &amp;amp; Veränderung, Leichtgewichtigkeit (Lean) und Fokussierung gehören zu meinen Werten. Zu meinen Leistungen gehören:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_software_engineering"&gt;Software-Engineering&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Architekturentwurf&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Projektarbeit&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Frameworkentwicklung&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Entwicklung&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zentrales Logging/Integration von Logstash&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integration von Redis&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build Management/Continuous Integration/Continuous Delivery&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Einführung und Betreuung von agilen Entwicklungsmethoden (Scrum, Kanban)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Testautomatisierung&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Performanceanalysen und Performance-Optimierung&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_schulungen"&gt;Schulungen&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Clean Code&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Clean Architecture&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Continuous Delivery&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Einführung in Redis&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_profil"&gt;Profil&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/wp-content/uploads/2008/01/Profil-Mark-Paluch.pdf"&gt;Download Profil vom 22.12.2015&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/wp-content/uploads/2008/01/Kurzprofil-Mark-Paluch.pdf"&gt;Download Kurzprofil vom 22.12.2015&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_publikationen"&gt;Publikationen&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/wp-content/uploads/2008/01/paluch_OS_04_13.pdf"&gt;Publikation: OBJEKTspektrum 04/2013: Testautomatisierung mit Continuous Integration: Ist manuelles Testen noch sinnvoll?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://paluch.biz/wp-content/uploads/2008/01/paluch_OS_04_10.pdf"&gt;Publikation: OBJEKTspektrum 04/2010: Code-Recycling (Refactoring)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>Print on Demand - Shop</title><link>http://paluch.biz/2008/01/08/print-on-demand-shop/</link><pubDate>Tue, 08 Jan 2008 18:33:50 +0000</pubDate><guid>http://paluch.biz/2008/01/08/print-on-demand-shop/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2008/01/pod.png" alt="/images/2008/01/pod"/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_print_on_demand_wenn_die_bestellung_am_nächsten_morgen_da_ist"&gt;Print on Demand: Wenn die Bestellung am nächsten morgen da ist.&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Durch Kombination der neuen Technologien des Internet und des Fortschritts bei den Druckereien wird Print on Demand immer einfacher. Keine teuren Filmkosten mehr, kein langwieriger Druckprozess, sondern bestellen, drucken, fertig!&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>INTER-NOTE - Notenshop</title><link>http://paluch.biz/2006/09/20/inter-note-notenshop/</link><pubDate>Wed, 20 Sep 2006 04:00:00 +0000</pubDate><guid>http://paluch.biz/2006/09/20/inter-note-notenshop/</guid><description>&lt;div class="sect1"&gt;
&lt;h2 id="_warum_sind_noten_so_günstig_ganz_einfach_weil_es_inter_note_gibt"&gt;Warum sind Noten so günstig? Ganz einfach, weil es INTER-NOTE gibt.&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2006/09/internote.png" alt="/images/2006/09/internote"/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Gute Notenhefte können günstig zu haben sein. Dies beweist das Konzept von INTER-NOTE: In einem einzigartigen Online-Shop können musikalische Werke ausgewählt und zu einem persönlichen Notenheft zusammengestellt werden. Am nächsten Tag ist das gedruckte Notenheft da, und das zu einem unschlagbaren Preis.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Für dieses besondere Projekt wurde daher ein ganz besonderer Shop konzipiert und realisiert. Nach der Auswahl und Bestellung der persönlichen Notenhefte werden alle Daten online an eine Druckerei übertragen und gedruckt. Sämtliche Druckvorlagen sind als PDF-Dateien verfügbar und werden nach Kundenwunsch entsprechend zusammengestellt und mit Titel sowie Inhaltsverzeichnis versehen.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>BFK GmbH &amp; Co. KG - AdAccount</title><link>http://paluch.biz/2004/05/08/bfk-gmbh-a-co-kg-adaccount/</link><pubDate>Sat, 08 May 2004 00:00:00 +0000</pubDate><guid>http://paluch.biz/2004/05/08/bfk-gmbh-a-co-kg-adaccount/</guid><description>&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;span class="image"&gt;&lt;img src="http://paluch.biz/images/2004/05/logo-bfk.gif" alt="/images/2004/05/logo-bfk"/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_darauf_fliegen_die_spediteure"&gt;Darauf fliegen die Spediteure&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Für die international renommierte Spedition BFK wurde das System AdAccount angepasst und als &amp;#34;Speditionsprogramm&amp;#34; eingeführt.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Die Unternehmenssoftware dient der Verwaltung der internen Prozesse sowie der Aufträge. Das System verwaltet die Aufträge, die Sendungen und Kunden und unterstützt die Akquise (CRM). Alle wichtigen Prozesse der Buchhaltung und Fakturierung sind enthalten Zudem bietet das System viele komfortable Auswertungen. Eckdaten&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Datenspeicherung in SQL Server&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sehr kurze Antwortzeiten (Anforderung)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prozessbeschreibung mittels UML (Enterprise Architect)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Planung der Systemlandschaft&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Übernahme der bereits vorhandenen Daten (Excel)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Realisierung des Systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implementierung neuer Features (Online-Package-Tracking)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schulung der Anwender sowie der System Administratoren&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hotline &amp;amp; Support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Umfeld: Java, JDBC, SQL Server, JSP/Tomcat, WebServices/XML, HTML Reporting, Enterprise Architect, Oberflächen Design&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item></channel></rss>