<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  
  <title>casruta</title>
  <subtitle>Essays, op-eds, and data-driven social commentary by Kacper Ruta.</subtitle>
  <link href="https://casruta.github.io/feed.xml" rel="self" />
  <link href="https://casruta.github.io/" />
  <updated>2026-03-06T00:00:00Z</updated>
  <id>https://casruta.github.io/</id>
  <author>
    <name>Kacper Ruta</name>
  </author>
  <entry>
    <title>Alberta&#39;s Spending Outpaced Growth — Until You Adjust for Inflation</title>
    <link href="https://casruta.github.io/posts/spending-outpaced-growth/" />
    <updated>2026-03-06T00:00:00Z</updated>
    <id>https://casruta.github.io/posts/spending-outpaced-growth/</id>
    <content type="html">&lt;div class=&quot;abstract&quot;&gt;
&lt;p&gt;Between 2012 and 2025, Alberta added over 1.1 million residents — a 30.5% population increase that brought the province to the doorstep of five million people. Over the same period, provincial education spending rose 83% in nominal terms, nearly three times faster than the population it served. That headline number tells a compelling story of investment keeping ahead of growth. But after adjusting for Alberta&#39;s 35.4% cumulative CPI inflation, the picture changes dramatically: real per-capita education spending rose just 3.5% over thirteen years. K-12 per-capita spending actually declined by 9.5% in real terms. Post-secondary was the sole sector with genuine per-person gains. This analysis traces both the nominal and inflation-adjusted trajectories using Statistics Canada population and CPI data alongside Alberta Budget Fiscal Plans.&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;Alberta’s Population Surge&lt;/h2&gt;
&lt;p&gt;Alberta has always attracted people. Its economy — built on hydrocarbons but increasingly diversified into technology, agriculture, and logistics — has functioned as a continental magnet for decades. But what happened between 2012 and 2025 was not ordinary growth. It was a demographic transformation.&lt;/p&gt;
&lt;p&gt;Alberta’s population rose from 3,822,425 in Q1 2012 to 4,988,181 in Q1 2025 — an increase of 1,165,756 people, or roughly 30.5% over thirteen years. To put that in perspective, Alberta added roughly the equivalent of Winnipeg’s entire population. The province is now approaching five million residents for the first time in its history.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Population, Q1 2012&lt;/td&gt;
&lt;td&gt;3,822,425&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Population, Q1 2025&lt;/td&gt;
&lt;td&gt;4,988,181&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Absolute increase&lt;/td&gt;
&lt;td&gt;+1,165,756&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Percentage increase&lt;/td&gt;
&lt;td&gt;+30.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average quarterly growth&lt;/td&gt;
&lt;td&gt;0.514%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Peak quarterly growth&lt;/td&gt;
&lt;td&gt;1.356% (Q4 2023)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lowest quarterly growth&lt;/td&gt;
&lt;td&gt;0.046% (Q3 2020)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;National population share, 1951&lt;/td&gt;
&lt;td&gt;6.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;National population share, 2025&lt;/td&gt;
&lt;td&gt;12.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That growth was anything but uniform. Three distinct phases emerge from the quarterly data.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/alberta_population_growth.png&quot; alt=&quot;Alberta Population Growth (2012–2025)&quot;&gt;&lt;/p&gt;
&lt;p&gt;From 2012 to 2019, Alberta tracked a steady long-run average of about 0.51% per quarter — consistent, moderate growth tied loosely to commodity price cycles and a relatively strong labour market. Then came the pandemic. Q3 2020 recorded a quarterly growth rate of just 0.046%, essentially zero net population change — a near-complete stall driven by border closures and interprovincial migration freezing up.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;What followed was extraordinary. Beginning in late 2022, Alberta entered the steepest population surge in its modern history. Multiple quarters exceeded 1.0% growth — more than double the long-run average — and Q4 2023 peaked at 1.356%, one of the strongest growth quarters on record for any Canadian province. In absolute terms, the province added roughly 150,000 to 180,000 people in successive years between 2022 and 2024, more than triple the annual gains of the moderate 2016–2019 period.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/quarterly_growth_rate.png&quot; alt=&quot;Quarterly Population Growth Rate&quot;&gt;&lt;/p&gt;
&lt;p&gt;The contrast between the phases matters because government budgets are set annually, and education funding formulas are typically calibrated to historical enrolment trends. A system designed for 0.5% quarterly growth does not simply absorb 1.3% quarterly growth by spending proportionally more. There are lags — in school construction, teacher hiring, curriculum development — that mean the fiscal response always trails the demographic reality.&lt;/p&gt;
&lt;p&gt;This was not a short-lived blip. The post-pandemic surge compressed what might have been a decade of normal growth into roughly two years, driven by a combination of strong international immigration and interprovincial migration from higher-cost provinces.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fn2&quot; id=&quot;fnref2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/yoy_growth_analysis.png&quot; alt=&quot;Year-over-Year Growth Analysis&quot;&gt;&lt;/p&gt;
&lt;p&gt;Zooming out to the national level, Alberta’s demographic weight within Canada has been rising for decades. The province accounted for 6.7% of Canada’s total population in 1951. By 2025, that share had climbed to 12.1% — nearly doubling the province’s proportional representation within Confederation over 74 years. Today, roughly one in eight Canadians lives in Alberta.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/alberta_population_share.png&quot; alt=&quot;Alberta&#39;s Share of Canada&#39;s Total Population&quot;&gt;&lt;/p&gt;
&lt;p&gt;The question this raises is straightforward: when a province adds over a million people in thirteen years, does the public education system scale to match?&lt;/p&gt;
&lt;h2&gt;Where the Money Went&lt;/h2&gt;
&lt;p&gt;Five budget years were examined: 2012-13, 2013-14, 2023-24, 2024-25, and 2025-26. All figures are nominal operating expenses in millions of Canadian dollars, drawn from Alberta Budget Fiscal Plans.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fn3&quot; id=&quot;fnref3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Budget Year&lt;/th&gt;
&lt;th&gt;K-12 ($M)&lt;/th&gt;
&lt;th&gt;Post-Secondary ($M)&lt;/th&gt;
&lt;th&gt;Total ($M)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2012-13&lt;/td&gt;
&lt;td&gt;6,179&lt;/td&gt;
&lt;td&gt;2,856&lt;/td&gt;
&lt;td&gt;9,035&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2013-14&lt;/td&gt;
&lt;td&gt;6,210&lt;/td&gt;
&lt;td&gt;2,682&lt;/td&gt;
&lt;td&gt;8,892&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023-24&lt;/td&gt;
&lt;td&gt;8,836&lt;/td&gt;
&lt;td&gt;5,604&lt;/td&gt;
&lt;td&gt;14,440&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024-25&lt;/td&gt;
&lt;td&gt;9,252&lt;/td&gt;
&lt;td&gt;6,305&lt;/td&gt;
&lt;td&gt;15,557&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025-26&lt;/td&gt;
&lt;td&gt;9,883&lt;/td&gt;
&lt;td&gt;6,635&lt;/td&gt;
&lt;td&gt;16,518&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;From 2012-13 to 2025-26, K-12 operating expense rose 59.9%, post-secondary rose 132.3%, and total education spending rose 82.8%.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/infographic_total_stacked.png&quot; alt=&quot;Total Education Spending by Budget Year&quot;&gt;&lt;/p&gt;
&lt;p&gt;The most striking feature of the data is the step-change between the two early budgets and the 2023 budget. Total spending was essentially flat between 2012-13 and 2013-14 — hovering near $9 billion — before surging to $14.4 billion by 2023-24, a 62% jump. The dataset does not contain the intervening fiscal years (2014 through 2022), so the timing and trajectory of this increase within that decade cannot be determined from available data.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fn4&quot; id=&quot;fnref4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/infographic_k12_vs_postsec.png&quot; alt=&quot;K-12 vs Post-Secondary Operating Expenditure&quot;&gt;&lt;/p&gt;
&lt;h3&gt;The Structural Shift&lt;/h3&gt;
&lt;p&gt;The two sectors did not grow at the same pace, and the divergence is large enough to constitute a structural change in how Alberta allocates its education budget.&lt;/p&gt;
&lt;p&gt;In 2012, post-secondary spending ($2,856M) was less than half of K-12 ($6,179M). By 2025, post-secondary ($6,635M) had risen to approach two-thirds of K-12 ($9,883M). Post-secondary’s growth rate — 132.3% — was more than double K-12’s 59.9%.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/infographic_donut_composition.png&quot; alt=&quot;K-12 vs Post-Secondary Share by Budget Year&quot;&gt;&lt;/p&gt;
&lt;p&gt;In proportional terms, post-secondary represented approximately 32% of total education spending in 2012. By 2025, that share had grown to roughly 40%. This is not a uniform scale-up of both sectors. It reflects a sustained policy direction — across multiple budget cycles — of growing university and college funding faster than the school system.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/infographic_growth_2012_vs_2025.png&quot; alt=&quot;Education Spending Growth: 2012 to 2025&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/infographic_heatmap.png&quot; alt=&quot;Education Spending Heatmap&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/infographic_lollipop_growth.png&quot; alt=&quot;Spending Growth by Category&quot;&gt;&lt;/p&gt;
&lt;h2&gt;The Nominal Story&lt;/h2&gt;
&lt;p&gt;Before introducing inflation, it is worth examining what the raw numbers appear to show — because the nominal picture is what typically makes headlines.&lt;/p&gt;
&lt;p&gt;Indexing all four series to a baseline of 100 at 2012-13 makes the relative trajectories immediately visible. By 2025-26, the indexed values are:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Series&lt;/th&gt;
&lt;th&gt;Index (2012-13 = 100)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Post-Secondary Spending&lt;/td&gt;
&lt;td&gt;~232&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Education Spending&lt;/td&gt;
&lt;td&gt;~183&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K-12 Spending&lt;/td&gt;
&lt;td&gt;~160&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Population&lt;/td&gt;
&lt;td&gt;~130&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Every education spending category grew substantially faster than population in nominal terms, across every measured period.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_indexed_growth.png&quot; alt=&quot;Indexed Growth — All Metrics Normalised to 2012-13 = 100&quot;&gt;&lt;/p&gt;
&lt;p&gt;Dividing raw spending by population translates these into per-person investment amounts. Nominally, the gains look solid:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Sector&lt;/th&gt;
&lt;th&gt;2012-13&lt;/th&gt;
&lt;th&gt;2025-26&lt;/th&gt;
&lt;th&gt;Nominal Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K-12 per capita&lt;/td&gt;
&lt;td&gt;$1,617&lt;/td&gt;
&lt;td&gt;$1,981&lt;/td&gt;
&lt;td&gt;+22.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post-secondary per capita&lt;/td&gt;
&lt;td&gt;$747&lt;/td&gt;
&lt;td&gt;$1,330&lt;/td&gt;
&lt;td&gt;+78.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total per capita&lt;/td&gt;
&lt;td&gt;$2,364&lt;/td&gt;
&lt;td&gt;$3,311&lt;/td&gt;
&lt;td&gt;+40.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_per_capita.png&quot; alt=&quot;Per-Capita Education Spending (Nominal)&quot;&gt;&lt;/p&gt;
&lt;p&gt;Placing the cumulative growth rates side by side, with Alberta’s population growth (+30.5%) as the vertical reference line, the nominal message is unambiguous: spending outpaced population in every category.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Nominal Growth&lt;/th&gt;
&lt;th&gt;Multiple of Population Growth&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Population&lt;/td&gt;
&lt;td&gt;+30.5%&lt;/td&gt;
&lt;td&gt;1.0x (reference)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K-12 Spending&lt;/td&gt;
&lt;td&gt;+59.9%&lt;/td&gt;
&lt;td&gt;1.97x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Education&lt;/td&gt;
&lt;td&gt;+82.8%&lt;/td&gt;
&lt;td&gt;2.72x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post-Secondary&lt;/td&gt;
&lt;td&gt;+132.3%&lt;/td&gt;
&lt;td&gt;4.34x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_growth_rates.png&quot; alt=&quot;Education Spending vs. Population Growth (Growth Rates)&quot;&gt;&lt;/p&gt;
&lt;p&gt;If this were the full story, the conclusion would be straightforward: Alberta invested aggressively in education, well ahead of its population curve. But this is where inflation enters.&lt;/p&gt;
&lt;h2&gt;The Real Story&lt;/h2&gt;
&lt;p&gt;Alberta’s cumulative CPI inflation between 2012 and 2025 was 35.4%.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fn5&quot; id=&quot;fnref5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt; That single number reshapes the entire analysis.&lt;/p&gt;
&lt;p&gt;When we deflate all spending into constant 2012 dollars using Alberta-specific CPI data, the 82.8% nominal headline for total education spending shrinks to 35.0% in real terms. Of the apparent $7,483 million nominal increase, approximately $4,319 million — 58% — reflects price-level changes rather than real resource expansion.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_real_vs_nominal.png&quot; alt=&quot;Total Education Spending — Nominal vs. Real&quot;&gt;&lt;/p&gt;
&lt;p&gt;The nominal-to-real comparison reveals a striking pattern across all growth metrics:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Nominal Growth&lt;/th&gt;
&lt;th&gt;Real Growth&lt;/th&gt;
&lt;th&gt;Inflation Absorbed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K-12 Spending&lt;/td&gt;
&lt;td&gt;+59.9%&lt;/td&gt;
&lt;td&gt;+18.1%&lt;/td&gt;
&lt;td&gt;41.8 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post-Secondary Spending&lt;/td&gt;
&lt;td&gt;+132.3%&lt;/td&gt;
&lt;td&gt;+71.6%&lt;/td&gt;
&lt;td&gt;60.7 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Education Spending&lt;/td&gt;
&lt;td&gt;+82.8%&lt;/td&gt;
&lt;td&gt;+35.0%&lt;/td&gt;
&lt;td&gt;47.8 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alberta CPI Inflation&lt;/td&gt;
&lt;td&gt;+35.4%&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alberta Population&lt;/td&gt;
&lt;td&gt;+30.5%&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_real_vs_nominal_growth.png&quot; alt=&quot;Nominal vs. Real Growth Rates — Comprehensive Comparison&quot;&gt;&lt;/p&gt;
&lt;p&gt;K-12 real growth of 18.1% now falls &lt;em&gt;below&lt;/em&gt; population growth of 30.5%. That is the critical threshold: K-12 spending did not keep pace with the number of people it is meant to serve, once you account for inflation. The 2.7x nominal headline collapses. Total real education growth (35.0%) barely exceeds population growth — a razor-thin margin that bears no resemblance to the comfortable-looking nominal ratio.&lt;/p&gt;
&lt;h3&gt;Per-Capita in Real Terms&lt;/h3&gt;
&lt;p&gt;The most policy-relevant measure controls for both inflation and population growth simultaneously. In constant 2012 dollars:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Sector&lt;/th&gt;
&lt;th&gt;2012-13&lt;/th&gt;
&lt;th&gt;2025-26 (2012 $)&lt;/th&gt;
&lt;th&gt;Real Per-Capita Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K-12&lt;/td&gt;
&lt;td&gt;$1,617&lt;/td&gt;
&lt;td&gt;$1,463&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-9.5%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post-Secondary&lt;/td&gt;
&lt;td&gt;$747&lt;/td&gt;
&lt;td&gt;$982&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+31.5%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Education&lt;/td&gt;
&lt;td&gt;$2,364&lt;/td&gt;
&lt;td&gt;$2,446&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+3.5%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_real_per_capita.png&quot; alt=&quot;Real Per-Capita Education Spending (K-12 vs Post-Secondary)&quot;&gt;&lt;/p&gt;
&lt;p&gt;K-12 real per-capita spending declined from $1,617 to $1,463 — a drop of 9.5%. Each Albertan now has less K-12 purchasing power attributed to them in 2025-26 than in 2012-13. The nominal increase of 22.6% was an illusion created entirely by inflation.&lt;/p&gt;
&lt;p&gt;Post-secondary is the genuine success story. At +31.5% real per-capita growth, investment in colleges and universities represents a meaningful increase that survives every adjustment — inflation, population growth, and both combined.&lt;/p&gt;
&lt;p&gt;Total real per-capita spending rose by $82 per person over thirteen years — roughly the cost of a single university textbook. That is 3.5% over more than a decade, or about $6.31 per person per year in additional real investment. Effectively flat.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fn6&quot; id=&quot;fnref6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_indexed_real_growth.png&quot; alt=&quot;Indexed Real Growth — Population vs. Real Education Spending&quot;&gt;&lt;/p&gt;
&lt;p&gt;The indexed real-growth chart makes this starkly visible. Where the nominal version showed all spending lines comfortably above the population line, the inflation-adjusted version reveals that K-12 real spending (index 118) has fallen below population growth (index 130). Only post-secondary (index 172) and total education (index 135) remain above — and total education only barely.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; src=&quot;https://raw.githubusercontent.com/casruta/AB-Population-Increase-vs-Education-Spending/main/plots/integration_real_per_capita_total.png&quot; alt=&quot;Total Education Spending per Capita — Nominal vs. Real&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What It Means&lt;/h2&gt;
&lt;p&gt;The nominal headline — education spending grew 2.7 times faster than population — is technically accurate and substantively misleading. It is the kind of figure that looks commanding in a budget speech and dissolves under scrutiny. Once Alberta’s 35.4% cumulative CPI inflation is factored in, more than half of the apparent spending increase reflects rising prices rather than expanded educational capacity. The 40.1% nominal per-capita gain compresses to 3.5% in real terms: $82 more per person, spread across thirteen years.&lt;/p&gt;
&lt;p&gt;The K-12 finding is the most consequential. A 9.5% real per-capita decline means that the school system — serving the largest share of Alberta’s student-age population — has less real purchasing power per resident than it did in 2012, despite a nominal budget that nearly doubled. Teachers, classrooms, and support services operate in a world of real costs, not nominal budgets. Inflation eroded the apparent gains entirely and then some.&lt;/p&gt;
&lt;p&gt;Post-secondary stands apart. Whether measured in total real growth (+71.6%), real per-capita change (+31.5%), or budget share (32% to 40%), investment in colleges and universities represents a genuine and sustained policy commitment. How much of this reflects increased enrolment, increased cost per student, or broader institutional expansion cannot be determined from spending data alone — that requires enrolment figures not examined here.&lt;/p&gt;
&lt;p&gt;Several important caveats apply. The dataset contains only five fiscal years, with a nine-year gap between 2013-14 and 2023-24 that prevents any analysis of intermediate trends. All figures are operating expenditure only — capital spending on school construction and post-secondary infrastructure is excluded. Per-capita calculations use total provincial population rather than student enrolment, which would provide more precise per-student investment figures. And the Alberta All-Items CPI is a general consumer price index; education-specific cost inflation may differ from the general basket.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fn7&quot; id=&quot;fnref7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The questions that remain unanswered are pointed ones. What happened during the nine missing years? Did the per-capita erosion in K-12 begin early or late in that decade? How does spending per enrolled student — not per resident — compare? And what share of the province’s total budget does education now command relative to health, infrastructure, and other demands on public funds? The data examined here establishes the trajectory. Filling in the gaps would establish the full story.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Data: Statistics Canada, Table 17-10-0009-01 (population); Table 18-10-0005-01 (CPI); Alberta Budget Fiscal Plans 2012, 2013, 2023, 2024, 2025 (spending). All spending figures are nominal operating expenses in millions of CAD unless otherwise noted. Full methodology and code available on &lt;a href=&quot;https://github.com/casruta/AB-Population-Increase-vs-Education-Spending&quot;&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot;&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;COVID-19 border closures and interprovincial travel restrictions effectively froze migration — Alberta’s primary growth engine — for several quarters. Natural increase alone cannot sustain quarterly growth rates anywhere near the long-run average. &lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn2&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;The drivers of post-pandemic migration to Alberta are well-documented: relatively affordable housing compared to Ontario and British Columbia, a strong labour market tied to energy sector recovery, and no provincial sales tax. Federal immigration targets also increased substantially in 2022-2023. &lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fnref2&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn3&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Operating expense figures were extracted from Alberta Budget Fiscal Plans published by Alberta Treasury Board and Finance. For 2023-24 through 2025-26, data comes from Excel-format expense tables. For 2012-13 and 2013-14, figures were extracted from the corresponding PDF fiscal plan documents. “K-12” refers to the Ministry of Education operating expense; “Post-secondary” refers to the Ministry of Advanced Education operating expense. &lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fnref3&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn4&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Alberta Public Accounts publish audited actual expenditures annually. Adding fiscal years 2014-15 through 2022-23 would transform this from a five-point comparison into a proper time series. That work is noted as a priority for future analysis. &lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fnref4&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn5&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;CPI adjustment uses Alberta All-Items CPI annual averages (2002=100) from Statistics Canada Table 18-10-0005-01, retrieved via the Alberta Economic Dashboard API. The deflator for each fiscal year is computed as CPI(year) / CPI(2012). Alberta-specific CPI was used rather than national CPI to better reflect the province’s price environment. &lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fnref5&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn6&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;For context: 3.5% real growth over thirteen years implies a compound annual real growth rate of approximately 0.27% — roughly one-quarter of one percent per year. Any reasonable definition of “keeping pace” would require substantially more than this. &lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fnref6&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn7&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;An education-specific deflator — accounting for teacher salary growth, technology costs, and construction inflation — would provide more precise real-dollar estimates. Such an index is not readily available from Statistics Canada and would need to be constructed from component data. &lt;a href=&quot;https://casruta.github.io/posts/spending-outpaced-growth/#fnref7&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
  </entry>
  <entry>
    <title>AI, Data, and Meta</title>
    <link href="https://casruta.github.io/posts/ai-data-and-meta/" />
    <updated>2026-02-24T00:00:00Z</updated>
    <id>https://casruta.github.io/posts/ai-data-and-meta/</id>
    <content type="html">&lt;p&gt;Data
I find my data using government provincial and federal datasets which are then sifted through various LLMs to see whether the data is known to include any errors.&lt;/p&gt;
&lt;p&gt;I use the OCR tool “Marker” to convert PDFs to clean markdown to reduce my decrease the chance for the model to hallucinate, thereby converting all the PDF docs into neat markdown docs. I can then edit the individual markdown files manually, or get rid of unnecessary columns myself. The less unnecessary information the model has to work around, the cheaper the analysis.&lt;/p&gt;
&lt;p&gt;I make sure to highlight that government data is not inherently high quality and high reliability and contain things like suppressed cells revised vintages and methodology changes between collection years. here the model needs to realize that certain ministries names and terminology can be altered from 1 quarter / year / w.e to another.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://Claude.MD&quot;&gt;Claude.MD&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I use several agents for different tasks.  For example to read there is an exclusive agent that does not know how to write which limits the amount of tokens I’m being charged for the task I’m working on.&lt;/p&gt;
&lt;p&gt;As for the data segregated higher reliability and low reliability For instance math physics engineering replicated experiments work in code and government data is considered high reliability Whereas historical narratives expert predictions institutional consensus and politically charged topics are considered low reliability.&lt;/p&gt;
&lt;p&gt;In order to prevent Claude from reading the whole repo, depending on the task, I feed it the document it should focus on and review the code before I push it to Github.&lt;/p&gt;
&lt;h3&gt;Indexing &amp;amp; Tree Sitter:&lt;/h3&gt;
&lt;p&gt;Created a structured map (AST) for Claude to understand and remember the code structure from previous sessions. Instead of burning tokens re-reading the entire file, it reviews only the branch or w/e which changed – this is then implemented to work when Claude codes, as opposed to running it in real time.&lt;/p&gt;
&lt;p&gt;For data, I’ve creased a PDF Indexer, which reads the PDFs I feed it, extract all the tables and text, and stores everything locally in a SQLite Database enabling me then to query that data instantly without opening and reading through the entire PDF again.&lt;/p&gt;
&lt;p&gt;My goal is to use the MCP server to make Claude not read the entire PDF first – preserving tokens. &lt;a href=&quot;http://Claude.MD&quot;&gt;Claude.MD&lt;/a&gt; file, which I run in my main folder so that its global, is then forcing Claude to always use the indexer first, and then only read the PDF upon being prompted to do so. To avoid hallucinating data, I include a line telling Claude to always cite the table ID, page number, and document name.&lt;/p&gt;
&lt;p&gt;The PDF indexer is located here: &lt;a href=&quot;https://github.com/casruta/PDF-Indexer-&quot;&gt;https://github.com/casruta/PDF-Indexer-&lt;/a&gt;, and I am currently looking for an alternative to have Claude scrape the numerical data in the tables before reading any of the text. As of right now, it takes around 2-3 minutes to all numerical data from a 64 page Suncor quarterly performance review. This is obviously 2-5x quicker than any other manual method, but considering that we’ll be analyzing 20+ similar documents, its rather pathetic.&lt;/p&gt;
&lt;p&gt;A similar codebase indexer can be found here &lt;a href=&quot;https://github.com/casruta/Codebase-Indexer-&quot;&gt;https://github.com/casruta/Codebase-Indexer-&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Model Use&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Opus for debugging / complex problems with data &amp;amp; analysis&lt;/li&gt;
&lt;li&gt;Sonnet for data cleaning and EDA&lt;/li&gt;
&lt;li&gt;Haiku and Perplexity’s Sonnet for questions about the data from external sources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before publishing, I use Perplexity with Sonnet to poke holes in the data and suggest potential improvements. With the previously mentioned indexer, the odds of the LLM hallucinating the numbers is near zero, at this point.&lt;/p&gt;
&lt;h3&gt;Stylistic Preferences&lt;/h3&gt;
&lt;p&gt;For Visualizing the I typically use tableau Or I use Python libraries to visualize them in my IDE – my preference is generally seaborn since I don’t care about the graphs being interactive. There’s no uniform &lt;a href=&quot;http://theme.py&quot;&gt;theme.py&lt;/a&gt; doc – so the model reconfigures everything from scratch in very project leading to some visual discrepancies’.&lt;/p&gt;
&lt;h3&gt;Reading the Data&lt;/h3&gt;
&lt;p&gt;the data is first and foremost read by me and placed into a separate folder where I will later ask the agent to convert everything into a CSV.&lt;/p&gt;
&lt;p&gt;the data is cleaned and so are the tables null values are redacted, and data is combined whenever possible (and depending on the task).&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Hello World</title>
    <link href="https://casruta.github.io/posts/hello-world/" />
    <updated>2026-02-20T00:00:00Z</updated>
    <id>https://casruta.github.io/posts/hello-world/</id>
    <content type="html">&lt;div class=&quot;abstract&quot;&gt;
&lt;p&gt;This post is a living demonstration of the blog&#39;s typographic features: sidenotes, section anchors, a table of contents, justified text with first-line indentation, and the full Gwern-inspired dark theme.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Welcome to the blog. This first post confirms that layout, typography, and the dark theme are all working correctly. The font is EB Garamond, served from Google Fonts — a close cousin of the Linux Libertine face Gwern uses.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/hello-world/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; Paragraphs are justified and use first-line indentation instead of spacing, the traditional book convention.&lt;/p&gt;
&lt;p&gt;The table of contents above was generated automatically by JavaScript from the headings in this post. On screens wider than 960 px, footnotes are silently converted into sidenotes that appear in the right margin alongside the text that cites them.&lt;/p&gt;
&lt;h2&gt;Typography&lt;/h2&gt;
&lt;p&gt;Headings at the h2 and h3 level are set in small-caps. Hovering over any heading reveals the section-anchor link (§) so you can copy a direct URL to that section.&lt;/p&gt;
&lt;p&gt;Body copy is fully justified with automatic hyphenation. Paragraphs are separated by a first-line indent rather than vertical whitespace — the convention in most printed books and in Gwern’s own essays.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/hello-world/#fn2&quot; id=&quot;fnref2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&quot;epigraph&quot;&gt;
&lt;p&gt;The purpose of a writer is to keep civilization from destroying itself.&lt;/p&gt;
&lt;cite&gt;Albert Camus&lt;/cite&gt;
&lt;/div&gt;
&lt;h3&gt;Blockquotes and code&lt;/h3&gt;
&lt;p&gt;Blockquotes are indented with a left border and a slightly lighter background:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A complex system that works is invariably found to have evolved from a simple system that worked.
— John Gall&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Inline &lt;code&gt;code&lt;/code&gt; is highlighted in warm amber. Fenced code blocks get a bordered container:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;def greet(name: str) -&amp;gt; str:
    return f&amp;quot;Hello, {name}&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Sidenotes&lt;/h2&gt;
&lt;p&gt;Every footnote you write becomes a sidenote on wide screens.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://casruta.github.io/posts/hello-world/#fn3&quot; id=&quot;fnref3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt; On small screens the footnotes fall back to the standard section at the bottom of the page. No extra markup is needed — just use standard Markdown footnote syntax.&lt;/p&gt;
&lt;h2&gt;Adding new posts&lt;/h2&gt;
&lt;p&gt;Create a &lt;code&gt;.md&lt;/code&gt; file in &lt;code&gt;src/posts/&lt;/code&gt; with this front matter:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;---
title: My Post Title
date: 2026-03-01
tags: post
layout: post.njk
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Push to &lt;code&gt;main&lt;/code&gt; and the site redeploys automatically via GitHub Actions.&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot;&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;EB Garamond is Claude Garamond’s 16th-century roman face revived by Georg Duffner. It is freely available on Google Fonts and pairs well with a dark background due to its generous x-height and open counters. &lt;a href=&quot;https://casruta.github.io/posts/hello-world/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn2&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;The typographic convention is: use margin &lt;em&gt;or&lt;/em&gt; indent, never both. Indent signals “this paragraph continues the same topic”; a larger gap signals a break. Most long-form web writing ignores this, to its detriment. &lt;a href=&quot;https://casruta.github.io/posts/hello-world/#fnref2&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn3&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;The conversion is done in &lt;code&gt;src/js/main.js&lt;/code&gt;. On load it finds all &lt;code&gt;sup.footnote-ref&lt;/code&gt; elements, clones the corresponding footnote content, inserts an &lt;code&gt;&amp;lt;aside class=&amp;quot;sidenote&amp;quot;&amp;gt;&lt;/code&gt; after the referencing paragraph, then hides the &lt;code&gt;&amp;lt;section class=&amp;quot;footnotes&amp;quot;&amp;gt;&lt;/code&gt; at the bottom. &lt;a href=&quot;https://casruta.github.io/posts/hello-world/#fnref3&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
  </entry>
</feed>