PE executable packer

I want to code a very simple pe executable packer as a learning exercise though I'm not sure how to go about coding this. I understand I will have to use an existing compression library and will have to code a decompression stub within the packed executable. I have done a lot of reading on the pe file format. My previous experience with c++ has been coding small programs. Does anyone have any advice or recommendations on any tutorials I could follow.
Here's one popular library off the top of my head:
UPX is an open-source and well known library for exactly this purpose:
Registered users can post here. Sign in or register to post.