diff --git a/README.md b/README.md
index 63d201eecddb69b1cd70d90939660ce324e0b529..f5f59a2084730994adcbb32912f2aa7235ec68c7 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,8 @@ Click the appropriate link to download and install the ARM GCC compiler here for
 
 The download may take 30 seconds to a minute. Open the downloaded software and follow the instructions in the installer.
 
+On _Windows_, enusre all boxes are checked at the end of the installer.
+
 On _macOS_, after the software install is complete, run this command to add the toolchain to the system PATH:
 ```
 echo 'export PATH="/Applications/ARM/bin:$PATH"' >> ~/.zprofile && source ~/.zprofile
@@ -66,3 +68,19 @@ arm-none-eabi-objcopy -O binary -S build/py32-keychain.elf build/py32-keychain.b
 
 This means that a binary file which includes all code, images, and GIFs has been successfully created that can be flashed to the keychain.
 
+
+#Programming
+Open the UNL Keychain Utility app that is in this repository. 
+
+On _macOS_ after attempting the first open, you may need to go to System Settings > Privacy and Security, then scroll all the way to the bottom and hit open where it lists the app. 
+
+On _Windows_ you will receive a popup window. Click where it says 'More Info' and then click 'Run Anyway'.
+
+After opening, plug in your keychain via USB-C to your machine, and now use the bitmap playground or the GIF playground to make new custom frames. Add these frames to frames.h in the inc/ directory. See the example code at the bottom of main.c.
+
+When ready to program, run 'make' and the .bin file will be created. Select the .bin using the 'Select Firmware File' in the app, and click 'Flash Firmware' when ready to program.
+
+_If for some reason the device does not program and you are on Windows, let the keychain sit for a minite or two while plugged in to your computer, so Windows can automatically downlaod the driver._
+
+
+See the video tutorial for more information.
\ No newline at end of file