Skip to content
Hafizullah Mahmudi Data Systems & Business Intelligence Developer
Dashboard PowerBI Report

Time Capsule • 1999

Power BI · Data storytelling · Year in review

1999:
A Time Capsule

An eight-page year-in-review that reads like a magazine and behaves like a Power BI report—assembled from public archives, set in a fixed design system, and told one chapter at a time.

01 · Overview

What it is

Eight report pages covering one year: Cover, Headlines, Soundtrack, Screen, Tech, Numbers, Rewind, and Where You Were. Each chapter carries one chart and the editorial copy that explains it, styled after print year-in-review issues rather than a conventional dashboard.

The data comes from Wikipedia, Billboard's year-end Hot 100, Box Office Mojo, the OMDb API, eight Federal Reserve series, and a Spotify audio-features dataset. Python scripts handle acquisition and cleaning; Power BI handles the model, visuals, and layout. The judgment—which events matter, which songs stand in for a hundred, and which chart shape makes the point—is documented rather than implied.

02 · Scale

By the numbers

8Pages: one cover and seven editorial chapters
217Headline events weighted 2–5 for editorial significance
100Billboard Hot 100 songs matched to Spotify audio features
84Films: the top 80 plus four restored through OMDb
30Hand-curated technology milestones across seven categories
7,118Economic observations across eight FRED series, 1995–2005
1,847Lines across seven Python acquisition and processing scripts
2817 DAX measures and 11 Vega-Lite specifications
03 · Report

The pages

Cover page of the 1999 year-in-review report
Cover Four numerals at 640pt and a chapter list. The masthead uses mid-dot separators because letter-spacing alone closed the word gaps and rendered “ATIMECAPSULE.”
Headlines calendar heatmap
Headlines A calendar heatmap where color carries editorial significance and the adjacent bars carry raw count, so a busy month and a consequential one never collapse into the same mark. It includes 217 events merged from the 1999 year article and 366 day-of-year pages.
Soundtrack page with song radar chart
Soundtrack Billboard's year-end Hot 100 fuzzy-joined to Spotify audio features, with 100 of 100 songs matched. Britney Spears, Jay-Z, and Jewel are compared on a six-feature radar because their shapes barely overlap.
Screen page comparing film ratings and domestic gross
Screen Fifty films plotted by IMDb rating against domestic gross, with quadrants named rather than numbered: Forgotten, Held Up, Overpaid, and Underseen. A strip plot places each director's 1999 inside a decade of their work.
Technology milestones timeline
Tech Thirty milestones by category, sized by significance. Napster's June dot is one of the smallest marks on the page; the curve beside it is what the dot turned into.
Economic indicators across a decade
Numbers Four Federal Reserve series drawn across a decade—five years on either side of 1999—with the issue year picked out in red. The argument is that the indicators never agreed on direction.
Rewind editorial page
Rewind The chapter for what does not fit a chart: the Furby's 14 million units, Bezos as Person of the Year, and an In Memoriam column. No visual, but the same grid and editorial voice.
Where You Were personalized age page
Where You Were A what-if age parameter drives DAX that rewrites the page's copy for the reader's age in 1999: the same evidence, presented from a different vantage point.
04 · Method

Judgment calls

NASDAQ substituted for the S&P 500

FRED's SP500 series only reaches back to 2013, so a 1990s window returns an empty chart rather than an error. The NASDAQ Composite is also the sharper instrument for a dot-com issue: up about 86% in 1999 and peaking ten weeks later. The substitution is recorded in the project brief so every measure names the NASDAQ rather than implying the S&P.

Films the calendar year hid

Box Office Mojo groups films by calendar-year gross, dropping Magnolia, The Hurricane, and The Cider House Rules—December limited releases that earned in 2000—out of 1999 entirely. A second OMDb pass restores them. The four additions that survived deduplication carry Source = "OMDb-supplemental" and Rank = 999, so an editorial addition cannot pass as a chart position.

Significance over count

Counting events makes a crowded news week and a consequential one look identical. Each headline therefore carries a weight from 2 to 5. Color encodes weight, bars encode count, and the caption states which is which.

A scraper that had to change shape

Wikipedia's twelve month pages for 1999 all soft-redirect to the year article, so the intended scrape returned the same page twelve times. The fix was to fetch the year article once for 88 anchor events, walk all 366 day-of-year pages for the remaining 135, and merge at 0.85 title similarity.

05 · Data

Pipeline

Script Source Output Rows
01_scrape_headlines.py Wikipedia — 1999 year article Year-overview events 88
01b_scrape_per_day.py Wikipedia — 366 day-of-year articles Per-day events 135
01c_merge_headlines.py Both headline sources headlines.csv 217
02_billboard_and_spotify.py Billboard Hot 100 · Spotify features music.csv 100
03_movies.py Box Office Mojo · OMDb API movies.csv 84
04_fred.py FRED — eight series economy.csv 7,118
05_song_dna.py music.csv song_dna.csv 18
Hand-curated Wikipedia references, per event tech.csv · directors_decade.csv · napster_milestones.csv 30 · 38 · 8

Row counts reflect the tables in processed/. Source files remain immutable in raw/, API keys stay in .env, and Power BI imports the CSVs without performing any scraping.

06 · Stack

Built with

  • Python 3.12 — pandas, requests, BeautifulSoup, rapidfuzz, and fredapi
  • Power BI Desktop — theme.json, SVG page backgrounds, bookmarks, and a what-if parameter
  • Deneb (Vega-Lite) — calendar heatmap, radar chart, timeline, and sparklines
  • Design system — paper #F4EFE6, ink #1A1A1A, oxide #B8341B, gold #D4A437; Cambria, Segoe UI, and Consolas
07 · Credits

Sources

  • Wikipedia — year, day-of-year, and Billboard year-end articles (CC BY-SA 4.0)
  • Box Office Mojo (IMDb) — 1999 domestic box office
  • OMDb API — per-title enrichment
  • Federal Reserve Economic Data (FRED), Federal Reserve Bank of St. Louis
  • Audio features courtesy of Spotify, via Kaggle

1999: A Time Capsule · Power BI editorial data story