When sending emails with my mailbox.org account, I occasionally receive errors like the following: The mail system <xxxxxx@gmail.com>: host gmail-smtp-in.l.google.com[142.250.147.27] said: 550-5.7.26 This mail has been blocked because the sender is unauthenticated. 550-5.7.26 Gmail requires all senders to authenticate with either SPF or DKIM. 550-5.7.26 550-5.7.26 Authentication results:…
Devoxx 2022 Playlist If you have only time for a single clip, see The Art of Code by Dylan Beattie ;-) Most interesting Devoxx videos Maven 4 improvements by Maarten Mulders Maven Build Speedup by Peter Palaga Aging developers by Tobias Modig Java evolution by Venkat Subramaniam (nothing really new, but hilariously entertaining) Videos I have watched that are not of great interest to me…
Previous posts: Java 8-12 Java 13-15 Java 16 (2021) The “ instanceof pattern matching ” feature (from Java 14) is now final Records (also a Java 14 preview) are now final a new incubating Vector API Exhaustive feature list . See also Java 16: New Features Java 17 (2021 - LTS) Java 17 itself brings only changes related to specialized use cases (like floating-point semantics or pseudo-random…
Picasa has been my favorite image organizer and viewer for more than a decade. It is a small and lightweight program - and it is really fast, especially when managing huge image collections over a network share. Now, more than 5 years after Picasa has been abandoned by Google, I have finally found a replacements: XnView . While all the commercial programs that I evaluated had thousand of features…
A year has passed since the last post Java 8-12 , three new Java versions have been released, but no big news from a developer’s perspective… Java 13 (2019) Switch expressions: yield statement (preview) Text blocks (multi-line strings like in Groovy - preview) Exhaustive feature list . See also Java 13: New Features Java 14 (2020) Pattern matching of instanceof Object obj = /* ...*/ if ( obj…
Some months ago, I installed Ubuntu 18.04 (the most recent LTS version) in addition to Windows 10 on my notebook and started a dual-booting life (Linux for work, Windows for private stuff). Now this soon became annoying, so I tried to get rid of Windows alltogether in the last few days. This is a kind of checklist for what changes I applied to a standard Ubuntu system so that it serves my needs as…
Since Java switch from a (kind of) 3-years feature release cycle to 6 months, it is hard for me to track the most important changes. This cheat-sheet shall help me to quickly pick the right Java version. For an extensive list see e.g. Wikipedia . This lists just the most important changes (from my point of view): Java 12 (2019) Switch expressions (preview) String result = switch ( new Random ().…
Grape is a great thing if you want to write a Groovy script that depends on a third party library: Just add @Grab('groupid:artifactid:version') on top of your script, and the specified Maven artifact will be downloaded and is available at runtime. However, if you are forced to use a different repository server (like a private Artifactory or Nexus service), the documentation is not very exhaustive.…
Since Version 6.6, Elasticsearch includes a feature called Index Lifecycle Management to implement detailed index retention policies. In this post, I show how to use this feature for a very basic (and common) usecase: How to delete old logging data from an ELK stack In the following, I assume that the Elasticsearch cluster contains data created by Logstash and Filebeat , and that the Elasticsearch…
Until recently, I have been using Google services for most of my daily business: For email communication , contacts and addresses , appointments and reminders , notes , navigation , and of course for searching the internet . Choosing Google was nothing but a pragmatic decision: their applications are simple, lean, easy-to-use, rock-solid - and they are free. But over the years, I became more and…
The recent Jenkins security advisory discloses a (quite obvious, in retrospect) security issue regarding the “Execute system Groovy script” build step ( SECURITY-292 ). The recommended solution is to update the Groovy plugin to version 2.0+, which integrates the script security plugin . Sounds easy, but can be very hard (almost impossible) in practice… Approval for Inline Scripts After updating…
To log HTTP requests and responses with JBoss 7, activate the RequestDumperValve and enable the org.apache.catalina.core.ContainerBase logging category. Here are the relevant excerpts from standalone.xml : [...] <subsystem xmlns= "urn:jboss:domain:logging:1.3" > [...] <logger category= "org.apache.catalina.core.ContainerBase" > <level name= "INFO" /> </logger> [...] </subsystem> [...] <subsystem…
When running a Jenkins server with many jobs and many agents, you can quickly run out of disk space because of orphan workspaces: Jobs may roam on different agents, leaving a workspace on each Each concurrent job execution needs its own workspace When renaming or deleting a job, the workspaces may still survive on the disk (with the original job name) With the Workspace Cleanup Plugin , the…
JPA 2.0 has no explicit support for stored procedures (JPA 2.1 has). One workaround is to use native queries (like {call my_package.my_stored_proc(?, ?)} ), but that doesn’t work when the procedure has out-parameters. Here is a sample implementation that uses Hibernate’s Work interface: import java.sql.CallableStatement ; import java.sql.Connection ; import java.sql.SQLException ; import…
The Jenkins 2.0 alpha version is a good opportunity for me to finally spend some time with Docker (some two years late, shame on me). So, this is a short documentation of my steps to a dockerized Jenkins 2.0 instance on my Windows 10 box: Lesson #1: Run Jenkins in a Docker container (without prior Docker knowledge) Install Docker as described at https://docs.docker.com/windows/ (I’m using Docker…
Some quick code snippets for using an Ant build script from within a Gradle build : Plain and simple Make all Ant targets available as Gradle tasks: ant . importBuild ( "build.xml" ) Conflicting target names If the Ant script contains a target that conflicts with a Gradle task, a simple import will fail. With an optional configuration closure, it is possible to rename the Ant target on import: ant…
My session notes from second day of the Confess 2015 conference… Getting to Know the Emerging Enterprise Mobile Platform by Michael Keith of Oracle …about Mobile Backend as a Service (MBaaS) Microservices and Conversion Hunting - How to build software architectures for changeableness by Bernd Zuther of Codecentric A case study on how an e-commerce company switched from a monolithic application to…
My session notes from first day of the Confess 2015 conference… Keynote: One VM to Rule Them All by Thomas Wuerthinger of Oracle Thomas talks about an ongoing research project at Oracle: It aims that dynamic languages at the VM should be as fast as static typed languages (in orders of magnitude). Links: Graal, Truffle Slideshare Introducing Spring Cloud by Agim Emruli of Mimacom Spring Cloud is a…