The Whys and Wherefores of Version Control Systems

This may be considered heresy by some, but for the first twenty years of my programming career, I never used a version control system. In fact, I barely even knew what one was.

I’d heard of CVS, and I knew that there was something called Visual SourceSafe in Visual Studio, but I never saw the need for them. They seemed to be nothing more than an odd way to back up different versions of source code files, and I handled that with archive files and regular system backups. Later I learned that they could be used to coordinate changes by multiple programmers, but that made little difference to me, since I was almost always the only developer on my projects.

But in the past few years, I’ve come to realize that version control systems are useful, even to me, in several ways:
Continue reading ‘The Whys and Wherefores of Version Control Systems’ »

“Immortal Dr Who jellyfish poised to rule Earth”

Sorry, Mr. Lewis Page, but these guys are almost certainly only a temporary problem. The important point is in this paragraph:

[…] And that’s not all. The reborn, undying gelatinous blob-cyst monsters can also “spawn” hundreds of genetically identical clones of themselves, each of which is also immortal and able to replicate itself at will using its own former guts, muscles or whatnot, transformed for the nonce into a thicket of supplementary genitalia. […]

“Genetically identical clones.” Biological history is full of species that develop asexual reproduction of one sort or another. It’s fairly easy to do. But though they might be successful for a time, they’re probably on “the fast track to oblivion:”

[…] But if they are, they may be short-lived. The evolution of traditional, female-only asexuality typically leads to a swift extinction. We know this because although such species frequently evolve, they don’t stay around for long. If you look at the tree of life, female-only asexual groups are all out on the twigs: there are no great asexual lineages equivalent to fish or birds. Instead, the asexual groups are a few species of snail here, a dandelion there. […]

The reason is fairly obvious, when you think about it. They’re all genetically identical. That means no individual differences in anything, including their immune systems. Their only source of genetic variation is random mutation, which is notoriously slow. A single successful virus could wipe them out, since they’d have no way to adapt to counter it and no portion of the population could be less vulnerable to it.

The bottom line: there’s little to worry about here, in the long run.

My First Open-Source Release!

For the past couple weeks I’ve been working on a side-project, a Markdown translator in C++. I finally finished the first release-quality version of it, so I’ve applied to release it on SourceForge, under the MIT license. Once it’s approved (and I don’t foresee any problems with that), the main page will be here.

Here’s a portion of the README file, to whet your appetite:

Cpp-Markdown is a freely-available Markdown text-to-HTML translator, written in C++, intended for integration into C++ programs rather than for use in web applications.

It differs from other Markdown translators in a few ways:

  • It’s written in C++, making full use of C++ constructs such as classes, inheritance, I/O streams, and namespaces. This means that you get the full speed advantages of a compiled language, as well as easier integration into C++ programs.

  • It’s a more accurate implementation of the Markdown specification than most of the currently-available ones. Its first release passes all 23 tests in the Markdown test suite, and 12 of the 17 tests in the PHP Markdown test suite, of MDTest 1.1.

  • It is fully os-independent. It understands files that use DOS/Windows CR/NL line endings, Mac OSX CR line endings, or UNIX/Linux NL line endings. It is also designed to work with UTF-8 files, and can be extended to work with Unicode (UTF-16/UCS-2 or UTF-32/UCS-4) files with minimal effort.

  • It is not a port of another existing implementation, but was written from scratch. That means you can use it in your own programs without worrying about any license other than Cpp-Markdown’s own very permissive one.

This README file is written in Markdown format, and an HTML version (translated by the stand-alone Cpp-Markdown program) is provided as well, so you can see exactly what it does.


Why?

I originally wrote it because I wanted to use the Markdown format in one of my own C++ projects, and there was no existing C or C++ implementation that I liked. I’m releasing it as open-source because Markdown is an excellent and well-thought-out format, and I’d like to see it available in more programs.

I don’t expect that it will get all that much use, but I plan to continue supporting it for anyone who wants to use it.