Sunday, July 26, 2009

Bucket List 2: Implementing Encrypting and Compression

Every developer should have the pleasure of implementing an encryption and compression algorithm.


Why?


Why not!


There are many good reasons that every developer should have this experience:


1. Encryption and Compression are very fundamental technologies that have broad-reaching impact in much of what we do as software developers. Getting some hands-on experience with both of these subject areas only helps the developer to really understand and internalize some of this knowledge.


2. The theory behind both compression and crypto is downright fascinating.


3. It's a great opportunity to take a very solid specification, and take your hand at implementing it. This is also a great way to learn a new langauge!


4. It's a great opportunity to work with data at a byte-level and bit-level. Sometimes you just realize how one of your favorite programming platforms (Java) really sucks at byte manipulation and bit-twiddling.


5. Implementing compression algorithms is also a good opportunity to dust off your data structure skills sets. (note: implementing run-length encoding does not count) :-)


6. It's pretty darn satisfying to use your software at for one operation (like compression or encryption) and see it inter-operate with another software tool for the other operation (like decryption or uncompressing data).


So, go ahead and implement LZW or DES today!

No comments: