PREVIOUS -- HOME  -- NEXT


16. Lessons Learned:

Several technical skills were learned during the course of this project. As networking hardware has dropped in price over the last several years, networks of personal computers have become nearly ubiquitous. For this project, one of the most popular style of networking (100 Base-T) was used. Furthermore, as networked computers have become more powerful, there has been an increased desire to distribute applications among several machines. When personal computers had limited resources and networks were slow, there was little incentive to write distributed programs. Currently a great deal of research and business revolves around that area. In addition to learning about the general concepts of distributed computing, this project focused on PVM, a particularly popular environment for developing distributed applications.

Another trend in computing is a desire to make multimedia applications run faster. Intel's contribution to this goal has been its MMX instructions. This project brought first hand experience with using MMX instructions. Also, MMX instructions must be programmed at the very lowest level (assembly); using them with the most popular Linux compiler is supported but not very well documented, so this kind of experience is quite rare.

In a general sense, an important lesson was learned about reverse engineering. For this project, the planning stage was completed first. Next, the structure of the original encoder was extracted from the source code. Finally, the implementation was completed. However, because several important details of the original program were misunderstood, many of the initial design decisions had to be significantly modified. This is not an issue in projects where prepackaged components are used to build a final product. In that case, the function and interface of each component is well defined by its manufacturer. The very first step in this project should have been developing a complete understanding of the original encoder, followed by the planning and implementation of the new encoder.