Naming Intermediate Results, Shortcut Operators and Closures

2020-06-24

In the chapter “Naming Things” of my book about “Agile Engineering Practices”, I wrote that you should name intermediate results (I will link the whole sample chapter at the end of this blog post).

But sometimes, it’s not that easy…

Read More...

TDD: Too Simple to Break

2020-04-20

In my TDD trainings, I sometimes say that I do not test code that is “too simple to break”; Code where:

  1. The chance of the code breaking is very low
  2. If the code breaks, we would see immediately

What do I mean by that? In this blog post, I’m going to explain…

Read More...

Spring and Isomorphic React 4: Render Data on the Server Side

2020-04-06

In the last three parts of this series, I wrote about how one can use the webpack’ed version of a ReactJS application as a template engine for spring boot, how routing and navigation can work on the server side and how to improve the first-load performance of this app.

There is one thing missing in this application: The server side rendering does not use any dynamic data at all yet. With this blog post, I want to change that: I want to show you how the server can pre-render data that the client would usually fetch dynamically.

Read More...

Spring and Isomorphic React 3: First-Load Performance

2020-03-30

In the first two parts of this series, I wrote about how to use reactjs together with spring boot on a GraalVM and how to use the same routing / navigation on the server side and in the browser.

Today, I want to look into whether rendering on the server side is even worth it. TL;DR: Out-of-the-box, the improvement in time-to-first-render was not that that much. But with a few tricks, I was able to reduce the time by ~60%.

Read More...

Spring and Isomorphic React 2: React Router

2020-03-25

In my last blog post, I wrote about how I am using ReactJS as a template engine for spring boot. I am running the server side application on GraalVM, and my Spring controller uses ReactJS to render HTML. In the browser, the JavaScript will hydrate the components that have been rendered by the server.

This worked well for the simple example app that I had. But what about navigation? We need the same routing on the server side and on the client side, otherwise the server would render the wrong content when the user reloads a page.

And here’s how I did that with react-router…

Read More...

Spring and Isomorphic React 1: Setup with GraalVM

2020-03-17

Since our country is in lockdown now and I cannot (and do not want to) continue with my usual videos, here’s a “normal” blog post about some fun thing I was trying recently. I wanted to use reactjs (TypeScript) as a template engine for server-side rendering in spring boot (Kotlin) so that…

  • I can use the client-side app created by create-react-app (almost) without modification
  • I can still run the react-app in standalone mode with npm start
  • The app works exactly the same when I open it from the spring boot server
  • I can use all modern JavaScript features
  • Routing works exactly the same on the server-side and on the client side
  • REST calls are only done when the JS scripts are running on the client side, otherwise they are direct calls to Java methods

I am not there yet. But I already got the first four bullet points covered, and I am working on the fifth. So, here is what I did so far…

Read More...

Tim Bourguignon: Public Speaking

2020-01-27

Tim Bourguignon and I talk about public speaking: Why he loves it and about a talk we prepared together.

Read More...

3X Thinking Part 2: Advanced Topics

2020-01-20

In this second interview about 3X thinking, Antony Marcano and I talked about advanced topics:

  • The fractal nature of 3X
  • How 3X relates to the three investment horizons model
  • Pioneers / settlers / town planners
  • How 3X relates to Agile
  • How companies can apply 3X and try radical, new ideas while protecting their existing brands

But first we do a short recap of the last video: What is 3X - or explore / expand / extract - and how can you use it? Watch the video here or read the transcript below.

Read More...

Tim Bourguignon: Tim's Developer Journey

2020-01-15

Tim Bourguignon tells us how he became a developer, then an agile coach and then “chief learning officer” at Mathema.

Read More...

Simon Harrer: Combine State and Behavior (Java by Comparison)

2020-01-13

In this interview, Simon Harrer shows you how code becomes more readable when you do not separate state and behavior.

Read More...