Hello,

I’m an engineering student studying at Fordham University. I love exploring the world of coding and 3D modeling through a variety of passion projects.

Recent Work

1) I developed a program that can convert any 3D (.obj) model into a Minecraft structure.

A model in the process of being generated (depicting a tray of McDonald’s food). At great scales like this, the creation process can become very time-consuming, as each block is set one at a time and limited by Minecraft refresh rates (this was the result after 24 hours).


Languages Used:

  • AutoHotKey (used for code and automation)

  • SQL (used for database operations on Minecraft block RGB)

This code utilizes the fact that .obj models can be interpreted quite legibly as a text document.

  1. The .obj model is read as text. Information regarding the vertices, vertex textures, and faces is parsed from the file.

  2. Vertex information is sorted and scaled to the desired block height.

  3. For every face in the model, the code considers a cubic region of space enclosing it. Then each voxel within this cube is evaluated for points of intersection with the face, with intersecting voxels surviving as block candidates.

  4. The area of the part of the face captured within each voxel is also determined, and the voxel is rejected if this area is negligibly small (as to avoid extraneous or “fuzzy” voxels).

  5. Color is then evaluated at each voxel by obtaining the barycentric coordinates of the region’s centroid and evaluating this with the vertex textures of each point of the triangle. This provides the corresponding pixel position in the model’s image file.

  6. The Minecraft block is then selected by referring to the SQL database of blocks and determining the closest color match.

  7. Finally, the generation is automated by performing repetitive in-game “/setblock” commands within the Minecraft world.

Input model (downloaded from sketchfab.com)

Generated model (small-scale)

In my future plans for this project, I would like to reduce generation times significantly by applying an approach to modify the world’s chunk files directly. I am also eager to test this automation on a greater variety of 3D model files — and especially buildings.

2) I developed a program that can convert any image file into a Minecraft mosaic.

This project provided the foundations for what would become the 3D model generator. After scaling an image file to the desired resolution, my code assesses each pixel of the image and applies an algorithm to determine its closest color match in a list of Minecraft block textures, which I determined by reviewing the game’s texture files and compiling their names and RGB in a SQL database. As with the 3D project, the placement of each block is then automated using in-game commands.


This was my first successful generation. The choice of this character (Grimace) as the subject arose from an inside joke among my friends. I was surprised by the variety of colors allowed by the game, specifically with regard to purple blocks.

This rendition of the color spectrum provides a great visualization for the color palettes possible by the game. While the lack of a smooth gradient between colors was something of a disappointment, it certainly gives off an interesting pattern regardless.


This was an experiment with using the in-game “/fill” command to set rectangular regions of identical blocks in each repetition rather than placing them one by one. The change significantly reduces the generation time, but use of a more demanding command causes some unexpected skips, creating more (and larger) holes.

Languages Used:

  • AutoHotKey (used for code and automation)

  • SQL (used for database operations on Minecraft block RGB)

3) I developed a program that can win a game of Boggle (really quickly)

Languages Used:

This code uses the Scraper data mining Chrome extension to extract the grid of letters from the game board. Then, the algorithm systematically begins to chain together letters in a string and compares it to the Boggle dictionary, which I compiled in a SQL database (SQL is helpful for optimizing the database searching speed). Strings that are found in the dictionary are identified as words and are typed, and strings that are found at the beginning of words are considered for additional letters.

This project was inspired by my favorite word game, Boggle. To play, one is presented with a 4 x 4 grid of letters, and they are tasked with connecting adjacent tiles (including diagonals) to produce as many words as they can. As my first coding project, the challenge to create a bot for this game helped cultivate my love for coding, in addition to providing a helpful foundation of skills.


  • AutoHotKey (used for code and automation)

  • SQL (used for database operations on the Boggle dictionary)