Before the era of software libraries and general-purpose middleware, the designer had to search the web for application notes with PDF and zip files. The PDF file contained the user guide, and the ZIP file contained one or more source code files. This worked fine when the perfect code example was found, but all too often that was not the case. Instead, an example not showing what was needed was found, written for a device that was not going to be used, and running on a board the user did not own. This meant spending hours porting the application note to the target device and board, just to see what it did. Then starting the tiresome process of porting the useful bits into the project.