diff --git a/images/avrdude_h.png b/images/avrdude_h.png
new file mode 100644
index 0000000000000000000000000000000000000000..67ce6777c7ddd814444887ede3f893b859985805
Binary files /dev/null and b/images/avrdude_h.png differ
diff --git a/images/avrdude_p.png b/images/avrdude_p.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ef551e1366d71bfc4522fe31220a81fa30d398e
Binary files /dev/null and b/images/avrdude_p.png differ
diff --git a/images/avrdude_port.png b/images/avrdude_port.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9695b66639c2d07a1d724fd6a369252e4074923
Binary files /dev/null and b/images/avrdude_port.png differ
diff --git a/images/avrdude_u.png b/images/avrdude_u.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb44fb5bde585ee54a0d86c23568ad2c9830d7ba
Binary files /dev/null and b/images/avrdude_u.png differ
diff --git a/index.html b/index.html
index f0a4a9d1f6d62bab92af70e9df3a4b0a7c5b016b..0fc11c2f7ba1fd6924e78a9a63e64c68e3adfda8 100644
--- a/index.html
+++ b/index.html
@@ -208,7 +208,44 @@ TL;DR hex files are easy to read and used for not only programming but also chec
 The last command computes information about the size that the program is going to take.
 This is important if you are creating your own program, because you need to make sure it will fit in memory.
 
-## AVR-DUDE!
+## AVRDUDE!
+
+`avrdude` is a tool that allows us to send programs onto avr chips through a programmer interface such as the usbtiny (e.g., [FabTinyISP](http://fab.cba.mit.edu/classes/863.16/doc/projects/ftsmin/index.html)), or an [Atmel ICE](https://www.microchip.com/DevelopmentTools/ProductDetails/ATATMEL-ICE).
+
+Here, the manual of `avrdude` is quite large, so instead, let's start by reading the help summary, which you can typically get by running the command with the argument `-h` or `--help`:
+
+<img src="images/avrdude_h.png" width="600">
+
+* `-p device` specify the type of device to program (in our case, it's an ATTiny44)
+* `-P port` selects the port for programming (typically `usb`)
+* `-c programmer` selects the programmer (e.g. `usbtiny`)
+* `-U ...` requests a memory update (this is the actual action we're doing with avrdude)
+
+```bash
+avrdude -p t44 -P usb -c usbtiny -U flash:w:hello.ftdi.44.echo.c.hex
+```
+
+How did we know the device label was `t44`?
+
+Well, the manual tells you that you can just query for the available names / devices with `avrdude -p ?`, which gives you a long list.
+
+<img src="images/avrdude_p.png" width="600">
+
+You can do the same to find the list of available programmers (and you'll find `usbtiny`).
+
+Finally, the real deal - the memory programming through `-U`.
+There are different actions: `-e` erases memory, likely not what you want, and `-U` updates the memory.
+
+## `avrdude -U ...`
+
+The format of the argument is (according to the help):
+```bash
+avrdude -U <memtype>:r|w|v:<filename>[:format]
+```
+
+The manual is slightly more verbose and tells us what's available for the memory types, formats and operations:
+
+<img src="images/avrdude_u.png" width="600">