# Matias Salles > Software engineer, Ruby/Crystal developer, and author. Born in Buenos Aires, raised in Montevideo, now doing a master's in AI back in Buenos Aires. This is my personal blog where I write about Ruby internals, Crystal, emulation, electronics, and software engineering in general. ## About me I'm a Ruby on Rails developer who got into Crystal after trying to build a NES emulator in Ruby (it ran at 0.5 FPS). I rewrote it in Crystal and got 60 FPS. Then I wrote a 280-page book about the whole process. I also built a 4-bit CPU from scratch with breadboards and integrated circuits during my first year of college. ## The book "Building Your First Emulator" — a step-by-step guide to building a NES emulator from scratch in Crystal. Covers the 6502 CPU (all 151 opcodes), PPU rendering, APU audio, and cartridge mappers. Available in English and Spanish on Leanpub. ## The emulator A fully playable NES emulator compiled to WebAssembly that runs in your browser: https://emulator.matiassalles99.codes ## Blog posts - [Crystal: The Language I Didn't Know I Needed](https://matiassalles99.codes/posts/crystal-programming-language/): How I discovered Crystal while building a NES emulator in Ruby, why the syntax felt familiar, and what the 240x speedup looked like. - [I Wrote a Book About Building a NES Emulator](https://matiassalles99.codes/posts/i-wrote-a-book/): The story behind the book, code samples from the emulator, and a link to the playable web version. - [How to Create a DSL in Ruby](https://matiassalles99.codes/posts/dsl-with-ruby/): Building a domain-specific language using define_method, class_eval, and ActiveSupport::Concern, based on a real open-source gem. - [Active Record's Magic: How Rails Defines Getters and Setters](https://matiassalles99.codes/posts/active-record-magic/): A deep dive into ActiveRecord internals — how AttributeMethods, ModelSchema, and Railties work together to define methods from your database schema. - [Building a 4-bit CPU with Breadboards](https://matiassalles99.codes/posts/4bit-cpu/): How my friend and I built a CPU from integrated circuits for a college assignment, covering the clock, ALU, registers, RAM, and control unit. - [Save Money on Heroku: Share One Database Across Multiple Apps](https://matiassalles99.codes/posts/save-money-on-heroku-share-one-database-across-multiple-apps/): Using schema_search_path to share a single Postgres database across multiple Heroku apps and cut costs. ## Links - Blog: https://matiassalles99.codes - GitHub: https://github.com/matiassalles99 - Emulator: https://emulator.matiassalles99.codes - Full content for LLMs: https://matiassalles99.codes/llms-full.txt