The modernization of existing software is becoming ever more important in the development ecosystem. Quoting Forbes: “Now Every Company Is A Software Company”, but a large part of enterprise software is not ready for the extremely fast changes that companies need now.

Flowing is currently helping a lot of companies that are in struggle through their path to software modernization. Most of the times we are called to help development teams when they are stuck with a new set of features that seems not feasible with the current codebase/framework/architecture. …

In the last few years, I started to love boring technologies. It’s most likely connected with my age and a lot of projects started with bleeding-edge technologies, following the hype. Usually, in the initial brainstorming meetings, I’m the grumpy guy that exclaims: “Do we really need GraphQL, a boring REST API is not enough?”.

Obviously, younger teammates are generally mad at me. They see me as a buzzkill.

Grumpy Strazz

Nevertheless, I do the same work with my clients, and not just with my colleagues. I frequently help them in choosing technology stacks. …

Or “how we transformed an AngularJS application in a shiny new Frameworkless application”

What makes a codebase “Legacy”? I think that there’s no unique answer to this question. Most people associate the idea of legacy code to the fear to modify the code. It could be the absence of tests, obsolete tools or other factors. But I think that there’s something more. A good visual representation of legacy code is a cage.

Photo by Martin Wessely on Unsplash

Why a cage? Because I feel legacy code is something that can hinder the evolution of a software. In other words…

Legacy code is a roadblock to adapt software to new business needs.

Let me share with you a story.

In 2013 we started a new greenfield frontend…

I hate the “JavaScript fatigue” expression. As I stated in a previous story I think that right now as JavaScript developers we are in one of the most lively communities out there. We have a lot of power with React, Angular, Vue and so on. And it’s all within our grasp. We just need a npm i yet-another-framework and we’re ready to go.

But, like Peter Parker* says…

With Great Power Comes Great Responsibility.

What is our responsibility as developers then? I think that we should choose the right framework for our new shining project. …

WebVR is an open standard that makes it possible to experience VR in your browser. The goal is to make it easier for everyone to get into VR experiences, no matter what device you have

This is the definition of WebVR on the official website. To better understand the power behind this new standard, take a look at Chrome Experiments for VR with your mobile device and a Google Cardboard (or any other VR Headset for mobile).

I got quite interested in the VR world myself lately, so I wanted to try to build some sample applications to better understand…

The easy answer to the question “What is Test Driven Development? (TDD)” is “To write unit tests before the actual code”. But this is not the right answer. To better understand the real meaning of the TDD, let’s focus on the keyword “Driven”.

Letting the tests drive your development means that your code is designed by tests. And this approach obviously works in an iterative way.

Photo by

It starts with the red phase. We start writing a failing test, and then we write just the code needed to make that single test green. If you keep writing code following this simple…

Recently I got interested in the Reactive Programming world, especially in the MobX ecosystem. I really like the idea behind this framework: to be reactive in a transparent way. So I asked myself…

What does it take to create a fully Reactive (and transparent) UI framework in JavaScript?

Don’t worry, you will not see another JavaScript framework on the npm registry (at least for now). But I think that this is a good architectural exercise. We’re going to split the problem in two parts. The first one is a UI library that helps us render our state to the DOM…

Every time that I start a new project with a client, the first problem to solve it’s to choose the right technology for the project. Let’s take a mobile application for example. We can use native SDK in Android and iOS to build two different applications, with different codebases. Another option is to use one of the many JavaScript frameworks out there like React Native or Ionic.

Obviously, there are other options but this post is not about “why” choose a technology, it’s more about “how” to choose it.

At first glance, the native approach is the “best” one. You…

What’s the ultimate goal of Agile methodologies? In my opinion, it could be distilled in the phrase: «Embrace Change». While I understand the value of continuously adapting our code in order to develop the best software for our clients, there’s something that always bothers me as web developer. All the software architectures that I encountered during my career have one feature in common: they are very hard to change.

Just try to change this!

So it seems that no kind of software architecture it’s really suited for Agile development.

Introducing Sacrificial Architecture

Martin Fowler in one of his posts introduced the concept of Sacrificial Architecture: a software architecture…

Francesco Strazzullo

Partner @ flowing. Author of “Frameworkless Front-End Development” and “Decision-making for Software Development Teams”

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