Language selector

My garden is well, how is yours?

Okay, so what does the Software Garden actually mean?

If you’re looking for the original explanation of what the ‘software garden’ is, then I guess you won’t find a better explanation than the one I read years ago in The Pragmatic Programmer by Andrew Hunt and David Thomas.

There are these books, films, paintings, etc. which revolutionise the way you think in certain aspects. Many people took many things from this influential book: some started boiling frogs, some talking to rubber ducks. I was raised close to the nature, therefore in my opinion the software we create and use is much more like a garden than some architecture or machinery. It lives in a way. It’s never done. The whole ecosystem constantly changes. You pray for the rain. The summer comes after the spring. New plants need space. We need to get rid of bugs to have something to eat. You can’t start with green field every week. And so on…

That’s why years ago I changed my headline from ‘Software Developer’ or ‘Software Engineer’ to ‘Software Gardener’. Sure, it confuses and intrigues some people who haven’t read The Pragmatic Programmer. It also allows me to spot a few other folks with the same description of their position, and we instantly recognise each other.

Therefore, this page is meant to be the internet representation of my ongoing journey in Software Gardening. It’s not industry-scale farm with plant monoculture, acres and acres big. It’s my little garden, with seeds I care about, with birds singing in the sky and for sure, with some bugs as well. Consider yourself invited.

In the chase for non-trivial examples to illustrate possible usage of JEP 305, some people might have gone too far, I guess. In particular into the more challenging area of the equals() method, present in all Java objects.
Java 14 has a lot of new features. One of them (as preview feature) is pattern matching with instanceof. Some people programming in languages supporting the functional paradigm to some extent, e.g. Scala, Kotlin (not to mention Haskell) jumped high, full of joy ‘Yay, we gonna have match or when, extracting data, guards, deconstructors in companion objects and more!’

Below you can find a piece of code written in Java. I’d like to ask you one thing: please don’t run this code before you try to answer.

Java 14 brought Records as one of the preview features. For many it was reasonable to say “no more JavaBeans code generation” or “Lombok is dead”. Is that really the case? What one can do with records and what can’t? What about reflection and serialization? This talk has been presented at e.g., CodeCamp Romania, JPoint.
Hey, there are two major Java versions released every year! We don’t have to wait 3 years or so for new features any more. Isn’t that cool? ;-) So… would you like to check out what has happened in Java 14? Switch expressions available to public? No more NPEs? Record types? Pattern matching? Text blocks? If you find them interesting, let’s dive deep together into new interesting stuff. This talk has been presented at Wrocław JUG and Warszawa JUG.
Hey, there are two major Java versions released every year! We don’t have to wait 3 years or so for new features any more. Isn’t that cool? ;-) So… you’d like to check what has happened since Java 11? Switch expressions? Text blocks? New functions in String, Streams and other APIs? What are the Shenandoah and ZGC about? AppCDS to speed up spin-off? If you find them interesting, let’s dive deep together into new interesting stuff.
It’s (post) Java 11 time now. (Just in case your boss didn’t notice ;-)) In this talk, I’d like to tell you how I managed to migrate two real Java server apps to Java 11 and show some demos. Why was it done? How to convince the business? What and how was done? What wasn’t required? Does anyone read licenses, manuals, and talks’ descriptions? Where did I fail in the first approach?
How a developer can tell if the system is sick just by taking a look at the input and the output? If you’d like to know that (plus you like standup comedy), come and see! The treatment is safe ;-) One approach to get familiar with a system is a long and intense reading the manual (and to run an eye over the source code sometimes). Another approach is to take a deep dive into the data model (often in the DB) and to surf the user interface.
“The best sorting algorithm is quick sort." “Indexes make DB faster." “Data should be sorted using ORDER BY." “Composition - good; inheritance - not good." “Windows is an operating system." “You must have transactions in your DB." “Java is slow." “Don’t eat yellow snow." “You shall not self-sign your certificates." “Interrupt in Java is broken.” The IT world is full of mantras/revealed truth, passed (often in oral tradition) among developer tribes.
There are 10 kinds of people: the ones who already log stuff and the ones who will. ;-) But what can be fascinating about logging? It’s just adding some statements of given level to a file in /var/log, so what’s this presentation for in the fist place? Well, ordinary adding lines to /var/log and tracing them with tail -f or searching with grep is so… 1980 and inefficient. Meet Graylog: a centralised and distributed log management system.

Language selector