-
·
No / Low Code Provider Pattern
Introduction This post continues from the previous one on No/Low Code development. In this part, I’ll focus on the Provider Pattern, with an emphasis on generating HTML and CSS. While the earlier example was intentionally simple, this time I want to explore more complex scenarios—such as defining widgets or entire screens with non-linear layouts. I’ll…
-
·
No / Low Code
Introduction Software development is undergoing a fundamental transformation. As I discuss in my book (shameless plug 😊), the barrier to entry is consistently trending toward simpler and more expressive ways to convey executional intent. I genuinely appreciate many aspects of low-code development. Over the next sections, we’ll explore the key pillars that define low-code platforms.…
-
·
Dynamic Rules
Introduction Traditionally, we associate software rules with coding. But when I recently talked to an Outsystems developer, I discovered that the majority of their work involves defining business rules—despite Outsystems being intended for low or no code development. I had assumed such platforms would simplify this task, but it turns out that a great deal…
-
·
Betting on local AI (webnn)
Introduction There are numerous AI services available today that offer powerful models at your fingertips. While this trend will certainly continue, what’s less obvious is the state of local AI. Yes, you can run models on your own machine if you have the necessary skills, and tools like Ollama make running local LLMs more approachable.…
-
·
Patterns over Languages
In today’s world, there seems to be an intense focus on the programming language used for development. Some individuals even take a militant stance about their language of choice. While there are valid reasons why certain languages shine in specific contexts—such as the ecosystems and infrastructure built around them—I believe we often place too much…
-
·
Designing Software Systems for Agility
In today’s rapidly evolving tech landscape, agility is no longer a luxury—it’s a necessity. Systems must be designed to adapt quickly to changes, scale effortlessly, and provide resilience against unexpected challenges. Yet, when we step back and assess whether our software systems meet these demands, the answer is often disappointing. The Fundamental Questions To design…
-
·
DSL and Your Application
Introduction Let us start by defining “Domain Specific Language (DSL)”. A Domain-Specific Language (DSL) is a specialized programming language tailored to a specific problem domain, designed to express solutions in a more intuitive and concise way than general-purpose languages. There are common examples of Domain-Specific Languages (DSLs): DLS is fundamental to intent driven development, it…
-
·
UI needs to change
Context This post focuses on enterprise-scale applications, though the principles can apply broadly to various types of applications. For now, however, let’s assume the scope is large-scale enterprise applications. Traditional UI design patterns for such applications revolve around a few core principles and areas of functionality: 1. Navigation Enterprise applications often feature complex navigation structures…
-
·
Rust, fighting the borrow checker
This post is about my experience battling the Rust borrow checker during compilation. This is a common issue, especially for those with a strong OOP background. Spoiler alert: If you are struggling with the borrow checker, you are likely doing something wrong. Specifically, you might be thinking about your code structure in the wrong way.…
-
·
Understanding Advanced Rust Data Structures
In this blog post, we’ll dive deep into a Rust code snippet that showcases some of Rust’s powerful features for managing complex data structures in a concurrent environment. Code Breakdown We’ll start with the trait definition and then look at how it’s used in a struct. Trait Definition Struct Definition Detailed Explanation Let’s break down…