41554 blogs · [ { "id": "01a08c56-fe18-7078-b026-0458203fc7b5", "title": "Your Search Button Powers my Smart Home", "url": "https://tomcasavant.com/your-search-button-powers-my-smart-home/", "published_at": "2026-01-19T20:31:02+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582053029d", "title": "Musings on AI", "url": "https://tomcasavant.com/musings-on-ai/", "published_at": "2026-01-10T20:31:02+00:00" }, { "id": "01a08c56-fe18-7078-b026-045820e84e87", "title": "I Posted to Mastodon 1 Mile Away from an Internet Connection", "url": "https://tomcasavant.com/i-posted-to-mastodon-1-mile-away-from-an-internet-connection/", "published_at": "2025-05-23T15:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-045821dd9abe", "title": "Things I Did Not Blog About 2", "url": "https://tomcasavant.com/things-i-did-not-blog-about-2/", "published_at": "2025-03-31T15:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582298150b", "title": "Untitled Gaming Social", "url": "https://tomcasavant.com/untitled-gaming-social/", "published_at": "2025-01-03T15:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-0458230075a5", "title": "10,201 Frames: Fediverse Plays Pokemon 2nd Update", "url": "https://tomcasavant.com/10-201-frames-fediverse-plays-pokemon-2nd-update/", "published_at": "2024-11-03T18:28:50+00:00" }, { "id": "01a08c56-fe18-7078-b026-045823e78edb", "title": "OHGO Wrapper", "url": "https://tomcasavant.com/ohgo-wrapper/", "published_at": "2024-10-07T20:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582478efd7", "title": "Surrender Index Bot", "url": "https://tomcasavant.com/surrender-index-bot/", "published_at": "2024-09-30T14:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-045824e53586", "title": "DuckDuckSocial", "url": "https://tomcasavant.com/duckducksocial/", "published_at": "2024-08-21T14:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-0458251194aa", "title": "Blogrolls on Blogrolls on Blogrolls", "url": "https://tomcasavant.com/blogrolls-on-blogrolls-on-blogrolls/", "published_at": "2024-07-13T14:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-0458258e5922", "title": "2,904 Hours Later: A Pokémon Saga", "url": "https://tomcasavant.com/2-904-hours-later-a-pokemon-saga/", "published_at": "2024-06-10T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-045825d305f7", "title": "Things I Did Not Blog About", "url": "https://tomcasavant.com/things-i-did-not-blog-about/", "published_at": "2024-05-29T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-045826002128", "title": "Tomline", "url": "https://tomcasavant.com/tomline/", "published_at": "2024-04-01T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-045826c58674", "title": "Experimenting with ActivityPub: Minetest ActivityPub Bridge", "url": "https://tomcasavant.com/experimenting-with-activitypub-minetest-activitypub-bridge/", "published_at": "2024-03-14T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-045827bf2859", "title": "The Problem with Hashtags", "url": "https://tomcasavant.com/the-problem-with-hashtags/", "published_at": "2024-03-14T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-0458288d3233", "title": "Subjective Ranked Sorting in Python", "url": "https://tomcasavant.com/subjective-ranked-sorting-in-python/", "published_at": "2023-01-11T21:30:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-0458295a1a25", "title": "Ketchup Cake", "url": "https://tomcasavant.com/ketchup-cake/", "published_at": "2023-01-05T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582a0edf91", "title": "Markov Tweet Generator", "url": "https://tomcasavant.com/markov-tweet-generator/", "published_at": "2019-12-28T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582ae17afd", "title": "Converting Old Radio into Bluetooth Radio", "url": "https://tomcasavant.com/converting-old-radio-into-bluetooth-radio/", "published_at": "2019-08-25T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582b9437a4", "title": "A Curious Case of OSU Financial Aid", "url": "https://tomcasavant.com/a-curious-case-of-osu-financial-aid/", "published_at": "2019-04-19T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582c138bf9", "title": "Generating Heat Maps from GPX Files", "url": "https://tomcasavant.com/generating-heat-maps-from-gpx-files/", "published_at": "2019-04-18T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582c46d3f8", "title": "Make OH/IO 2019", "url": "https://tomcasavant.com/make-oh-io-2019/", "published_at": "2019-03-01T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582cc78b66", "title": "NFL Win-Chain (Dijkstra's Algorithm)", "url": "https://tomcasavant.com/nfl-win-chain-dijkstras-algorithm/", "published_at": "2019-01-28T00:00:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582dad02fe", "title": "Hack OH/IO 2018", "url": "https://tomcasavant.com/hack-oh-io-2018/", "published_at": "2019-01-26T22:37:09+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582dd86d2e", "title": "Superpower Generator: Programming an Alexa skill with Reddit RSS Feeds", "url": "https://tomcasavant.com/superpower-generator-and-58-programming-an-alexa-skill-with-reddit-rss-feeds/", "published_at": "2018-06-11T19:46:01+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582e4e9175", "title": "SlackArchiver (p.3): Setting up your Docker", "url": "https://tomcasavant.com/slackarchiver-p-3-and-58-setting-up-your-docker/", "published_at": "2017-09-17T01:34:53+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582f115f14", "title": "SlackArchiver (p.2): Setting up the Database", "url": "https://tomcasavant.com/slackarchiver-p-2-and-58-setting-up-the-database/", "published_at": "2017-09-16T17:57:25+00:00" }, { "id": "01a08c56-fe18-7078-b026-04582fbb844a", "title": "SlackArchiver: Using Mongo to archive Slack messages (Featuring \"Docker\")", "url": "https://tomcasavant.com/slackarchiver-and-58-using-mongo-to-archive-slack-messages-featuring-and-34-docker-and-34/", "published_at": "2017-09-02T19:36:10+00:00" }, { "id": "01a08c56-fe18-7078-b026-045830a27434", "title": "AutoTLDR: Summarizing News on Twitter", "url": "https://tomcasavant.com/autotldr-and-58-summarizing-news-on-twitter/", "published_at": "2017-04-05T23:24:20+00:00" }, { "id": "01a08c56-fe18-7078-b026-045830ca6d42", "title": "Playlist Creator: A Python Spotify Creation", "url": "https://tomcasavant.com/playlist-creator-and-58-a-python-spotify-creation/", "published_at": "2017-03-30T20:25:12+00:00" }, { "id": "01a08c56-fe18-7078-b026-045831211efc", "title": "CleverSlack: A Cleverbot/Slack Implementation", "url": "https://tomcasavant.com/cleverslack-and-58-a-cleverbot-slack-implementation/", "published_at": "2017-03-30T00:49:53+00:00" }, { "id": "01a08c56-fe18-7078-b026-045831d158ed", "title": "Markov Chain: A Harry Potter Quote/Tweet Generator", "url": "https://tomcasavant.com/markov-chain-and-58-a-harry-potter-quote-tweet-generator/", "published_at": "2017-02-22T22:57:58+00:00" }, { "id": "01a08c56-fe18-7078-b026-045831fb2e2c", "title": "Twitter Profile Updater", "url": "https://tomcasavant.com/twitter-profile-updater/", "published_at": "2016-07-21T22:11:06+00:00" }, { "id": "01a08c56-fe18-7078-b026-045832002f9a", "title": "Making a Chrome Extension", "url": "https://tomcasavant.com/making-a-chrome-extension/", "published_at": "2015-04-03T17:36:00+00:00" }, { "id": "01a08c56-fe18-7078-b026-0458327a0788", "title": "Setting up your Java IDE for \"Dumb\" phone mobile apps", "url": "https://tomcasavant.com/setting-up-your-java-ide-for-and-34-dumb-and-34-phone-mobile-apps/", "published_at": "2015-03-12T21:26:47+00:00" }, { "id": "01a08c56-fe18-7078-b026-0458327d9497", "title": "Programming a python Controller for Pianobar (Pandora) with your Wii Remote", "url": "https://tomcasavant.com/programming-a-python-controller-for-pianobar-pandora-with-your-wii-remote/", "published_at": "2015-03-02T23:05:28+00:00" } ] posts Claim your blog
Back to Home
Blog · corpus.blog/blogs/tomcasavant.com/posts

Home

tomcasavant.com

2026

2025

2024

2023

2019

2018

2017

2016

2015