Rapid Application Development with HOP

Irati Etxeberria
magnet.coop
Published in
4 min readMar 3, 2021

--

First of all, what is a RAD platform? A RAD platform accelerates the process of creating new applications and functionalities.

This approach, as always, has pros and cons. In order to maximize the pros and minimize the cons, we’ve built our own RAD platform called HOP.

Potential to make solutions

We love this quote from the brilliant David Nolen: “People are obsessed with solutions. But I think what the world often needs are not just solutions — but the potential to make solutions.”

With HOP, we are following the philosophy behind this idea about boosting the potential to create software products.The same way the work of David Nolen and the Clojure community enabled us to build our own RAD platform, we are doing it for our clients, that is, streamlining the process to create new digital solutions.

RAD platforms are quite common in our industry. There are well known open source tools for creating websites, e-commerce sites or web applications, but alas, they all come with trade-offs: lack of flexibility, technical debt, poor scalability…

HOP

Our objective with HOP is to automate the infrastructure layer and the technological base to enable us to focus on the domain problem.

Using house construction as a metaphor, we could say that HOP consists of the structure and the plumbing/wiring of the building. The work that goes on to make each house different and of the liking of the customer would be the customization development with the domain knowledge.

There are a myriad of solutions that can be built using HO. In every one of them, the complete solution is achieved by developing highly customized functionality on top of the platform.

When we say that we strive to optimize the trade-offs of RAD platforms with HOP, we mean very real and specific aspects that provide tangible value to our customers. Here are the most important ones:

100% control of the technology

The client owns the vertical solution, thanks to the Mozilla Public License (MPL). The complete code can found in our repository.

Vendor and technology independence

We usually deploy on the client’s AWS account, but we are cloud agnostic so we could deploy to other clouds as well.

And of course we always use open standards and an Open Source technological base.

Future-proof technology

We are betting on Clojure to provide us with a programming language that can be used in both front-end and back-end development. Its data oriented approach and immutability by default enables us to create solutions with more precision and less code, which leads to easier maintenance.

HOP also includes integrated CI/CD and Docker containers and the deployment in AWS is fully automated.

Total flexibility

The Clojure community prefers to use modules and libraries that tackle specific tasks, as opposed to opinionated frameworks. This way, the developers have the freedom to solve problems as they see fit.

This flexibility also extends to the user interface and functionality.

More quality and precision

The fact that Clojure is a dynamic typing Lisp can lead to runtime errors. Hence, we leverage Clojure Spec in several parts of our systems, mainly in the boundaries (API, persistence, etc.).

Another way for testing our Clojure functions is using REPL-driven development to iteratively run the code.

Also, we design and implement automated tests in our CI pipelines so we never push code that breaks the system.

Automated tests

Shorter time to market

Bootstrapping HOP

A new project based on HOP with all the elements mentioned above can be created using a bootstrapped script, as shown here.

Basically, we build the structure and plumbing/wiring of the house in under two minutes. This streamlined development of the foundation grants us the time and resources to focus on the domain problem.

Minimal technology debt

Clojure is very sensitive to backwards compatibility. The Clojure code of ten years ago should not break today and Clojure code deployed now should run in a decade’s time as well.

Here are survival graphs for Clojure and ClojureScript that illustrate just that:

HOP is standing on the shoulders of giants: the creators and maintainers of Clojure and Clojurescript, the awesome libraries created by the community, the brilliant Duct framework by James Reeves, and many other Open Source contributors. Layers and layers of awesome technology created carefully for many years that we can now leverage for creating great products.

--

--