{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_tag","url":"https://ejfox.com/blog/tag/dataviz","json_url":"https://ejfox.com/blog/tag/dataviz.json","generator":"ejfox.com/json-twin@1","data":{"tag":"dataviz","count":11,"posts":[{"slug":"2019/how-i-prototype-apps-and-dataviz-quickly-in-2019","title":"How I prototype apps and dataviz quickly","date":"2019-03-20T01:25:22.000Z","type":"words","hidden":false,"modified":"2024-09-23T16:13:36.000Z","tags":["vue","dataviz","d3","javascript","webdesign"],"toc":[{"text":"How I prototype apps and dataviz quickly","slug":"how-i-prototype-apps-and-dataviz-quickly","level":"h2","children":[{"text":"Pulling in data","slug":"pulling-in-data","level":"h3","children":[]},{"text":"Combining Vue and D3 for dataviz","slug":"combining-vue-and-d3-for-dataviz","level":"h3","children":[]},{"text":"Database and user authentication","slug":"database-and-user-authentication","level":"h3","children":[]},{"text":"Deploying","slug":"deploying","level":"h3","children":[]}]}],"metadata":{"type":"words","hidden":false,"inprogress":false,"date":"2019-03-20T01:25:22.000Z","modified":"2024-09-23T16:13:36.000Z","tags":["vue","dataviz","d3","javascript","webdesign"],"words":932,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":13,"codeBlocks":3,"headers":{"h2":1},"toc":[{"text":"How I prototype apps and dataviz quickly","slug":"how-i-prototype-apps-and-dataviz-quickly","level":"h2","children":[{"text":"Pulling in data","slug":"pulling-in-data","level":"h3","children":[]},{"text":"Combining Vue and D3 for dataviz","slug":"combining-vue-and-d3-for-dataviz","level":"h3","children":[]},{"text":"Database and user authentication","slug":"database-and-user-authentication","level":"h3","children":[]},{"text":"Deploying","slug":"deploying","level":"h3","children":[]}]}],"slug":"2019/how-i-prototype-apps-and-dataviz-quickly-in-2019"}},{"slug":"2020/coding-livestreams","title":"A summer of live streamed coding","date":"2020-10-08T08:00:52.000Z","type":"words","hidden":false,"dek":"In which the skill of broadcasting yourself writing code to the entire internet is explored","modified":"2024-09-23T16:12:59.000Z","tags":["livestream","coding","dataviz","inspiration","education","visualization"],"toc":[{"text":"A summer of live streamed coding","slug":"a-summer-of-live-streamed-coding","level":"h2","children":[{"text":"The cooking show metaphor","slug":"the-cooking-show-metaphor","level":"h3","children":[]},{"text":"Working in the open","slug":"working-in-the-open","level":"h3","children":[]},{"text":"Livestream experiments","slug":"livestream-experiments","level":"h3","children":[]},{"text":"Building the habit","slug":"building-the-habit","level":"h3","children":[]},{"text":"Surprisingly productive","slug":"surprisingly-productive","level":"h3","children":[]}]}],"metadata":{"date":"2020-10-08T08:00:52.000Z","type":"words","hidden":false,"inprogress":false,"dek":"In which the skill of broadcasting yourself writing code to the entire internet is explored","tags":["livestream","coding","dataviz","inspiration","education","visualization"],"modified":"2024-09-23T16:12:59.000Z","words":1232,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":11,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"A summer of live streamed coding","slug":"a-summer-of-live-streamed-coding","level":"h2","children":[{"text":"The cooking show metaphor","slug":"the-cooking-show-metaphor","level":"h3","children":[]},{"text":"Working in the open","slug":"working-in-the-open","level":"h3","children":[]},{"text":"Livestream experiments","slug":"livestream-experiments","level":"h3","children":[]},{"text":"Building the habit","slug":"building-the-habit","level":"h3","children":[]},{"text":"Surprisingly productive","slug":"surprisingly-productive","level":"h3","children":[]}]}],"slug":"2020/coding-livestreams"}},{"slug":"2021/lack-of-data","title":"The Lack of Data","date":"2021-05-17T08:00:10.000Z","type":"words","hidden":false,"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":[{"text":"The Lack of Data","slug":"the-lack-of-data","level":"h2","children":[]}],"metadata":{"date":"2021-05-17T08:00:10.000Z","type":"words","hidden":false,"inprogress":true,"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":602,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":2,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"The Lack of Data","slug":"the-lack-of-data","level":"h2","children":[]}],"slug":"2021/lack-of-data"}},{"slug":"2023/livestreaming","title":"Livestreaming","date":"2023-01-03T18:21:22.000Z","type":"post","dek":"In which we make a list of the times I have livestreamed","modified":"2024-09-20T04:23:53.000Z","tags":["livestream","dataviz","vue","coding","climatechange","youtube"],"toc":[{"text":"Livestreaming","slug":"livestreaming","level":"h2","children":[{"text":"Past Livestreams","slug":"past-livestreams","level":"h3","children":[]}]}],"metadata":{"dek":"In which we make a list of the times I have livestreamed","date":"2023-01-03T18:21:22.000Z","modified":"2024-09-20T04:23:53.000Z","tags":["livestream","dataviz","vue","coding","climatechange","youtube"],"words":238,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":13,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"Livestreaming","slug":"livestreaming","level":"h2","children":[{"text":"Past Livestreams","slug":"past-livestreams","level":"h3","children":[]}]}],"type":"post","slug":"2023/livestreaming"}},{"slug":"2024/my-modern-scrapbook","title":"Building myself a scrapbook","date":"2024-09-20T04:22:35.000Z","type":"post","dek":"In which we attempt to craft some treasure from the debris of a life lived on the internet","modified":"2024-11-05T16:50:13.000Z","tags":["inspiration","dataviz","design","howto","politics"],"toc":[{"text":"Building myself a scrapbook","slug":"building-myself-a-scrapbook","level":"h2","children":[]},{"text":"The groundwork for customized interfaces","slug":"the-groundwork-for-customized-interfaces","level":"h2","children":[]},{"text":"Retrieving my data","slug":"retrieving-my-data","level":"h2","children":[]},{"text":"Enhancing my data","slug":"enhancing-my-data","level":"h2","children":[]},{"text":"Exploring my data","slug":"exploring-my-data","level":"h2","children":[]},{"text":"Quickly recalling my research","slug":"quickly-recalling-my-research","level":"h2","children":[]},{"text":"Sharing with others","slug":"sharing-with-others","level":"h2","children":[{"text":"Public bibliography","slug":"public-bibliography","level":"h3","children":[]}]},{"text":"Take control of your own data, make your own systems","slug":"take-control-of-your-own-data-make-your-own-systems","level":"h2","children":[]}],"metadata":{"dek":"In which we attempt to craft some treasure from the debris of a life lived on the internet","date":"2024-09-20T04:22:35.000Z","modified":"2024-11-05T16:50:13.000Z","tags":["inspiration","dataviz","design","howto","politics"],"words":2227,"images":12,"imageDetails":{"total":12,"cloudinary":12,"withDimensions":0},"links":31,"codeBlocks":1,"headers":{"h2":8},"toc":[{"text":"Building myself a scrapbook","slug":"building-myself-a-scrapbook","level":"h2","children":[]},{"text":"The groundwork for customized interfaces","slug":"the-groundwork-for-customized-interfaces","level":"h2","children":[]},{"text":"Retrieving my data","slug":"retrieving-my-data","level":"h2","children":[]},{"text":"Enhancing my data","slug":"enhancing-my-data","level":"h2","children":[]},{"text":"Exploring my data","slug":"exploring-my-data","level":"h2","children":[]},{"text":"Quickly recalling my research","slug":"quickly-recalling-my-research","level":"h2","children":[]},{"text":"Sharing with others","slug":"sharing-with-others","level":"h2","children":[{"text":"Public bibliography","slug":"public-bibliography","level":"h3","children":[]}]},{"text":"Take control of your own data, make your own systems","slug":"take-control-of-your-own-data-make-your-own-systems","level":"h2","children":[]}],"type":"post","slug":"2024/my-modern-scrapbook"}},{"slug":"2025/mcp-meta-mapping","title":"Mapping Novel Territories: Untangling MCP Servers","date":"2025-03-25T04:12:41.000Z","type":"post","dek":"In which we the author gets his bearings by doing one of the things he knows best; making a map","modified":"2025-03-27T20:12:50.000Z","tags":["embeddings","cartography","dataviz"],"toc":[{"text":"Mapping Novel Territories: Untangling MCP Servers","slug":"mapping-novel-territories-untangling-mcp-servers","level":"h2","children":[]}],"metadata":{"dek":"In which we the author gets his bearings by doing one of the things he knows best; making a map","inprogress":true,"tags":["embeddings","cartography","dataviz"],"date":"2025-03-25T04:12:41.000Z","modified":"2025-03-27T20:12:50.000Z","words":825,"images":8,"imageDetails":{"total":8,"cloudinary":8,"withDimensions":0},"links":8,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"Mapping Novel Territories: Untangling MCP Servers","slug":"mapping-novel-territories-untangling-mcp-servers","level":"h2","children":[]}],"type":"post","slug":"2025/mcp-meta-mapping"}},{"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","inprogress":true,"tags":["data","dataviz","journalism","politics"],"words":782,"images":6,"imageDetails":{"total":6,"cloudinary":6,"withDimensions":0},"links":21,"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/covidcast","title":"COVIDcast","date":"2020-04-24T04:00:00.000Z","type":"post","modified":"2025-08-26T19:53:05.000Z","tags":["covid","dataviz","javascript","health"],"toc":[],"metadata":{"title":"COVIDcast","date":"2020-04-24T04:00:00.000Z","modified":"2025-08-26T19:53:05.000Z","url":"https://campustechnology.com/articles/2020/04/24/carnegie-mellon-maps-offer-more-data-for-covid-19-forecasting.aspx","tech":["Data Visualization","JavaScript","COVID-19 Data","Public Health"],"state":"deployed","aiInvolvement":"human-only","context":"client","tags":["covid","dataviz","javascript","health"],"words":69,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":3,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/covidcast"}},{"slug":"projects/nbc-big-board","title":"NBC News Big Board","date":"2016-11-08T05:00:00.000Z","type":"post","modified":"2025-08-13T16:24:29.000Z","tags":["d3","dataviz","javascript","elections"],"toc":[],"metadata":{"title":"NBC News Big Board","date":"2016-11-08T05:00:00.000Z","modified":"2025-08-13T16:24:29.000Z","tech":["D3.js","JavaScript","Touch Interface","Election Data"],"featured":true,"state":"deployed","aiInvolvement":"human-only","context":"client","tags":["d3","dataviz","javascript","elections"],"words":95,"images":4,"imageDetails":{"total":4,"cloudinary":4,"withDimensions":0},"links":6,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/nbc-big-board"}},{"slug":"projects/nbcnews-specials","title":"NBC News Specials","date":"2016-12-14T20:01:50.000Z","type":"post","modified":"2025-08-13T16:01:12.000Z","tags":["dataviz","journalism","webdesign","elections"],"toc":[],"metadata":{"title":"NBC News Specials","date":"2016-12-14T20:01:50.000Z","modified":"2025-08-13T16:01:12.000Z","url":"https://nbcnews.com/specials","context":"client","tags":["dataviz","journalism","webdesign","elections"],"words":104,"images":3,"imageDetails":{"total":3,"cloudinary":3,"withDimensions":0},"links":10,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/nbcnews-specials"}},{"slug":"reading/Yau-Visualize This","title":"Visualize This","type":"post","tags":["dataviz","data"],"toc":[{"text":"Visualize This","slug":"visualize-this","level":"h1","children":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}]}],"metadata":{"tags":["dataviz","data"],"kindle-sync":{"bookId":"431","title":"Visualize This: The FlowingData Guide to Design, Visualization, and Statistics","author":"Nathan Yau","asin":"B005CCT19M","lastAnnotatedDate":"2011-07-24","bookImageUrl":"https://m.media-amazon.com/images/I/511lwSnx7IL._SY160.jpg","highlightsCount":2},"words":123,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":1,"codeBlocks":0,"headers":{"h1":1},"toc":[{"text":"Visualize This","slug":"visualize-this","level":"h1","children":[{"text":"Highlights","slug":"highlights","level":"h2","children":[]},{"text":"Metadata","slug":"metadata","level":"h2","children":[]}]}],"type":"post","slug":"reading/Yau-Visualize This"}}]},"_links":{"self":"https://ejfox.com/blog/tag/dataviz.json","html":"https://ejfox.com/blog/tag/dataviz","tag_page":"/tag/dataviz.json"}}