The Evolution from Code Craftsmanship to Living Systems: A Conversation About the Future of Software Architecture

The Great Paradigm Shift We stand at a remarkable inflection point in software development. For decades, we’ve been craftsmen — carefully shaping code, debugging line by line, architecting systems through sheer intellectual force. But something profound is happening: we’re transitioning from writing code to conducting systems. The shift is from imperative (“do this step, then that step”) to declarative (“here’s the goal, you figure out the steps”) thinking. Instead of telling the computer how to solve problems, we describe what we want and let intelligent systems figure out the implementation. ...

August 23, 2025 · Tolic Kukul

Building Hybrid Declarative Systems: A Practical Architecture Guide

Yesterday I explored how proof trees and machine learning can work together. Today, let’s get practical: how do you actually build these hybrid declarative systems? Back in 2012, I built a proof of concept for medical software that tracked drug interactions, advised on dosage, and provided decision support that human doctors could review. It was a glimpse into what’s now becoming mainstream. Here’s how I’d build it now. The Four-Layer Architecture Think of a hybrid declarative system like a brain with specialized regions that collaborate: ...

January 20, 2025 · Tolic Kukul

What Happens When You Combine Proof Trees with Machine Learning

In my previous article, I explored proof trees: how declarative languages like Prolog break down questions into smaller steps until they can be answered with known facts. It’s structured, logical, and explainable. But it also has a weakness: proof trees need perfect information. If a fact is missing or noisy, the tree collapses. Machine learning has the opposite strengths and weaknesses. ML thrives in messy environments (images, speech, incomplete data), but its reasoning is often a black box. You get an answer, but not much of a “why.” ...

January 19, 2025 · Tolic Kukul

How Proof Trees Make Declarative Programming Work

Most programming feels like giving detailed instructions to a very literal assistant. You write if-else conditions, call functions in sequence, and manage state step by step. This is imperative programming — you tell the computer exactly how to solve your problem. By contrast, declarative programming is about stating what you want rather than how to do it. It’s like the difference between giving turn-by-turn directions versus simply stating your destination and letting the GPS choose the route. ...

December 22, 2024 · Tolic Kukul

From Code Writers to Solution Architects: How AI is Reshaping Software Development

The software development landscape is undergoing its most significant transformation since the shift from assembly language to high-level programming. As AI tools become increasingly sophisticated, we’re witnessing a fundamental change in how we approach building software — moving from writing detailed instructions to describing desired outcomes. The Great Paradigm Shift The traditional imperative approach required developers to think like this: Step 1: Create a loop Step 2: Check each item Step 3: Filter based on condition Step 4: Return results The emerging declarative approach looks more like: ...

October 3, 2023 · Tolics