Pixie is at KubeCon EU (May 16-20, 2022). Learn more🚀
Pixie is at KubeCon EU!
pixie logo
Ctrl/Cmd + K
DocsGET STARTED
Ctrl/Cmd + K

Tables are Hard, Part 1: HistoryPermalink

Nick Lanam
November 30, 20212 minutes read
Lead SWE @ New Relic, Founding Engineer @ Pixie Labs

It's just a grid of data, right? Tables show up everywhere in software, and you probably don't think about them much. Yet modern software packs a surprising amount of functionality into them, accumulated over the past half a century.

In this post, we'll take a high altitude pass over that history. In later installments, we'll dive into how today's software handles the complex requirements of modern tables.

This article is part of a series:

Modern ExpectationsPermalink

In a data-heavy web interface, a typical table might be expected to do all of this:

  • Fundamental: Lay out complex data in a grid with consistent dimensions
  • Finding data: Sort, filter, and search that data
  • Interactive data: A cell may contain interactive components such as delete buttons, edit controls, etc.
  • Customized: Users might resize columns, reorder them, or hide them selectively.
  • Accessible: It's a web interface, after all. Mouse, keyboard, touch screens, screen readers, colorblind users, mobile and desktop dimensions, and more to accommodate.
  • Streaming: When the backing data set is huge, it might not be delivered to the browser all at once. Sorting, filtering, searching, and scrolling all must coordinate with the server providing the data to behave as if the full set was there all along. This may even involve virtual scrolling to maintain the illusion, rather than pagination that users can see.
  • Performance: Whether on an old smartphone or a massive display with a high refresh rate, the table needs to respond quickly. Nobody likes scroll jank.

Each of these features often belies its own pile of complexity. But how did we get this set of features?

The First Spreadsheet SoftwarePermalink

This journey begins in 1978 with the introduction of VisiCalc, the first spreadsheet software1. Stackbit recently published a fantastic introduction, but to summarize: it was the first software to combine mouse support and editing of individual cell formulae on personal computers.

This turned out to be a Pretty Big Deal.

I had the privilege of chatting with Bob Frankston this week, one of VisiCalc's creators. He has contributed a great deal since the 1970's, but I wanted to focus on what existed before this project that might have inspired it. Here's what he had to say (slightly edited for typos and links):

Spreadsheets and accounting existed for hundreds of years. If you have someone used to working with screens (word processing) and back-of-the-envelope calculations for a class, you can see how it happens. Did you see Dan's TEDx talk about this?

I did help program something we called "First Financial Language"2 at White-Weld in 1966. You gave it rows and columns, and it intersected the values. It was designed by Butler Lampson. The major departure for VisiCalc was the idea of editing individual cells and copying the formulas - basically getting rid of the fancy CS concepts.

The key point is that personal computers were new and were toys so there weren't other implementations. Even when people copied [VisiCalc], they missed key design points. Why would a professional do a business app on a toy computer?

In short, we have Dan and Bob to thank for catalyzing the adoption of personal computers.

Decades of FeaturesPermalink

Spreadsheets have had decades to evolve since VisiCalc's first implementation. Below is an oversimplified selection of some key developments in this space.

YearProductSignificant Contributions
1979
(official)
VisiCalcFirst spreadsheet software1
Mouse support
Scrolling
Formulas (similar to today's)
Automatic formula propagation
Ported many times over the years, including to Apple II
1980SuperCalcFirst VisiCalc competitor; ported to MS-DOS in 1982
Solved bugs like circular refs that VisiCalc still had
1982Microsoft Multiplan
(Excel's predecessor)
First to release on many systems, but not MS-DOS
1983Lotus 1-2-3Took advantage of IBM-PC hardware for much larger data
Graphical charts
Market dominant until Excel outstripped it in the 1990s
1985Excel 1.0Largely similar to Lotus 1-2-3, without charts
1987Excel 2.0First spreadsheet that ran on Windows
1990Excel 3.0Toolbars, drawing, outlining, 3D charts...
~1994HTML <table>The Mosaic browser existed since 1990, but tables weren't part of the HTML specification until 1994.
1996JavaScriptSome say it was the fourth horseman of the apocalypse.
It does okay these days powering web apps though.
Around this time, using <table> for layout became popular.
1999
(spec)
AJAXAllowed streaming data instead of reloading the page.
Pagination eventually gave way for virtual scrolling, etc.
2006Google SheetsCloud save; collaborative editing; ran in browsers
LaterBootstrap, flexbox, countless JS grid and table librariesMostly reinventing the wheel, but now it's web scale.

As you can see, modern tables support a variety of features. In the next installment, we'll dive into the technical end: how tables on the web handle these requirements.

Questions? Suggestions? Find us on Slack, GitHub, or Twitter at @pixie_run.

Footnotes


  1. Dan Bricklin, one of VisiCalc's creators, has written about this status. It depends on how you split hairs.
  2. Bob talks about his time at White-Weld, among other things, in his 2017 piece The Stories of Software.

Related posts

Terms of Service|Privacy Policy

We are a Cloud Native Computing Foundation sandbox project.

CNCF logo

Pixie was originally created and contributed by New Relic, Inc.

Copyright © 2018 - The Pixie Authors. All Rights Reserved. | Content distributed under CC BY 4.0.
The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage Page.
Pixie was originally created and contributed by New Relic, Inc.

This site uses cookies to provide you with a better user experience. By using Pixie, you consent to our use of cookies.