Time Keeps On Scrolling Into The Future; CSVW/FDP; Indicator
A somewhat long-winded Drop to start off the week, but you get both the Drop as well as a pure-CSS free scrollytelling framework, a new tool to help you verify content, and a possible way to make your use of CSV files a bit more orderly this year.
TL;DR
(This is an LLM/GPT-generated summary of today’s Drop. Ollama and MiniMax M2.1.)
- CSS scroll timelines enable scrollytelling without JavaScript frameworks, making the technique accessible for occasional use after years of framework-related avoidance (https://css-tricks.com/scrollytelling-on-steroids-with-scroll-state-queries/)
- CSVW is a W3C Recommendation that provides standardized JSON metadata to enhance CSV files with datatypes and schema definitions, though Frictionless Data Package offers broader non-tabular data support despite CSVW’s official status (https://csvw.org/)
- Indicator is Craig Silverman’s new OSINT media venture focused on teaching verification skills with a “Show Your Work” philosophy to help users navigate AI-generated content and disinformation (https://indicator.media/)
Time Keeps On Scrolling Into The Future

I was going through the back catalog of links for newsletter topics when I stumbled onto something that solved a problem I’ve been avoiding for years.
Scrollytelling. I’ve wanted to really try it for ages, and have annoyed y’all in a few Drops about it over the past 4 years. The visuals are compelling, the format works for certain kinds of stories, and I keep seeing examples that make me think I should be doing this. But every time I looked into it, the path forward meant committing to some JavaScript framework, and that investment never felt justified for occasional use.
So I kept not doing it. Year after year. Not as a resolution to break, just as a thing that stayed perpetually on the “someday” list.
Then I tapped through some links on a topic I’ll cover later and landed on two CSS-Tricks articles: Scrollytelling on Steroids With Scroll-State Queries and Slide Through Unlimited Dimensions With CSS Scroll Timelines. The core idea is CSS scroll timelines, which let you tie animations to scroll position instead of time. You define a named timeline on a scrollable container, then hook your animations to that timeline. The browser handles the rest. No scroll event listeners, no JavaScript animation libraries, just CSS doing what CSS now does.
Browser support has gotten good enough that you can build these experiences without framework dependencies.
I spent about an hour making a proof of concept using GreyNoise data. It’s at rud.is/drop/2025-scrolly-gn/ if you want to see it. Technically there’s one line of JavaScript, but I’m counting that as a rounding error.
The structure is pretty much dead simple. Each story section sits in its own HTML block:
<section class="chapter">
<div class="chapter-content">
</div>
</section>
The file is lightly annotated, and copying it for future projects should be straightforward. An hour of work got me something unpolished but functional, with a framework I can actually use going forward.
I’m not going to overdo it. Too much scrollytelling gets old fast. But having the option without the framework overhead is genuinely useful.
If JS framework fatigue has been holding you back from attempting scrollytelling, you also no longer have that excuse in 2026+.
CSVW/FDP

I’m filing this section under “why did I forget to publish this draft last year” after finding it in a
.mdfile in one of the 2025 Drop folders.
The CSV format is ubiquitous but semantically impoverished. That is, there’s no way to express datatypes, constraints, relationships between tables, or provenance within the CSV format itself. CSVW is a W3C Recommendation (2015) that provides a standardized way to describe (and even “link”) CSV files with JSON metadata.
The standard consists of four W3C Recommendations:
- “Model for Tabular Data and Metadata on the Web” – defines the abstract model
- “Metadata Vocabulary for Tabular Data” – the JSON vocabulary for annotations
- “Generating JSON from Tabular Data on the Web” (
csv2json) - “Generating RDF from Tabular Data on the Web” (
csv2rdf)
It’s a fairly straightforward premise: you pair one or more CSV files with a JSON metadata file. The naming convention: if your data is countries.csv, the metadata lives in countries.csv-metadata.json (or a fallback csv-metadata.json in the same directory). Here’s what d minimal metadata document looks like:
{
"@context": "http://www.w3.org/ns/csvw",
"url": "countries.csv",
"tableSchema": {
"columns": [
{"name": "country_code", "datatype": "string", "required": true},
{"name": "population", "datatype": "integer"},
{"name": "latitude", "datatype": "decimal"},
{"name": "longitude", "datatype": "decimal"}
]
}
}
The documentation is great, so you can dig into the schema components on the site itself.
I generally dismiss efforts to “enhance” the use of CSVs, since I haven’t see any really take off over the past 15+ yaers. However, the UK Government Digital Service recommends CSVW for open data publication since the format is particularly useful for statistical data releases, geographic datasets, and any context where CSV files need to be machine-readable without human intervention to interpret column meanings. The ONS (Office for National Statistics) uses it extensively through their csvcubed tooling for statistical data cubes.
A bunch of you will not want to hear this, but this format also likely makes it easier for LLMs/agents to work with data in a much cleaner way.
The csvwr package on CRAN provides read/write support with type casting based on metadata. It’s still only a partial implementation of the spec but handles the common cases. Similarly, the csvw Python package offers both a library API and CLI tools for validation and transformation.
So, while I’ve spent ~360 words describing CSVW, it focuses specifically on CSV/delimited files and has strong RDF/linked-data transformation capabilities. Frictionless Data Package (GH), on the other hand, is broader (handles non-tabular data too) and has wider language support (9 languages vs. CSVW’s more fragmented tooling). CSVW has official W3C Recommendation status, but the working group closed in 2016; a community group maintains interest but can’t modify the spec. Frictionless is actively developed.
Yet, a tick in CSVW’s “Pros” column would be the csvw-duckdb Python package that converts CSVW metadata documents to DuckDB SQL queries for loading CSV files into a database. It’s a bridge tool that reads your CSVW JSON metadata and generates the appropriate read_csv calls with the right column types and options. DuckDB itself doesn’t natively understand CSVW format, but its CSV sniffer and explicit type specification options achieve similar goals at the SQL level. You’d use CSVW metadata as the authoritative schema definition, then translate that to DuckDB’s columns parameter. There does not seem to be a lot of love for FDP in DuckDB-land.
After all that, I’m not sure if I’ll be using either standard. I’ve been making good use of DuckDB for self-contained datasets with documentation. You get it all in one file with forced schema support that works everywhere you can drop in a DuckDB single-file binary.
Indicator

If you’ve felt like the internet has become a harder place to navigate lately—flooded with AI slop, deepfakes, and bizarrely viral satire—you aren’t alone. The tools and techniques used to verify reality are changing just as fast as the lies are spreading.
In a recent episode of the 404 Media Podcast, host Joseph Cox sat down with legendary digital investigator Craig Silverman to discuss exactly this. The episode, titled “The Shifting World of OSINT”, dives into how Open Source Intelligence is evolving in 2025 and introduces Silverman’s new independent media venture, Indicator.
The central theme is that the landscape of the internet has fundamentally shifted. For years, Silverman (formerly of ProPublica and BuzzFeed News) has tracked ad fraud and disinformation. But 2025 has brought a perfect storm of challenges. The AI explosion means it’s no longer just about spotting a bad Photoshop. Every single day, most of us are now dealing with/encountering photorealistic AI images, video like OpenAI’s Sora, and infinite slop content generated to game algorithms. Major tech platforms have largely retreated from moderation, with some now effectively paying creators to spread hoaxes if they generate enough engagement. The guardrails are (essentially) gone. And for digital investigators, the toolkit is constantly breaking as APIs shut down, search functions get paywalled, and tried-and-true methods stop working overnight.
To combat this, Silverman and his co-founder Alexios Mantzarlis (formerly of the International Fact-Checking Network) launched Indicator. Far from being [yet/just]-another news site, Inidcator is designed as a utility for the current moment with a “Show Your Work” philosophy. When they publish an investigation into a scam or disinformation network, they don’t just tell you what they found; they include a recipe box listing the exact tools and steps they took. The lets us move beyond just reading the news to being equpped with the skills to verify it ourselves.
Three things stood out from the conversation. First, verification is now a survival skill. Whether you’re a journalist, a trust and safety professional, or just a regular internet user, you need a basic resilience toolkit to understand what you’re seeing on your screen. Second, follow the money! Much of this shifting world is driven by financial incentives, from ad fraud to satire pages cashing in on rage-bait; understanding the monetization often reveals the motive behind the fake content. Third, community is crucial. Because tools break so often, the OSINT community’s reliance on sharing knowledge (like Indicator’s tool trackers) is more important than ever.
This site now has a perma-place in my “pinned tabs” area in Arc.
FIN
Remember, you can follow and interact with the full text of The Daily Drop’s free posts on:
- Mastodon via
@dailydrop.hrbrmstr.dev@dailydrop.hrbrmstr.dev - Bluesky via
<https://bsky.app/profile/dailydrop.hrbrmstr.dev.web.brid.gy>
Leave a comment