Skip to content
View brunocastrillon's full-sized avatar
🖖
🖖

Block or report brunocastrillon

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
brunocastrillon/README.md

🇧🇷 Ler em português

Bruno Castrillon — Software Architecture, Distributed Systems, AI Engineering

Software engineer with 15+ years of experience in the .NET ecosystem, working across software development, architecture and enterprise systems.

Throughout my career, I've worked on software in different domains and organizational contexts, building and evolving backend systems, APIs, integrations and distributed applications.

Today, my work and research increasingly sit at the intersection of:

Software Architecture · Distributed Systems · AI Engineering · Observability · Resilience Engineering

I'm particularly interested in understanding how complex software systems behave under failure, uncertainty and change — and how architecture can make those systems more observable, resilient and evolvable.


🧭 Current focus

Software Engineering
│
├── Software Architecture
│   ├── Clean Architecture
│   ├── Domain-Driven Design
│   ├── Distributed Systems
│   └── Event-Driven Architecture
│
├── AI Engineering
│   ├── LLM Applications
│   ├── Retrieval-Augmented Generation
│   ├── AI Agents
│   └── Applied Machine Learning
│
├── Platform Engineering
│   ├── Containers
│   ├── Kubernetes
│   ├── CI/CD
│   └── Cloud-Native Systems
│
└── Resilience Engineering
    ├── Observability
    ├── Failure Modes
    ├── Technical Fragility
    └── Antifragile Software

Technology changes; engineering fundamentals last longer. Right now that includes postgraduate studies in Software Engineering at PUC-Rio.


🧠 Engineering philosophy

Complex systems fail in complex ways.

After years building software, I've become increasingly interested not only in how systems are built, but in how they behave when assumptions stop being true.

What happens when:

  • a dependency becomes unavailable?
  • traffic suddenly increases?
  • a deployment partially fails?
  • messages arrive late, duplicated or out of order?
  • an external API changes?
  • infrastructure becomes degraded?
  • yesterday's architectural assumptions no longer hold?

This leads to an engineering question that increasingly influences my work:

Where is the system fragile?

Technical debt tells us something about the state of the code.

Technical fragility tells us something about the risk accumulated by the system.

I believe good architecture should help software absorb change, expose weaknesses, recover from failure and evolve safely.


⚙️ Technology

Core

C# · .NET · ASP.NET Core · Python · SQL

Architecture

Clean Architecture · DDD · CQRS · Event-Driven Architecture · Distributed Systems · REST APIs

AI Engineering

LLMs · RAG · AI Agents · Embeddings · Vector Search · Prompt Engineering · Machine Learning

Data & Messaging

PostgreSQL · SQL Server · SQLite · MongoDB · RabbitMQ

Cloud & Platform

Docker · Kubernetes · GitHub Actions · Azure DevOps

Observability

OpenTelemetry · Distributed Tracing · Structured Logging · Metrics · Health Checks

Also explored

TypeScript · React · Solidity · Blockchain


🔬 Engineering Lab

I use personal projects as engineering laboratories.

Rather than building projects only to demonstrate frameworks, I use them to investigate engineering questions involving:

  • software architecture
  • distributed systems
  • machine learning
  • AI engineering
  • observability
  • reliability
  • failure modes
  • quantitative experimentation
  • technical fragility

Each investigation follows the same structure — question, hypothesis, experiment, evidence, conclusion — and lives in engineering-lab.


🛡️ Resilience & Antifragile Software

One area I'm particularly interested in is the application of resilience and antifragility principles to software engineering.

Traditional engineering frequently asks:

How do we prevent this system from failing?

I'm interested in extending that question:

How do we design systems that expose fragility early, learn from stress and become easier to evolve?

That involves exploring concepts such as:

Observability · Failure Isolation · Graceful Degradation · Fault Tolerance · Controlled Experiments · Technical Fragility · Evolution under Uncertainty


📐 Principles

Architecture       > Frameworks
Observability      > Guessing
Evidence           > Assumptions
Experiments        > Opinions
Automation         > Repetition
Resilience         > Optimism
Simplicity         > Accidental Complexity
Evolution          > Premature Perfection

🤝 Let's connect

I'm always interested in exchanging ideas about:

Software Architecture · Distributed Systems · .NET · AI Engineering · Observability · Resilience

Especially when the conversation starts with:

"What happens when this assumption fails?"

Reach out on LinkedIn.

Pinned Loading

  1. pos-puc-sprint01-backend pos-puc-sprint01-backend Public

    Repositório para armazenar o backend do MVP da disciplina Desenvolvimento Full Stack Básico do curso de Engenharia de Software

    Python 1

  2. pos-puc-sprint01-frontend pos-puc-sprint01-frontend Public

    Repositório para armazenar o frontend do MVP da disciplina Desenvolvimento Full Stack Básico do curso de Engenharia de Software

    JavaScript 1

  3. pos-puc-sprint02-ml pos-puc-sprint02-ml Public

    Jupyter Notebook 1

  4. pos-puc-sprint03-gap pos-puc-sprint03-gap Public

    Gestão Ágil de Projetos

    1

  5. pos-puc-sprint04-cryptowatch-api pos-puc-sprint04-cryptowatch-api Public

    Python 1

  6. pos-puc-sprint04-cryptowatch-client pos-puc-sprint04-cryptowatch-client Public

    TypeScript 1