MUPLEx
Technologies used: JavaScript, QUnit
MUPLEx is a Scheme-like language with all the bells and whistles (higher order functions, closures, currying (by default), mutation, records and other high-level goodies). The language also features a module system to pack functions together. It is a dynamically-typed language which also comes with limited type/reference-checking done at "compile" time in order to eliminate a lot of headaches. An interpreter written in JavaScript accompanies MUPLEx, and if that is not enough, it also features a transpiler which will convert MUPLEx code to JavaScript code.
Check the project on github
GOAT
Technologies used: Java, Swing, OpenGL, LWJGL
This project was started in February 2011 as the main application for my Bachelor's project and it is in active development. The application offers visual representations of how global optimization algorithms work. The optimization algorithms implemented are Genetic Algorithms and Particle Swarm Optimization. My Bachelor's project consisted of analyzing, comparing and benchmarking these algorithms and their different variations.
The full list of variations can be found in this post: Global optimization to the max!
And the source code on github
Melc
Technologies used: Java
Melc is an LL(k) recursive descent parser generator. It takes as input a grammar and outputs both an Abstract Syntax Tree builder and the necessary data types for representing the AST. The generator outputs builders in Java, but other output languages are considered. The input grammar is written in a notation similar to EBNF, with some additional guides to help generator.
Full source code on github
From Under the Rock
Technologies used: Scala, OpenGL, LWJGL
This project has been created for the 36th miniLD competition. It was developed in 7 days and it was my first big project in Scala. From Under the Rock is an audio-visual experiment with an emphasis on exploration from a first person perspective. OpenGL was used for the 3D graphics and all renderable entities heavily rely on display lists. Also, nothing is stored, each and every single model is procedurally generated.
Robot Unlock, RU and MRU
Technologies used: AutoIt, JavaScript, HTML5 Canvas, OpenCL, OpenGL
Robot Unlock started out as a multithreaded bidimensional programming game, in 2010. The game has received positive feedback, being featured on several indie gaming sites. Due to this, I have released an online interpreter for the language used in Robot Unlock, in 2012. It is made in JavaScript, using the HTML5 Canvas. The complete specification can be found on the Esolang wiki. A variant of RU, called Massive RU made its way onto the GPU, though OpenCL. This most recent iteration of RU was done with the intention of showing how multiple processing units can simultaneously execute different intructions in an environment which is for the most part SIMD.
Coin
Technologies used: AutoIt, C++
Coin is one of my oldest projects, having evolved over a period of 6 years. It started off as a vector graphics format with conditional instructions, written in Pascal and over the years it developed into a high level assembly-like language with a customizable virtual machine (in C++). The latest version is accompanied by a IDE written in AutoIt. Its main purpose now is to study the performance of known algorithms and to search for better ones, as the virtual machine is able to assign costs (in CPU cycles) to each and every instruction. This raises new challenges such as for instance designing an efficient algorithm to run on a CPU on which the comparison and multiplication instructions happen instantly, while other simpler instructions such as addition and subtraction take many CPU cycles to complete.
Cube Cube Cat
Technologies used: Java, OpenGL, LWJGL
A personal take on the classic Robotron: 2084 arcade game, with influences from Mutant Storm and Geometry Wars. This is my first truly 3D game. Cube cube cat is a neatly wrapped package of plenty of levels with plenty of enemies and enough bullets to shoot them all, particles to brighten dozens of screens and an 8-bit quirky soundscape.
Lindenmayer power
Technologies used: JavaScript, HTML5 Canvas
This application creates complex images starting from a set of production rules by employing Lindenmayer systems (a type of stochastic context-free grammars). It generates sequences of drawing commands which are then executed and thus resulting in fractals, plant-like and other recurrent structures.
Tarflex
Technologies used: JavaScript
This application is a reflective Turing tarpit. In short, the entire program is treated as a list of lists which consist in their turn of simple instructions. Some of these instructions can perform operations on the lists which makes the language reflexive.
Note that the full list of projects is located on the right side panel of this blog. This portfolio includes only a subset - those projects which I consider the most presentable and relevant for my programming career.
Technologies used: JavaScript, QUnit
MUPLEx is a Scheme-like language with all the bells and whistles (higher order functions, closures, currying (by default), mutation, records and other high-level goodies). The language also features a module system to pack functions together. It is a dynamically-typed language which also comes with limited type/reference-checking done at "compile" time in order to eliminate a lot of headaches. An interpreter written in JavaScript accompanies MUPLEx, and if that is not enough, it also features a transpiler which will convert MUPLEx code to JavaScript code.
Check the project on github
GOAT
Technologies used: Java, Swing, OpenGL, LWJGL
This project was started in February 2011 as the main application for my Bachelor's project and it is in active development. The application offers visual representations of how global optimization algorithms work. The optimization algorithms implemented are Genetic Algorithms and Particle Swarm Optimization. My Bachelor's project consisted of analyzing, comparing and benchmarking these algorithms and their different variations.
The full list of variations can be found in this post: Global optimization to the max!
And the source code on github
Melc
Technologies used: Java
Melc is an LL(k) recursive descent parser generator. It takes as input a grammar and outputs both an Abstract Syntax Tree builder and the necessary data types for representing the AST. The generator outputs builders in Java, but other output languages are considered. The input grammar is written in a notation similar to EBNF, with some additional guides to help generator.
Full source code on github
From Under the Rock
Technologies used: Scala, OpenGL, LWJGL
This project has been created for the 36th miniLD competition. It was developed in 7 days and it was my first big project in Scala. From Under the Rock is an audio-visual experiment with an emphasis on exploration from a first person perspective. OpenGL was used for the 3D graphics and all renderable entities heavily rely on display lists. Also, nothing is stored, each and every single model is procedurally generated.
Robot Unlock, RU and MRU
Technologies used: AutoIt, JavaScript, HTML5 Canvas, OpenCL, OpenGL
Robot Unlock started out as a multithreaded bidimensional programming game, in 2010. The game has received positive feedback, being featured on several indie gaming sites. Due to this, I have released an online interpreter for the language used in Robot Unlock, in 2012. It is made in JavaScript, using the HTML5 Canvas. The complete specification can be found on the Esolang wiki. A variant of RU, called Massive RU made its way onto the GPU, though OpenCL. This most recent iteration of RU was done with the intention of showing how multiple processing units can simultaneously execute different intructions in an environment which is for the most part SIMD.
Coin
Technologies used: AutoIt, C++
Coin is one of my oldest projects, having evolved over a period of 6 years. It started off as a vector graphics format with conditional instructions, written in Pascal and over the years it developed into a high level assembly-like language with a customizable virtual machine (in C++). The latest version is accompanied by a IDE written in AutoIt. Its main purpose now is to study the performance of known algorithms and to search for better ones, as the virtual machine is able to assign costs (in CPU cycles) to each and every instruction. This raises new challenges such as for instance designing an efficient algorithm to run on a CPU on which the comparison and multiplication instructions happen instantly, while other simpler instructions such as addition and subtraction take many CPU cycles to complete.
Cube Cube Cat
Technologies used: Java, OpenGL, LWJGL
A personal take on the classic Robotron: 2084 arcade game, with influences from Mutant Storm and Geometry Wars. This is my first truly 3D game. Cube cube cat is a neatly wrapped package of plenty of levels with plenty of enemies and enough bullets to shoot them all, particles to brighten dozens of screens and an 8-bit quirky soundscape.
Lindenmayer power
Technologies used: JavaScript, HTML5 Canvas
This application creates complex images starting from a set of production rules by employing Lindenmayer systems (a type of stochastic context-free grammars). It generates sequences of drawing commands which are then executed and thus resulting in fractals, plant-like and other recurrent structures.
Tarflex
Technologies used: JavaScript
This application is a reflective Turing tarpit. In short, the entire program is treated as a list of lists which consist in their turn of simple instructions. Some of these instructions can perform operations on the lists which makes the language reflexive.
Note that the full list of projects is located on the right side panel of this blog. This portfolio includes only a subset - those projects which I consider the most presentable and relevant for my programming career.