nipafx news
Published in

nipafx news

Goodbye 2019

CodeFX Occasionally #75 — 31st of December 2019

Hi everyone,

today’s the last day of 2019 and I hope you all had a good year! Mine was… weird. I mean, 2019 — what kind of off-beat number is that even?! Now, 2020 looks much better! But I don’t want to get ahead of myself. In 2019, some big things went well, but a lot of smaller things didn’t. I’ll examine both in this newsletter, which, as is custom, is part one of a twofer about 2019 and 2020. Expect part two next weekend.

Usual caveat:

Naturally, this is an exercise in navel-gazing. I’m doing this more for me than for anybody else because putting my thoughts in writing sorts them out and publishing them makes sure I can’t easily go back and retcon the stuff that didn’t work out. If you’re not into me talking about myself and are here for the Java content, I kindly recommend to skip this weekly and the next.

Last years’ posts:

As usual, I’ll first review my plans for the ending year before looking at my various channels and a best of this year’s content.

I send this newsletter out some Fridays. Or other days. Sometimes not for weeks. But as an actual email. So, subscribe!

Plans for 2019

After a few years of creating content purely as a hobby, I realized in 2018 that that’s not sustainable and I needed to create a larger overlap of these activities with earning my livelihood. I struggled with thoughts of monetization and the strategies required to make that work until the end of that year brought another realization: Thanks to my various online activities I was gaining insights and visibility that allowed me to earn money elsewhere, e.g. as a trainer. That was good news because it allowed me to keep pursuing my passion of putting out content while justifying it as an investement into my skills and as marketing.

So I didn’t need to change much after all! Accordingly, my headline for 2019 was to keep doing all the things, but connect them better to each other and to my offer as a consultant and trainer. Without spoiling the rest of the newsletter, I can already say that producing content didn’t go so well because a few big ticket items, private and public ones, took a lot of time. We’ll look at all of that next.

As to better connecting these things, this became part of the bigger plan to kill CodeFX. I did a few important steps in that direction and they will come to fruition in 2020, so I’ll discuss it in detail in the next issue.


My 2019 was dominated by a few big endeavors that ate up much of my attention and energy. I want to briefly discuss them before coming to my blog and other channels.


Together with my daughter I spent the first two and a half months of the year in Vietnam. Not as a holiday, but as an experiment in living an everyday life in another country. I mostly worked remotely but also gave a few days of training in HCMC while the little one went to a German kindergarten. My wife (boy, I hate these possessive pronouns!) can’t work remotely, but she came to visit us for three weeks to take her holiday. The whole thing was amazing and I’m very grateful that we got to do it!

The Java Module System

The Java Module System finally got published! 🙌 After Manning and I disagreed on the final editing process, Jeanne Boyarsky jumped in and did the final review in my place. She effectively carried the book over the finishing line, which is pretty amazing. Thanks again Jeane!

While I’m not exactly ecstatic about how the entire writing-a-book-with-a-publisher thing went, I learned a lot from it and am looking forward to self-publish a book in twenty-twenty…mumblemumble…one? Maybe?


Then there’s my professional love child: Accento. Organizing half a conference (the other half was put together by my parter-in-crime Uta Leonhardt-Hamm) was a thrilling and fulfilling experience. That the event was so well-received gave me a palpable feeling of having built something important and I’m very thankful to all of you who came to the event, encouraged me with kind words, or helped spread the word about it.

In case you missed it:

If you want to learn more about 2020, check for details or follow @AccentoDev for updates.

Slow death of CodeFX

As mentioned, I’m working on replacing CodeFX with a different thing that has a new name and a part of that is rebuilding my online presence. To nobody’s but my surprise that takes a little while and after having found an agency that created a cooler design than what I cobbled together over the years, I’m now busy implementing it. More on that by Sunday.

And just to mention it, I did not continue working on my online courses. They have to wait until my new site is ready and I’ve produced some new videos and blog posts.

Death by a million cuts

Something else that’s eating my attention and energy are my habits, chief among them my tendency to do too many things at a time (like watching streams/videos while, well, pretty much everything that isn’t writing or coding) and to occasionally spend a night working or gaming. Together with run-of-the-mill stress the latter completely screwed my sleep to the point where I now often can’t fall asleep for hours, wake up an awful lot, and sometimes can’t even get back to sleeping in the middle of the night even though I’m clearly very tired.

As a consequence, I’m often exhausted by the middle of the day without actually having achieved much. This sucks.

CodeFX Blog

Of all the channels, lets have a look at the blog first.

Posts of 2019

I published ten posts in 2019 (eight of them between May and September — lol). Most dealt with Java 12 and Java 13, but there were three notable exceptions:


Since I haven’t written much this year, I’m afraid that traffic has dwindled for the first time ever. So afraid, in fact, that I didn’t check in months and months. Let’s do this together — can you hold my hand? So, reliability aside, let’s see some traffic numbers and compare them to last year’s stats. They’re all unique page views, taken with Piwik (the declaration of will not to be tracked is respected).

Overall numbers

The blog had 490,121 unique page views in 2018 (up almost 10% from 447,217 in 2018, hah! 🥳), pretty evenly distributed across the year with 43k-48.6k in the first quarter, a lull of 32.4k-35.8k during the summer (June, July, August), and 40k-42.9k in the other six months.

Popular posts

Most visited blog posts:

  1. All You Need To Know For Migrating To Java 11 (115,325)
  2. JUnit 5 — Parameterized Tests (35,230)
  3. Five Command Line Options To Hack The Java 9 Module System (22,513)
  4. First Contact With ‘var’ In Java 10 (20,620)
  5. Beware Of findFirst() And findAny() (19,452)
  6. A JDeps Tutorial — Analyze Your Project’s Dependencies (19,513)
  7. Definitive Guide to Switch Expressions (19,433)
  8. JUnit 5 Setup in IntelliJ, Eclipse, Maven, and Gradle (19,348)
  9. Maven on Java 9 — Six Things You Need To Know (16,610)
  10. Java 9 Migration Guide: The Seven Most Common Challenges (16,796)
  11. Casting In Java 8 (And Beyond?) (15,713)
  12. Code First Java Module System Tutorial (13,317)
  13. Definitive Guide To Java 12 (10,022)

I went all the way to 13 to find the first post that I wrote this year. Sad. Also, nine of the top ten have been in last year’s top ten as well and many of them with more traffic. Indeed, if it weren’t for All You Need To Know For Migrating To Java 11, the overall traffic would have tanked. That was a close call — really looks like I have to get back into the game.


Referrers with more than 2k inbound visits:

  • Google (327,454, +22%)
  • Twitter (8,683; -33%)
  • DuckDuckGo (3,139; +49%)
  • GitHub (2,455; -31%)
  • Bing (2,269; +/-0%)
  • DZone (2,143)

Google went up. That’s good. That’s all I have to say about this.

CodeFX Occasionally

Including this one, I wrote eight newsletters this year, but that includes three turn-of-the-year editions and a Twitch announcement, which leaves us with four proper newsletters. Better than none, I guess. 😉

The newsletter has 745 subscribers now and 139 of you subscribed this year (vs ~220 new subscriptions in 2018). Welcome! 👋

CodeFX on YouTube

Not too much happened on YouTube this year.

Videos of 2018

I published five videos this year:

None of them did particularly well (5–53h of view time), but I don’t mind that very much. I had fun with the live streams and it was instructive to try and make them work on YouTube.


I’ve got 803 new subscribers this year (for a total of 2269 subscribers and compared to 943 new subs in 2018). For the videos, I look at view times to reflect engagement (vs. just clicks). In total, people watched 735h (down 53% from 1558h in 2018) of my videos — here are the top five:

Given that I didn’t publish a lot, I’m happy with the numbers. I particularly like that the Effective Java videos get continuous views because it’s fun recording them and I expect them to age pretty well. And I’m really looking forward to continuing that series in the future because in 2020 I’ll go to a few more conferences again.

CodeFX on Twitch

This one is new! After watching a bunch of gamers stream I itched to do the same with coding. I knew it was going to be a tough challenge to make that work because as a viewer you have to stay much more engaged to a coding stream than to one presenting a game or “just chatting”. Still, I wanted to give it a go and I did.

And boy, is it fun! Even with just one or two people there, but when there’s half a dozen active chatters asking questions and helping each other out, that’s amazing! And, paradoxically, it helps me stay focused because even I don’t check Twitter or mail during a life-stream. 😜

If you want to take a look, I made a schedule for January.


I started streaming in February with a peak in April and May after my Vietnam stay before other things took my time. But I started again this month. In total, I streamed 70h and you watched 225h, which means there were on average slightly more than 3 viewers. The channel has 126 followers (up from 0 😁).

I think those are pretty good numbers. The spectre among new streamers is that they have to stream for zero viewers for days and weeks before somebody comes by. Thanks to people already knowing me from one my other activities I was rarely in that situation.

Code (no FX)

It doesn’t really belong here and it’s not quantifiable, but I still want to mention that after a longer period of absence, I invested some time into JUnit Pioneer again. I worked through some issues, reviewed/merged a bunch of pull requests and released a few versions. I have to admit, I’m a little proud to be the maintainer of an open source project that has actual users.

2019 in numbers


  • posts published: 10
  • unique page views: 490,121; +10%
  • from Google: 327,454, +22%
  • from Twitter: 8,683; -33%


  • issues: 8
  • new / total subscribers: 139 (-37%) / 745


  • videos uploaded: 5
  • hours watched: 735h (-53%)
  • new / total subscribers: 803 (-15%) / 2269


  • hours streamed: 70h
  • hours watched: 225h
  • new / total followers: 126 / 126

Real live:

  • 18 talks
  • 14 training days
  • active work on JUnit Pioneer

Goodbye 2019

And that’s it for 2019! Not the best-performing year, but I am pretty content with how it went. Actually, more content now that I spend some time thinking about what I did than the rest of the year when I only thought about the things I didn’t do. Same thing happened last year:

When I started writing this newsletter, I felt like I missed a lot of marks and would end up depressed seeing how many things I planned, but didn’t follow through on. That may actually be another reason why you only get this in April. 😉

But now that I sat down and went through the goals one by one, it turns out that it’s not actually that bad. The numbers are good, too, so I can be content with 2018.

Maybe there’s a way to get a better feeling for how I’m doing during the year. Should improve my mood and keep me productive.

As I said earlier, I really hope your year went good as well and that you’re looking forward to 2020. I wish you a great night and a happy new year, everybody! ✨

so long … Nicolai

PS: Don’t forget to subscribe or recommend! :)




Whatever recently caught my interest: a thrilling development in the Java community, libraries or tools I am using, what I’ve written or read that might interest you, fascinating questions on StackOverflow, odd tweets, etc. I also send this out via email:

Recommended from Medium

Algorithm: How to merge sort Array in Python

Getting started with Filebeat

Transcoding video files with S3 Batch Operations

Inheritance with Types in Pythonn!!!

Your secret weapon to assess domain knowledge is: Domain Quiz!

If analytics are going to be useful, make sure your data architecture fits your organization’s…

Naming Convention Rules used in Programming

The 5 Most Impactful Programming Languages, Ranked

paper figure of a smiling man in front of a “Hello World” message

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store

Nicolai Parlog

Nicolai is a #Java enthusiast with a passion for learning and sharing — in posts & books; in videos & streams; at conferences & in courses.

More from Medium

Is String Objects in Java are Immutable?

Algorithms In Context #9: Auto-Completion

KMock — A humble mocking library for Kotlin Multiplatform.

Unitigration Testing with Kotest and Test Containers