Archive for 2011
Posted in December 24th, 2011
When I updated my LZW reference code to use the latest C++ features, I abstracted my input and output functions using templates. Data was read and written using the iostreams paradigm, which requires simple classes that implement just a few functions. Would I have been better off using the iterator paradigm instead? The C++ algorithms [...]
continue reading.....
Posted in December 10th, 2011
Windows users who need a command line connection to another system via telnet or SSH are big fans of PuTTY. It’s free, it has every feature you need, and it’s reliable. One thing many people would like to do is use PuTTY as a component in their program. Apparently this comes up so often enough [...]
continue reading.....
Posted in December 9th, 2011
This summer I’m teaching a graduate class, Principles of UNIX, which is more or less a crash course in the Mother of All Operating Systems. One of our early topics is email on UNIX, in which I try to impart to the class just how transformative email was back in the day. For early Internet [...]
continue reading.....
Posted in November 28th, 2011
Microsoft’s implementation of unordered_map in Visual Studio 10 has performance issues so severe it may be unusable in your projects.
continue reading.....
Posted in November 8th, 2011
In this updated look at LZW, I will first give a description of how LZW works, then describe the core C++ code that I use to implement the algorithm. I’ll then walk you through the use of the algorithm with a few varieties of I/O. Finally, I’ll show you some benchmarks and go over the history of this well-known compression algorithm.
continue reading.....
Posted in October 25th, 2011
In a previous post I showed you how we use DNS Service Discovery in a product I work on for Cisco Systems. That project uses the Avahi browser, which does not have a Windows port. In this article, I’ll show you how to perform service discovery on Windows using Apple’s Bonjour SDK for Windows.
continue reading.....
Posted in September 30th, 2011
For most of this year I’ve been working on a new product called Cisco OnPlus, a network management service for small business. In order to do its job effectively, OnPlus needs to know what devices are present on the network, and one of the key tools we use to accomplish this is DNS Service Discovery. [...]
continue reading.....
Posted in September 3rd, 2011
The container classes included in the C++ standard library serve as good illustrations of both the strengths and the weaknesses of the language. The strengths are obvious: efficient, type-safe containers with performance guarantees suitable for a huge variety of applications. And the weaknesses? Compiler error messages that redefine the term useless, and documentation that makes [...]
continue reading.....
Posted in August 15th, 2011
One of the great things about C, and even more so for C++, is its strong type checking mechanisms. In general a lot of bugs are caught at compile time, and experienced programmers are able to recognize and fix these types of errors quickly. Unfortunately, there are plenty of places in any C program where [...]
continue reading.....
Posted in July 31st, 2011
In my last post I showed a particularly easy way to to set up an SMTP server so postfix could send mail from your Linux system. In this post I’m going to add a few tips that might help you get through some rough spots in the whole process.
continue reading.....