I got the idea in my head the other day to write a Rubik's cube solver. While working on that I accidentally learned some interesting math that I thought might be nice to share. Here, then, is a brief, probably over-simplified introduction to group theory and its applications to Rubik's cubes.
A few months ago I was playing around with Delaunay triangulations and realised today that I never wrote anything about it. Briefly, a Delaunay triangulation of a set of points is a way of drawing triangles connecting those points in order to maximize the minimum angle of all of the triangles. They often look something like this:
I got an Arduino Uno for Christmas this year and I've been playing around with it a little bit over the last few days. While trying to get a simple PWM program to work, I noticed that it starts acting weird at higher frequencies. The square wave actually produced by the microcontroller drifts farther and farther away from the expected signal the higher the frequency gets. Here's some oscilloscope output to show you what I mean. All of the signals should be 5 Vp-p and have a 50% duty cycle. The scope is set to 5V/div in every image.
So, I went to upgrade my phone to the latest CM snapshot and every time I tried to install it my phone would just reboot. I think this must be related to the fact that I recently enabled encryption on the device since I can't think of anything else that I've changed since the last time I updated it. I googled around a little bit and found a process that works on my Nexus 5, so I thought I'd document it here in case anybody else (including future me) needs to know how to do it.