🤖 Building a History of AI Timeline

Create an educational timeline showing key milestones in artificial intelligence history.

🆕 Modern DSL (v2): SketchDSL v2 supports layout containers (HStack, VStack, Grid), relative positioning (position: { below, rightOf, inside }), variables ($varName), and named styles. The hand-computed x/y values in the steps below still work, but the same diagram can be expressed more concisely. See the v2 power features reference, and the modernized version at the bottom of this tutorial.

What You'll Build

Educational timelines help visualize historical progress. You'll create an AI history timeline with:

History of AI Timeline Preview
The final AI history timeline you'll create

Key AI Milestones

Year Milestone Color
1950 Turing Test proposed Blue (foundations)
1956 Dartmouth Conference Blue (foundations)
1997 Deep Blue beats Kasparov Green (chess)
2012 AlexNet / Deep Learning Purple (vision)
2022 ChatGPT Launch Pink (LLMs)

Step 1: Create Timeline Milestones

1

Add Milestone Cards

{
  "id": "milestone-1950",
  "type": "rectangle",
  "x": 100, "y": 150, "w": 180, "h": 100,
  "borderRadius": 12,
  "options": { "stroke": "blue.500", "fill": "blue.50", "fillStyle": "solid" }
},
{
  "id": "milestone-1950-year",
  "type": "text",
  "x": 100, "y": 165, "w": 180, "h": 20,
  "text": "1950",
  "fontSize": 14,
  "fontWeight": "bold",
  "align": "center",
  "options": { "stroke": "blue.600" }
},
{
  "id": "milestone-1950-title",
  "type": "text",
  "x": 100, "y": 195, "w": 180, "h": 40,
  "text": "🧠 Turing Test\\nProposed",
  "fontSize": 13,
  "align": "center",
  "options": { "stroke": "slate.700" }
}

Step 2: Connect with Timeline Spine

2

Add Horizontal Timeline

{
  "id": "timeline",
  "type": "line",
  "x": 50, "y": 300, "w": 1100, "h": 0,
  "options": { "stroke": "slate.400", "strokeWidth": 3 }
}
// Add vertical connector lines from each card to the timeline

Design Tips for Educational Timelines

v2 Modernized Version

Vertical AI history timeline: 5 era section headers stacked top-to-bottom, each followed by 2 milestone rows. Each row is an HStack of a year circle and a content card. Era headers and card borders share era colours via named styles with extends. Connector lines use expressions so the year circle anchor stays in sync with its card.

{
  "version": "2.0",
  "canvas": { "width": 1100, "height": 1920, "background": "cream", "padding": 0 },
  "theme": { "roughness": 1.3, "bowing": 1.0, "fillStyle": "hachure", "fontFamily": "Comic Sans MS" },

  "vars": { "yearW": 90, "cardW": 820, "cardH": 110 },

  "styles": {
    "era":   { "strokeWidth": 0, "fillStyle": "solid", "stroke": "transparent" },
    "era-1": { "extends": "era", "fill": "blue.200" },
    "era-2": { "extends": "era", "fill": "slate.300" },
    "era-3": { "extends": "era", "fill": "green.200" },
    "era-4": { "extends": "era", "fill": "purple.200" },
    "era-5": { "extends": "era", "fill": "pink.200" },
    "year":  { "fill": "white", "fillStyle": "solid", "strokeWidth": 3 },
    "yr-1":  { "extends": "year", "stroke": "blue.700" },
    "yr-2":  { "extends": "year", "stroke": "slate.700" },
    "yr-3":  { "extends": "year", "stroke": "green.700" },
    "yr-4":  { "extends": "year", "stroke": "purple.700" },
    "yr-5":  { "extends": "year", "stroke": "pink.700" },
    "card":  { "fill": "white", "fillStyle": "solid", "strokeWidth": 2 },
    "cd-1":  { "extends": "card", "stroke": "blue.700" },
    "cd-2":  { "extends": "card", "stroke": "slate.700" },
    "cd-3":  { "extends": "card", "stroke": "green.700" },
    "cd-4":  { "extends": "card", "stroke": "purple.700" },
    "cd-5":  { "extends": "card", "stroke": "pink.700" },
    "edge":  { "stroke": "slate.500", "strokeWidth": 2, "fill": "transparent" }
  },

  "elements": [
    { "id": "title", "type": "text", "x": 0, "y": 30, "w": 1100, "h": 38, "text": "70 Years of Artificial Intelligence", "fontSize": 28, "fontWeight": "bold", "align": "center" },
    { "id": "sub",   "type": "text", "x": 0, "y": 72, "w": 1100, "h": 22, "text": "Five eras · ten breakthroughs · the people behind each one", "fontSize": 14, "align": "center" },

    { "id": "h1",   "type": "rectangle", "style": "era-1", "x": 60, "y": 130, "w": 980, "h": 50, "borderRadius": 10 },
    { "id": "h1-t", "type": "text", "position": { "inside": "#h1", "align": "center" }, "w": 980, "h": 26, "text": "Symbolic AI · 1950 – 1970", "fontSize": 18, "fontWeight": "bold", "align": "center" },

    { "type": "HStack", "x": 80, "y": 210, "gap": 20, "align": "center", "children": [
      { "id": "y1", "type": "ellipse",   "style": "yr-1", "w": "$yearW", "h": "$yearW" },
      { "id": "c1", "type": "rectangle", "style": "cd-1", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y1-t", "type": "text", "position": { "inside": "#y1", "align": "center" }, "w": 90, "h": 24, "text": "1950", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c1-h", "type": "text", "position": { "inside": "#c1", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Turing Test proposed", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c1-b", "type": "text", "position": { "inside": "#c1", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "Alan Turing · Computing Machinery and Intelligence · \"Can machines think?\"", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln1", "type": "line", "style": "edge", "x": "=y1.right", "y": "=y1.centerY", "w": "=c1.x - y1.right", "h": 0 },

    { "type": "HStack", "x": 80, "y": 340, "gap": 20, "align": "center", "children": [
      { "id": "y2", "type": "ellipse",   "style": "yr-1", "w": "$yearW", "h": "$yearW" },
      { "id": "c2", "type": "rectangle", "style": "cd-1", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y2-t", "type": "text", "position": { "inside": "#y2", "align": "center" }, "w": 90, "h": 24, "text": "1956", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c2-h", "type": "text", "position": { "inside": "#c2", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Dartmouth Workshop · the field of AI is founded", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c2-b", "type": "text", "position": { "inside": "#c2", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "McCarthy, Minsky, Shannon, Rochester · the term \"artificial intelligence\" is coined", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln2", "type": "line", "style": "edge", "x": "=y2.right", "y": "=y2.centerY", "w": "=c2.x - y2.right", "h": 0 },

    { "id": "h2",   "type": "rectangle", "style": "era-2", "x": 60, "y": 480, "w": 980, "h": 50, "borderRadius": 10 },
    { "id": "h2-t", "type": "text", "position": { "inside": "#h2", "align": "center" }, "w": 980, "h": 26, "text": "AI Winter · 1970 – 1995", "fontSize": 18, "fontWeight": "bold", "align": "center" },

    { "type": "HStack", "x": 80, "y": 560, "gap": 20, "align": "center", "children": [
      { "id": "y3", "type": "ellipse",   "style": "yr-2", "w": "$yearW", "h": "$yearW" },
      { "id": "c3", "type": "rectangle", "style": "cd-2", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y3-t", "type": "text", "position": { "inside": "#y3", "align": "center" }, "w": 90, "h": 24, "text": "1973", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c3-h", "type": "text", "position": { "inside": "#c3", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Lighthill Report · funding cut, AI winter begins", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c3-b", "type": "text", "position": { "inside": "#c3", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "James Lighthill · UK Science Research Council · symbolic AI fails to deliver promised general intelligence", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln3", "type": "line", "style": "edge", "x": "=y3.right", "y": "=y3.centerY", "w": "=c3.x - y3.right", "h": 0 },

    { "type": "HStack", "x": 80, "y": 690, "gap": 20, "align": "center", "children": [
      { "id": "y4", "type": "ellipse",   "style": "yr-2", "w": "$yearW", "h": "$yearW" },
      { "id": "c4", "type": "rectangle", "style": "cd-2", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y4-t", "type": "text", "position": { "inside": "#y4", "align": "center" }, "w": 90, "h": 24, "text": "1986", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c4-h", "type": "text", "position": { "inside": "#c4", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Backpropagation popularized", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c4-b", "type": "text", "position": { "inside": "#c4", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "Rumelhart, Hinton, Williams · training multi-layer networks becomes practical, but compute and data still limit them", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln4", "type": "line", "style": "edge", "x": "=y4.right", "y": "=y4.centerY", "w": "=c4.x - y4.right", "h": 0 },

    { "id": "h3",   "type": "rectangle", "style": "era-3", "x": 60, "y": 830, "w": 980, "h": 50, "borderRadius": 10 },
    { "id": "h3-t", "type": "text", "position": { "inside": "#h3", "align": "center" }, "w": 980, "h": 26, "text": "Statistical ML · 1995 – 2010", "fontSize": 18, "fontWeight": "bold", "align": "center" },

    { "type": "HStack", "x": 80, "y": 910, "gap": 20, "align": "center", "children": [
      { "id": "y5", "type": "ellipse",   "style": "yr-3", "w": "$yearW", "h": "$yearW" },
      { "id": "c5", "type": "rectangle", "style": "cd-3", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y5-t", "type": "text", "position": { "inside": "#y5", "align": "center" }, "w": 90, "h": 24, "text": "1997", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c5-h", "type": "text", "position": { "inside": "#c5", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Deep Blue defeats Kasparov", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c5-b", "type": "text", "position": { "inside": "#c5", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "IBM · brute-force search of 200 million positions per second beats the reigning world chess champion 3.5–2.5", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln5", "type": "line", "style": "edge", "x": "=y5.right", "y": "=y5.centerY", "w": "=c5.x - y5.right", "h": 0 },

    { "type": "HStack", "x": 80, "y": 1040, "gap": 20, "align": "center", "children": [
      { "id": "y6", "type": "ellipse",   "style": "yr-3", "w": "$yearW", "h": "$yearW" },
      { "id": "c6", "type": "rectangle", "style": "cd-3", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y6-t", "type": "text", "position": { "inside": "#y6", "align": "center" }, "w": 90, "h": 24, "text": "2006", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c6-h", "type": "text", "position": { "inside": "#c6", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Deep belief networks", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c6-b", "type": "text", "position": { "inside": "#c6", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "Hinton, Salakhutdinov · greedy layer-wise pretraining reignites interest in deep neural networks", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln6", "type": "line", "style": "edge", "x": "=y6.right", "y": "=y6.centerY", "w": "=c6.x - y6.right", "h": 0 },

    { "id": "h4",   "type": "rectangle", "style": "era-4", "x": 60, "y": 1180, "w": 980, "h": 50, "borderRadius": 10 },
    { "id": "h4-t", "type": "text", "position": { "inside": "#h4", "align": "center" }, "w": 980, "h": 26, "text": "Deep Learning · 2010 – 2020", "fontSize": 18, "fontWeight": "bold", "align": "center" },

    { "type": "HStack", "x": 80, "y": 1260, "gap": 20, "align": "center", "children": [
      { "id": "y7", "type": "ellipse",   "style": "yr-4", "w": "$yearW", "h": "$yearW" },
      { "id": "c7", "type": "rectangle", "style": "cd-4", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y7-t", "type": "text", "position": { "inside": "#y7", "align": "center" }, "w": 90, "h": 24, "text": "2012", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c7-h", "type": "text", "position": { "inside": "#c7", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "AlexNet wins ImageNet", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c7-b", "type": "text", "position": { "inside": "#c7", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "Krizhevsky, Sutskever, Hinton · GPU-trained CNN crushes the field by 10 percentage points, kicking off the deep learning era", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln7", "type": "line", "style": "edge", "x": "=y7.right", "y": "=y7.centerY", "w": "=c7.x - y7.right", "h": 0 },

    { "type": "HStack", "x": 80, "y": 1390, "gap": 20, "align": "center", "children": [
      { "id": "y8", "type": "ellipse",   "style": "yr-4", "w": "$yearW", "h": "$yearW" },
      { "id": "c8", "type": "rectangle", "style": "cd-4", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y8-t", "type": "text", "position": { "inside": "#y8", "align": "center" }, "w": 90, "h": 24, "text": "2017", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c8-h", "type": "text", "position": { "inside": "#c8", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Transformers · \"Attention is all you need\"", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c8-b", "type": "text", "position": { "inside": "#c8", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "Vaswani et al. · self-attention replaces recurrence, becoming the foundation of every modern language model", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln8", "type": "line", "style": "edge", "x": "=y8.right", "y": "=y8.centerY", "w": "=c8.x - y8.right", "h": 0 },

    { "id": "h5",   "type": "rectangle", "style": "era-5", "x": 60, "y": 1530, "w": 980, "h": 50, "borderRadius": 10 },
    { "id": "h5-t", "type": "text", "position": { "inside": "#h5", "align": "center" }, "w": 980, "h": 26, "text": "Foundation Models · 2020 → present", "fontSize": 18, "fontWeight": "bold", "align": "center" },

    { "type": "HStack", "x": 80, "y": 1610, "gap": 20, "align": "center", "children": [
      { "id": "y9", "type": "ellipse",   "style": "yr-5", "w": "$yearW", "h": "$yearW" },
      { "id": "c9", "type": "rectangle", "style": "cd-5", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y9-t", "type": "text", "position": { "inside": "#y9", "align": "center" }, "w": 90, "h": 24, "text": "2022", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c9-h", "type": "text", "position": { "inside": "#c9", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "ChatGPT · LLMs reach 100M users in 60 days", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c9-b", "type": "text", "position": { "inside": "#c9", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "OpenAI · the public meets a language model that holds a conversation; mainstream AI awareness ignites overnight", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln9", "type": "line", "style": "edge", "x": "=y9.right", "y": "=y9.centerY", "w": "=c9.x - y9.right", "h": 0 },

    { "type": "HStack", "x": 80, "y": 1740, "gap": 20, "align": "center", "children": [
      { "id": "y10", "type": "ellipse",   "style": "yr-5", "w": "$yearW", "h": "$yearW" },
      { "id": "c10", "type": "rectangle", "style": "cd-5", "w": "$cardW", "h": "$cardH", "borderRadius": 12 }
    ]},
    { "id": "y10-t", "type": "text", "position": { "inside": "#y10", "align": "center" }, "w": 90, "h": 24, "text": "2024", "fontSize": 16, "fontWeight": "bold", "align": "center" },
    { "id": "c10-h", "type": "text", "position": { "inside": "#c10", "align": "top-center",    "padding": 14 }, "w": 800, "h": 28, "text": "Agentic AI · tool use, multi-step reasoning", "fontSize": 18, "fontWeight": "bold", "align": "left" },
    { "id": "c10-b", "type": "text", "position": { "inside": "#c10", "align": "bottom-center", "padding": 14 }, "w": 800, "h": 44, "text": "Claude, GPT-4o, Gemini · models that plan, use tools, edit code, and browse the web move from research to daily use", "fontSize": 13, "align": "left", "fontStyle": "italic" },
    { "id": "ln10", "type": "line", "style": "edge", "x": "=y10.right", "y": "=y10.centerY", "w": "=c10.x - y10.right", "h": 0 },

    { "id": "footer", "type": "text", "x": 0, "y": 1870, "w": 1100, "h": 22, "text": "Reading list: Russell & Norvig · Sutton's Bitter Lesson · Karpathy lectures · Hinton interviews", "fontSize": 12, "align": "center" }
  ]
}

Showcase: vertical reading order from earliest to latest; 5 colored era headers spanning their date ranges; each milestone is an HStack of a year ellipse + content card; the year text is centered using the new own-size-aware position: { inside, align: center }; connector lines compute their length via =card.x - year.right. 5 era × 2 milestones × ~8 elements = ~95 elements, all driven by 5 paired (year, card) styles.

🤖 Create Your AI Timeline

Document the history of any technology or field.

Open Privacy Sketch

Next Steps