{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"tag","url":"https://ejfox.com/tag/data","json_url":"https://ejfox.com/tag/data.json","generator":"ejfox.com/json-twin@1","data":{"tag":"data","posts":[{"slug":"2020/things-ive-learned-about-elections","title":"Things I've learned about elections","date":"2020-02-09T03:19:38.000Z","type":"words","dek":"In which we explore the knotted beauty of American democracy","modified":"2024-09-23T16:13:21.000Z","tags":["elections","politics","data","journalism","media","research"],"toc":[{"text":"Edge cases","slug":"edge-cases","level":"h3","children":[]},{"text":"Races","slug":"races","level":"h3","children":[]},{"text":"Voting","slug":"voting","level":"h3","children":[]},{"text":"Reporting units","slug":"reporting-units","level":"h3","children":[]},{"text":"Election data","slug":"election-data","level":"h3","children":[]},{"text":"Primary elections","slug":"primary-elections","level":"h3","children":[]},{"text":"Voting machines","slug":"voting-machines","level":"h3","children":[]},{"text":"Coverage of elections","slug":"coverage-of-elections","level":"h3","children":[]},{"text":"Why do we have elections on Tuesdays?","slug":"why-do-we-have-elections-on-tuesdays","level":"h3","children":[]},{"text":"Resources","slug":"resources","level":"h3","children":[]}],"metadata":{"dek":"In which we explore the knotted beauty of American democracy","type":"words","date":"2020-02-09T03:19:38.000Z","modified":"2024-09-23T16:13:21.000Z","tags":["elections","politics","data","journalism","media","research"],"words":2376,"images":1,"imageDetails":{"total":1,"cloudinary":0,"withDimensions":0},"links":72,"codeBlocks":0,"headers":{"h3":10},"toc":[{"text":"Edge cases","slug":"edge-cases","level":"h3","children":[]},{"text":"Races","slug":"races","level":"h3","children":[]},{"text":"Voting","slug":"voting","level":"h3","children":[]},{"text":"Reporting units","slug":"reporting-units","level":"h3","children":[]},{"text":"Election data","slug":"election-data","level":"h3","children":[]},{"text":"Primary elections","slug":"primary-elections","level":"h3","children":[]},{"text":"Voting machines","slug":"voting-machines","level":"h3","children":[]},{"text":"Coverage of elections","slug":"coverage-of-elections","level":"h3","children":[]},{"text":"Why do we have elections on Tuesdays?","slug":"why-do-we-have-elections-on-tuesdays","level":"h3","children":[]},{"text":"Resources","slug":"resources","level":"h3","children":[]}],"slug":"2020/things-ive-learned-about-elections"}},{"slug":"2021/lack-of-data","title":"The Lack of Data","date":"2021-05-17T08:00:10.000Z","type":"words","dek":"An exploration of what we choose to track, and what we don't – and what that means if we want to make the world a better place","modified":"2024-09-27T17:44:44.000Z","tags":["data","datajournalism","dataviz","lackofdata","police","america"],"toc":[],"metadata":{"date":"2021-05-17T08:00:10.000Z","type":"words","dek":"An exploration of what we choose to track, and what we don't – and what that means if we want to make the world a better place","modified":"2024-09-27T17:44:44.000Z","tags":["data","datajournalism","dataviz","lackofdata","police","america"],"words":600,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":2,"codeBlocks":0,"headers":{},"toc":[],"slug":"2021/lack-of-data"}},{"slug":"2021/nypd-ccrb-complaint-clusters","title":"Finding Clusters of NYPD Officers In CCRB Complaint Data","date":"2021-06-11T08:00:17.000Z","type":"words","dek":"In which various tools and methods are explored for analyzing data that describes a network of complaints against NYPD officers (or any other PD with similar public data)","modified":"2024-09-23T16:13:24.000Z","tags":["data","nypd","visualization","network"],"toc":[{"text":"Why?","slug":"why","level":"h3","children":[]},{"text":"The Dataset","slug":"the-dataset","level":"h3","children":[]},{"text":"Analysis","slug":"analysis","level":"h3","children":[]},{"text":"Analyzing our data with Datasette / SQLite","slug":"analyzing-our-data-with-datasette--sqlite","level":"h3","children":[]},{"text":"Analyzing our data with Neo4J","slug":"analyzing-our-data-with-neo4j","level":"h3","children":[]},{"text":"Analyzing our data with Gephi","slug":"analyzing-our-data-with-gephi","level":"h3","children":[]},{"text":"Potential Next Steps","slug":"potential-next-steps","level":"h3","children":[]},{"text":"Flotsam & Jetsam","slug":"flotsam--jetsam","level":"h3","children":[]},{"text":"Hire me to do work like this","slug":"hire-me-to-do-work-like-this","level":"h3","children":[]}],"metadata":{"date":"2021-06-11T08:00:17.000Z","type":"words","dek":"In which various tools and methods are explored for analyzing data that describes a network of complaints against NYPD officers (or any other PD with similar public data)","modified":"2024-09-23T16:13:24.000Z","tags":["data","nypd","visualization","network"],"words":3594,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":17,"codeBlocks":24,"headers":{"h3":9},"toc":[{"text":"Why?","slug":"why","level":"h3","children":[]},{"text":"The Dataset","slug":"the-dataset","level":"h3","children":[]},{"text":"Analysis","slug":"analysis","level":"h3","children":[]},{"text":"Analyzing our data with Datasette / SQLite","slug":"analyzing-our-data-with-datasette--sqlite","level":"h3","children":[]},{"text":"Analyzing our data with Neo4J","slug":"analyzing-our-data-with-neo4j","level":"h3","children":[]},{"text":"Analyzing our data with Gephi","slug":"analyzing-our-data-with-gephi","level":"h3","children":[]},{"text":"Potential Next Steps","slug":"potential-next-steps","level":"h3","children":[]},{"text":"Flotsam & Jetsam","slug":"flotsam--jetsam","level":"h3","children":[]},{"text":"Hire me to do work like this","slug":"hire-me-to-do-work-like-this","level":"h3","children":[]}],"slug":"2021/nypd-ccrb-complaint-clusters"}},{"slug":"2023/starting-a-studio-introducing-room-302","title":"Introducing room302.studio","date":"2023-04-10T05:00:00.000Z","type":"post","dek":"In which the author proudly presents his new venture: Room 302 Studio, an eclectic gathering of talent devoted to fostering joy-driven development","modified":"2024-09-20T04:21:55.000Z","tags":["data"],"toc":[{"text":"Hire us","slug":"hire-us","level":"h3","children":[]},{"text":"Workshops and Events","slug":"workshops-and-events","level":"h3","children":[]},{"text":"Membership Options","slug":"membership-options","level":"h3","children":[]}],"metadata":{"dek":"In which the author proudly presents his new venture: Room 302 Studio, an eclectic gathering of talent devoted to fostering joy-driven development","date":"2023-04-10T05:00:00.000Z","modified":"2024-09-20T04:21:55.000Z","tags":["data"],"words":586,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":2,"codeBlocks":0,"headers":{"h3":3},"toc":[{"text":"Hire us","slug":"hire-us","level":"h3","children":[]},{"text":"Workshops and Events","slug":"workshops-and-events","level":"h3","children":[]},{"text":"Membership Options","slug":"membership-options","level":"h3","children":[]}],"type":"post","slug":"2023/starting-a-studio-introducing-room-302"}},{"slug":"2025/owning-my-cloudinary-photos","title":"Panic-Driven Development: Building A Tool To Back Up My Photos From Cloudinary","date":"2025-08-28T20:05:43.000Z","type":"post","dek":"In which the author rescues his most precious digital media from a server that he does not own or control","modified":"2025-08-28T20:12:25.000Z","tags":["data","photos","tauri","photography","personal"],"toc":[{"text":"The Stack","slug":"the-stack","level":"h3","children":[]},{"text":"Racing the Clock (And Rate Limits)","slug":"racing-the-clock-and-rate-limits","level":"h3","children":[]},{"text":"Owning my own data","slug":"owning-my-own-data","level":"h3","children":[]},{"text":"The Aftermath: A Digital Hymn","slug":"the-aftermath-a-digital-hymn","level":"h3","children":[]}],"metadata":{"dek":"In which the author rescues his most precious digital media from a server that he does not own or control","tags":["data","photos","tauri","photography","personal"],"date":"2025-08-28T20:05:43.000Z","modified":"2025-08-28T20:12:25.000Z","words":609,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":0,"codeBlocks":0,"headers":{"h3":4},"toc":[{"text":"The Stack","slug":"the-stack","level":"h3","children":[]},{"text":"Racing the Clock (And Rate Limits)","slug":"racing-the-clock-and-rate-limits","level":"h3","children":[]},{"text":"Owning my own data","slug":"owning-my-own-data","level":"h3","children":[]},{"text":"The Aftermath: A Digital Hymn","slug":"the-aftermath-a-digital-hymn","level":"h3","children":[]}],"type":"post","slug":"2025/owning-my-cloudinary-photos"}},{"slug":"2025/paramilitary-telegram-leaks-001","title":"Processing Telegram Leaks for Fast Web Visualization","date":"2025-03-09T17:49:01.000Z","type":"post","dek":"In which I describe my workflow for transforming a Telegram database dump into a web-friendly format for analysis and visualization","modified":"2025-03-16T01:25:05.000Z","tags":["data","dataviz","journalism","politics"],"toc":[{"text":"Paramilitary Telegram Leaks: From Dump To Data","slug":"paramilitary-telegram-leaks-from-dump-to-data","level":"h2","children":[]},{"text":"From SQLite to Parquet: Processing Telegram Leaks for Fast Web Visualization","slug":"from-sqlite-to-parquet-processing-telegram-leaks-for-fast-web-visualization","level":"h2","children":[{"text":"The Challenge","slug":"the-challenge","level":"h3","children":[]},{"text":"The Workflow","slug":"the-workflow","level":"h3","children":[]},{"text":"The Frontend","slug":"the-frontend","level":"h3","children":[]},{"text":"Data Exploration Examples","slug":"data-exploration-examples","level":"h3","children":[]},{"text":"Building Custom Visualizations","slug":"building-custom-visualizations","level":"h3","children":[]}]}],"metadata":{"date":"2025-03-09T17:49:01.000Z","modified":"2025-03-16T01:25:05.000Z","title":"Processing Telegram Leaks for Fast Web Visualization","dek":"In which I describe my workflow for transforming a Telegram database dump into a web-friendly format for analysis and visualization","tags":["data","dataviz","journalism","politics"],"words":724,"images":6,"imageDetails":{"total":6,"cloudinary":6,"withDimensions":0},"links":15,"codeBlocks":5,"headers":{"h2":2},"toc":[{"text":"Paramilitary Telegram Leaks: From Dump To Data","slug":"paramilitary-telegram-leaks-from-dump-to-data","level":"h2","children":[]},{"text":"From SQLite to Parquet: Processing Telegram Leaks for Fast Web Visualization","slug":"from-sqlite-to-parquet-processing-telegram-leaks-for-fast-web-visualization","level":"h2","children":[{"text":"The Challenge","slug":"the-challenge","level":"h3","children":[]},{"text":"The Workflow","slug":"the-workflow","level":"h3","children":[]},{"text":"The Frontend","slug":"the-frontend","level":"h3","children":[]},{"text":"Data Exploration Examples","slug":"data-exploration-examples","level":"h3","children":[]},{"text":"Building Custom Visualizations","slug":"building-custom-visualizations","level":"h3","children":[]}]}],"type":"post","slug":"2025/paramilitary-telegram-leaks-001"}},{"slug":"projects/ccrb-clusters","title":"Clusters of NYPD Misconduct","date":"2021-06-15T04:00:00.000Z","type":"post","modified":"2025-08-26T19:52:56.000Z","tags":["data","nypd","journalism","database"],"toc":[],"metadata":{"title":"Clusters of NYPD Misconduct","date":"2021-06-15T04:00:00.000Z","category":"Journalism","modified":"2025-08-26T19:52:56.000Z","url":"https://gothamist.com/news/mapping-clusters-nypd-officers-repeatedly-accused-misconduct","tech":["Neo4j","SQLite","Gephi","Network Analysis","Cypher"],"featured":true,"state":"deployed","ai-involvement":"human-only","context":"client","tags":["data","nypd","journalism","database"],"words":394,"images":3,"imageDetails":{"total":3,"cloudinary":3,"withDimensions":0},"links":1,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/ccrb-clusters"}},{"slug":"projects/coachartie-memory","title":"Coach Artie — Memory Analysis","date":"2026-02-01T05:00:00.000Z","type":"post","tags":["dataviz","data","ai","embeddings"],"toc":[],"metadata":{"title":"Coach Artie — Memory Analysis","date":"2026-02-01T05:00:00.000Z","category":"Dataviz","featured":false,"tech":["Python","t-SNE","HDBSCAN","Embeddings","Data Visualization"],"state":"doing","ai-involvement":"ai-collaborative","context":"collaborative","tags":["dataviz","data","ai","embeddings"],"words":178,"images":6,"imageDetails":{"total":6,"cloudinary":6,"withDimensions":0},"links":0,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/coachartie-memory"}},{"slug":"projects/dataproofer","title":"Dataproofer","date":"2015-11-03T05:00:00.000Z","type":"post","modified":"2025-08-26T19:53:33.000Z","tags":["data","javascript","tool","journalism"],"toc":[],"metadata":{"title":"Dataproofer","date":"2015-11-03T05:00:00.000Z","category":"Journalism","modified":"2025-08-26T19:53:33.000Z","url":"https://github.com/dataproofer/Dataproofer","tech":["JavaScript","Electron","Data Quality","CSV"],"featured":false,"state":"deployed","ai-involvement":"human-only","context":"collaborative","tags":["data","javascript","tool","journalism"],"words":171,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":2,"codeBlocks":1,"headers":{},"toc":[],"type":"post","slug":"projects/dataproofer"}},{"slug":"projects/long-lead","title":"Long Lead","date":"2021-11-18T05:00:00.000Z","type":"post","draft":false,"tags":["data","dataviz","journalism","investigations"],"toc":[{"text":"The Depths She'll Reach","slug":"the-depths-shell-reach","level":"h2","children":[]},{"text":"Querdenken: COVID Misinformation or Freedom Movement?","slug":"querdenken-covid-misinformation-or-freedom-movement","level":"h2","children":[]}],"metadata":{"title":"Long Lead","date":"2021-11-18T05:00:00.000Z","category":"Journalism","featured":false,"draft":false,"client":"Long Lead","tech":["Scrollytelling","Data Visualization","Network Analysis"],"state":"deployed","ai-involvement":"human-only","context":"client","tags":["data","dataviz","journalism","investigations"],"words":149,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":3,"codeBlocks":0,"headers":{"h2":2},"toc":[{"text":"The Depths She'll Reach","slug":"the-depths-shell-reach","level":"h2","children":[]},{"text":"Querdenken: COVID Misinformation or Freedom Movement?","slug":"querdenken-covid-misinformation-or-freedom-movement","level":"h2","children":[]}],"type":"post","slug":"projects/long-lead"}},{"slug":"projects/obsidian-analysis","title":"Obsidian Analysis","date":"2024-06-01T04:00:00.000Z","type":"post","tags":["data","visualization","ai"],"toc":[{"text":"More semantic maps","slug":"more-semantic-maps","level":"h2","children":[{"text":"Criterion Embeddings","slug":"criterion-embeddings","level":"h3","children":[]},{"text":"r/dataisbeautiful, Embedded","slug":"rdataisbeautiful-embedded","level":"h3","children":[]},{"text":"code-network-gen","slug":"code-network-gen","level":"h3","children":[]}]}],"metadata":{"title":"Obsidian Analysis","date":"2024-06-01T04:00:00.000Z","category":"Dataviz","featured":false,"url":"https://github.com/ejfox/obsidian-analysis","tech":["Python","Embeddings","UMAP","LM Studio"],"state":"deployed","ai-involvement":"ai-collaborative","tags":["data","visualization","ai"],"words":362,"images":5,"imageDetails":{"total":5,"cloudinary":4,"withDimensions":0},"links":2,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"More semantic maps","slug":"more-semantic-maps","level":"h2","children":[{"text":"Criterion Embeddings","slug":"criterion-embeddings","level":"h3","children":[]},{"text":"r/dataisbeautiful, Embedded","slug":"rdataisbeautiful-embedded","level":"h3","children":[]},{"text":"code-network-gen","slug":"code-network-gen","level":"h3","children":[]}]}],"type":"post","slug":"projects/obsidian-analysis"}},{"slug":"projects/paramilitary-leaks","title":"Paramilitary Leaks","date":"2025-09-01T04:00:00.000Z","type":"post","tags":["journalism","data","osint","tools"],"toc":[],"metadata":{"title":"Paramilitary Leaks","date":"2025-09-01T04:00:00.000Z","category":"Journalism","featured":true,"tech":["Nuxt","Vue","Search","Data Visualization"],"state":"deployed","ai-involvement":"ai-assisted","context":"collaborative","tags":["journalism","data","osint","tools"],"words":178,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":6,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/paramilitary-leaks"}},{"slug":"reading/Bergstrom-West-Calling Bullshit","title":"Calling Bullshit","type":"post","tags":["book","data","research"],"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"metadata":{"tags":["book","data","research"],"words":70,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":1,"codeBlocks":0,"headers":{"h2":2},"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"type":"post","slug":"reading/Bergstrom-West-Calling Bullshit"}},{"slug":"reading/D'Ignazio-Klein-Data Feminism","title":"Data Feminism","type":"post","tags":["data","activism"],"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"metadata":{"tags":["data","activism"],"words":243,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":1,"codeBlocks":0,"headers":{"h2":2},"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"type":"post","slug":"reading/D'Ignazio-Klein-Data Feminism"}},{"slug":"reading/Friedman-Ultimate Price","title":"Ultimate Price","type":"post","tags":["book","politics","culture","data"],"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"metadata":{"tags":["book","politics","culture","data"],"words":350,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":1,"codeBlocks":0,"headers":{"h2":2},"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"type":"post","slug":"reading/Friedman-Ultimate Price"}},{"slug":"reading/Yau-Visualize This","title":"Visualize This","type":"post","tags":["dataviz","data"],"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"metadata":{"tags":["dataviz","data"],"words":122,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":1,"codeBlocks":0,"headers":{"h2":2},"toc":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}],"type":"post","slug":"reading/Yau-Visualize This"}}],"scraps":[{"title":"75% More Pedestrians Have Been Killed Since 2009. Giant Trucks and SUVs Are Why","url":"https://www.thedrive.com/news/75-more-pedestrians-have-been-killed-since-2009-giant-trucks-and-suvs-are-why","tags":["article","data","design","news","research"],"hostname":"thedrive.com","created_at":"2026-06-23T17:26:54+00:00"},{"title":"World's Richest 10% Are Costing Earth Trillions, Study Finds : ScienceAlert","url":"https://www.sciencealert.com/worlds-richest-10-are-costing-earth-trillions-study-finds","tags":["data","climatechange","study","research"],"hostname":"sciencealert.com","created_at":"2026-06-18T16:38:34+00:00"},{"title":"Source: Article titled \"The Impact of COVID-19 on Cybercrime: A Global Perspective\" published in ...","url":"https://journals.sagepub.com/doi/abs/10.1177/09567976221108944","tags":["article","covid","data","research"],"hostname":"journals.sagepub.com","created_at":"2024-06-23T13:55:19+00:00"},{"title":"Diagram titled \"1 in 3 people behind bars is in a jail","url":"https://www.are.na/block/28932469","tags":["data","infographic"],"hostname":"are.na","created_at":"2024-06-22T22:59:31.943+00:00"},{"title":"The Mastodon post by @ejfox, originally located at <https://mastodon.social/@ejfox...","url":"https://mastodon.social/@ejfox/112660847041748691","tags":["article","data","localnews"],"hostname":"mastodon.social","created_at":"2024-06-22T14:55:00.614+00:00"},{"title":"Hermann Zschiegner & Natalie Erdem—Designing the MSNBC Big Board (Talk, Outlier 2023)","url":"https://www.youtube.com/watch?v=iQRAgR_01Dk","tags":["design","data"],"hostname":"youtube.com","created_at":"2024-06-19T04:41:33+00:00"},{"title":"Explore Explain S5 E3: Natalie Erdem - Data Viz Excellence, Everywhere","url":"https://visualisingdata.com/2024/06/explore-explain-s5-e3-natalie-erdem/","tags":["data","design","journalism","politics"],"hostname":"visualisingdata.com","created_at":"2024-06-19T04:41:04+00:00"},{"title":"About — Competitive Advantage Research","url":"https://www.compadre.us/about","tags":["automation","data"],"hostname":"compadre.us","created_at":"2024-06-14T15:45:37+00:00"}]},"_links":{"self":"https://ejfox.com/tag/data.json","html":"https://ejfox.com/tag/data","blog_tag":"/blog/tag/data.json"}}