Daniel FernΓ‘ndez's Avatar

Daniel FernΓ‘ndez

@danfenz.dev

Software engineer. Author of open source technologies @thymeleaf.org, unbescape, attoparser, atomichash, javatuples, javaruntype, jasypt, op4j and javagalician. 🏑 Galicia, Spain, European Union.

89
Followers
67
Following
60
Posts
03.11.2024
Joined
Posts Following

Latest posts by Daniel FernΓ‘ndez @danfenz.dev

Reorganizing development work stints in order to make the best use of the available AI credits before they top up the following month.

The trend that no one saw coming.

14.02.2026 18:51 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I cannot find the words to express how much I dislike the file permissions mechanism in Windows.

11.02.2026 17:26 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

βœ… Blue Danube
βœ… Radetzky March

There we go then. Wishing you all a very happy 2026!

01.01.2026 12:49 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

So apparently, if you are a huge software vendor and charge big money for support and consulting, you can sell rubbish software and ignore standards and specs, and then expect that your customers will force their OTHER vendors to adapt to your garbage because that will be much cheaper for them.

30.12.2025 11:53 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Automate repetitive UI tasks.

The Gemini 2.5 Computer Use Model lets you build agents to handle forms, reports, and more. The model is trained with safety features and is now in public preview.

Try it β†’ goo.gle/Computer-Use-Model

30.10.2025 20:02 πŸ‘ 6 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0
Post image

OK, this is my first one. Let's build something! #raspberrypi

30.10.2025 20:45 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
In the middle, there is an AI-generated picture of a duck. Below it, there is a human-illustrated Duck, looking at the other duck in shock, and saying "Wtf is this?"

In the middle, there is an AI-generated picture of a duck. Below it, there is a human-illustrated Duck, looking at the other duck in shock, and saying "Wtf is this?"

AI-generated content is flooding the internet, and we're entering a new era of information overload. Watch our latest video to find out how AI slop affects the internet and why kurzgesagt videos will always remain human-made: https://kgs.link/AISlop

07.10.2025 14:02 πŸ‘ 1263 πŸ” 398 πŸ’¬ 18 πŸ“Œ 27
Explanation on F#'s system for applying units of measure to numerals.

Explanation on F#'s system for applying units of measure to numerals.

I wish Java had this.

29.09.2025 19:18 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
From Beans to Boot, Aspects to AI by Rod Johnson / Juergen Hoeller / Josh Long @ Spring I/O 2025
From Beans to Boot, Aspects to AI by Rod Johnson / Juergen Hoeller / Josh Long @ Spring I/O 2025 YouTube video by Spring I/O

πŸƒ From Beans to Boot, Aspects to AI by Rod Johnson / Juergen Hoeller / @starbuxman.joshlong.com @ Spring I/O 2025

▢️ Video: youtu.be/i_fiHmg1qM0 #springio25

17.09.2025 08:09 πŸ‘ 8 πŸ” 5 πŸ’¬ 0 πŸ“Œ 0

I mean... OK. I can do that.

But also "uv python find --show-version".

Anyway. Perhaps I should read the documentation.

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I explained that point at the chat, and then came the first thing similar to a "good" answer: use "uv python find", which will output the path of the python runtime, then pipe it to "xargs -L 1 -I {} {} -V" to execute it and extract the version ("-V").

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

3. So I asked Gemini (2.5 Flash), and this one told me that "uv python" without any arguments would give me the path of the python executable being used in the virtualenv.

Which was incorrect again, as this only outputs the list of arguments that can be passed to it.

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

So I explained that 0.8.17 was the latest version, released 5 days ago, and its response was that in such a case I should just use "python --version" without uv (OK, that's true, but I wanted a "uv" option). And again that "uv python list" would indicate the current one in the list (nope, nope).

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I told it that "uv python --version" did not exist, and that I was using uv 0.8.17… and its response clarified that, in fact, the "uv python" subcommand had appeared in uv version 0.9.0, so I needed to upgrade πŸ˜•

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

2. So I asked Claude (Sonnet 4), and again it told me that I should use "uv python --version" (nope) and also that "uv python list" would give me a list of the installed python versions, indicating the currently active one (also nope on this last point).

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Interestingly, this explanation included a literal quote from the release notes explaining the reboot, and a link to such release notes where apparently I could verify that point myself.

None of that was real. Version 0.8.17 was released five days ago.

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I reiterated that I used version 0.8.17, which is newer than 0.1.0 and, as a response, I obtained a lengthy explanation about how, contrary to what it seemed, 0.1.0 was in fact a newer version than 0.8.17 because the uv project had been rebooted after 0.8.0, back to 0.1.0 🀨

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

1. Github Copilot (GPT-4.1) told me it was "uv python --version".

I told it that a "--version" option didn't exist for "uv python", and that I was using uv version 0.8.17. Its response was that this "--version" option appeared in 0.1.0, so I needed to upgrade to that version 🀷

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I've just asked 3 AIs about the way to obtain, using the "uv" command, which is the version of the python runtime that is being used for the active virtual environment.

I know I can use "python --version", but I was curious to see whether I could do everything with "uv".

15.09.2025 20:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

SQL was dead.

Then Hadoop got the hype, and we put a SQL layer on top to improve it. Then noSQL got the hype, and we put a SQL layer on top to improve it. Then the Data Lake got the hype, and we put a SQL layer on top to improve it.

I can't wait to see what SQL looks like on top of AI agents.

12.09.2025 07:57 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
JEP 401: Value Classes and Objects (Preview)

#java JEP 401 on value classes is submitted : openjdk.org/jeps/401

09.09.2025 06:49 πŸ‘ 25 πŸ” 13 πŸ’¬ 0 πŸ“Œ 3
Preview
GitHub - arxila/op4j: A Java library aimed at improving the quality, semantics, cleanness and readability of Java code, especially auxiliary code like data conversion, structure iteration, filtering, ... A Java library aimed at improving the quality, semantics, cleanness and readability of Java code, especially auxiliary code like data conversion, structure iteration, filtering, mapping, etc. - arx...

I keep moving my old "small" OSS projects to a new namespace, and so "op4j" (a fluent API for Java similar to today's streams, that I developed back in 2010) now has a new home. Though in this case I have not modernized the code because the project was deprecated by JDK8.

github.com/arxila/op4j

04.09.2025 21:26 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

This touches on two critical points most people miss:

First that most OSS, even popular projects, get no relevant external contributions ever.

Second that maintainers get NOTHING out of their effort besides a fancy line in their CVs that most companies ignore.

OSS is 95% fueled by mere dev pride.

03.09.2025 18:47 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
GitHub - arxila/javaruntype: A runtime representation of the Java type system A runtime representation of the Java type system. Contribute to arxila/javaruntype development by creating an account on GitHub.

And another one of my "old" libraries gets refreshed and moved to a new namespace: JavaRuntype.

JavaRuntype is a runtime representation of Java's type system.

github.com/arxila/javar...

02.09.2025 14:09 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
GitHub - arxila/javatuples: Simple Java library that provides a set of tuple classes. Simple Java library that provides a set of tuple classes. - arxila/javatuples

I've given my old "JavaTuples" library a new life, reimplemented as Java (JDK17) records. And I've also moved it to my new Arxila OSS project organization.

Solo, Pair, Trio, Quartet… JavaTuples 2.0 is out!

github.com/arxila/javat...

28.08.2025 18:46 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

The AI revolution is slowly turning for me into wasting hours angrily debating with an LLM about class and variable names.

24.08.2025 09:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Even the smallest piece of software you want to try is now distributed as a 12-container docker-compose deployment or kubernetes cluster. Everything is so slow.

It's incredible how good we are at making our new shiny supercomputers turn uncomfortable and cumbersome at every step of the tech cycle.

06.08.2025 12:10 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Oooh...what are these shiny new lock icons πŸ€”

That's right... Spring Modulith support landed in @intellijidea.com 2025.2.

You don't have to run the test to know whether you are violating any module boundaries. IntelliJ IDEA tells you as you code πŸ”₯

05.08.2025 04:52 πŸ‘ 10 πŸ” 4 πŸ’¬ 0 πŸ“Œ 1
Preview
Spring Boot 4.0.0-M1 available now Level up your Java code and explore what Spring can do for you.

Spring Boot 4.0.0-M1 is available now:

spring.io/blog/2025/07...

24.07.2025 17:36 πŸ‘ 42 πŸ” 14 πŸ’¬ 1 πŸ“Œ 0
Post image

Hello summer.
#sanxoΓ‘n

23.06.2025 21:03 πŸ‘ 0 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0