About
This is a technology blog by Matthias Friedrich, a software developer and architect from Karlsruhe, Germany. more ...-
Recent Posts
Tags
- android
- backup
- best practices
- books
- build systems
- c/c++
- computer science
- databases
- deployment
- distributed systems
- django
- docker
- documentation
- go
- hadoop
- java
- java python
- kubernetes
- libraries
- linux
- machine learning
- maven
- meta
- monitoring
- music
- musicbrainz
- networking
- opinion
- oracle
- process
- productivity
- prometheus
- python
- quality
- quick tips
- rcs
- scalability
- scheme
- scripting
- security
- server
- shell
- standards
- testing
- tools
- ubuntu
- web
- xml
Category Archives: java
Prometheus and Spring Boot Health Checks
When trying to set up alerting for Spring Boot services with Prometheus, I discovered the synthetic “up” time series which is great for checking whether the monitoring system can reach my service instances. While this is a great thing, I also … Continue reading
Spring Boot: Logging Failed Logins
In many applications it’s important to react to failed logins and other security-critical events, for example to log the failed login attempt to a file or to display a captcha after repeated failures. Spring-based applications come with a simple mechanism to … Continue reading
The Curse of Convenience Methods
In the old days, many Java APIs were fairly low level and pretty generic. You often had to explicitly select a concrete implementation, provide lots of parameters, and generally needed to know how things worked. This has changed in recent years – modern … Continue reading
Empty InputStream with Spring MVC
The other day, I was trying to build a simple batch upload interface for a Java web application running Spring Boot with Spring MVC on Apache Tomcat. But when I tried reading the InputStream in my controller, it was always empty. … Continue reading
Resolving JARs
Sometimes it’s useful to check whether a local JAR file is available from Maven Central, for example when converting an old build system to Maven. In many old systems, JARs aren’t named consistently and versioning info isn’t available. Fortunately, Maven … Continue reading
Normalizing Text in Java
Once in a while I see misguided attempts at normalizing text to make it suitable for use in URLs, file names, or other situations where a plain ASCII representation is desired. This can be tricky but with Java’s excellent Unicode … Continue reading
Installing Oracle’s JDK on Debian/Ubuntu
Due to licensing issues, Linux distributions don’t ship Oracle Java packages anymore. In many cases, that doesn’t matter since you can just use OpenJDK. But if you do need Oracle’s JDK, Debian packages are a bit more convenient than handling … Continue reading
Maven: Discovering Dependency Conflicts
Among other things, Maven’s dependency plugin displays the result of Maven’s dependency resolution mechanism. The output of the dependency:tree goal makes it easy to see where transitive dependencies come from. This week I discovered that recent versions of the plugin … Continue reading