16x2 display not displaying text only white boxes on top row

The constructor in #14 says:

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

Your photo says:
The orange wire in #17 goes from digital#7 to D4 on the LCD.
The yellow wire in #17 goes from digital#6 to D5 on the LCD.
...
The RW on LCD is not connected to GND.
The soldering on the LCD could be improved.

Life is simpler if you choose better colours for your jumper wires. And if you pull them straight across e.g. if the Uno was at the bottom right of your photo.

Find an Internet tutorial with neat coloured wires on a Fritzing diagram.
Copy it exactly. i.e. same coloured wires. same routeing of wires.

A simple tip. If you connect VO on the LCD directly to GND you will get a readable contrast. Much simpler than buying and wiring a potentiometer. Replace the straight jumper with a 390R or 470R resistor for a better contrast.

David.