Welcome to Michael Gottlieb's personal website!

Hi! I'm a nerdy guy with a lot of interests/hobbies and a lot of cool stuff to publish. My most popular creation is probably qqTimer. I also recommend the Javascript Programs and Cubing Tools pages.


I wrote up a demonstration of a new algorithm to compute the probabilities of spaces in a minesweeper position; you can find it here. It is exponentially faster than a backtracking position-counting algorithm for most positions.

The details are complicated, so I haven't written up a full explanation yet. However, there is some info over at the reddit post, as well as instructions on how to use it.


Started working at Bloomberg! (To be clear, all opinions and ideas on this site, now and going forward, are mine personally, unless stated otherwise.)


I implemented a logic game called Disconnect Four, where you try to fill in a board with pieces of one of two colors so there are no four-in-a-rows of the same color. It can quickly generate its own puzzles with various sizes and three difficulties.

I also added some video links to the MultiBLD UWR page. Please let me know if I missed anything.


I've put up a Minesweeper Board Museum, which catalogs dozens of interesting, unique, or historically important Minesweeper boards. I welcome interesting contributions, and there is a program linked there which will let you play with and optimized boards by yourself.

I wrote up a method of mentally factoring numbers up to four or five digits. The explanation is here. I also added more links on the Articles, Cube Tools, and JavaScript Programs pages, and cleaned up the left-hand menu a bit.


A few months ago I computed the longest possible Sokoban puzzles in small rectangular rooms with no internal walls. The results of that computation are shown here along with some pictures of the most difficult puzzles for each size board. Larger boards take more than exponentially more time to compute, so going much beyond these results would take a lot of computing time.


I started work at Addepar!


With some more coding and a lot of trial and error, and with the help of AdituV over at TASVideos, I was able to make pretty good solutions for all of the puzzles in Denki Blocks, including the 3-of-a-kind and bonus shape bonuses, and the Club levels. Using that, we could make TASes (tool-assisted speedruns) of the entire game, and they have been published on the TASvideos page: any% (completing the game as fast as possible) in 29:47 and 100% (completing all the puzzles and getting all the stars) in 1:24:07.


I translated a two-century-old French medical journal article about people who eat very large amounts, and specifically a man named Tarare. It can be found here. I'm not a native French speaker but I tried to figure out as much as I could, and provided links to the references when I could figure them out. It's a pretty interesting article to read through.


I made a Rubik's Clock simulator, called qClock. Compared to my old Clock simulator, the biggest changes are that the size and controls can be customized; it also various rotations and has a few color schemes. As with qCube and qMinx, it is designed primarily for speed - to be a simulator that unofficial world records could be broken with. Speedsolving.com discussion is here.


Lately I've been working on sprucing up the Denki Blocks page. With the help of a program I wrote, I was able to find optimal solutions for some of the game's levels, and good suboptimal solutions for many of the rest. I have pages for the Game Boy Advance and Game Boy Color versions, with an image showing each level's layout.


I wrote a program to optimally solve the Rubik's Clock, and my friend Ben Whitmore made a simple GUI to accompany it. See the speedsolving thread for a download link, plus details and discussion.

Interestingly, publishing this program led to Jakob Kogler and Tom Rokicki working on this puzzle too. They released similar optimal solvers (mine uses less memory, but is slower, although still fast enough for normal use), and ended up proving God's Number for the Rubik's Clock (12 moves) as well as eventually determining the entire move count distribution for the puzzle. Very cool stuff!


Released ksolve+ version 1.0, a program for finding useful move sequences in permutation puzzles. It is based on Kare Krig's ksolve, but with many improvements and new features. See the speedsolving thread for details!


Just like with qCube, I've updated qMinx, bringing all the versions together with new features and better code. You can try it out here. One of the big changes is the ability to play with Pentultimates with any number of layers (such as the Royal Pentultimate) - but good luck, they're very difficult puzzles. Have fun! Comment over at the speedsolving thread.


Following the updated version of qCube, I have been working on a simulator for arbitrary bandaged cubes - something I have wanted to make for a while. Try it here! The controls are like qCube; many puzzles will feel more natural with the "optimized turning style" option turned on. There are a lot of puzzles here, and I tried to make sure that they all display properly and are scrambled well. You can discuss it at the speedsolving thread.


There's a new version of qCube here. You can select any combination of puzzle (normal cube, Dazzler, etc.), event (single, marathon, 2x2-NxN relay), and color scheme from the available options. It also keeps statistics for your best time and best average of 5/12/100. There are also a good number of smaller optimizations and fixes throughout. This is a replacement for all of the individual qCube sims. Feel free to talk about it in the speedsolving thread.


Yesterday I had an idea of a way to generalize the Tower of Hanoi puzzle, and today I wrote a nice playable javascript version of it, which you can find here. Normally, the puzzle requires about 2^n moves if there are n disks; my generalized version requires about k^n moves for n disks, with k being a number that you can make as large as you want. I hadn't seen this before and thought it was a pretty cool discovery. More details and math are in this speedsolving thread.


I did a big update to qqTimer, which can be found at mzrg.com/qqtimer and qqtimer.net. The biggest change was probably the addition of some code for cookies, so even if you quit the browser your times will still be saved. All the details are in this speedsolving thread. Happy cubing!


I haven't updated the main page in a while, but I've done plenty of new stuff:

Also, I got into the Rensselaer Polytechnic Institute (RPI) as a transfer student, and I'll be going there. Good things are ahead.


I completely rewrote the cube notation page to describe the SiGN notation, which is a lot more modern than what was there before. I also made some major edits to the cube mechanics page.


I've been working on updating qqTimer, but due to a somewhat unexpected scheduling snag I don't want to make a big public release yet. For now, you can try it out here if you're interested.

There are also two smaller updates. First, I made a new cube simulator variant where you can only see the stickers that are on the correct side. You can press ~ to switch between 'easy' mode (visible squares are properly colored) and 'hard' mode (visible squares are white). Some trial and error is involved, but it's an interesting challenge to try to do it quickly. Second, I made a program to train mouse control for Minesweeper, which I find useful as a warmup. The idea is simply to click all of the safe squares as quickly as possible, without clicking any other squares.


I made a new version of qCube which changes its color scheme every move (so, the cube's position isn't different, but which color goes where has changed). I've been able to get a 5x5 time of 1:11 on it, so it's certainly playable.

I also wrote a simulator for the Rubik's Race, although mine is single-player (the original is a two-player contest, but the players don't interact except for winning). Instead of being faster than the other player, your goal is to finish as fast as possible. If you want more information about this puzzle, there's a lot of detail at the Unofficial Rubik's Race Page.


Happy April Fools! I changed the main page's background to be pink, and made all the navigation links go to a random My Little Pony episode. I also modified qqTimer (the one on my site and the one on qqtimer.net) to run 20% faster, to make people get slower times. I think a few people enjoyed it.


For a few days I've been working on my table of Rubik's Cube Orders. For a long time this table had been sitting there with only a few entries, which had all been found by hand using guesswork. I decided to revamp it, and I started by making an order calculator to let me use modern notation that I hadn't included in the old Visual Basic version. Once that was done, I could write a program to look through all sequences of a given length to fill in big parts of the table with truly optimal sequences. After doing the 3x3x3 and 4x4x4 columns, I realized that the 5x5x5 column would be at least as large as the 4x4x4 column and take even more time to calculate, so I removed it. There is now a 2x2x2 column in its place.

Older News?

Older news navigation: Recent News | 10th Grade News | 9th Grade News