Upside down and backwards is just the row/column order reversed. The definitive answer is to buzz the rows and columns out using a battery and resistor and then wire to suit. The video you originally posted was very close to perfect. The rows appeared to be fine and only a couple of columns were out. Try doing a sequence of setLed going from column 0 to column 7 and compare to what column lights up you will then find the problem.
Maybe your serial read parsing routine is sometimes entering a deadlock loop condition. To debug you could try turning LED's on and off when entering/leaving parts of the code and see if it locks up within a specific place. Also try commenting out the recordConditions call to see if problem is in main loop of the SD card routines.