nipafx news
Published in

nipafx news

Learning, Java 9 API changes, and a Lego Monstrosity

CodeFX Weekly #10 — 17th of March 2017

How Do You Manage Time For Work And New Learning?

I was asked this via Twitter a couple of weeks ago but it took me some time to find out how I wanted to approach the question. Since I’m really no expert on the field (quite the contrary, actually, as you will see in a moment), I felt I had little to add beyond my personal experience. After some time I realized that the question asked nothing else, so I decided to answer based on that.

A Lazy Learner

I’m pretty sure I’m not a good guy to learn learning from. In school, learning (or even doing homework for that matter) was not something I did particularly often. In most courses I got the grades I wanted without much effort and in the other ones, particularly foreign languages, sitting down to learn always happened with the utmost reluctance and as little as possible.

A Crack Developer

Little did I know how much writing code was exactly up my ally! I love solving problems and coding provided me with the extremely quick feedback loop I needed to enjoy the process. I was like a crack monkey in an experiment, where I always only had to fix one more small thing to get my fix. It was awesome!

  • a baseline of knowledge that I was constantly putting into practice, pointing out what else I needed to learn
  • an intrinsic motivation to get better
  • the social contract to improve and help others
  • a quick feedback loop allowing me to soon benefit from what I learned

A Crack Learner

Still, I think my aversion to actual studying still shows. While I am always told developers should read this or that book, I read few (Code Complete II, Clean Code, and I think there was a third one) and finished less (as far as I remember only Clean Code). Instead I read blogs. Less so now but when I started coding I must’ve been reading blogs about ten hours a week.

Learning Habits

These experiences formed how I learn today. I still only consume bite-sized information (blogs, mails, Twitter, …) and it is still a largely chaotic process. But that’s good because it keeps the input funnel wide open and I see all kinds of stuff.

The fact of the matter is that learning takes effort, it involves fighting through confusion. And I don’t do that unless I have to!

I have a mental list of things I want to try and it regularly overflows my memory. But every once in a while there is an opportunity to try something new and I usually jump at it.

Timing

Ok… the original question was how I manage time for work and learning. After all this the answer is:

  1. Given the chance I put myself into a position where what I want to study becomes part of my work, thus making the distinction moot. From there on working on a problem and learning about a technology becomes the same thing.

That One Thing

Another thought regarding learning… Do you know that feeling when something happens (it’s usually something bad) and you suddenly remember that you had a passing thought pertaining to it some time back. “Didn’t I see this bug two weeks ago during code review?” “Oh, I think I read that in the release notes.” “I always wondered why that hack worked…”

Java 9

Collections and Streams

On StackOverflow someone asked about which new features Java 9 would bring to the collection framework and stream API. I liked it, so I answered with an exhaustive list. Turns out that Arrays got the most new methods.

Reactive/Flow API

Again on StackOverflow somebody experimented with the new reactive Flow API and didn’t know how to get the publisher to start publishing. He ran into backpressure: You need to request items before anything starts happening.

Process API

Quick tip: You can’t use the handle you get from the static method ProcessHandle::current to destroy the current process — use System.exit instead.

The Book

The Java 9 Module System is slowly progressing towards MEAP. Manning has a policy to keep some finished content in stock, so it will only consist of the first three chapters. As I continue finishing more chapters, more will get unlocked in MEAP. Here’s the brief table of contents:

  1. Anatomy of a modular application (MEAP)
  2. Defining modules and their properties (MEAP)
  3. Building modules from source to JAR (done)
  4. Running modular applications (done)
  5. Compatibility challenges when moving to Java 9
  6. Modularizing existing applications
  7. Services — configuring applications with the module path
  8. Refining dependencies and APIs (WIP)
  9. Reflection in a modular world
  10. Runtime images with jlink
  11. Troubleshooting

Lego

I couldn’t resist any longer and got that monstrous Lego bucket wheel excavator. I bought that particular set because I wanted to spend as much time as possible on building what I buy and I think that plan worked out. So far I’ve been doing it for 16 hours and I think I have about 10 more to go.

Shots

--

--

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. https://nipafx.dev