Hi folks!

I'm Miguel. Here I write mainly about programming and side projects.

I've written my own programming language called Grotsky, and it's implemented in Rust. This blog's engine is written with Grotksy and generates static HTML files.

Caddy Snake improvements

2024-11-07
I've been planning on improving Caddy Snake, making it more stable and easier to use. Right now, I want to add automatic test for Django, and build binaries and Docker images for arm64 and riscv64. I'd also like to turn it into a Python package so you can plug it straight into your code.

Finding and fixing a bug in Python subinterpreters

2024-08-19
Lately, I've been working with Python C-API. I wanted to use subinterpreters with their own GIL to unlock the performance gains promised by being able to execute many threads in parallel which was not possible before Python 3.12.

Generating posts using markdown

2024-01-04
Custom Markdown parser and HTML generator using Grotsky, my toy programming language that powers this blog. Up until now I've used a hacky HTML generator that relies on lists. Now Im integrating a simple MD parser that makes easier to write new articles.

Day 20. My favourite problem from Advent of Code 2023

2023-12-25
Advent of code 2023 has gone by, this is my first year participating. It's been fun and I want to share the problem that I enjoyed the most. It's based on simple electronic devices sending signals or pulses to each other.

I rewrote my toy language interpreter in Rust

2023-11-23
Im rewriting Grotsky (my toy programming language) in Rust, the previous implementation was done in Go. The goal of the rewrite is to improve my Rust skills, and to improve the performance of Grotsky, by at least 10x. This has been a serious of posts, this one is the latest one. Hopefully the best and most insightful of them all.

Rewrite my toy language interpreter in Rust, an update

2023-09-23
Im rewriting Grotsky (my toy programming language) in Rust, the previous implementation was done in Go. The goal of the rewrite is to improve my Rust skills, and to improve the performance of Grotsky, by at least 10x.

The end of a side project

2023-07-15
Cloud Outdated was a personalized digest of updates for cloud services. It's sad to see it go, but it was a fun project to work on, learn some new stuff and collab with a friend. There are some takeaways from this that I'd like to share.

Rewrite my toy language interpreter in Rust

2023-06-02
Im rewriting Grotsky (my toy programming language) in Rust, the previous implementation was done in Go. The goal of the rewrite is to improve my Rust skills, and to improve the performance of Grotsky, by at least 10x.

Writing a Redis clone in Go from scratch

2023-04-08
In this post we're going to write a basic Redis clone in Go that implements the most simple commands: GET, SET, DEL and QUIT. At the end you'll know how to parse a byte stream from a live TCP connection, and hopefully have a working implementation of Redis.

How to write a program that can replicate itself

2022-11-26
Grotsky is a toy programming language that I made for fun. Today we're visinting the concept of Quines, a.k.a. self replicating programs. It's said that any turing-complete language should be able to write a program that replicates itself. And grotsky is no exception.

Migrate from Heroku to Fly.io

2022-09-22
A couple weeks ago Heroku announced the removal. I have plenty of projects running on free dynos. I have taken some time to move my code to Fly.io. And also I've written a little tutorial of how to perform the migration.

Branchable MySQL: Managing multiple dev environments

2022-09-20
When teams start to grow, having a single dev environment becomes an issue. People start stepping on each others toes. A common problem is that two people want to apply incompatible migrations on the database. That problem is impossible to fix if folks are working on parallel branches. If we can have a database for each branch of a project, that will remove much of the pain of having multiple devs applying changes to the db.

Webscraping as a side project

2022-07-20
Cloud Outdated is a personalized digest of updates for cloud services. Works like a newsletter where you can choose which services you want to get notified about. For example: Subscribe to AWS Lambda with Python runtime, and you'll get an email when 3.10 is supported.

Playing with Javascript Proxies (getters/setters)

2021-12-31
In this last post of the year I play with proxies in an attempt to create a Javascript object where changes are appended to a log and can be reverted by deleting the last element of the log using getters and setters.

Grotsky Part 3: Interpreting

2020-04-01
Part 3 of building my own language series. Interpreting expressions and statement, traversing the Abstract Syntax Tree.

Grotsky Part 1: Syntax

2020-02-21
Part 1 of building my own language series. Defining the syntax of grotsky toy language.

Sudoku Solver

2020-02-18
Iterative + recursive sudoku solver using python magic methods.

Crafting interpreters

2020-02-12
Lox language interpreter based on the book craftinginterpreters.com by Bob Nystrom.