- How to Convert XLS to XLSX in Java
Why Upgrading XLS to XLSX Is Worth Your Time
Ask any seasoned Java developer who's worked with Excel files long enough, and you’ll probably hear a similar refrain: the old XLS Excel format is clunky and annoying. It’s been around since the late ’80s, and while it’s still supported in a lot of systems, it's not doing us many favors today. It was, after all, replaced with XLSX for a reason.
Unfortunately, there’s still a lot of important data packed in those old binary XLS containers, and some developers are tasked with making clean conversions to XLSX to improve the usability (and security) of that data for the long run.
- How Clojure Shapes Teams and Products
Four episodes into our journey exploring real-world Clojure stories, fascinating patterns have emerged from our conversations with leaders at Quuppa, CodeScene, Catermonkey, and Griffin. While each company's domain is distinct — from indoor positioning technology to banking infrastructure – their experiences reveal compelling insights about how Clojure influences not just code but entire organizations.
Building Teams and Projects
The journey to adopting Clojure often begins with practical challenges. At Quuppa, they needed better ways to handle data serialization in their enterprise system. Catermonkey's Marten Sytema had already built a working product in Java but saw the potential for faster iteration with Clojure.
- Recurrent Workflows With Cloud Native Dapr Jobs
We have been learning quite a lot about Dapr now.
These are some of my previous articles about Dapr Workflows and Dapr Conversation AI components. Today, we will discuss Jobs, another important building block of the Dapr ecosystem.
- Java Virtual Threads and Scaling
Java Virtual Threads were introduced in JDK 19 as a preview feature as part of Project Loom, but they are fully supported starting from JDK 21 and beyond (JDK 24 includes further refinements).
Virtual threads primarily help developers by simplifying concurrent programming — eliminating the need to choose between synchronous and reactive models, and reducing the complexity of working with NIO (non-blocking I/O) APIs. They seamlessly translate traditionally blocking operations such as I/O calls, synchronization, and thread sleeping into efficient, non-blocking operations under the hood, while allowing developers to write code in a straightforward, blocking style.
- Selenium Pagination Tutorial: How to Handle Page Navigation
As websites are becoming an integral part of the business, they must have a good UI that provides the best user experience and loads the content quickly.
Websites can be categorized into two types based on the categorisation of their content: paginated and infinite-scrolling websites. The paginated website divides the content of the website into different pages, allowing the user to access all the available content on the different pages of the website one by one seamlessly.