Let's talk tech
A paradigm full of exciting and challenging computer science
is what draws us towards our passion of frontend architectures and reactive programming.
Let's dive into the technical aspect to understand the areas of complexity we are mastering.
MODERN FRONTEND
The Modern Frontend is (in contrast to the old markup driven paradigm) a fantastic place filled with great computer science and difficult problems. It takes many skills to master the paradigm.
Declarative programming
Among the most important "skill" to master is within the paradigm of declarative programming.
Most reactivity is based on declarative principles, to bring reliable and predictable as well as readability.
This is one of the biggest changes from the old, imperative, frontend.
Concurrency theory
When handling reactivity different aspect of concurrency is very often in play. Whether it's perceived concurrency or proper multi threading, we face race conditions and timing issues where a solid foundation in concurrency theory is important.
Event Driven programming
We mostly think in events and subscription patterns. Our flow of programs are almost always determined by user actions. We often apply common event driven patterns to achieve maintainable and scalable architecture.
Graph Theory
When we dive a little deeper into the Modern Frontend, one of the very important but complex parts is dependency management. Within dependency management, graph theory is key to understand complex concepts such as phantom dependencies and dopplegangers.
Important techniques like chunking and tree shaking are also founded in graph theory.
Data structures
Of course data structures is a big part of a data consuming frontend application. Good and well scoped data structures lead to better and more predictable software.
Unit testing
Achieving the ability to deploy fast and frequently requires high confident in the software. This confidence can be achieved through well written unit tests.
In the frontend unit tests are more complex than known from a common backend application. The interface of consumption is often a user, a keyboard and a mouse. To maintain trustworthy tests, we need to follow same interface when testing our code. This makes it very important to understand what and how to test, to achieve the goal: If behaviour breaks, the test should break. If behavior is not broken, the test should not break either.
Type theory
Type theory is of course a given when working with software especially at scale. But this is not how it used to be in the old frontend.
When we build scalable architectures it often involves heavy use of generics and general polymorphism.
We've tried it over and over again, and know how much effort is saved by making code generic but more importantly modular and replaceable.
Compiler theory
Transpiling and compiling has become integrated parts of the modern frontend. Bundling and static site generation are also sharing "interests" with compilers.
UI, transitions & feel
And finally frontend is of course also about making pretty and performant user interfaces. It requires an visual eye for details and a good degree of perfection to master this area.
Now top that up with sophisticated design and style systems, integrated within the reactive, chunked page setup, and you actually get challenged!
Functional Reactive Programming
FRP is a declarative programming paradigm where we think in streams (you might be understanding our graphics now) and explicitly model time. It's extremely powerful to make very complex timings and concurrent executions predictable and maintainable.
Applications of FRP come in many shapes, but it's integrated parts of many frameworks (both frontend and backend). One of the most famous is ReactiveX which we are huge fans of.
Buzzword dictionary
- "Scalability"
- "Performance"
- "Web Vitals"
- "High performance teams"
- "The JAM stack"
- "MACH"
- "The Edge"
- "SSR" / "SSG" / "ISR"
- "Serverless"
When we talk about scalability it involves multiple aspects. Some of these statements indicate a scalable setup
-Extendable
-Possible to work many devs in parallel
-Possible to contribute to the codebase without knowing it in full
-Possible to contribute to the codebase without breaking it
Single page application tools
react, solid, svelte, vue, angular
nextjs, gatsby, nuxtjs, sveltekit, solidstart
Reactivity
RxJS
Marbles
SignalR
Testing
Testing library
Jest
Marble testing
Vitest
Orchestration
Rush Stack
Heft
Api extractor
Typescript
Vite
Technologies we currently love
The frontend ecosystem is evolving fast. The technologies highlighted are the ones we currently enjoy working with.
We know a lot more technologies than the ones listed, so don't hesitate contacting us for any other requests.
Get in touch