Gerardo Berlanga Molina

Passion Projects

Python 2x2x2 Rubik's Cube Solver

When I took MIT's 6.009 (Fundamentals of Programming), we learned about Breadth-First-Search (BFS). The feature that caught my eye is that BFS always finds the shortest solution to a problem. I realized that I could apply this to Rubik's Cubes!

I taught myself how to solve the 3x3x3 when I was 6 years old, but there are over 43 quintillion (43,252,003,274,489,856,000) possible permutations, so a brute force method like BFS did not seem like the tool for the task. Instead, I opted to try the 2x2x2. In contrast, it has under 4 million (3,674,160) permutations, which is (computationally) infinitely more manageable!

My first iteration was able to solve official scrambles which are 9 moves long. However, it took 10 minutes to do so! So I made some modifications and optimized my search algorithm. Version 2 of my solver can achieve a minimum-move solve in under 25 seconds!

You can find the code for both of my solvers on my Github!

Pool Table Coefficient of Friction Calculation

I've loved playing pool since I was a little kid, so when my parents got me a nice pool table, I was curious about what the coefficient of rolling friction was between the pool balls and the table's felt.

I created a test ramp that I could reliably adjust the height of to impart a known amount of energy to the balls. Then I carefully released them and measured their travel distance. Using video editing tools such as FFMPEG, I determined the ball's speed at the bottom of the ramp. I collected my data into a MATLAB file, and used linear regression to calculate an effective coefficient of rolling friction of 0.0025!

I made a great deal of assumptions, such as neglecting air resistance, but I did my best to justify why these assumptions were acceptable. You can read the write-up I made for the entire project here.

Kakisti: My own Constructed Language

I took MIT's 24.917 (ConLangs: How to Construct a Language) in Fall 2023. The class walked us through the different aspects of languages, but I decided to professionally write-up my language. Despite not knowing a single LaTeX command going in, I was able to teach myself, and go above and beyond the class' requirements. 

Kakisti is a conglomeration of Nahuatl affricates, English consonants, Spanish vowels, and Italian verb conjugation rules. I created a number system, a negation system, a method of asking questions, and a ton of vocabulary! I even translated a famous poem, William Carlos Williams' This is Just to Say.

You can read the grammar in its entirety here.

Coming Soon: Star-tracking Camera Mount

During my trip to the Las Campanas Observatory in Chile, my Research Advisor, Hungarian Astrophysicist Gábor Fűrész, taught me about the rule of 500. It is a shutter speed rule of thumb. Essentially, if you divide 500 by your lens' focal length (in millimeters), you can approximate the longest time you can keep your shutter open before the rotation of the earth causes stars to turn into streaks. For longer exposures, you need a tracking mount that compensates for the Earth's rotation. I am eager to take the next step in astrophotography, and designing and building my own tracking mount is the perfect blend of photography and mechanical engineering that I can think of. Below you can enjoy some shots I was able to take with my iPhone 13 26mm camera (and a shutter speed of 30s thus the small streaks).

UPDATE 11/11/2024: I have started learning iOS app development using Swift, and I have the beginnings of an app that will automate the mount alignment process. You can find the code on my github!