Facundo Javier Gelatti

Profile photo of Facundo Javier Gelatti, which displays him in a home study, standing before a blurred bookshelf. He wears a black t-shirt and glasses, and is gazing directly ahead.

About me

I am a software developer and computer science educator based in Buenos Aires, Argentina. Welcome to my website.

I’m passionate about creating tools that make programming more accessible, enjoyable, and humane. With over 7 years of professional experience, I combine rigorous software engineering practices with thoughtful reflection on how developers interact with their programming environments. I’m particularly interested in creating interactive systems that augment rather than replace human capabilities, helping developers think through problems while preserving their autonomy and creativity.

I’m also a computer science professor at Universidad Nacional de Quilmes (UNQ) in Buenos Aires, where I teach an advanced object-oriented programming course with an emphasis on hands-on learning and critical thinking. My teaching approach explores the intersection of practical software development skills with broader perspectives from social sciences, including computer science history, programming as theory-building, and the evolution of the development tools and computing environments we use.

Through my open source projects, I investigate ways to make programming more expressive and delightful. They range from experimental programming environments and educational systems for exploring theoretical concepts, to practical development tools: my research interests span from industrial software engineering to theoretical computer science, with a particular focus on how different programming paradigms and interactive environments can enhance our ability to understand and modify the systems we build and use. I hope my work reflects my commitment to both the craft of software development and the art of teaching it to others.

You can find me on:

There’s more information about my recent projects and talks below 👇

Projects & explorations

Combinatory logic formulaeCombinatory logic interactive proofs

JavaScript objects as boxes with arrowsA dynamic JavaScript environment

Automated refactorings for RubyAutomated refactorings for Ruby

Game of life board IDE-integrated inspectorGame of life inspector



Talks

Static Typing: TypeScript, Java, and other mysteries — DevSummit AR, July 2024

Original title: “Tipado estático: Typescript, Java y otros misterios”

An exploration of static typing fundamentals through TypeScript and Java, discussing type systems and their different approaches (nominal and structural typing), with concrete examples. Watch it on YouTube

The History of JavaScript — 10Pines Technical Talks, 2024

Original title: “Comentarios sobre la Historia de Javascript”

A journey through JavaScript’s history, focusing on its creation and early years, exploring the socio-historical aspects of technology development. Available on YouTube

Values and Objects: Welcome to the Tower of Babel — Smalltalks 2023

Original title: “Valores y Objetos: bienvenidos a la Torre de Babel”

With Máximo Prieto. A critical analysis of programming terms such as Value Object, exploring their conceptual foundations and usage. Watch it on YouTube

Adding TCR to Smalltalk — Smalltalks 2022

An exploration of implementing the “Test && Commit || Revert” (TCR) workflow in Smalltalk, discussing challenges and implications. Available on YouTube

Understanding React Constructively — 10PinesConf, September 2022

Original title: “Entendiendo React constructivamente”

A deep dive into React’s internals by building a subset of its functionality using TypeScript with Test-Driven development, focusing on precise definitions and common questions.

wollokVM = run . compile . parse — 10PinesConf, September 2021

An exploration of implementing a virtual machine for an object-oriented language (Wollok) using functional programming in Haskell. Watch it on YouTube

Prolog, Metacircular Interpreters and this Talk itself — 10PinesConf, September 2021

Original title: “Prolog, intérpretes metacirculares y esta charla”

We discuss what it means for an interpreter to be meta-circular, and implement one in/for the Prolog language.

Implementing a Debugger in Ruby — 10PinesConf, September 2020

Original title: “Implementando un debugger en Ruby”

We build a Ruby debugger from scratch, using Test-Driven Development.

Demystifying Code Manipulation Tools — Smalltalks 2019

Original title: “Desmitificando la creación de herramientas para manipular código”

An exploration of building tools for code manipulation in Smalltalk, covering abstract syntax trees and practical metaprogramming examples. Available on YouTube

Ruby Live Typing — 10PinesConf, September 2019

Discussing implications and implementation details of Live Typing in Ruby, the system described here.

The Y Combinator in Smalltalk — Smalltalks 2018

A practical approach to understanding and implementing the Y combinator using Smalltalk, based on applying a sequence of automated refactorings to a recursive block. Watch it on YouTube

Compiler Hacking: Revisiting “Reflections on Trusting Trust” — Tucumán Hack Weekend, 2018

Original title: Hacking en compiladores: Revisitando “Reflections on Trusting Trust”

We revisit Ken Thompson “Reflections on Trusting Trust” paper, hacking a C compiler live. GitHub Repository

Object-Oriented Programming Insights Through Booleans — St. John’s University, 2018

Talk about implementing boolean values and operations using only objects, as part of the Friends of Fulbright scholarship in New York.

Reflecting on the Object Paradigm — IEEE Tucumán Student Branch, 2018

Original title: “Reflexionando sobre el paradigma de objetos”

Implementing Booleans with objects and Test-Driven Development.

Introduction to Lambda Calculus using Smalltalk — Smalltalks 2017

An exploration of Lambda Calculus concepts implemented in Smalltalk, exploring its basic principles while live programming the encoding of different structures and operations. Watch it on YouTube

Introduction to Code Refactoring — IEEE Tucumán Student Branch, 2017

Original title: “Introducción a la refactorización de código”

An introduction to the agile practice for improving design, with practical examples using IntelliJ IDEA.

C-Test Simulator with Pharo and Amber Smalltalk — Smalltalks 2016

An implementation of a C-Test simulator —a tool to simulate exams for the german language— in Smalltalk, using Amber and Pharo. Available on YouTube

Introduction to Git — IEEE Tucumán Student Branch, 2016

Original title: “Curso introductorio de Git”

A mini-course on the version control system for software development.