The creation of machine-readable databases and computer-based services has always been predicated on the availability of appropriate hardware and software. During the first generation (roughly 1949 to the late 1950s), very little happened because the machines were slow, had relatively little storage capacity, and were extremely expensive. In addition, most programming was done at the machine level a tedious process. Second generation computers (from the late 1950s through the early 1960s) used transistors instead of vacuum tubes, which meant they were faster, more reliable, held more data, and could be afforded by institutions smaller than the federal government. To facilitate programming, a number of higher-level languages were ...