I’m a programmer and here are some things I made. Find more on my github page.

separator

logo

(2014-2021)

Physical Bits is a web-based programming environment for educational robotics that supports live coding and autonomy using a hybrid blocks/text programming language.

line-follower

A little bit of history

I started this project a couple of years ago as an attempt to fix a limitation of Physical Etoys. At the time, Physical Etoys allowed to program Arduino boards (as well as several other robotic kits such as Lego NXT) using the Etoys scripting system. This was great, but it meant that the robots had to always be connected to the computer running Physical Etoys, which was a severe limitation.

My first solution was to simply translate the Etoys scripts (which were actually Smalltalk code) to C++, compile this code and upload it to the robot. I did this for both Arduino and Lego NXT (which was annoying because they required slightly different code). My little compiler worked well enough and it allowed us to run Physical Etoys scripts autonomously, but it was soon evident that in our search for robot autonomy we lost everything that was great about Physical Etoys: the live environment, the instant feedback, the monitoring capabilities, and the ability to easily make different electronic devices interact with each other in interesting ways.

liveness

Programming in Physical Bits is an interactive experience: every change you make is automatically compiled and transmitted to the robot so you can instantly see the effects of your change. And once you’re happy with your program you can store it permanently and unplug your board from the computer. The program will now run autonomously, without requiring a connection to the computer.

We needed some other solution so I decided to make a firmware that was capable of not only interact with the computer through serial port commands but also to run programs autonomously. To that end, I started working on a small bytecode virtual machine that I could upload to the robot alongside our custom firmware (which at the time was just a less capable version of Firmata). I decided to start with Arduino (which seemed to be the most popular platform) and later port this to Lego NXT (this port never happened, though).

blocks-code

Physical Bits includes a block-based programming language suitable for beginners but it also supports text-based programming for more advanced users. To ease the transition the environment automatically generates the textual code from the blocks (and viceversa).

Anyway, this small side project of mine eventually grew into its own thing, more people joined the team and contributed code an ideas, we designed and developed a custom programming language for educational robotics, we added a visual editor (based on Blockly), we implemented bidirectional translation of blocks/code, we added a simple debugger, and we packaged everything into an electron app.

Altough this project is far from over, we have released a few versions that you can freely download and try. If you do, please let us know what you think.

More info

If you want to see Physical Bits in action you can watch this demo. It’s recorded in spanish but it has english subtitles.

separator

Simplex Noise test

(2021)

I made this project to learn about simplex noise for procedural terrain generation and I ended up making a simple planet building tool that you can try online.

planetgenerator

separator

Low Poly Racing

(2020-2021)

This was going to be a racing game, but I got bored before building the race track so I left it incomplete. Maybe I’ll finish it someday, who knows…

UPDATE 2021/06/11: At last, I added a racetrack.

lowpolyracing

separator

webots-blockly

(2020)

Webots-blockly is an blocks-based editor for the Sumo competition in the Roboliga Virtual 2020. Roboliga is an annual educational robotics event in which argentinian students get together to compete and show their projects. Due to Covid-19 the 2020 event was held online with the help of the webots simulator. In order to help younger students with their robot programming I made this editor that generates python code from blocks.

webots-blockly

separator

Paper Airplane

(2020)

This is a simple game about a paper airplane lost in space that has to avoid crashing into asteroids. It’s really nothing more than a Flappy Bird clone but I like this game because it’s easy to program and fun to play. I tend to use it as a learning exercise whenever I try a new game engine. In this case, Godot.

paper-airplane

separator

Sunset Flight

(2020)

Just an airplane flying through the mountains at sunset.

sunset-flight

separator

Terrain Generation

(2020)

These are some scenes I made while learning about procedural content generation using Godot.

terrain-generation

separator

Julia Set

(2020)

An interactive visualization of the Julia Set. I made this to learn about shader programming.

julia-set

separator

Wizards of Lezama

(2014-2017)

I worked on this game with a couple of friends. I was in charge of programming, Sebastián Blanco did the game design, Camila Martorelli was responsible for the art, and Sebastián Codex composed the music. Although we never finished this project we did release an early alpha, so you can check it out if you want (I’m not sure if the server is still up, though).

wol

separator

Esclava (card game)

(2020)

This is a card game that my ex used to play with her friends. I don’t really remember the rules and although the code is kind of a mess, you could probably get a sense of what the game is about by looking at it. Also, this was a useful exercise to learn about firebase.

esclava

separator

MiniMorphicJS

(2015)

This is just a very basic and incomplete implementation of the Morphic UI framework written in Javascript.

mini-morphic-js

separator

Physical Etoys

(2008-2013)

Physical Etoys is a free open-source extension of Etoys developed by Gonzalo Zabala, Sebastián Blanco, Matías Teragni, and myself at the Universidad Abierta Interamericana. Physical Etoys allows to easily program different electronic devices such as Lego NXT, Arduino boards, Sphero, Kinect, Wiimote joystick, among others.

physical-etoys

separator

dotnet.Database

(2016)

This is just a thin wrapper around ADO.NET that makes it less annoying to run SQL queries in .Net.

var db = new Database<SqlConnection>("your connection string");

// Execute INSERT
db.NonQuery("INSERT INTO Test (id, name) VALUES (@id, @name)")
    .WithParameter("@id", Guid.NewGuid())
    .WithParameter("@name", "Juan")
    .Execute();

// Execute SELECT
var rows = db
    .Query("SELECT id, name FROM Test")
    .Select(row =>
    {
        Guid id = row.GetGuid("id");
        string name = row.GetString("name");
        return new Tuple<Guid, string>(id, name);
    });

separator

Disk Space Analyzer

(2018)

This is a small utility program I made to help me diagnose some disk space problems (Windows only).

disk-space-analyzer

separator

GSoC: Squeakland Education Project

(2010)

In 2010 I participated as a student in the Google Summer of Code program for the Smalltalk community (under the umbrella of the European Smalltalk User Group). It was a great experience, I learned a lot, I got to meet some awesome people such as Randy Caton (who was my mentor for the project), and I had a lot of fun.

gsoc

separator

RobotSoccer

(2008-2011)

This was a simple framework that allowed to participate in Robot Soccer competitions using Squeak Smalltalk. It was designed to support different robots by changing the robot abstraction layer: we implemented adapters for virtual robots from the FIRA simurosot category, real robots made with Lego NXT, and home-made robots.

robot-soccer