Welcome!

In this blog I will keep you, and everybody else who is interested, informed on my challenge to learn the Java programming language. Check the About Me and My Technology sections to learn more on the “why and what”

Update #13 A restart?

Just a short one, trying to re-start my posting habit.

I changed my approach to learning Java, now I understand most of the basic concepts: I am not going to fully finish my Udemy training anymore, but instead doing much more learning by example.

Did I make progress? I think so:

  • I started with understanding Spring, Spring Boot, Spring web starter and Spring security
  • I finally understand Maven and have added some libraries to my sample projects
  • I have a vague idea of a case program I want to build in the geographic domain. So I started with integration of the Java Topology Suite(JTS) in my project and started experimentation

OK, enough for now. Let’s see if I can keep doing Java, as the very busy month of August has started again…

Update #12 New year resolutions for 2023

Happy 2023 everybody!

Well, you can see that it has been quiet on the blog, as it has been quiet on my road to Java greatness. From right after the holidays last year, it has been very hectic at work. I could not find enough energy and drive in the evenings and weekends to continue with the Java learning.

Did I disband my Java learning completely? Well, to be honest I don’t know yet. I am spending part of my 2 weeks end-of-year holiday thinking about my work goals for 2023. I am doing my current role at my company (Release Train Engineer / Lead Scrum master) now for about 5 years, of which 2 years at my current department. To me that means time to start thinking about next steps. Working at a large company like major airline AirFrance-KLM, gives the opportunity to find new challenges within the company, for example in another domains (e.g. Flight, Commercial, Cargo, Engineering & Maintenance, Ground etc…). And another domain brings other people, other work culture, other technology.

So I set a goal for myself to figure out my next step in this year. And I am having an open mind for either a new work environment or a change in role or function. I am still very much interested in technology, which I cannot do much with in my current role. Therefore I am also looking into options where technology is more in the picture.

To come back on Java (as for now this is my Java Blog), I expect to still finish some chapters in the current Java course, but with less ambition. Time will tell if I will be able to use to knowledge in the coming year(s)

Update #11 It has been almost 2 months

Yes, shame on me. It has been almost 2 months since my last post. Did I quit my challenge? No that is certainly not the case. But I have to say that motivation has not always been there to make big steps.

Last time I was halfway the monster chapter on Sets. At this moment I still have not finished this chapter. Just the sorted collections and a long challenge to go. The topic in itself is not specifically complex or difficult, but I want to do it well. This means that I need time and ‘brainspace’ available to start on the many video’s and challenges. I have been lacking in this department obviously.

Most important reason I spend less time on the training, is because of my nights. Curious 🀨 ?

Read More

Update #10 My spirit is always alive, not the blog…

Just a mini update (without a READ MORE) this time. As the title says, I am still very motivated to finish this course. But is not easy to find enough time. Last weeks were hectic at work due to the preparation of our quarterly planning event. And even in the quarterly hack week I had only little time for my Java journey as I joined other trainings and organised a (JIRA) training of my own.

For the 2nd time this month my blog was down a few days without me noticing. This time because my (external USB) backup drive was full. Not sure what happened, as I thought older backups were automatically removed. Have to keep a better eye on this and find out how Proxmox handles this exactly. And I was thinking, probably first thing I have to develop when I am a little bit more advanced in Java, is a simple “host monitor” script: Hit https://adeknegt.nl and check if there is 200 response code. Suppose this is dead simple with Spring, but maybe it is doable too with plain old Java. I still have the networking chapter to go in the course.

Finally, I am now in the middle of the 6.5 hours chapter on collections (sets, maps and some assorted extra’s). I feel it is really important to learn this part well, as in almost all programs you use them extensively. Now at 47% of the course (not sure how they measure this, maybe just a count of videos + exercises). On to the next 53%!

(I don’t feel like celebrating post #10, maybe a big party at #25 or so)

Update #9 Lessons learnt after WordPress update

I don’t check my blog every day (and I think you don’t either). Just today I gave my URL to a colleague and more or less by mistake I clicked the link. And so I found out that my site was showing without any CSS and therefore being completely dis-functional. Also the admin pages did not work! Mild panic…

It has taken a few hours to figure out what happened and finally how to fix it: On May 24th an automatic WordPress update was installed. First I thought this had broken my WordPress theme. But even after hacking the database to change the theme to the default theme, the problem was still there.

After some more frustrated trial and error and a lot of googling, I finally had my “Aha Erlebnis” (https://en.wiktionary.org/wiki/Aha-Erlebnis). The new WordPress update had overwritten the wp-settings.php file. This file requires an extra line for my site to work with https. How I figured this out when I started with WordPress, is another story full of frustrations. Anyway, adding the following line to wp-settings.php solved my problems:

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on';

Now, is there a learning and can I avoid this problem in the future? Well, that is a YES and a NO at the same time.

Read More

Update #8 Worst code ever :-)

I am finishing the chapter on packages, scope and access. Not the most sexy topic, but I am happy to do it. It was itching already for some time when to use public, private, static, final etc… It was used before (of course), but not really explained. Now it is. Again, not something you will need to know in detail in daily practice, but I sorta think this is fundamental knowledge that is good to have.

As part of this chapter, there was a fun challenge to illustrate scope. The assignment: a program that prints primary school “times” list for a value. E.g. for value 3 : 1 * 3 = 3, 2 * 3 = 6, 3 *3 = 9 etc….

One specific condition: all variables, members, methods and classes have to be called x (or X for the class)!! It results in completely unreadable code, but due to scoping in Java, it can be done. See if you can follow the code πŸ™‚

Read More

Update #7 Am I doing the right thing?

The other day I was talking about my Java challenge with one of the (sr) Java developers in my team. I told him that I was currently learning topics like Java Generics and Access Modifiers. His reaction caused me some concern.

He explained that these indeed are topics that Java developers learn and know, but in practice you do not really “use” them. In the daily work you mostly implement known design patterns, which you bootstrap with more or less stand Java coding blocks. And most of the time standard libraries like Spring(-Boot) also take away complexity from using Java standard functionality.

So, should I stop learning the details of Java and more focus on general Java, design patterns and Spring?

Read More

Update #6 Old fashioned bash scripting

Due to holidays (a week in the sun & the snow!) and busy return at work, my study progress has been disappointing. But I was able to work on another technical topic that had some urgency: updating the software on my NUC that runs this blog. For the technical nurds some more information on my setup:

  1. An intel NUC with 16G memory and a fast 500GB SSD
  2. The NUC runs Proxmox virtualization software
  3. In Proxmox I have a so called LXC container running, which you could compare with a virtual machine
  4. The LXC container runs Nginx as reverse proxy for my domains and docker to run my containers
  5. On the LXC container, 4 docker containers are running:
  • 1 WordPress container for this blog
  • 1 WordPress container for my band: https://thomandthejerrys.nl
  • 1 MySQL container for WordPress
  • 1 Portainer container, to have a nice frontend for the containers

Portainer is great: you visually see the status of your containers and you can stop, start or rebuild them from the GUI. You can even go directly into a container terminal from Portainer. But there is one problem, you cannot update portainer from within portainer. It is not too difficult to do this from the command line, but I always forget the exact commands. The solution: A bash script that took me almost a day to make.

Continue if you are curious…

Read More

Update #5 – It is really a class!

Again a short update. Since last update, I am now in the last part of Section 9. This section is about Interface, Inner- and Abstract classes. Not too difficult, but doing every challenge yourself really takes time. But I learn a lot from doing it myself every time, so I keep at it.

Why a short update? Well, as said I do this course beside my work and my social life. And especially work is really busy. Last week I helped organise the first ‘hackweek’ of my newly formed department. A hackweek is a full week dedicated for Learning and R&D. So you can do a personal training on a topic of your interest, organise a hackaton, share knowledge with colleagues etc… I am really happy KLM allows for a lot of time for Learning and R&D, not only on paper but also with initiatives like the hackweek.

Another busy topic at work is the monthly PI planning next week (if you are interested: https://www.scaledagileframework.com/pi-planning/). This always takes substantial time to prepare and assure that it runs smoothly.

The result: with some other personal and social obligations (a funeral, weekly tennis, theatre, band practice), there was not much time to focus on my road to Java greatness. More and more I have to conclude I am really doing like a school class (not a Java class). I have to accept it will take considerate effort and lead-time to finish it. I am still persistent and convinced I will make it to the end, but it will take for sure several more months. Now up to finishing section 9 and then section 10 about Java Generics πŸ™‚

Update #4 – Another one off the list

The title is a poor word joke, as I am finishing up on chapter 8 with Arrays, Lists, ArrayList and LinkedList. Not too complex I think, although the LinkedList has some quirks for sure. I do get how it works in code, but I am not sure yet why you need a separate iterator to be able to iterate through the elements. Well, I probably have to practice some more to get used to it.

Not much to say about lists, so maybe a small update on the course and the learning experience. I still like the structured manner the topics are presented. What I do see now: doing the challenges yourself before checking out the solution is maybe one of the most valuable parts. I am still somewhat frustrated that the teacher often has another take on the solution, but usually there is a lot to learn on how to efficiently solve certain standard problems.

Earlier I was positive about the exercises, for which you have to copy your code to the website where it runs and checks the output. I am less positive now. In last chapters the challenges were quite large (several videos), but at the exercise it turns out the you almost literally have to create the code from the challenge. That is not much of an exercise.

Anyway, still like the learning and the (almost) daily progress I make. Next Topic: Inner- and Abstract Classes & Interfaces.