Frank Neff

Frank Neff

I see myself as a curious problem solver. On a life-long mission to enable people, improve tools and optimize processes, I build software to make things work. Moreover, I like to talk about technology and sharing know-how in a team to improve my own skills and empower others.

It’s my passion to build great tech, with great people, to make things better.

How a strong type system saves you documentation, tests, and nerves

How a strong type system saves you documentation, tests, and nerves

I was recently inspired to finally write this post. Especially in weakly- or untyped languages, such as the JavaScript or PHP world, the added value of strict type systems is often not recognized. Instead, many discussions and comments revolve around the need for tests or code comments. Contrary to that, in the functional programming world, we leave such checks to the compiler. In this post I would like to give a short overview and explain how to use a strict type system for everyday checks instead of writing type checks, tests and documentation for it.

How to effectively visualize an Application Landscape in Enterprise Architecture

How to effectively visualize an Application Landscape in Enterprise Architecture

In enterprise & solution architecture, connecting boxes with arrows is an often used and overrated visualization from high-level, thru component architecture, down to data and class diagrams. However, to create a holistic view on systems, component diagrams are not enough! When it comes to analysis or transformation of a high-level application- or service-architecture, I prefer to draw an Application Landscape Diagram, which I would like to show and elaborate on in this post.

Securing isolated systems: Caveats of using plain OAUTH flows and how to solve them

Securing isolated systems: Caveats of using plain OAUTH flows and how to solve them

While OIDC and OAUTH are well-known standards, they don’t fit every purpose “out of the box.” In businesses with special regulations like banking, health care, etc., non-functional requirements to auth can be challenging. Different solutions and ways were evaluated to create a new identity provider for a medical network. The first approach was “just” using simple OAUTH by its most famous Authorization Code Flow. Of course, it failed fast, and I’ll show why and how we solved it in this post.

Umfrage: Erfolg der Digitalisierung in der Schweizer Gesundheitsbranche

Umfrage: Erfolg der Digitalisierung in der Schweizer Gesundheitsbranche

Als Teil des Leistungsnachweises meiner Weiterbildung CAS IT Management und Agile Transformation an der Hochschule Luzern schreibe ich eine Arbeit über den Erfolg der Digitalisierung in der Schweizer Gesundheitsbranche in Form eines Blogposts. Teil der Arbeit ist eine quantitative Studie in Form einer Umfrage an Fachpersonen, Manager und Entscheider in der Schweizer Gesundheitsbranche zum Thema.

Online Courses for Developers - A slightly more Critical View

Online Courses for Developers - A slightly more Critical View

We have a massive skills shortage in IT, especially in development. A natural effect of this is that there are many career changers and, as a result, alternative educational opportunities. These alternatives, mostly YouTube video courses and other online offerings, are good knowledge brokers but have downsides. Especially in such a knowledge-driven environment, scientific methods are more important than entertaining course design.

Hiring Devs - Why you should consider Juniors

Hiring Devs - Why you should consider Juniors

When it comes to developer maturity, I heard many tech recruiters and decision-makers saying: “We should only hire senior devs.” This may be justified in some situations, projects, or teams, but I do not accept this statement as a general premise. In this blog post, I want to highlight the benefits that juniors can bring to the team and encourage you to find and foster new talent actively.

Why you probably don't need Spring Cloud Config

Why you probably don't need Spring Cloud Config

Spring cloud config is a configuration management solution and part of the Spring ecosystem. It’s easy to integrate and use, but it has severe downsides from an architectural perspective. Also, I have seen many projects where it was added just because “it is a thing” and even more often, it was used to solve or work around problems in the software architecture or deployment for which it doesn’t provide a real solution. In this blog post, I’ll point out some conceptional issues and downsides of that project I have seen so far.

Hiring Devs - The Seniority Paradox

Hiring Devs - The Seniority Paradox

In IT, there is a paradox when it comes to job titles. Somewhere along the way, the practice of linking job titles to a candidate’s (desired) experience became established in large parts of the market. This then created the now famous and omnipresent job titles like “Senior Software Engineer”, “Professional DevOps Engineer”, etc. In this blog post, I would like to explain the paradox around these designations and how I use them in the course of the talent search…

Blog Relaunch (Yes, again)

Blog Relaunch (Yes, again)

I noticed that I write not as often as I want to, so I procrastinated and first relaunched my blog instead of writing. It has a new design and some new functionality, also the posts have now images. The relaunch was, for me, some kind of personal retrospective, where I read all my old posts and found out that I’m probably a better webmaster than a writer…

Why complexity in software projects is bad (and you should not advertise it)

Why complexity in software projects is bad (and you should not advertise it)

There are (still) many people telling proudly, how complex their product is. There are job ads, explaining that you will “create highly complex software”. These false signals, which I personally saw in many positions and projects, create a potentially huge long-tail problem, not primarily for engineers, but for the product management and engineering team lead. In this blogpost, I want to point out some of those impacts of advertising complexity…

The Spring Security Oauth2 Blues - Simplicity

The Spring Security Oauth2 Blues - Simplicity

I personally like the Spring Framework and its security components, because it’s pretty full-featured and easy to use, but when it comes to Spring Security OAuth2, there’s a huge quality breakdown. In this (probably series) of blogposts, I’ll try to sum up the good, the bad, the evil and why I ended up completely dropping Spring Security OAuth2.

Java Libs in Scala - A bit more Functional

Java Libs in Scala - A bit more Functional

Every Java library can be used in Scala, which is, for me, one of the good parts of the JVM world. But Java libs are mostly object-oriented and not functional, therefore full of side effects and somtimes “ugly” to use in Scala. But there are some approaches how to make Java libs (or their interfaces) more functional, so they can almost be used like a Scala lib.

Functional Java 1 - Options

Functional Java 1 - Options

This is the first post of my series about functional programming in Java. There’s a lot of functional stuff one can do. Everyone knows the Java 8 Lambda expression, but with a little library support, there is way more… In this series, I’ll coder som libraries which provide functional paradigms and constructs for Java:

New Blog

New Blog

You may have noticed, that I had not much time to blog about something in the past months… One thing was, that we all need money, so I had to work very much. And as some of you know, I’m also studying in the evenings.

Scala Compiler Tuning

Scala Compiler Tuning

As my Scala projects go on, I want to share some compiler configuration and tricks with you, which I use on many projects. Some tiny configuration options can greatly improve your code and warn you about things, you would probably never discover.

Understanding Stemmers (Natural Language Processing)

Understanding Stemmers (Natural Language Processing)

I am interested in NLP and have already some experience with Apache Solr. It’s time to dig a little in-deep regarding stemmers. First of all, I was looking for a general definition of what a stemmer is, and I found this one, which IMHO is quite good:

stemmer — an algorithm for removing inflectional and derivational endings in order to reduce word forms to a common stem

If pragmatism raises technical debt, call it oversimplification (rant)

If pragmatism raises technical debt, call it oversimplification (rant)

The word “pragmatism” or “pragmatic” is, in my personal opinion, the most overrated word in agile development. Many people use this as a buzzword without knowing what it means. I hear people saying “He solved that complex problem in half an hour, he’s so pragmatic!” and think for myself “Yeah, but that ‘solution’ probably causes other devs three times more effort than a sustainable solution would take.”